version 1.2, 2017/07/10 14:48:43
|
version 1.6, 2017/07/30 21:59:40
|
Line 4
|
Line 4
|
declareExternalFunction(XtAddCallback) |
declareExternalFunction(XtAddCallback) |
declareObject(widget); |
declareObject(widget); |
declareObject(callbackName); |
declareObject(callbackName); |
|
declareObject(callbackObject); |
declareObject(callbackProc); |
declareObject(callbackProc); |
declareObject(subList); |
declareDaisyChain(tmp); |
declareObject(procStatus); |
|
|
|
string type; |
sXtCallback *sCallback; |
|
|
String callback; |
string type; |
|
|
|
String callback; |
|
|
HEADER |
HEADER |
declareHelpString("Add callback to a widget\n" |
declareHelpString("Add callback to a widget\n" |
" 3: widget\n" |
" 3: widget\n" |
" 2: callback name (XmNactivateCallback)\n" |
" 2: callback name (XmNactivateCallback)\n" |
" 1: expression\n"); |
" 1: expression\n" |
|
" -> 1: callback\n"); |
numberOfArguments(3); |
numberOfArguments(3); |
FUNCTION |
FUNCTION |
if (initializationDone eq true) then |
if (initializationDone eq true) then |
Line 47 declareExternalFunction(XtAddCallback)
|
Line 50 declareExternalFunction(XtAddCallback)
|
freeObject(callbackName); freeObject(widget)); |
freeObject(callbackName); freeObject(widget)); |
endIf |
endIf |
|
|
// Adding a copy of expression in a list. |
createExternalObject(callbackObject, CALLBACK); |
|
|
dupObject(callbackProc); |
|
|
|
createListObject(subList); |
|
createObject(procStatus); |
|
|
|
objectContainer(procStatus) = address(procStatus(rpl_arguments)); |
|
|
|
insertObjectIntoList(subList, callbackProc); |
sCallback = allocate(size(sXtCallback)); |
insertObjectIntoList(subList, procStatus); |
sCallback->status = procStatus(rpl_arguments); |
insertObjectIntoList(callbacksList, subList); |
sCallback->callback = callbackProc; |
|
sCallback->widget = target(objectContainer(Widget, widget)); |
|
objectOf(callbackObject) = sCallback; |
|
|
|
XtAddCallback(target(objectContainer(Widget, widget)), |
|
callback, rplCallback, (XtPointer) sCallback); |
|
|
|
tmp = allocate(size(daisyChain)); |
|
tmp->next = lCallbacks; |
|
tmp->data = callbackObject; |
|
lCallbacks = tmp; |
|
|
XtAddCallback(target((Widget *) objectContainer(widget)), |
dupObject(callbackObject); |
callback, rplCallback, (XtPointer) subList); |
pushOnStack(callbackObject); |
orElse |
orElse |
executionError("Application not initialized"); |
executionError("Application not initialized"); |
returnOnError(); |
returnOnError(); |