Help needed in construction of subpanels

Hi all

I'm trying to construct a panel layout that nicely scales as the window is resized.

I've attached an image of what I currently have from hacking away at the CWT demo, and a layout of what I think I want.

I've written up this code so far, but the placement of the panels in which I want to place the plots doesn't seem to work; no notice seems to be being taken of my frameguides.

What am I doing wrong?


//---------------------------------------------------------------------------

Function BuildTestPanel()

	//parent panel
	DoWindow/F TestPanel
	if(V_Flag==1)
		return 0
	endif
	NewPanel /K=1 /W=(6,44,600,800) as "Test Panel"
	DoWindow/C TestPanel
	SetDrawLayer UserBack


	//panel to hold controls
	DefineGuide cpL={FL,5},cpR={FR,-5},cpB={FB,-5},cpT={cpB,-200}
	NewPanel /FG=(cpL,cpT,cpR,cpB) /N=controls /HOST=TestPanel
	DrawText 10,25,"Controls go here:"
	SetActiveSubwindow TestPanel
	
	//panel to holds graphs
	DefineGuide grL={cpL,0},grR={cpR,0},grB={cpT,-5},grT={FT,-5}
	NewPanel /FG=(grL,grT,grR,grB) /N=graphs /HOST=TestPanel
	SetActiveSubwindow TestPanel
	
		//panel to hold XRD plot
		DefineGuide xrdL={FL,5},xrdR={FR,-5},xrdT={FT,-5},xrdB={xrdT,-50}
		NewPanel /FG=(xrdL,xrdT,xrdR,xrdB) /N=xrdplot /HOST=TestPanel#graphs
		DrawText 10,25,"Diffraction pattern"
		SetActiveSubwindow TestPanel
		
		//panel to hold CWT plot
		DefineGuide cwtL={FL,5},cwtR={FR,-5},cwtB={FB,-5},cwtT={cwtB,-50}
		NewPanel /FG=(cwtL,cwtT,cwtR,cwtB)  /N=cwtplot /HOST=TestPanel#graphs
		DrawText 10,25,"Wavelet transform"
		SetActiveSubwindow TestPanel
	
end


The parent panel is 600x800
Any resizing of the width of the parent panel must result in the same change in all subpanels
Any resizing of height is specified below.

The bottom blue panel is 100% wide* and a fixed 200 pixels high. I've fixed it to the bottom of the parent panel. This is where I'm going to put all of my controls
The top blue panel is 100% wide, and the bottom of this panel is fixed to the top of the bottom blue panel. The top blue panel will change height, with the bottom blue panel remaining 200 pixels upon any resizing vertically

The two green panels are 100% wide and 50% high.

The red outlines in the green panels represent the plots.
The plots are 100% wide, and ~30 pixels less than the panel height, to allow for panel text.



* with 5 pixel setback all around
I swear the the best way to find the answer yourself is to ask for help. It then jumps off the page at you!

I was focussed on the wrong panels.

This is what I've got:


Function BuildPeakPanel()

	NVAR startScale  =root:Packages:PeakPanelFolder:startScale
	NVAR endScale    =root:Packages:PeakPanelFolder:endScale
	NVAR noise       =root:Packages:PeakPanelFolder:cwtNoise
	NVAR ridgeLength =root:Packages:PeakPanelFolder:ridgeLength
	NVAR ridgeSum    =root:Packages:PeakPanelFolder:ridgeSum
	NVAR delta       =root:Packages:PeakPanelFolder:delta
	NVAR cwtColour   =root:Packages:PeakPanelFolder:cwtColour

	NVAR xAxisMin    =root:Packages:PeakPanelFolder:xAxisMin
	NVAR xAxisMax    =root:Packages:PeakPanelFolder:xAxisMax
	NVAR xrdYAxisMin =root:Packages:PeakPanelFolder:xrdYAxisMin
	NVAR xrdYAxisMax =root:Packages:PeakPanelFolder:xrdYAxisMax 
	NVAR cwtYAxisMin =root:Packages:PeakPanelFolder:cwtYAxisMin
	NVAR cwtYAxisMax =root:Packages:PeakPanelFolder:cwtYAxisMax
	
	NVAR initial_xAxisMin    =root:Packages:PeakPanelFolder:initial_xAxisMin 
	NVAR initial_xAxisMax    =root:Packages:PeakPanelFolder:initial_xAxisMax 
	NVAR initial_xrdYAxisMin =root:Packages:PeakPanelFolder:initial_xrdYAxisMin
	NVAR initial_xrdYAxisMax =root:Packages:PeakPanelFolder:initial_xrdYAxisMax
	NVAR initial_cwtYAxisMin =root:Packages:PeakPanelFolder:initial_cwtYAxisMin
	NVAR initial_cwtYAxisMax =root:Packages:PeakPanelFolder:initial_cwtYAxisMax

	//parent panel
	DoWindow/F PeakPanel
	if(V_Flag==1)
		return 0
	endif
	NewPanel /K=1 /W=(6,44,880,800) as "Peak Search"
	DoWindow/C PeakPanel
	SetDrawLayer UserBack


	//panel to hold controls
	SetActiveSubwindow PeakPanel
	DefineGuide cpL={FL,5},cpR={FR,-5},cpB={FB,-5},cpT={cpB,-170}
	NewPanel /FG=(cpL,cpT,cpR,cpB) /N=controls /HOST=PeakPanel
	
	//panel to holds graphs
	SetActiveSubwindow PeakPanel
	DefineGuide grL={cpL,0},grR={cpR,0},grB={cpT,-5},grT={FT,-5}
	NewPanel /FG=(grL,grT,grR,grB) /N=graphs /HOST=PeakPanel
	
		//panel to hold XRD plot
		SetActiveSubwindow PeakPanel#graphs
		DefineGuide xrdL={FL,5},xrdR={FR,-5},xrdT={FT,-5},xrdB={FT,0.5,FB}
		NewPanel /FG=(xrdL,xrdT,xrdR,xrdB) /N=xrdPanel /HOST=PeakPanel#graphs
		DrawText 10,25,"Diffraction pattern"
		
		//panel to hold CWT plot
		SetActiveSubwindow PeakPanel#graphs
		DefineGuide cwtL={FL,5},cwtR={FR,-5},cwtB={FB,-5},cwtT={FT,0.5,FB}
		NewPanel /FG=(cwtL,cwtT,cwtR,cwtB)  /N=cwtPanel /HOST=PeakPanel#graphs
		DrawText 10,25,"Wavelet transform"
		
	
	//let'a make the plots!
	//XRD plot
	SetActiveSubwindow PeakPanel#graphs#xrdPanel
	DefineGuide plotL={FL,10},plotR={FR,-10},plotT={FT,30},plotB={FB,-10}
	Display /FG=(plotL,plotT,plotR,plotB) /N=xrdPlot /HOST=PeakPanel#graphs#xrdPanel  xrd
	AppendToGraph w_peakPositionIntensities vs w_peakPositions
	ModifyGraph mode(w_peakPositionIntensities)=8
	ModifyGraph marker(w_peakPositionIntensities)=22
	ModifyGraph toMode(w_peakPositionIntensities)=1
	ModifyGraph rgb(w_peakPositionIntensities)=(0,0,0)	
	Label left "Intensity"
	Label bottom "Channel number"
		DoUpdate
		GetAxis /Q bottom
			xAxisMin = V_min
			xAxisMax = V_max
			initial_xAxisMin = V_min
			initial_xAxisMax = V_max
		GetAxis /Q left
			xrdYAxisMin = V_min
			xrdYAxisMax = V_max
			initial_xrdYAxisMin = V_min
			initial_xrdYAxisMax = V_max


	//CWT plot
	SetActiveSubwindow PeakPanel#graphs#cwtPanel
	DefineGuide plotL={FL,10},plotR={FR,-10},plotT={FT,30},plotB={FB,-10}
	Display /FG=(plotL,plotT,plotR,plotB) /N=cwtPlot /HOST=PeakPanel#graphs#cwtPanel
	AppendImage M_CWT vs {*,scalingWaveDisplay}
	ModifyImage M_CWT ctab= {-cwtColour,cwtColour,RedWhiteBlue,0}
	AppendImage w_peaks vs {*,scalingWaveDisplay}
	Label left "Scale"
	Label bottom "Channel number"
	ModifyGraph mirror=2
		doUpdate
		GetAxis /Q left
			cwtYAxisMin = V_min
			cwtYAxisMax = V_max
			initial_cwtYAxisMin = V_min
			initial_cwtYAxisMax = V_max


//and then a whole bunch of control inputs
So true about finding an answer by posting. Did that this morning! Deleted the post when I found the (totally obvious) solution.
I recommend that you execute the following on Igor's command line:

DisplayHelpTopic "Resize Controls Panel"


In case you don't already know, there's a package that ships with Igor that can be used to handle the resizing and repositioning of controls for you. It might be easier to use this package instead of doing the resizing yourself.
Ta for that aclight.

I'll have a read in my copious spare time!

Sounds like it should help a fair bit in the next stage of the process. I'll probably have a look at your tab control thing too.
I like that!

I didn't delete my post as I thought it might help someone else. I also got to learn about the resize commands; just about to read up on them now.