version 1.2, 2017/07/05 19:07:19
|
version 1.7, 2017/07/30 21:59:40
|
Line 8 declareExternalFunction(XtCreateWidget)
|
Line 8 declareExternalFunction(XtCreateWidget)
|
declareObject(parametersObject); |
declareObject(parametersObject); |
declareObject(list); |
declareObject(list); |
declareObject(directive); |
declareObject(directive); |
|
declareObject(widget); |
|
|
|
declareInteger(value); |
|
|
declareDaisyChain(current); |
declareDaisyChain(current); |
declareDaisyChain(current2); |
declareDaisyChain(current2); |
|
|
char target(name); |
char target(name); |
char target(class); |
char target(class); |
|
char target(cvalue); |
|
char target(command); |
|
|
ArgList args; |
ArgList args; |
Cardinal argNum; |
Cardinal argNum; |
String argument; |
String argument; |
WidgetClass wc; |
WidgetClass wc; |
|
XmString x_string; |
|
|
HEADER |
HEADER |
declareHelpString("Create a Motif widget\n" |
declareHelpString("Create a Motif widget\n" |
Line 37 declareExternalFunction(XtCreateWidget)
|
Line 43 declareExternalFunction(XtCreateWidget)
|
returnOnError(freeObject(parametersObject); |
returnOnError(freeObject(parametersObject); |
freeObject(parentObject)); |
freeObject(parentObject)); |
|
|
|
ifIsExternal(parentObject, WIDGET) then |
|
orElse |
|
executionError("Type mismatch error"); |
|
returnOnError(freeObject(parametersObject); |
|
freeObject(parentObject)); |
|
endIf |
|
|
pullFromStack(classObject, string); |
pullFromStack(classObject, string); |
returnOnError(freeObject(parametersObject); |
returnOnError(freeObject(parametersObject); |
freeObject(parentObject); |
freeObject(parentObject); |
Line 139 declareExternalFunction(XtCreateWidget)
|
Line 152 declareExternalFunction(XtCreateWidget)
|
repeatWhile(not nullified(current)) |
repeatWhile(not nullified(current)) |
list = fetchElementFromDaisyChain(current); |
list = fetchElementFromDaisyChain(current); |
getDaisyChainFromList(list, current2); |
getDaisyChainFromList(list, current2); |
getString(fetchElementFromDaisyChain(current2), name); |
getString(fetchElementFromDaisyChain(current2), command); |
current2 = nextElementOfDaisyChain(current2); |
current2 = nextElementOfDaisyChain(current2); |
|
|
XmN_constants(name, argument); |
XmN_constants(command, argument); |
|
|
returnOnError(freeObject(parametersObject); |
returnOnError(freeObject(parametersObject); |
freeObject(parentObject); |
freeObject(parentObject); |
freeObject(classObject); |
freeObject(classObject); |
freeObject(nameObject)); |
freeObject(nameObject)); |
|
|
|
ifIsExternal(fetchElementFromDaisyChain(current2), WIDGET) then |
|
if ((strcmp(command, "XmNtopWidget") eq 0) or |
|
(strcmp(command, "XmNbottomWidget") eq 0) or |
|
(strcmp(command, "XmNleftWidget") eq 0) or |
|
(strcmp(command, "XmNrightWidget") eq 0)) then |
|
XtSetArg(args[argNum], argument, |
|
(XtArgVal) target(objectContainer(Widget, |
|
fetchElementFromDaisyChain(current2)))); |
|
orElse |
|
executionError("Wait for XmN*Widget"); |
|
deallocate(args); |
|
returnOnError(freeObject(parametersObject); |
|
freeObject(parentObject); |
|
freeObject(classObject); |
|
freeObject(nameObject)); |
|
endIf |
|
elseIfIsName(fetchElementFromDaisyChain(current2)) then |
|
directive = fetchElementFromDaisyChain(current2); |
|
dupObject(directive); |
|
intrinsic(pshcntxt); |
|
pushOnStack(directive); |
|
intrinsic(eval); |
|
pullFromStack(directive, unknown); |
|
intrinsic(pulcntxt); |
|
|
|
ifIsInteger(directive) then |
|
getInteger(directive, value); |
|
XtSetArg(args[argNum], argument, (XtArgVal) value); |
|
elseIfIsExternal(directive, WIDGET) then |
|
if ((strcmp(command, "XmNtopWidget") eq 0) or |
|
(strcmp(command, "XmNbottomWidget") eq 0) or |
|
(strcmp(command, "XmNleftWidget") eq 0) or |
|
(strcmp(command, "XmNrightWidget") eq 0)) then |
|
XtSetArg(args[argNum], argument, |
|
(XtArgVal) target(objectContainer(Widget, |
|
directive))); |
|
orElse |
|
executionError("Wait for XmN*Widget"); |
|
deallocate(args); |
|
returnOnError(freeObject(parametersObject); |
|
freeObject(parentObject); |
|
freeObject(classObject); |
|
freeObject(nameObject)); |
|
endIf |
|
endIf |
|
elseIfIsInteger(fetchElementFromDaisyChain(current2)) then |
|
getInteger(fetchElementFromDaisyChain(current2), value); |
|
XtSetArg(args[argNum], argument, (XtArgVal) value); |
|
orElse // Allowed types are integer, name, widget or string |
|
getString(fetchElementFromDaisyChain(current2), cvalue); |
|
x_string = XmStringCreate(cvalue, XmFONTLIST_DEFAULT_TAG); |
|
XtSetArg(args[argNum], argument, (XtArgVal) x_string); |
|
endIf |
|
|
|
current = nextElementOfDaisyChain(current); |
|
postIncr(argNum); |
endWhile |
endWhile |
|
|
|
createExternalObject(widget, WIDGET); |
|
objectOf(widget) = allocate(size(Widget)); |
|
|
|
target(objectContainer(Widget, widget)) = |
|
XtCreateWidget(name, wc, target( |
|
objectContainer(Widget, parentObject)), args, argNum); |
|
XtManageChild(target(objectContainer(Widget, widget))); |
|
|
|
pushOnStack(widget); |
|
deallocate(args); |
orElse |
orElse |
executionError("Application not initialized"); |
executionError("Application not initialized"); |
returnOnError(); |
returnOnError(); |
endIf |
endIf |
|
|
setFalse(initializationDone); |
freeObject(parametersObject); |
|
freeObject(parentObject); |
|
freeObject(classObject); |
|
freeObject(nameObject); |
END |
END |
endExternalFunction |
endExternalFunction |
|
|
|
// vim: ts=4 |