
Detecting which subpanel & control was target of interaction

rhjpires
With the great help of some of you I have made a panel with different subpanels, all with the same set of controls.
I would now need to know the subpanel the user interacted with upon pressing a button, a checkbox or a popupmenu.
Using the Proc associated with checkboxes, I have been testing several operations to print to the console the results of my tests, but I don't seem to be able to print more than the name of the parent panel, instead of the subpanel.
Could anyone help?
Thanks in advance!
R.
The Panel looks like this:
Function MakePanel() NewPanel /W=(0,0,1200,600) /N=MyFunnyPanel/k=1 //Define Vertical guides DefineGuide UGV0={FL,200},UGV1={UGV0,0.33333333,FR},UGV2={UGV0,0.66666666, FR} //Define Horizonzal guides DefineGuide UGH0={FB,0.5,FT} string quote = "\"" String DataTypeList = quote + "Alpha;Beta;Delta;Gamma;Theta" + quote String SectionList = quote + "First;Second;Third;Fourth;" + quote //Create subpanels/subwindows where data will be displayed according to user input on controls Variable i for(i = 0; i < 6; i += 1) switch(i) case 0: NewPanel/FG=(UGV0,FT,UGV1,UGH0)/HOST=MyFunnyPanel break case 1: NewPanel/FG=(UGV1,FT,UGV2,UGH0)/HOST=MyFunnyPanel break case 2: NewPanel/FG=(UGV2,FT,FR,UGH0)/HOST=MyFunnyPanel break case 3: NewPanel/FG=(UGV0,UGH0,UGV1,FB)/HOST=MyFunnyPanel break case 4: NewPanel/FG=(UGV1,UGH0,UGV2,FB)/HOST=MyFunnyPanel break case 5: NewPanel/FG=(UGV2,UGH0,FR,FB)/HOST=MyFunnyPanel break endswitch //Names of Controls String SelectData = "SelectData"+num2str(i) String Selectsection = "SelectSection"+num2str(i) String CheckTS = "CheckTS"+num2str(i) String CheckHist = "CheckHist"+num2str(i) String CheckBar = "CheckBar"+num2str(i) String PopButton = "PopButton"+num2str(i) //Indicate controls needed PopupMenu $SelectData, title="Data Type", bodyWidth=110, value=#DataTypeList, pos={120,10} PopupMenu $SelectSection, title="Section", bodyWidth=100, value=#SectionList, pos={270,10} CheckBox $CheckTS,pos={5,30},size={75,15},title="Time Series",value=1,mode=1, proc=CheckPlotTypeProc CheckBox $CheckHist,pos={95,30},size={75,15},title="Histogram",value=0,mode=1, proc=CheckPlotTypeProc CheckBox $CheckBar,pos={185,30},size={75,15},title="Average",value=0,mode=1, proc=CheckPlotTypeProc Button $PopButton,title="pop",size={30,20}, pos={280,30} // add more controls here... RenameWindow #,$("P" + num2istr(i)) //Each subwindow has a name endfor SetActiveSubwindow ## //Go back to parent window String/G ListOFSubWindows = ChildWindowList("MYFunnyPanel") End
John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
October 26, 2017 at 04:55 pm - Permalink
As an example, see below:
Hope this helps,
Kurt
October 26, 2017 at 11:42 pm - Permalink
From
DisplayHelpTopic "WMButtonAction"
i saw this: "char win[MAX_WIN_PATH+1] // Host window or subwindow name" sort of matching what you say but I have no idea of what to do with it.I guess that I could use a swich-case-endswich approach combined with eventcode numbering (Case 2) to detect mouse click on control, but how do I go from that to extracting the subwindow name and control name is not entirely clear to me.
Thanks for the help!
October 26, 2017 at 11:45 pm - Permalink
I'll have a look. As you can see your previous example for the overall panel design was very helpful.
Many thanks again!
Cheers,
R.
October 26, 2017 at 11:49 pm - Permalink
It looks like you are already doing it:
So maybe I misunderstood what the present problem is. In my testing, bstruc.win contains the full subwindow path to the subwindow that owns the button that triggered your action proc.
John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
October 27, 2017 at 10:52 am - Permalink
Cheers,
R.
October 30, 2017 at 01:10 pm - Permalink