AdoScript Triggers ​
AdoScript functioality can be triggered in different ways. In the following the alternatives to include AdoScript in the implementation of a modelling toolkit are introduced.
AdoScript via Menu Item ​
The library attribute "External coupling" of the dynamic sub-library allows to define new menu items for each component of the ADOxx Modelling Toolkit and assign AdoScript functionality to the item. By clicking on the item the AdoScript code specified is executed.
ITEM "ADOxx-Standard-Methode" acquisition:"~Hilfe" modeling:"~Hilfe"
        analysis:"~Hilfe" simulation:"~Hilfe"
        evaluation:"~Hilfe" importexport:"~Hilfe"
CC "Application" GET_PATH "adostd.hlp"
START ("\"" + path + "\"")
AdoScript on Event ​
AdoScript can be bound to events in ADOxx and be triggered accordingly. Events are categorized similar as AdoScript commands. The listener implementation is done in library attribute "External coupling" of the dynamic sub-library.
ON_EVENT "AppInitialized" {
#do smthg.
}
AdoScript via Notebook ​
In addition to menu items in the tool, buttons within the notebook of instances and models can be used to trigger AdoScripts. The attribute type "PROGRAMCALL" is used to assign AdoScript functionality within the notebook.
Trigger AdoScript during Startup - Command Prompt Handover ​
AdoScript integration is possible using command line parameter on startup of ADOxx based tools
ECHO CC "AdoScript" FREAD file:("batchupd.adoscript")
EXECUTE (text) CC "Application" EXIT \| areena **-u**batchupd **-p**batchupd **-d**ADOxxdb **-s**sqlserver -e
The following command line parameters are available:
-uUser
-pPassword
-dDatabase
-sDBServerSystem
-e InlineHandOver or File Execution
Test AdoScript in Debug Shell ​
As a testing facility, the AdoScript Debug Shell can be used to run code snipplets within the modelling toolkit. The shell window is itself programmed in AdoScript. To integrate the shell, use the code below and add it to the library attribute "External coupling" of the dynamic sub-library resulting in a new sub-menu item called "Shell window" within the menu "Extras" of the modelling component.
ITEM "Shell window" modeling: "Extras"
SET endbutton:"ok"
WHILE (endbutton = "ok") {
CC "AdoScript" EDITBOX text: (adoscript)
title:"Enter the code you want to test..."
oktext:"Run"
fontname:"Arial" fontheight: 14
IF ( endbutton = "ok") {
SETG adoscript:(text)
EXECUTE(text)
}
}
AdoScript Debug Shell
Icon Based Triggers ​
The command SET_ICON_CLICK_HDL changes the click handler (the function which is executed on a click) of a smart icon. Smart icons can be defined within the library attribute "External coupling" using the "AppInitialized" event.
CC "Application" [raw*] SET_ICON_CLICK_HDL [component:Component]
name:strValue
Component: "acquisition" | "modeling" | "analysis" |"simulation" |
"evaluation" | "importexport" | "all"
--> RESULT ecode:intValue .
The name of a custom smart icon is the name specified at INSERT_ICON. The names of the built-in smart icons are listed in the SET_ICON_VISIBLE documentation. * The raw argument at the CC element may be of importance here! Without specifying raw, variables used in the handler are replaced by the current values of these variables. If the handler just calls a global procedure without parameters, raw is not needed. In any other case raw is important to allow the definition of new variables in the script.
As an example, please find attached to this post a sample implementation that shows how to
- Invoke a script within a file (scenario 2) from an icon
- Invoke a script within the library attribute (scenario 3) an icon
- Invoke the same script in an event handler
The sample code is also shown below. To include and test by yourself, please modify/add the following snipplet to the "External coupling" library attribute within the dynamic library.
ON\_EVENT "AppInitialized" {
\
add an icon handler for the file-based execution ​
CC "Application" INSERT\_ICON component: "all"
name: "GetModelIDFileExecute"
bitmap:"db:\\icon1.bmp"
text:"Get Model ID (execute file)"
\
here "raw" is not needed, since the file is handled as an ​
encapsulated procedure ​
CC "Application" SET\_ICON\_CLICK\_HDL name:"GetModelIDFileExecute" {
EXECUTE file: ("db:\\HDLAdoScript.asc")
}
\
add an icon handler for the file-based execution ​
CC "Application" INSERT\_ICON component: "all" name: "GetModelIDAdoScriptExecute"
bitmap:"db:\\icon2.bmp"
text:"Get Model ID (AdoScript in HDL)"
\
"raw" is important here, since the code should be interpreted and no variables are set ​
CC "Application" raw SET\_ICON\_CLICK\_HDL
name:"GetModelIDAdoScriptExecute" {
CC "Modeling" GET\_ACT\_MODEL
SET id\_ActModel: ( modelid )
CC "AdoScript" INFOBOX ("Return from direct invocation: " +
STR id\_ActModel + "!")
}
}
ON\_EVENT "AfterCreateModelWindow" {
\
This event is triggered after a new model window was created in the ​
modelling editor. ​
modelid contains the model ID of the model in question. ​
CC "AdoScript" INFOBOX "Execute during event from direct implementation"
CC "Modeling" GET\_ACT\_MODEL
SET id\_ActModel: ( modelid )
CC "AdoScript" INFOBOX ("Return from direct invocation (in event) " +
STR ( id\_ActModel ) + "!")
}
Context Menu Item Trigger ​
The command in the message port "Application" INSERT_CONTEXT_MENU_ITEM inserts a new (custom) menu item into a context menu.
CC "Application" INSERT_CONTEXT_MENU_ITEM context:Context
item:strValue
[pos:strValue]
Context : "drawingarea.general" | "drawingarea.mobject" |
"drawingarea.connector" | "drawingarea.swimlane" |
"modelingtable" |"explorer.db" | "explorer.windows" |
"startpage.thumb" .
For executing an AdoScript wiht this item SET_CMI_SELECT_HDL is used. It replaces the code which is executed on selection of a context menu item with an AdoScript.
CC "Application" [raw*] SET_CMI_SELECT_HDL
context:Context item:strValue { AdoScript } .
Context : "drawingarea.general" | "drawingarea.mobject" |
"drawingarea.connector" | "drawingarea.swimlane" |
"modelingtable" |"explorer.db" | "explorer.windows" |
"startpage.thumb" .
The example below shows how context menu triggers are used.
ON_EVENT "AppInitialized" {
CC "Application" INSERT_CONTEXT_MENU_ITEM context:
"drawingarea.mobject"
item: "Create Comment"
CC "Application" SET_CMI_SELECT_HDL context: "drawingarea.mobject" item: "Create Comment" { EXECUTE file: ("db:\WriteComment.asc") }
}