#include "src/rplexternals.h" #include "motif.h" declareExternalFunction(XtCreatePopupShell) declareObject(class); declareObject(name); declareObject(parent); declareObject(widget); char target(wc_s); char target(wn); WidgetClass wc; HEADER declareHelpString("Create a popup shell\n" " 3: name\n" " 2: class\n" " 1: parent\n" " -> 1: widget\n"); numberOfArguments(3); FUNCTION if (initializationDone eq true) then pullFromStack(parent, external); returnOnError(freeObject(parent)); ifIsExternal(parent, WIDGET) then orElse executionError("Type mismath error"); returnOnError(freeObject(parent)); endIf pullFromStack(class, string); returnOnError(freeObject(parent); freeObject(class)); pullFromStack(name, string); returnOnError(freeObject(parent); freeObject(class); freeObject(name)); getString(class, wc_s); getString(name, wn); Xm_widgets_classes(wc_s, wc); returnOnError(freeObject(parent); freeObject(class); freeObject(name)); createExternalObject(widget, WIDGET); objectOf(widget) = allocate(size(Widget)); target(objectContainer(Widget, widget)) = XtVaCreatePopupShell(wn, wc, target( objectContainer(Widget, parent)), NULL); XtManageChild(target(objectContainer(Widget, widget))); freeObject(parent); freeObject(class); freeObject(name); pushOnStack(widget); orElse executionError("Application not initialized"); returnOnError(); endIf END endExternalFunction // vim: ts=4