This is Xsw.h in view mode; [Download] [Up]
/* * $Header: /ufs/comp/mei/PROJ_PCN/onprofile/IFModel/Xsw/RCS/Xsw.h,v 1.1 1992/04/17 21:10:07 mei Exp $ */ /****************************************************************************** * * * Copyright (C) The Aerospace Corporation 1991 * * * * This software was developed by The Aerospace Corporation as a * * research endeavor for the United States Air Force * * Space Systems Division. The current version of the Gauge * * computer program is available for release to you for * * educational and research purposes only. It is not * * to be used for commercial purposes. * * * * In addition, the following conditions shall apply. * * * * 1) The computer software and documentation were designed to * * satisfy internal Aerospace requirements only. * * The software is provided ``as is,'' and The Aerospace Corporation * * makes no warranty, expressed or implied, as to it accuracy, * * functioning, or fitness for a particular purpose. * * * * 2) The Aerospace Corporation and its personnel are not * * responsible for providing technical support or general assistance * * with respect to the software. * * * * 3) Neither The Aerospace Corporation nor its personnel shall be * * liable for claims, losses, or damages arising out of or connected * * with the use of this software. * * Your sole and exclusive remedy shall be to request a replacement * * copy of the program. * * * ******************************************************************************/ #include <X11/Intrinsic.h> #include <X11/StringDefs.h> typedef struct { String string; XtCallbackRec * callback; } SCPair; #define XtRSCPair "SCPair" typedef SCPair * SCPairList; #define XtRSCPairList "SCPairList" #define XtRPixelList "PixelList" typedef Pixel * PixelList; typedef int PType; #define XswCenter 1 #define XswRight 2 #define XswLeft 3 #define XswTop 4 #define XswBottom 5 #define XswMouse 9 #define XtRStringList "StringList" typedef String * StringList; #define XtNNULL "NULL" #define XtNEMPTY "EMPTY" #define XtRStringSet "StringSet" typedef StringList * StringSet; #ifndef FILENAME_MAX #define FILENAME_MAX 512 #endif /* The following functions are included in Widgets.c */ /* Function Name: XswGetLibName. * Description: The normal interface to the XswLibDir facility. * It will search through a list of directories * beginning with the current directory and continuing * through all directory in the libDir resource until * in finds a file with the reusted name. If such a * file is found then it will be returned; otherwise, * a NULL string will be returned. * Arguments: name - the file to search for. * Returns: a full path to the file if found; otherwise, a NULL string. */ extern String XswGetLibName( #if NeedFunctionPrototypes String name #endif ); /* Function Name: XswStrCmp. * Description: Compares two strings work ignoring case. * Arguments: s1, s2 - the Strings to compare. * Returns: True is the strings match, False otherwise. */ extern Boolean XswStrCmp( #if NeedFunctionPrototypes String s1, String s2 #endif ); /* Function Name: XswMainLoop. * Description: Replacement for XtMainLoop, provides better * error and warning handling. * Arguments: none. * Returns: none. */ extern void XswMainLoop(); /* Function Name: XswAppMainLoop. * Description: Replacement for XtAppMainLoop, provides better * error and warning handling. * Arguments: app_context - the application context to use. * Returns: none. */ extern void XswAppMainLoop(/*XtAppContext app_context*/); /* Function Name: XswDisplayWarnings. * Description: Used in XswMainLoop to display warnings and errors. * Arguments: app_context - the application context to use. * if this is NULL then use the default. * Returns: none. */ extern void XswDisplayWarnings(/*XtAppContext app_context*/); /* Function Name: XswWarning. * Description: A replacement for XtWarning, must be used in * conjunction with XswMainLoop or XswDisplayWarnings. * Arguments: message - the message to display. * Returns: none. */ extern void XswWarning(/*String message*/); /* Function Name: XswError. * Description: A replacement for XtError, must be used in * conjunction with XswMainLoop or XswDisplayWarnings. * Arguments: message - the message to display. * Returns: none. */ extern void XswError(/* message */); extern Widget XswPopupBox(/* w, name, text */); extern Widget XswPopupBoxPlus(/* w, name, text, position, grab_type */); extern void XswPositionPopup(/* w, position */); extern void XswPositionWidget(/* w, origin_w, position */); extern void XswGrapPointer(/*Widget w*/); extern Boolean XswIsVisible(/*Widget w*/); extern Widget XswGetShell(/*Widget w*/); extern Display * XswGetDisplay(/*XtAppContext app_context*/); extern void XswFreeMemCallback(/* w, name, text */); extern void XswFreeStringListCallback(/* w, list, call */); extern void XswDestroyWidgetCallback(/* w, name, text */); extern void XswDestroyWidgetAction(/* w, name, text */); extern void XswExitProgramCallback(/* w */); extern String XswGetLibName(/*String name*/); extern StringList XswLibDir(/*Widget w*/); extern Widget XswTopWidget(/**/); extern void XswInitConverters(/*Widget parent*/); extern StringList XswSCPairListGetStrings(/* SCPairList */); extern String XswGetExtension(/* file */); extern Boolean XswLegalExtension(/* list, ext */); extern Boolean XswCallFunction(/* list, ext, w, call_data */); extern Boolean XswGetHelp(/* list, ext, w */); extern StringList XswGetExtensions(/* list */); extern StringSet XswInvert(/*StringSet set*/); extern int XswCountStrings(/*StringList list*/); extern void XswFreeStringList(/*StringList list*/); extern StringList XswStringToStringList(/*String string*/); void XswMakeRadioSet(/*Widget parent, String name*/); void XswMakeCommandButtons(/*Widget box_w*/); extern void XswMakeSnapButtons(); void XswMakeRadioButtons(/*Widget box_w*/); void XswMakeMenu(/*Widget parent, String name*/); #define XswWidgetTool(name,tool,shell) \ { \ Widget shell = \ XtCreatePopupShell(name, \ topLevelShellWidgetClass, XswTopWidget(), \ (ArgList) NULL, 0); \ Widget tool_widget = ((Widget) tool); \ if (tool_widget != (Widget) NULL) { \ XswPopup(tool_widget,XtGrabNone,XswTopWidget(),XswRight); \ XswGrabPointer((shell)); \ XtOverrideTranslations((shell), \ XtParseTranslationTable("<Message>WM_PROTOCOLS:XswDestroy()")); \ } else { \ XtDestroyWidget((shell)); \ } \ } /****************************************************************** * * General Purpose Macros * *****************************************************************/ #define CVT_STRING_TO_LIST(_Name, _Type, _Resource, _End) \ /* ARGSUSED */ \ Boolean _Name(display, args, nargs, \ fromVal, toVal, converter_data) \ Display* display; \ XrmValuePtr args, fromVal, toVal; \ int *nargs; \ XtPointer* converter_data; \ { \ static _Type * result; \ StringList list; \ list = XswStringToStringList((String)fromVal->addr, " ,;"); \ MAKE_LIST(result, _Type, _Resource, list, _End); \ XswFreeStringList(list); \ DONE(_Type *, result); \ } #define MAKE_LIST(_result, _type, _resource, _slist, _end)\ { \ StringList _list = _slist; \ int _n; \ XrmValue _from, _to; \ XtCacheRef _cache_ref_return; \ int _i; \ _n = XswCountStrings(_list); \ _result = (_type *)XtMalloc((_n+1) * sizeof(_type)); \ for(_i=0; _i < _n; _i++) { \ _from.addr = _list[_i]; \ _from.size = strlen(_list[_i]) + 1; \ _to.addr = (XtPointer)&(_result[_i]); \ _to.size = sizeof(_type); \ XtConvertAndStore(XswTopWidget(), \ XtRString, &_from, _resource, &_to); \ } \ _result[_i] = (_end); \ } /* Macro Name: DONE. * Description: Returns proper value from conversion routine. * Arguments: type - the type of argument to return. * value - the value of the argument to return. */ #define DONE(type, value)\ { \ if (toVal->addr != NULL) { \ if (toVal->size < sizeof(type)) { \ toVal->size = sizeof(type); \ return False; \ } \ *(type*)(toVal->addr) = (value); \ } \ else { \ static type static_val; \ static_val = (value); \ toVal->addr = (XtPointer)&static_val; \ } \ toVal->size = sizeof(type); \ return True; \ } /* Macro Name: ROOTWINDOW. * Description: Returns the root window for a widget. * Arguments: w - the Widget. */ #define ROOTWINDOW(w) \ (RootWindow(XtDisplay(w),DefaultScreen(XtDisplay(w)))) /* Macro Name: FONTHEIGHT. * Description: Returns the height in pixels of a font. * Arguments: font - the font to use. */ #define FONTHEIGHT(font) \ ((font)->max_bounds.ascent+(font)->max_bounds.descent) /* Macro Name: SETDOUBLEARG. * Description: Used like XtSetArg if arg is a double. * Arguments: arg - the arg to set. * flag - the flag to use. * var - the double variable to place in arg. */ #define SETDOUBLEARG(arg, flag, var) \ if (sizeof(double) > sizeof(XtArgVal)) {\ XtSetArg(arg, flag, &(var)); \ } else { \ XtArgVal * l_top = (XtArgVal *) &(var);\ XtSetArg(arg, flag, *l_top); \ } /* Macro Name: MAX. * Description: Returns the greater of two values. * Arguments: a, b - the values to compare. */ #ifndef MAX #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #endif /* Macro Name: MIN. * Description: Returns the lesser of two values. * Arguments: a, b - the values to compare. */ #ifndef MIN #define MIN(a,b) (((a) < (b)) ? (a) : (b)) #endif /* Macro Name: BOUND. * Description: returns value is min <= value <= max. * if value < min then returns min. * if value > max then returns max. * Arguments: value - the value to compare. * min - can't return a value lower than this. * max - can't return a value greter than this. */ #ifndef BOUND #define BOUND(value, min, max) (MAX(MIN((value), (max)), (min))) #endif /* Macro Name: LOWER_CASE. * Description: returns a lower case ch. * Arguments: ch - the letter whose lower case form is desired. */ #ifndef LOWER_CASE #define LOWER_CASE(ch) (((ch) >= 'A') && ((ch) <= 'Z') ? \ (ch) + ('a' - 'A') : (ch)) #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.