REF MOTIF Jonathan Meyer, Andreas Schoter, Sep 1991 Revised John Gibson, Apr 1993 COPYRIGHT University of Sussex 1993. All Rights Reserved. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< THE POPLOG MOTIF >>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< INTERFACE >>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< This file provides some programming details of the Poplog interface to the Motif Widget Set. See HELP * MOTIF for an overview of the Poplog Motif interface. CONTENTS - (Use g to access required sections) 1 Introduction 2 Loading Motif Widgets 3 Motif Widget Classes 3.1 Widgets 3.2 Gadgets 3.3 Objects 4 Motif Procedures 4.1 Undocumented Procedures 5 Include Files: Constants and Typespecs 6 Additional Data Structures 7 Motif String Support 8 Unsupported Features 8.1 Pop-11 procedure registration 9 Associated Documentation --------------- 1 Introduction --------------- Motif does not have any special startup requirements, so only the standard sysxsetup (or XptDefaultSetup) procedure is needed to initialise the toolkit before creating Motif widgets. (If you start Pop-11 etc with the %x flag then this is done automatically -- see REF * XT_INIT for details.) ------------------------ 2 Loading Motif Widgets ------------------------ To use Motif library files, it is first necessary to extend popuseslist to include the Xm sub-directory of the main Poplog X library. This is done with uses Xm; For each Motif widgetclass, the Xm directory defines a constant identifier xmFooBazWidget (in a file of that name) which you must 'use' in order to use the widgetclass, i.e. uses xmFooBazWidget; Thus for example, the Motif C widget class name xmPushButtonWidgetClass is mapped onto the Poplog name xmPushButtonWidget: uses xmPushButtonWidget; xmPushButtonWidget => Alternatively, you can use LIB * XmAllWidgets: uses XmAllWidgets; This is an Xm library file containing a uses for every widget, and so loads them all once. Loading a Motif widgetclass will cause any associated procedures to be loaded as well. ----------------------- 3 Motif Widget Classes ----------------------- Each of the widgetclasses below is loaded by a file of the same name in the Xm directory (the files use * XptLoadWidgetClass to load each class). XmAllWidgets [library] This library loads all the widgetclasses below in one go. 3.1 Widgets ------------ xmArrowButtonWidget -> widgetclass [constant] Consists of a directional arrow surrounded by a border shadow. It inherits from Core and Primitive classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmBulletinBoardWidget -> widgetclass [constant] A composite widget for providing simple geometry management for its children. Inherits from Core, Composite, Constraint and Manager widget classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmCascadeButtonWidget -> widgetclass [constant] This widget class is used in menu systems to link two MenuPanes or a MenuBar to a MenuPane. It inherits from Core, Primitive and Label widget classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmCommandWidget -> widgetclass [constant] A special-purpose composite widget for command entry with built-in history mechanism. It inherits from Core, Composite, Constraint, Manager, BulletinBoard and SelectionBox classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmDialogShellWidget -> widgetclass [constant] Used as the parent shell for dialogs. It inherits from Core, Composite, Shell, WMShell, VendorShell and TransientShell classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmDrawingAreaWidget -> widgetclass [constant] This is an empty widget designed to be easily adaptable for a variety of purposes. It inherits from Core, Composite, Constraint and Manager classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmDrawnButtonWidget -> widgetclass [constant] This is an empty widget window surrounded by a shadow border. It inherits from Core, Primitive and Label classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmFileSelectionBoxWidget -> widgetclass [constant] This widget provides utilities for traversing directories and selcting files. It inherits from Core, Composite, Constraint, Manager, BulletinBoard and SelectionBox classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmFormWidget -> widgetclass [constant] This is a container widget for managing the layout of children. It inherits from Core, Composite, Constraint, Manager and BulletinBoard classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmFrameWidget -> widgetclass [constant] A simple manager for enclosing a single child in a border. It inherits from Core, Composite, Constraint and Manager classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmLabelWidget -> widgetclass [constant] An instantiable widget also used a superclass for other button widgets. It inherits from Core and Primitive classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmListWidget -> widgetclass [constant] A widget that allows the user to select one or more items from a list of choices. It inherits from Core and Primitive classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmMainWindowWidget -> widgetclass [constant] This widget provides a standard layout semantics for the main window of an application. It inherits from Core, Composite, Constraint, Manager and ScrolledWindow classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmManagerWidget -> widgetclass [constant] This is a superclass for many other widget classes. It inherits from Core, Composite, and Constraint classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmMenuShellWidget -> widgetclass [constant] This is a custom OverrideShell widget designed to contain Popup or Pulldown MenuPanes. It inheritsd from Core, Composite, Shell and OverrideShell classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmMessageBoxWidget -> widgetclass [constant] This is a dialog widget for simple message dialogs. It inherits from Core, Composite, Constrint, Manager and BulletinBoard classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmPanedWindowWidget -> widgetclass [constant] This is a composite widget that lays out children in a vertically tiled format. It inherits from Core, Composite, Constraint and Manager classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmPrimitiveWidget -> widgetclass [constant] This widget class is used as a supporting superclass for a variety of other widget classes. It inherits from the Core class. See OSF/Motif Manual Set: Programmer's Reference for more details. xmPushButtonWidget -> widgetclass [constant] This widget class is used to issue commands within an application. It inherits from Core, Primitive and Label classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmRowColumnWidget -> widgetclass [constant] A general row-column manager capable of containing and widget class instance as a child. It inherits from Core, Composite, Constraint and Manager classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmScaleWidget -> widgetclass [constant] Used by applications to indicate a value from a range of values, allowing user modification of that value. It inherits from Core, Composite, Constraint and Manager classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmScrollBarWidget -> widgetclass [constant] Used to view data too large to be displayed all at once. It inherits from Core and Primitive classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmScrolledWindowWidget -> widgetclass [constant] This widget combines one or two ScrollbarWidgets and a viewing area. It inherits from Core, Composite, Constraint and Manager classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmSelectionBoxWidget -> widgetclass [constant] A general dialog widget allowing the selection of a single item from a list. It inherits from Core, Composite, Constraint, Manager and BuletinBoard classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmSeparatorWidget -> widgetclass [constant] A widget for separating items in a display. It inherits from Core and Primitive classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmTextFieldWidget -> widgetclass [constant] This widget provides a single-line text editor. It inherits from Core and Primitive classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmTextWidget -> widgetclass [constant] This widget provides a single and multi-line text editor. It inherits from Core and Primitive classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmToggleButtonWidget -> widgetclass [constant] This widget controls the display and setting of data withing an application. It inherits from Core, Primitive and Label classes. See OSF/Motif Manual Set: Programmer's Reference for more details. 3.2 Gadgets ------------ xmArrowButtonGadget -> widgetclass [constant] Consists of a directional arrow surrounded by a border shadow. Inherits from Object, RectObject and Gadget classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmCascadeButtonGadget -> widgetclass [constant] This gadget class is similar to xmCascadeButtonWidget with the additional facility of being able to link an OptionMenu to a MenuPane. It inherits from Object, RectObject, Gadget, and LabelGadget classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmGadget -> widgetclass [constant] This widget class is a supporting superclass for the other gadget classes. It inherits from Object and RectObject classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmLabelGadget -> widgetclass [constant] An instantiable widget also used a a superclass for other button gadgets. It inherits from Object, RectObject and Gadget classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmPushButtonGadget -> widgetclass [constant] Similar to PushButtenWidget. It inherits from Object, RectObject, Gadget and LabelGadget classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmSeparatorGadget -> widgetclass [constant] A gadget for separating items in a display. It inherits from Object, RectObject and Gadget classes. See OSF/Motif Manual Set: Programmer's Reference for more details. xmToggleButtonGadget -> widgetclass [constant] This gadget controls the display and setting of data within an application. It inherits from Object, RectObject, Gadget and LabelGadget classes. See OSF/Motif Manual Set: Programmer's Reference for more details. 3.3 Objects ------------ xmDesktopObject -> widgetclass [constant] xmDisplayObject -> widgetclass [constant] xmExtObject -> widgetclass [constant] xmScreenObject -> widgetclass [constant] xmShellExtObject -> widgetclass [constant] xmVendorShellExtObject -> widgetclass [constant] xmWorldObject -> widgetclass [constant] These objects are available in Unix systems, but not in VMS. They are not documented in the OSF/Motif Manual Set. ------------------- 4 Motif Procedures ------------------- When any of the Motif widgetclasses are loaded, they automatically load a number of Motif convenience functions (starting with Xm-), and also define some additional procedures needed to use Motif in Poplog (starting with Xpm-). Additional functions may also be defined when you request specific widgets from the Motif widget set. Procedures starting with Xm- follow the same calling semantics as their C equivalents, and do NOT perform any type checking on their arguments. Xpm- procedures on the other hand do perform any necessary type checking. (The files defining the Xm- procedures employ XptPopLoadProcedures to load them.) XmSetColorCalculation(p) [procedure] XmGetColorCalculation() -> p [procedure] XmGetColors(screenptr, XID, pixel1, pixel2, pixel3, pixel4, [procedure] pixel5) These procedures implement the colour functions of Motif. They are in LIB * Xmgeneral, which is loaded automatically by every widget class. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCvtStringToUnitType(exptr1, cardinalptr, exptr2, exptr3) [procedure] This procedure converts a string to a unit-type value. They are in LIB * Xmgeneral, which is loaded automatically by every widget class. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCvtCTToXmString(ctext) -> string [procedure] XmCvtXmStringToCT(XmString) -> string [procedure] XmFontListAdd(XmFontList1, fontstruct, XmStringCharSet) [procedure] -> XmFontList2 XmFontListCopy(XmFontList1) -> XmFontList2 [procedure] XmFontListCreate(fontstruct, XmStringCharSet) -> XmFontList [procedure] XmFontListFree(XmFontList) [procedure] XmFontListFreeFontContext(XmFontContext) [procedure] XmFontListGetNextFont(XmFontContext, XmStringCharSetPtr, [procedure] XFontStructPtrPtr) -> bool XmFontListInitFontContext(XmFontContext, XmFontList) -> bool [procedure] XmStringBaseline(XmFontList, XmString) -> ushort [procedure] XmStringByteCompare(XmString1, XmString2) -> bool [procedure] XmStringCompare(XmString1, XmString2) -> bool [procedure] XmStringConcat(XmString1, XmString2) -> string [procedure] XmStringNConcat(XmString1, XmString2, int) -> string [procedure] XmStringCopy(XmString) -> string [procedure] XmStringNCopy(XmString, int) -> string [procedure] XmStringCreate(string1, XmStringCharSet) -> string2 [procedure] XmStringCreateLtoR(string1, XmStringCharSet) -> string2 [procedure] XmStringCreateSimple(string1) -> string2 [procedure] XmStringDirectionCreate(int) -> string [procedure] XmStringDraw(displayptr, window, XmFontList, XmString, GC, [procedure] position1, position2, int, char1, char2, XRectPtr) XmStringDrawImage(displayptr, window, XmFontList, XmString, [procedure] gc, position1, position2, int, char1, char2, XRectPtr) XmStringDrawUnderline(displayptr, window, XmFontList, [procedure] XmString1, gc, position1, position2, int, char1, char2, XRectPtr, XmString2) XmStringEmpty(XmString) -> bool [procedure] XmStringExtent(XmFontList, XmString, intvec1, intvec2) [procedure] XmStringFree(XmString) [procedure] XmStringFreeContext(XmStringContext) [procedure] XmStringGetLtoR(XmString, XmStringCharSet, CharPtrPtr) [procedure] -> bool XmStringGetNextComponent(XmStringContext, CharPtrPtr1, [procedure] XmStringCharSetPtr, intvec, exptr, shortvec, CharPtrPtr2) -> byte XmStringGetNextSegment(XmStringContext, CharPtrPtr, [procedure] XmStringCharSetPtr, intvec1, intvec2) -> bool XmStringHasSubstring(XmString1, XmString2) -> bool [procedure] XmStringHeight(XmFontList, XmString) -> ushort [procedure] XmStringLength(XmString) -> int [procedure] XmStringWidth(XmFontList, XmString) -> ushort [procedure] XmStringInitContext(XmStringContextPtr, XmString) -> bool [procedure] XmStringLineCount(XmString) -> int [procedure] XmStringPeekNextComponent(XmStringContext) -> byte [procedure] XmStringSegmentCreate(string1, XmStringCharSet, int, byte) [procedure] -> string2 XmStringSeparatorCreate() -> string XmCvtTextToXmString(arg1, ..., arg6) -> bool [procedure] XmCvtXmStringToText(arg1, ... arg6) -> bool [procedure] XmStringLtoRCreate(arg1, arg2) -> string [procedure] These procedures implement Motif's compound string functions. They are in LIB * Xmgeneral, which is loaded automatically by every widget class. See OSF/Motif Manual Set: Programmer's Reference for more details. XmSetFontUnit(displayptr, int) [procedure] XmSetFontUnits(displayptr, int1, int2) [procedure] These procedures implement the Motif functions for setting the font unit value for a display. They are in LIB * Xmgeneral, which is loaded automatically by every widget class. See OSF/Motif Manual Set: Programmer's Reference for more details. XmTrackingLocate(widget1, XID, byte) -> widget2 [procedure] XmGetMenuCursor(displayptr) -> cursor [procedure] XmSetMenuCursor(displayptr, cursor) [procedure] XmIsMotifWMRunning(widget) -> bool [procedure] These procedures implement Motif toolkit functions. They are in LIB * Xmgeneral, which is is loaded automatically by every widget class. See OSF/Motif Manual Set: Programmer's Reference for more details. XmConvertUnits(widget, int1, int2, int3, int4) -> int5 [procedure] XmAddTabGroup(widget) [procedure] XmRemoveTabGroup(widget) [procedure] XmDestroyPixmap(screenptr, pixmap) -> bool [procedure] XmGetPixmap(screenptr, string, pixel1, pixel2) -> XID [procedure] XmInstallImage(ximage, string) -> bool [procedure] XmUninstallImage(ximage) -> bool [procedure] XmProcessTraversal(widget, int) -> bool [procedure] XmGetDestination(displayptr) -> widget [procedure] XmUpdateDisplay(widget) [procedure] XmResolvePartOffsets(widgetclass, exptr) [procedure] XmResolveAllPartOffsets(widgetclass, exptr1, exptr2) [procedure] XmGetSecondaryResourceData(arg1, arg2) -> uint [procedure] XmStringCreateFontList(arg1, arg2) -> exptr [procedure] These procedures implement various miscellaneous Motif functions. They are in LIB * Xmgeneral, which is is loaded automatically by every widget class. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateBulletinBoard(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateBulletinBoardDialog(widget1, string, arglist, [procedure] cardinal) -> widget2 These procedures implement Motif BulletinBoard convenience creation functions, and are loaded by xmBulletinBoardWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateCommand(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCommandGetChild(widget1, char) -> widget2 [procedure] XmCommandSetValue(widget, XmString) [procedure] XmCommandAppendValue(widget, XmString) [procedure] XmCommandError(widget, XmString) [procedure] These procedures implement the Motif Command functions, and are loaded by xmCommandWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateDrawingArea(widget1, string, arglist, cardinal) [procedure] -> widget2 This procedure is a Motif convenience creation function, loaded by xmDrawingAreaWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmSelectionBoxGetChild(widget1, char) -> widget2 [procedure] XmCreateSelectionBox(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateSelectionDialog(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreatePromptDialog(widget1, string, arglist, cardinal) [procedure] -> widget2 These procedures implement the Motif SelectionBox functions, and are loaded by xmSelectionBoxWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateArrowButton(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateArrowButtonGadget(widget1, string, arglist, [procedure] cardinal) -> widget2 Convenience procedures, loaded by xmArrowButtonWidget and xmArrowButtonGadget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateCascadeButton(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCascadeButtonHighlight(widget, byte) [procedure] XmCreateCascadeButtonGadget(widget1, string, arglist, [procedure] cardinal) -> widget2 XmCascadeButtonGadgetHighlight(widget, byte) [procedure] Convenience procedures, loaded by xmCascadeButtonWidget and xmCascadeButtonGadget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateDialogShell(widget1, string, arglist, cardinal) [procedure] -> widget2 Convenience procedure, loaded by xmDialogShellWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateDrawnButton(widget1, string, arglist, cardinal) [procedure] -> widget2 Convenience procedure, loaded by xmDrawnButtonWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmFileSelectionBoxGetChild(widget1, char) -> widget2 [procedure] XmFileSelectionDoSearch(widget, XmString) [procedure] XmCreateFileSelectionBox(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateFileSelectionDialog(widget1, string, arglist, [procedure] cardinal) -> widget2 Convenience procedures, loaded by xmFileSelectionBoxWidget, See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateForm(widget1, string, arglist, cardinal) -> widget2 [procedure] XmCreateFormDialog( widget1, string, arglist, cardinal) [procedure] -> widget2 Convenience procedures, loaded by xmFormWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateFrame(widget1, string, arglist, cardinal) -> widget2 [procedure] Convenience procedures, loaded by xmFrameWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateLabel(widget1, string, arglist, cardinal) -> widget2 [procedure] XmCreateLabelGadget(widget1, string, arglist, cardinal) [procedure] -> widget2 Convenience procedures, loaded by xmLabelWidget and xmLabelGadget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateList(widget1, string, arglist, cardinal) -> widget2 [procedure] XmCreateScrolledList(widget1, string, arglist, cardinal) [procedure] -> widget2 XmListAddItem(widget, XmStringPtr, int) [procedure] XmListAddItemUnselected(widget, XmString, int) [procedure] XmListAddItems(widget, XmString, int1, int2) [procedure] XmListDeleteAllItems(widget) [procedure] XmListDeleteItem(widget, XmString) [procedure] XmListDeleteItems(widget, XmString, int) [procedure] XmListDeleteItemsPos(widget, int1, int2) [procedure] XmListDeletePos(widget, int) [procedure] XmListDeselectAllItems(widget) [procedure] XmListDeselectItem(widget, XmString) [procedure] XmListDeselectPos(widget, int) [procedure] XmListGetMatchPos(widget, XmString, intvec1, intvec2) [procedure] -> bool XmListGetSelectedPos(widget, intvec1, intvec2) -> bool [procedure] XmListItemExists(widget, XmString) -> bool [procedure] XmListItemPos(widget, XmString) -> int [procedure] XmListReplaceItems(widget, XmStringPtr1, int, XmStringPtr2) [procedure] XmListReplaceItemsPos(widget, XmStringPtr, int1, int2) [procedure] XmListSelectItem(widget, XmString, byte) [procedure] XmListSelectPos(widget, int, byte) [procedure] XmListSetAddMode(widget, byte) [procedure] XmListSetBottomItem(widget, XmString) [procedure] XmListSetBottomPos(widget, int) [procedure] XmListSetHorizPos(widget, int) [procedure] XmListSetItem(widget, XmString) [procedure] XmListSetPos(widget, int) [procedure] These procedures are loaded by xmListWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmMainWindowSetAreas(widget1, widget2, widget3, widget4, [procedure] widget5, widget6) XmMainWindowSep1(widget1) -> widget2 [procedure] XmMainWindowSep2(widget1) -> widget2 [procedure] XmMainWindowSep3(widget1) -> widget2 [procedure] XmCreateMainWindow(widget1, string, arglist, cardinal) [procedure] -> widget2 These procedures are loaded by xmMainWindowWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateMenuShell(widget1, string, arglist, cardinal) [procedure] -> widget2 Convenience procedure loaded by xmMenuShellWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateMessageBox(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateMessageDialog(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateErrorDialog(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateInformationDialog(widget1, string, arglist, [procedure] cardinal) -> widget2 XmCreateQuestionDialog(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateWarningDialog(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateWorkingDialog(widget1, string, arglist, cardinal) [procedure] -> widget2 XmMessageBoxGetChild(widget1, char) -> widget2 [procedure] These procedures are loaded by xmMessageBoxWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreatePanedWindow(widget1, string, arglist, cardinal) [procedure] -> widget2 Convenience procedure loaded by xmPanedWindowWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreatePushButton(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreatePushButtonGadget(widget1, string, arglist, [procedure] cardinal) -> widget2 Convenience procedures loaded by xmPushButtonWidget and xmPushButtonGadget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateSimpleMenuBar(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateSimplePopupMenu(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateSimplePulldownMenu(widget1, string, arglist, [procedure] cardinal) -> widget2 XmCreateSimpleOptionMenu(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateSimpleRadioBox(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateSimpleCheckBox(widget1, string, arglist, cardinal) [procedure] -> widget2 XmVaCreateSimpleMenuBar(widget1, string, argvarargs) [procedure] -> widget2 XmVaCreateSimplePopupMenu(widget1, string, callbackproc, [procedure] argvarargs) -> widget2 XmVaCreateSimplePulldownMenu(widget1, string, int, [procedure] callbackproc, argvarargs) -> widget2 XmVaCreateSimpleOptionMenu(widget1, string, XmString, XID, [procedure] int, argvarargs) -> widget2 XmVaCreateSimpleRadioBox(widget1, string, int, callbackproc, [procedure] argvarargs) -> widget2 XmVaCreateSimpleCheckBox(widget1, string, callbackproc, [procedure] argvarargs) -> widget2 XmCreateRadioBox(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateRowColumn(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateWorkArea(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreatePopupMenu(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreatePulldownMenu(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateOptionMenu(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateMenuBar(widget1, string, arglist, cardinal) [procedure] -> widget2 XmOptionLabelGadget(widget1) -> widget2 [procedure] XmOptionButtonGadget(widget1) -> widget2 [procedure] XmGetPostedFromWidget(widget1) -> widget2 [procedure] XmMenuPosition(widget, XEventPtr) [procedure] These procedures are loaded by xmRowColumnWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmScaleSetValue(widget, int) [procedure] XmScaleGetValue(widget, intvec) [procedure] XmCreateScale(widget1, string, arglist, cardinal) -> widget2 [procedure] These procedures are loaded by xmScaleWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateScrollBar(widget1, string, arglist, cardinal) [procedure] -> widget2 XmScrollBarGetValues(widget, intvec1, intvec2, intvec3, [procedure] intvec4) XmScrollBarSetValues(widget, int1, int2, int3, int4, byte) [procedure] These procedures are loaded by xmScrollBarWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmScrolledWindowSetAreas(widget1, widget2, widget3, widget4) [procedure] XmCreateScrolledWindow(widget1, string, arglist, cardinal) [procedure] -> widget2 Convenience procedures loaded by xmScrolledWindowWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateSeparator(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateSeparatorGadget(widget1, string, arglist, cardinal) [procedure] -> widget2 Convenience procedures loaded by xmSeparatorWidget and xmSeparatorGadget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateScrolledText(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateText(widget1, string, arglist, cardinal) -> widget2 [procedure] XmTextClearSelection(widget, ulong) [procedure] XmTextCopy(widget, ulong) -> bool [procedure] XmTextCut(widget, ulong) -> bool [procedure] XmTextGetBaseline(widget) -> int [procedure] XmTextGetEditable(widget) -> bool [procedure] XmTextGetInsertionPosition(widget) -> long [procedure] XmTextGetLastPosition(widget) -> long [procedure] XmTextGetMaxLength(widget) -> int [procedure] XmTextGetSelection(widget) -> string [procedure] XmTextGetSelectionPosition(widget, intvec1, intvec2) -> bool [procedure] XmTextGetSource(widget) -> exptr [procedure] XmTextGetString(widget) -> string [procedure] XmTextGetTopCharacter(widget) -> long [procedure] XmTextInsert(widget, long, string) [procedure] XmTextPaste(widget) -> bool [procedure] XmTextPosToXY(widget, long, intvec1, intvec2) -> bool [procedure] XmTextRemove(widget) -> bool [procedure] XmTextReplace(widget, long1, long2, string) [procedure] XmTextScroll(widget, int) [procedure] XmTextSetAddMode(widget, byte) [procedure] XmTextSetEditable(widget, byte) [procedure] XmTextSetHighlight(widget, long1, long2, int) [procedure] XmTextSetInsertionPosition(widget, long) [procedure] XmTextSetMaxLength(widget, int) [procedure] XmTextSetSelection(widget, long1, long2, ulong) [procedure] XmTextSetSource(widget, exptr, long1, long2) [procedure] XmTextSetString(widget, string) [procedure] XmTextSetTopCharacter(widget, long) [procedure] XmTextShowPosition(widget, long) [procedure] XmTextXYToPos(widget, position1, position2) [procedure] XmTextGetAddMode(arg1) -> bool [procedure] XmTextGetBaseLine(arg1) -> int [procedure] XmTextGetCursorPosition(arg1) -> long [procedure] XmTextSetCursorPosition(arg1, arg2) [procedure] These procedures are loaded by xmTextWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateTextField(widget1, string, arglist, cardinal) [procedure] -> widget2 XmTextFieldClearSelection(widget, ulong) [procedure] XmTextFieldCopy(widget, ulong) -> bool [procedure] XmTextFieldCut(widget, ulong) -> bool [procedure] XmTextFieldGetBaseline(widget) -> int [procedure] XmTextFieldGetEditable(widget) -> bool [procedure] XmTextFieldGetInsertionPosition(widget) -> long [procedure] XmTextFieldGetLastPosition(widget) -> long [procedure] XmTextFieldGetMaxLength(widget) -> int [procedure] XmTextFieldGetSelection(widget) -> string [procedure] XmTextFieldGetSelectionPosition(widget, intvec1, intvec2) [procedure] -> bool XmTextFieldGetString(widget) -> string [procedure] XmTextFieldInsert(widget, long, string) [procedure] XmTextFieldPaste(widget) -> bool [procedure] XmTextFieldPosToXY(widget, long, intvec1, intvec2) -> bool [procedure] XmTextFieldRemove(widget) -> bool [procedure] XmTextFieldReplace(widget, long1, long2, string) [procedure] XmTextFieldSetAddMode(widget, byte) [procedure] XmTextFieldSetEditable(widget, byte) [procedure] XmTextFieldSetHighlight(widget, long1, long2, int) [procedure] XmTextFieldSetInsertionPosition(widget, long) [procedure] XmTextFieldSetMaxLength(widget, int) [procedure] XmTextFieldSetSelection(widget, long1, long2, ulong) [procedure] XmTextFieldSetString(widget, string) [procedure] XmTextFieldShowPosition(widget, long) [procedure] XmTextFieldXYToPos(widget, position1, position2) -> long [procedure] XmTextFieldGetAddMode(arg1) -> bool [procedure] XmTextFieldGetBaseLine(arg1) -> int [procedure] XmTextFieldGetCursorPosition(arg1) -> long [procedure] XmTextFieldSetCursorPosition(arg1, arg2) [procedure] These procedures are loaded by xmTextFieldWidget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmCreateToggleButton(widget1, string, arglist, cardinal) [procedure] -> widget2 XmCreateToggleButtonGadget(widget1, string, arglist, [procedure] cardinal) -> widget2 XmToggleButtonGadgetGetState(widget) -> bool [procedure] XmToggleButtonGadgetSetState(widget, byte1, byte2) [procedure] XmToggleButtonGetState(widget) -> bool [procedure] XmToggleButtonSetState(widget, byte1, byte2) [procedure] These procedures are loaded by xmToggleButtonWidget and xmToggleButtonGadget. See OSF/Motif Manual Set: Programmer's Reference for more details. XmInternAtom(displayptr, string, byte) -> ulong [procedure] XmGetAtomName(displayptr, ulong) -> string [procedure] These procedures are in LIB * XmAtomMgr (which is also loaded by LIB * XmProtocols). See OSF/Motif Manual Set: Programmer's Reference for more details. XmAddProtocols(widget, ulong1, ulong2, cardinal) [procedure] XmRemoveProtocols(widget, ulong1, ulong2, cardinal) [procedure] XmAddProtocolCallback(widget, ulong1, ulong2, [procedure] callbackproc, uint) XmRemoveProtocolCallback(widget, ulong1, ulong2, [procedure] callbackproc, uint) XmActivateProtocol(widget, ulong1, ulong2) [procedure] XmDeactivateProtocol(widget, ulong1, ulong2) [procedure] XmSetProtocolHooks(widget, ulong1, ulong2, callbackproc, [procedure] uint1, callbackproc, uint2) These procedures are in LIB * XmProtocols. See OSF/Motif Manual Set: Programmer's Reference for more details. 4.1 Undocumented Procedures ---------------------------- _XmInstallProtocols(arg1) [procedure] _XmSetEtchedSlider(arg1) [procedure] _XmCallFocusMoved(arg1, arg2, arg3) -> bool [procedure] _XmChangeNavigationType(arg1, arg2) -> bool [procedure] _XmClearFocusPath(arg1) [procedure] _XmClearKbdFocus(arg1) [procedure] _XmClearRect(arg1) -> int [procedure] _XmClearTabGroup(arg1) [procedure] _XmCreateFocusData() [procedure] _XmCreateVisibilityRect(arg1, arg2) -> bool [procedure] _XmDestroyFocusData(arg1) [procedure] _XmEmptyRect(arg1) -> int [procedure] _XmFindNextTabGroup(arg1) -> widget [procedure] _XmFindPrevTabGroup(arg1) -> widget [procedure] _XmFindTabGroup(arg1) -> widget [procedure] _XmFindTopMostShell(arg1) -> widget [procedure] _XmFindTraversablePrim(arg1) -> bool [procedure] _XmFocusIsHere(arg1) -> bool [procedure] _XmFocusModelChanged(arg1, arg2, arg3) [procedure] _XmGetActiveItem(arg1) -> widget [procedure] _XmGetFocusPolicy(arg1) -> byte [procedure] _XmGetManagedInfo(arg1) -> bool [procedure] _XmGetTabGroup(arg1) -> widget [procedure] _XmGrabTheFocus(arg1, arg2) -> bool [procedure] _XmIntersectRect(arg1, arg2, arg3) -> int [procedure] _XmManagerEnter(arg1, arg2) [procedure] _XmManagerFocusIn(arg1, arg2) [procedure] _XmManagerFocusInInternal(arg1, arg2) [procedure] _XmManagerFocusOut(arg1, arg2) [procedure] _XmManagerUnmap(arg1, arg2) [procedure] _XmMgrTraversal(arg1, arg2) -> bool [procedure] _XmNavigDestroy(arg1) [procedure] _XmNavigInitialize(arg1, ... arg4) [procedure] _XmNavigSetValues(arg1, ... arg5) -> bool [procedure] _XmPrimitiveEnter(arg1, arg2) [procedure] _XmPrimitiveFocusIn(arg1, arg2) [procedure] _XmPrimitiveFocusInInternal(arg1, arg2) [procedure] _XmPrimitiveFocusOut(arg1, arg2) [procedure] _XmPrimitiveLeave(arg1, arg2) [procedure] _XmPrimitiveUnmap(arg1, arg2) [procedure] _XmProcessTraversal(arg1, arg2, arg3) [procedure] _XmSetActiveTabGroup(arg1, arg2) [procedure] _XmSetRect(arg1, arg2) -> int [procedure] _XmTestTraversability(arg1, arg2) -> bool [procedure] _XmVirtKeysInitialize(arg1) [procedure] These procedures are in LIB * XmTraversal, but no documentation is available for them. ------------------------------------------ 5 Include Files: Constants and Typespecs ------------------------------------------ The following include files are available for Motif; you can include or loadinclude them: # INCLUDE * XmConstants # INCLUDE * XmMisc # INCLUDE * XmMwmUtil # INCLUDE * XmVirtKeys All Motif constants are declared as Pop-11 iconstants in these files, most of them in INCLUDE * XmConstants. In addition, typespecs for all Motif structures are provided, so that it is possible to access data in these structures using exacc. All such typespecs have the same name as their C counterparts. For example, the typespec XmScrollBarCallbackStruct can be used to access the call data of a callback attached to a ScrollBarWidget: include XmConstants; define scrollbar_callback(widget, client_data, call_data); lvars widget, client_data, call_data; l_typespec call_data :XmScrollBarCallbackStruct; ;;; print out the location exacc call_data.new_location => enddefine; XmFontContext [typespec] This type specifies the context through which applications access fonts. See OSF/Motif Manual Set: Programmer's Reference for more details. XmFontList [typespec] This type refers to a Motif font list. See OSF/Motif Manual Set: Programmer's Reference for more details. XmString [typespec] This type refers to a Motif compound string. See OSF/Motif Manual Set: Programmer's Reference for more details. XmStringCharSet [typespec] This type specifies the character set identifier for a font. See OSF/Motif Manual Set: Programmer's Reference for more details. XmStringContext [typespec] This type specifies the context for a compound string. See OSF/Motif Manual Set: Programmer's Reference for more details. XpmAnyCallbackStruct [typespec] Defined as i_typespec XpmAnyCallbackStruct { XpmACSReasonn :int, XpmACSEvent :XptXEventPtr, XpmACSPad :ulong[7], }; ----------------------------- 6 Additional Data Structures ----------------------------- Additional datastructure support is provided by shadowclass definitions. These are used in situations where you need to build datastructures in Poplog to pass out to Motif, and follow similar naming conventions to the shadowclasses defined by the Poplog X Toolkit. Currently, the following shadowclass definitions are provided: XpmStringTable [shadowclass] Loaded by all widgetclasses, this is defined as include XmConstants; shadowclass XpmStringTable :XmString[]; Used to build arrays of command Motif strings (XmStrings), such as are passed to the Motif ListWidget. XpmAnyCallbackStructPtr [shadowclass] Loaded by all widgetclasses, this is defined as include XmConstants; shadowclass XpmAnyCallbackStructPtr {:XpmAnyCallbackStruct}; Shadowclass definition for a generic Motif Callback structure. This allows programmers to build callback structures that are suitable for passing to Motif callback procedures, using XtCallCallbackList. ----------------------- 7 Motif String Support ----------------------- These procedures are provided as an interface to Motif strings (and are all autoloadable from the main Poplog X autoloadable directory). The XmString typespec calls the XpmImportString converter to convert between external pointers and XmString descriptors. As a convenience, in update mode, this converter will accept Pop-11 strings as well as XmString datatypes; This allows you to do things like: 'hello' -> XptVal button(XtN label:XmString); Note however that the reverse operation will produce an XptDescriptor with a datatype of "XmString": XptVal button(XtN label:XmString) => ** You can convert Pop-11 strings both from and to "XmString" descriptors using the XpmCoerceString procedure: ;;; make a motif compound string mstring: vars mstring; 'hello' -> XpmCoerceString() -> mstring; mstring => ** ;;; convert a compound string to a Pop-11 string: XpmCoerceString(mstring) => ** hello Thus, you can do: XptVal button(XtN label:XmString#XpmCoerceString) => To get the value of an XmString resource as a Pop-11 string. This will work in update mode as well. XpmCheckString(XmString) [procedure] Mishaps unless XmString is an XmString descriptor. XpmImportString(XmString_exptr) -> XmString [procedure] XmString_or_string -> XpmImportString() -> XmString_exptr Creates an XmString descriptor from the given pointer to an XmString XmString_exptr. The updater checks for an XmString descriptor and returns it. Alternatively, if given a Pop string it will coerce it to an XmString. XpmCoerceString(XmString_or_string) -> string [procedure] string_or_XmString -> XpmCoerceString() -> XmString_exptr This procedure takes a Motif compound string XmString and converts it into an ordinary Poplog string (or just returns the ordinary string if that is given). The updater takes a Poplog string string and converts it into a Motif compound string (or just returns XmString if that is given). XpmCoerceCopiedString(XmString_or_string) -> string [procedure] string_or_XmString -> XpmCoerceCopiedString() -> XmString_exptr Similar to XpmCoerceString, but the base procedure uses XmStringFree to free the underlying XmString argument after coercing it to a Pop string. The updater sets up a destroy action on the given Pop string argument so that the XmString it creates will be freed (with XmStringFree) when the Pop string becomes garbage. (This is used for XmN labelString resources, since these always copy the XmString that the application passes in/gets out.) ----------------------- 8 Unsupported Features ----------------------- 8.1 Pop-11 procedure registration ---------------------------------- Several Motif procedures, for example XmAddProtocolCallback, take C procedures as arguments. Some widget resources are also C procedures. Currently there is no support for supplying Pop-11 procedures instead. Procedures written in C using the Pop-11 callback mechanism can be used in situations where such functionality is essential. See REF *EXTERNAL for details on the external callback mechanism. --------------------------- 9 Associated Documentation --------------------------- HELP * MOTIF Overview of Poplog Motif WidgetSet interface. --- C.x/x/pop/ref/motif --- Copyright University of Sussex 1993. All rights reserved.