diff options
Diffstat (limited to 'vendor/x11iraf/obm/ObmP.h')
-rw-r--r-- | vendor/x11iraf/obm/ObmP.h | 508 |
1 files changed, 508 insertions, 0 deletions
diff --git a/vendor/x11iraf/obm/ObmP.h b/vendor/x11iraf/obm/ObmP.h new file mode 100644 index 00000000..81ac52dd --- /dev/null +++ b/vendor/x11iraf/obm/ObmP.h @@ -0,0 +1,508 @@ +/* Copyright(c) 1993 Association of Universities for Research in Astronomy Inc. + */ + +/* + * ObmP.h -- Private or internal global definitions for the Object Manager. + */ + +#include <stdio.h> +#include <ctype.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include <X11/Intrinsic.h> +#include <X11/StringDefs.h> +#include <X11/Shell.h> +#include <X11/Core.h> +#include <X11/Object.h> + +#include <X11/Xaw/Cardinals.h> +#include <X11/Xaw/AsciiText.h> +#include <X11/Xaw/Box.h> +#include <X11/Xaw/Command.h> +#include <X11/Xaw/Dialog.h> +#include <X11/Xaw/Form.h> +#include <X11/Xaw/Grip.h> +#include <X11/Xaw/Label.h> +#include <X11/Xaw/List.h> +#include <X11/Xaw/MenuButton.h> +#include <X11/Xaw/Paned.h> +#include <X11/Xaw/Panner.h> +#include <X11/Xaw/Porthole.h> +#include <X11/Xaw/Repeater.h> +#include <X11/Xaw/Scrollbar.h> +#include <X11/Xaw/Simple.h> +#include <X11/Xaw/SimpleMenu.h> +#include <X11/Xaw/SmeBSB.h> +#include <X11/Xaw/SmeLine.h> +#include <X11/Xaw/StripChart.h> +#include <X11/Xaw/Toggle.h> +#include <X11/Xaw/Tree.h> +#include <X11/Xaw/Viewport.h> + +#include <ObmW/Arrow.h> +#include <ObmW/Board.h> +#include <ObmW/Button.h> +#include <ObmW/Common.h> +#include <ObmW/Frame.h> +#include <ObmW/Group.h> +#include <ObmW/Gterm.h> +#include <ObmW/HTML.h> +#include <ObmW/Icon.h> +#include <ObmW/Label.h> +#include <ObmW/Layout.h> +#include <ObmW/ListTree.h> +#include <ObmW/MenuBar.h> +#include <ObmW/MultiList.h> +#include <ObmW/RadioGrp.h> +#include <ObmW/RowCol.h> +#include <ObmW/Scrollbar.h> +#include <ObmW/Slider2.h> +#include <ObmW/Tabs.h> +#include <ObmW/Toggle.h> + +#include <X11/Xraw/Separator.h> +#include <X11/Xraw/Table.h> + +#include <X11/xpm.h> +#include <Tcl/tcl.h> + +/* Size limiting definitions. */ +#define SZ_NAME 128 /* class or object name */ +#define SZ_LINE 256 /* line buffer */ +#define SZ_INDEX 197 /* hash index */ +#define SZ_MESSAGE 512 /* random string buffers */ +#define SZ_COMMAND 8192 /* general command buffers */ +#define SZ_NUMBER 64 /* numeric string buffers */ +#define SZ_GEOMETRY 32 /* geometry specification */ +#define MAX_RESOURCES 2048 /* max resources in application */ +#define MAX_HASHCHARS 8 /* max chars used for hashval */ +#define MAX_ARGS 128 /* scratch arg list */ +#define MAX_MENUITEMS 64 /* max items in a menu */ +#define MAX_LEVELS 128 /* recursive nesting */ +#define MAXNDC 32767 /* NDC graphics coordinates */ +#define MAXCOLORSYM 20 /* max color resources for icons */ + +#define MI_IGNORE 0 /* menu item type codes */ +#define MI_EXEC 1 +#define MI_LINE 2 +#define MI_DBLLINE 3 +#define MI_MENU 4 +#define MI_SPACE 5 +#define MI_TITLE 6 + +#define M_Insensitive 000001 /* menu attribute bitflags */ +#define M_FreeBackground 000002 +#define M_FreeForeground 000004 +#define M_FreeAccel 000010 +#define M_FreeLabel 000020 +#define M_FreeData 000040 + +/* Object class types */ +#define OtShell 1 /* shell widget class */ +#define OtNonShell 2 /* nonshell widget class */ +#define OtParameter 3 /* UI control parameter class */ +#define OtServer 4 /* UI server class */ +#define OtClient 5 /* UI client class */ +#define OtMarker 6 /* gterm marker class */ +#define OtNClasses 6 + +typedef int (*ObmFunc)(); +typedef void (*ObmMethod)(); + +extern void ServerClassInit(), ClientClassInit(), ParameterClassInit(); +extern void WidgetClassInit(), GenericClassDestroy(); +extern void GtermClassInit(), MarkerClassInit(), HTMLClassInit(); + +/* Dummy WtClass bit flag definitions for initializers. */ +#define WtServer 0, 0 +#define WtClient 0, 0 +#define WtParameter 0, 0 +#define WtMarker 0, 0 + +/* Widget class bit flags. + */ +#define WtCore 00000000000, 00000000001 +#define WtObject 00000000000, 00000000002 +#define WtSimple 00000000000, 00000000004 +#define WtShell 00000000000, 00000000010 + +#define WtAsciiSink 00000000000, 00000000020 +#define WtAsciiSrc 00000000000, 00000000040 +#define WtAsciiText 00000000000, 00000000100 +#define WtBox 00000000000, 00000000200 +#define WtCommand 00000000000, 00000000400 +#define WtDialog 00000000000, 00000001000 +#define WtForm 00000000000, 00000002000 +#define WtGrip 00000000000, 00000004000 +#define WtLabel 00000000000, 00000010000 +#define WtList 00000000000, 00000020000 +#define WtMenuButton 00000000000, 00000040000 +#define WtPaned 00000000000, 00000100000 +#define WtPanner 00000000000, 00000200000 +#define WtPorthole 00000000000, 00000400000 +#define WtRepeater 00000000000, 00001000000 +#define WtScrollbar 00000000000, 00002000000 +#define WtSimpleMenu 00000000000, 00004000000 +#define WtSme 00000000000, 00010000000 +#define WtSmeBSB 00000000000, 00020000000 +#define WtSmeLine 00000000000, 00040000000 +#define WtStripChart 00000000000, 00100000000 +#define WtToggle 00000000000, 00200000000 +#define WtTree 00000000000, 00400000000 +#define WtViewport 00000000000, 01000000000 + +#define WtGterm 00000000001, 00000000000 +#define WtLayout 00000000002, 00000000000 +#define WtHTML 00000000004, 00000000000 +#define WtArrow 00000000010, 00000000000 +#define WtBoard 00000000020, 00000000000 +#define WtScrollbar2 00000000040, 00000000000 +#define WtSlider2d 00000000100, 00000000000 +#define WtFrame 00000000200, 00000000000 +#define WtGroup 00000000400, 00000000000 +#define WtIcon 00000001000, 00000000000 +#define WtMultiList 00000002000, 00000000000 +#define WtRadioGroup 00000004000, 00000000000 +#define WtRowCol 00000010000, 00000000000 +#define WtTextBox 00000020000, 00000000000 +#define WtTextButton 00000040000, 00000000000 +#define WtTextToggle 00000100000, 00000000000 +#define WtXfwfCommon 00000200000, 00000000000 +#define WtXfwfMenuBar 00000400000, 00000000000 +#define WtTabs 00001000000, 00000000000 +#define WtListTree 00002000000, 00000000000 +#define WtSeparator 00004000000, 00000000000 +#define WtTable 00010000000, 00000000000 + +/* Object base classes. */ +typedef struct { + int class; /* class type code */ + char name[SZ_NAME]; /* class name */ +} baseClassRec, *BaseClassRec; + +/* UI object class descriptor. */ +typedef struct { + char name[SZ_NAME]; /* object class name */ + int object_type; /* widget type (shell etc.) */ + WidgetClass *widget_class; /* for Xt/Athena widgets */ + unsigned long flag1, flag2; /* widget class bit flags. */ + ObmMethod ClassInit; /* initializes class record */ + ObmMethod ClassDestroy; /* close class record */ + ObmFunc Create; /* create proc */ + ObmMethod Destroy; /* destroy proc */ + ObmFunc Evaluate; /* evaluate proc */ + XtPointer class_data; /* class specific data */ +} objClassRec, *ObjClassRec; + +/* Class descriptors for all UI object classes and subclasses. In the + * following only the class initializer function needs to be set statically, + * since the class initializer function will initialize the remaining fields + * of the class descriptor at run time when the object manager is opened. + */ +#ifdef Obm_Main +baseClassRec baseClasses[] = { + { OtShell, "Widget", }, + { OtNonShell, "Widget", }, + { OtParameter, "Parameter", }, + { OtServer, "Server", }, + { OtClient, "Client", }, + { OtMarker, "Marker", }, +}; + +objClassRec UiObjects[] = { + { "Server", OtServer, NULL, WtServer, + ServerClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Client", OtClient, NULL, WtClient, + ClientClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Parameter", OtParameter, NULL, WtParameter, + ParameterClassInit, NULL, NULL, NULL, NULL, NULL }, + + { "Core", OtNonShell, &coreWidgetClass, WtCore, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Object", OtNonShell, &objectClass, WtObject, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Simple", OtNonShell, &simpleWidgetClass, WtSimple, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Widget", OtNonShell, &coreWidgetClass, WtCore, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + + { "AsciiText", OtNonShell, &asciiTextWidgetClass, WtAsciiText, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Box", OtNonShell, &boxWidgetClass, WtBox, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Command", OtNonShell, &commandWidgetClass, WtCommand, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Dialog", OtNonShell, &dialogWidgetClass, WtDialog, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Form", OtNonShell, &formWidgetClass, WtForm, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Grip", OtNonShell, &gripWidgetClass, WtGrip, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Label", OtNonShell, &labelWidgetClass, WtLabel, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "List", OtNonShell, &listWidgetClass, WtList, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "ListTree", OtNonShell, &listtreeWidgetClass, WtListTree, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "MenuButton", OtNonShell, &menuButtonWidgetClass, WtMenuButton, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Paned", OtNonShell, &panedWidgetClass, WtPaned, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Panner", OtNonShell, &pannerWidgetClass, WtPanner, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Porthole", OtNonShell, &portholeWidgetClass, WtPorthole, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Repeater", OtNonShell, &repeaterWidgetClass, WtRepeater, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Scrollbar", OtNonShell, &scrollbarWidgetClass, WtScrollbar, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Separator", OtNonShell, &separatorWidgetClass, WtSeparator, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "SimpleMenu", OtShell, &simpleMenuWidgetClass, WtSimpleMenu, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Sme", OtNonShell, &smeObjectClass, WtSme, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "SmeBSB", OtNonShell, &smeBSBObjectClass, WtSmeBSB, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "SmeLine", OtNonShell, &smeLineObjectClass, WtSmeLine, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "StripChart", OtNonShell, &stripChartWidgetClass, WtStripChart, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Table", OtNonShell, &tableWidgetClass, WtTable, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Tabs", OtNonShell, &tabsWidgetClass, WtTabs, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Toggle", OtNonShell, &toggleWidgetClass, WtToggle, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Tree", OtNonShell, &treeWidgetClass, WtTree, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Viewport", OtNonShell, &viewportWidgetClass, WtViewport, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + + { "Gterm", OtNonShell, >ermWidgetClass, WtGterm, + GtermClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Marker", OtMarker, NULL, WtMarker, + MarkerClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Layout", OtNonShell, &layoutWidgetClass, WtLayout, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "HTML", OtNonShell, &htmlWidgetClass, WtHTML, + HTMLClassInit, NULL, NULL, NULL, NULL, NULL }, + + { "Arrow", OtNonShell, &xfwfArrowWidgetClass, WtArrow, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Board", OtNonShell, &xfwfBoardWidgetClass, WtBoard, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Frame", OtNonShell, &xfwfFrameWidgetClass, WtFrame, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Group", OtNonShell, &xfwfGroupWidgetClass, WtGroup, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Icon", OtNonShell, &xfwfIconWidgetClass, WtIcon, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "MultiList", OtNonShell, &xfwfMultiListWidgetClass, WtMultiList, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "RadioGroup", OtNonShell,&xfwfRadioGroupWidgetClass,WtRadioGroup, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "RowCol", OtNonShell, &xfwfRowColWidgetClass, WtRowCol, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "TextBox", OtNonShell, &xfwfLabelWidgetClass, WtTextBox, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "TextButton", OtNonShell, &xfwfButtonWidgetClass, WtTextButton, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "TextToggle", OtNonShell, &xfwfToggleWidgetClass, WtTextToggle, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Scrollbar2", OtNonShell, &xfwfScrollbarWidgetClass, WtScrollbar2, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "Slider2d", OtNonShell, &xfwfSlider2WidgetClass, WtSlider2d, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + + { "Shell", OtShell, &shellWidgetClass, WtShell, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "OverrideShell", + OtShell, &overrideShellWidgetClass, WtShell, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "WMShell", + OtShell, &wmShellWidgetClass, WtShell, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "TransientShell", + OtShell, &transientShellWidgetClass, WtShell, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "TopLevelShell", + OtShell, &topLevelShellWidgetClass, WtShell, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, + { "ApplicationShell", + OtShell, &applicationShellWidgetClass, WtShell, + WidgetClassInit, NULL, NULL, NULL, NULL, NULL }, +}; +#else +extern objClassRec UiObjects[]; +extern baseClassRec baseClasses[]; +#endif + + +/* Generic object instance record, omitting the class part. The object + * instance records for the real object classes share the objectCore structure + * but have a class specific structure and are a different size. + */ +struct obmObject { + struct obmObjectCore { + char name[SZ_NAME]; /* object name */ + ObjClassRec classrec; /* class record */ + ObjClassRec superclass; /* superclass, if class is subclass */ + struct obmObject *prevglob; /* previous object in global list */ + struct obmObject *nextglob; /* next object in global list */ + struct obmObject *nexthash; /* next object in hash list */ + struct obmObject *parent; /* the object's parent */ + int nchildren; /* number of child objects */ + struct obmObject **children; /* list of child objects */ + Boolean being_destroyed; /* set by Destroy method */ + Boolean mapped; /* used to recreate shells */ + char geometry[SZ_GEOMETRY]; /* used to recreate shells */ + } core; + /* class part omitted */ +}; + +typedef struct obmObject *ObmObject; +typedef struct obmObjectCore *ObmObjectCore; + +/* Object list. */ +struct objList { + char name[SZ_NAME]; + caddr_t ptr; + struct objList *next; +}; + +/* Menu item. */ +typedef struct { + int type; + XtPointer menu; + Widget entry; + char *sbuf; + char *label; + char *data; + char *accelerator; + char *background; + char *foreground; + int justify; + Pixmap pixmap; + int flags; +} menuItem, *MenuItem; + +/* Menu descriptor. */ +typedef struct { + ObmObject obj; + Widget menuShell; + Boolean popped_up; + XtPointer obm; + int nitems; + menuItem items[MAX_MENUITEMS]; +} Menu, *MenuPtr; + +typedef struct objList *ObjList; + +/* Callback type codes. */ +#define Ctcallback 0 /* most widgets */ +#define Ctcharmode 1 /* text widget, char mode */ +#define Ctlinemode 2 /* text widget, char mode */ +#define CtgetValue 3 /* strip chart */ +#define CtjumpProc 4 /* scrollbar */ +#define CtscrollProc 5 /* scrollbar */ +#define CtpopdownCallback 6 /* shell, simpleMenu */ +#define CtpopupCallback 7 /* shell, simpleMenu */ +#define CtreportCallback 8 /* panner, porthole, viewport */ +#define CtstartCallback 9 /* repeater */ +#define CtstopCallback 10 /* repeater */ + +struct _obmCallback { + union { + ObmObject obj; + ObmFunc fcn; + } u; + int callback_type; + XtPointer client_data; + struct _obmCallback *next; + char name[SZ_NAME]; +}; + +typedef struct _obmCallback obmCallback; +typedef struct _obmCallback *ObmCallback; + +/* Object manager global context. */ +struct obmContext { + char appname[SZ_NAME]; /* application name */ + char appclass[SZ_NAME]; /* application class */ + int argc; /* args for popup shell */ + char **argv; /* args for popup shell */ + XtAppContext app_context; /* application context */ + Display *display; /* Obm private display connection */ + Screen *screen; /* Obm private display connection */ + Widget toplevel; /* toplevel shell of application */ + Tcl_Interp *tcl; /* global or server interpreter */ + ObmObject head; /* head of object list */ + ObmObject tail; /* tail of object list */ + ObmObject objindex[SZ_INDEX]; /* hash index */ + ObjList pixmap_cache; /* cached pixmaps */ + ObjList cursor_cache; /* cached cursors */ + ObjList menu_list; /* list of menu descriptors */ + ObmCallback callback_list; /* list of callback descriptors */ + Boolean being_destroyed; /* set by Destroy method */ + Boolean specified; /* UI has been specified */ + Boolean activated; /* UI has been activated */ + Boolean mapped; /* toplevel is mapped */ + + int debug; /* print debug messages */ + char *debug_objs; /* debug objects, NULL=>all objs */ +}; + +typedef struct obmContext *ObmContext; + +#ifdef Obm_Main +ObmContext global_obm_handle; /* only works if single obm */ +#else +extern ObmContext global_obm_handle; +#endif + +/* Useful macros. */ +#define abs(a) (((a)<0)?(-(a)):(a)) +#define max(a,b) ((a)>=(b)?(a):(b)) +#define min(a,b) ((a)<(b)?(a):(b)) +#define ERR (-1) +#define OK 0 +#define SQR(a) ((a)*(a)) + +#ifndef AIXV3 +#ifndef OSF1 +typedef unsigned char uchar; +#endif +#endif + +/* The following are the string values returned to Tcl for boolean values. */ +#define TRUESTR "1" +#define FALSESTR "0" + +extern ObmObject obmFindObject(); +extern ObjClassRec obmGetClassrec(); +extern Widget widgetGetPointer(); +extern ObmCallback obmAddCallback(); +extern void widget_setTTName(); +extern char *widget_getTTName(); +extern void obmRemoveCallback(); +extern void obmNewObject(); +extern void obmFreeObject(); +extern void obmDestroyObject(); +extern void obmGenericClassDestroy(); +extern void obmDisplay(), obmUndisplay(); +extern void freeMenu(); +extern void freeIcon(); +extern Pixmap findBitmap(); +extern Pixmap findPixmap(); +extern Cursor findCursor(); +extern Icon *findIcon(); +extern char *get_geometry(); + +/* Public functions. */ +#define Obm_Private +#include "Obm.h" +#undef Obm_Private + +extern char *getenv(); |