// 2 button dialog example
// To invert the most front image.
// Modified from http://www.dmscripting.com/files/Example_Button_Enabling_Dialog.s
// Renfong
// 2021/03/24
// Global variables
taggroup firstbutton, secondbutton
number true=1
number false=0
image src
// the class createbuttondialog is of the type user interface frame (UIFrame), and responds to interactions
// with the dialog - in this case pressing buttons
class CreateButtonDialog : uiframe {
void button1response(object self) {
//the response when the button is pressed
self.SetElementIsEnabled("first", false); // these commands set the button as enabled or not enabled
self.SetElementIsEnabled("second", true); // "second" in this command is the identifier of the button 'secondbutton'
// put action1 here
src.GetFrontImage()
result(src.GetName()+" is picked.\n")
};
void button2response(object self) {
//the response when the second button is pressed
self.SetElementIsEnabled("first",true);
self.SetElementIsEnabled("second",false);
// put action2 here
image invert
invert = src
invert = max(src)-invert
invert.SetName("Invert of "+src.GetName())
invert.ShowImage()
};
}
// this function creates a button taggroup which returns the taggroup 'box' which is added to
// the dialog in the createdialog function.
taggroup MakeButton() {
// Creates a box in the dialog which surrounds the button
taggroup box_items
taggroup box=dlgcreatebox("", box_items)
box.dlgexternalpadding(5,5)
box.dlginternalpadding(25,25)
// Creates the first button
firstButton = DLGCreatePushButton("Get Front Image", "button1response")
DLGEnabled(firstbutton,1) // sets the button as enabled when the dialog is first created
DLGIdentifier(firstbutton, "first") // identifiers are strings which identify an element, such as a button
// they are used to change the enabled/disabled status of the element in the button response functions above
firstbutton.DLGExternalPadding(10,0)
box_items.DLGAddElement(firstbutton)
// Creates the second button
secondbutton = DLGCreatePushButton("Show Invert", "button2response")
DLGEnabled(secondbutton,0)
DLGIdentifier(secondbutton, "second")
secondbutton.DLGExternalPadding(5,10)
box_items.DLGAddElement(secondbutton)
return box
};
// This function creates the dialog, drawing togther the parts (buttons etc) which make it up
// and alloc 'ing' the dialog with the response, so that one responds to the other. It also
// displays the dialog
void CreateDialog() {
// Configure the positioning in the top right of the application window
TagGroup position;
position = DLGBuildPositionFromApplication()
position.TagGroupSetTagAsTagGroup( "Width", DLGBuildAutoSize() )
position.TagGroupSetTagAsTagGroup( "Height", DLGBuildAutoSize() )
position.TagGroupSetTagAsTagGroup( "X", DLGBuildRelativePosition( "Inside", 1 ) )
position.TagGroupSetTagAsTagGroup( "Y", DLGBuildRelativePosition( "Inside", 1 ) )
TagGroup dialog_items;
TagGroup dialog = DLGCreateDialog("Do invert", dialog_items).dlgposition(position);
dialog_items.DLGAddElement( MakeButton() );
object dialog_frame = alloc(CreateButtonDialog).init(dialog)
dialog_frame.display("Invet Image");
};
// calls the above function which puts it all together
CreateDialog()
============================================
result:
Comments
Post a Comment