version 1.1, 2017/07/05 13:53:40
|
version 1.3, 2017/07/06 10:18:04
|
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); |
|
|
|
ArgList args; |
Cardinal argNum; |
Cardinal argNum; |
|
String argument; |
WidgetClass wc; |
WidgetClass wc; |
|
XmString x_string; |
|
|
HEADER |
HEADER |
declareHelpString("Create a Motif widget\n" |
declareHelpString("Create a Motif widget\n" |
Line 129 declareExternalFunction(XtCreateWidget)
|
Line 136 declareExternalFunction(XtCreateWidget)
|
current = nextElementOfDaisyChain(current); |
current = nextElementOfDaisyChain(current); |
postIncr(argNum); |
postIncr(argNum); |
endWhile |
endWhile |
|
|
|
args = allocate(size(Arg) * argNum); |
|
argNum = 0; |
|
getDaisyChainFromList(parametersObject, current); |
|
|
|
repeatWhile(not nullified(current)) |
|
list = fetchElementFromDaisyChain(current); |
|
getDaisyChainFromList(list, current2); |
|
getString(fetchElementFromDaisyChain(current2), name); |
|
current2 = nextElementOfDaisyChain(current2); |
|
|
|
XmN_constants(name, argument); |
|
|
|
returnOnError(freeObject(parametersObject); |
|
freeObject(parentObject); |
|
freeObject(classObject); |
|
freeObject(nameObject)); |
|
|
|
ifIsExternal(fetchElementFromDaisyChain(current2), WIDGET) then |
|
if ((strcmp(name, "XmNtopWidget") eq 0) or |
|
(strcmp(name, "XmNbottomWidget") eq 0) or |
|
(strcmp(name, "XmNleftWidget") eq 0) or |
|
(strcmp(name, "XmNrightWidget") eq 0)) then |
|
XtSetArg(args[argNum], argument, |
|
(XtArgVal) (*((sXtAppContext *) |
|
objectContainer(fetchElementFromDaisyChain( |
|
current2)))).widget); |
|
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(name, "XmNtopWidget") eq 0) or |
|
(strcmp(name, "XmNbottomWidget") eq 0) or |
|
(strcmp(name, "XmNleftWidget") eq 0) or |
|
(strcmp(name, "XmNrightWidget") eq 0)) then |
|
XtSetArg(args[argNum], argument, |
|
(XtArgVal) (*((sXtAppContext *) |
|
objectContainer(directive))).widget); |
|
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 |
|
endWhile |
|
|
|
createExternalObject(widget, WIDGET); |
|
|
|
target((Widget *) objectContainer(widget)) = |
|
XtCreateWidget(name, wc, (*((sXtAppContext *) |
|
objectContainer(parentObject))).widget, args, argNum); |
|
XtManageChild(target((Widget *) objectContainer(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 |