Scripting Resources for DigitalMicrograph™ |
Example: Set and Reset Pulldown Menus |
|
Function |
An example dialog script which shows how to create a dialog where a user can make a selection from a pulldown menu, and then reset that menu by pressing a Reset button. |
Version |
version:20060221, v1.0 |
Author |
D. R. G. Mitchell |
Acknowledgements |
- |
Comments |
Resetting menus is often necessary either via a reset/cancel button or via the action of another dialog element, such a second menu, button etc. |
System Requirements |
Should be compatible with all recent versions of DigitalMicrograph. |
Known Issues |
- |
Supported |
Yes |
Included Files |
Main script file. |
Source Code |
// simple dialog script to demonstrate the resetting of pulldown menus // version:20060221, v1.0
// D. R. G. Mitchell, adminnospam@dmscripting.com (remove the nospam to make this email address work) // Feb 2006
// variables
number returnno string returnname, returnstring taggroup intfield1
class DialogLibraryTestClass : uiframe { number change_count, action_count;
void tracknamechange( object self, TagGroup tg) { returnno=val(dlggetstringvalue(tg)) dlggetnthlabel(tg, returnno, returnname) dlgvalue(intfield1,dlggetvalue(tg)) }
void cancelpane( object self) // when the 'Cancel' button is pressed { documentwindow windoc=getdocumentwindow(0) windowclose(windoc,0) }
// This part of the script does the resetting, when the reset button is pressed
void reset(object self) // when the 'Reset' button is pressed {
// The command below looks up the taggroup for the pulldown menu. When the pulldown was created // (see the MakePulldowns() I set the identifier for the pulldown menu taggroup (to a string called 'MyPullDown')before it was grouped // with other things, like labels. This keeps the structure of the tag group simple. It also avoids needing // to use a global taggroup variable for the pulldown. By way of contrast, for the integer field (intfield1) I did not set an identifier // and so need to use a global variable to access it in subsequent functions. Global variables are best avoided wherever possible, // so use identifiers and look them up within functions
taggroup Getthepulldown=self.lookupelement("MyPullDown")
// The command below is included only for demonstration of how to actually determine the internal structure of the // the tag group you are trying to control or reset. If you comment out the taggroupopenbrowserwindow command, // the script will run as you might expect.
taggroupopenbrowserwindow(GetthePulldown,0)
// The string ("Value") which appears in the TagGroupSetTagAsNumber command below is derived by using the taggroupopenbrowserwindow() command. // The structure of the tag group can vary depending on how you have grouped elements. In some instances the relevant tags // may be strings and these can be set with the corresponding taggroupsettagasstring command // The command below sets the pulldown menu to which ever value you choose - in this case back to the first choice item
TagGroupSetTagAsNumber( GetthePulldown, "Value", 1 )
// Other reset commands can be used to set other dialog elements, such as an integer field in this case, // back to an appropriate initial value - 1 in this case.
intfield1.dlgvalue(1) } }
TagGroup MakeFields() // makes the integer field { taggroup label1=dlgcreatelabel("Pulldown Value").dlganchor("Center") intfield1 = DLGCreateIntegerField(0,10).DLGAnchor("Center"); intfield1.dlgvalue(1) taggroup group1=dlggroupitems(label1,intfield1) return group1 }
TagGroup Makepulldowns() // creates the pulldown menu { TagGroup pulldown_items; TagGroup pulldown = DLGCreatePopup(pulldown_items, 1, "tracknamechange")
// Edit these lines to change your user list
pulldown_items.DLGAddPopupItemEntry("Default Choice"); pulldown_items.DLGAddPopupItemEntry("Choice 2"); pulldown_items.DLGAddPopupItemEntry("Choice 3"); pulldown_items.DLGAddPopupItemEntry("Choice 4"); pulldown_items.DLGAddPopupItemEntry("Choice 5"); pulldown_items.DLGAddPopupItemEntry("Choice 6"); pulldown_items.DLGAddPopupItemEntry("Choice 7");
// The command below labels the taggroup for the pulldown menu with a string - 'MyPullDown'. This is used in the Reset function // to source the taggroup, without having to use a global variable for the tag group
pulldown.DLGIdentifier("MyPullDown")
taggroup label2=dlgcreatelabel("Choose Here").dlganchor("Centre") taggroup pulldowngroup=dlggroupitems(label2, pulldown)
return pulldowngroup }
// This creates the reset and cancel buttons in the dialog
TagGroup MakeButtons() { taggroup pushbuttons TagGroup CalculateButton = DLGCreatePushButton("Reset", "Reset").DLGSide("Bottom"); calculatebutton.dlgexternalpadding(10,10) TagGroup CancelButton = DLGCreatePushButton(" Cancel ", "cancelpane").DLGSide("Bottom"); cancelbutton.dlgexternalpadding(10,10) pushbuttons=dlggroupitems(calculatebutton, cancelbutton) pushbuttons.dlgtablelayout(2,1,0)
return pushbuttons }
// function to create the dialog
void createdialog() { TagGroup dialog_items; TagGroup dialog = DLGCreateDialog("Enter Specimen Number and User Name", dialog_items);
dialog_items.DLGAddElement(makepulldowns() ); dialog_items.DLGAddElement( MakeFields() ); dialog_items.dlgaddelement(MakeButtons() ); dialog.DLGTableLayout(2,2, 0);
object dialog_frame = alloc(DialogLibraryTestClass).init(dialog) dialog_frame.display("Set and Reset Pulldowns")
}
// Main Program createdialog()
|