/* * CDE - Common Desktop Environment * * Copyright (c) 1993-2012, The Open Group. All rights reserved. * * These libraries and programs are free software; you can * redistribute them and/or modify them under the terms of the GNU * Lesser General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * These libraries and programs are distributed in the hope that * they will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public * License along with these libraries and programs; if not, write * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110-1301 USA */ /* $TOG: xmcvt.c /main/8 1999/09/16 13:42:47 mgreess $ */ /* Copyright (c) 1991, 1992 UNIX System Laboratories, Inc. */ /* All Rights Reserved */ /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF */ /* UNIX System Laboratories, Inc. */ /* The copyright notice above does not evidence any */ /* actual or intended publication of such source code. */ #include "shell.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
#include
#include
#include
#include
#include #include "hash.h" #include "stdio.h" #define NO_AST #include "dtksh.h" #undef NO_AST #include "xmksh.h" #include "XtCvtrs.h" #include "dtkcmds.h" #include "xmcvt.h" #include "widget.h" #include "extra.h" #include "xmwidgets.h" #include "msgs.h" #include
typedef struct { char * modifierName; unsigned int modifier; } ModifierState; /* * Converters for DTKSH */ char * XmStringToString( XmString string ) { static char *buf = NULL; XmStringContext context; XmStringCharSet charset; XmStringDirection dir; char *text; Boolean separator = FALSE; if (string == NULL) return(NULL); XmStringInitContext(&context, string); XtFree(buf); buf = NULL; while (!separator) { if (XmStringGetNextSegment(context, &text, &charset, &dir, &separator)) { if (buf) { buf = XtRealloc(buf, strlen(buf) + strlen(text) + 2); strcat(buf, text); } else buf = strdup(text); XtFree(text); } else break; } XmStringFreeContext(context); return(buf); } void DtkshCvtXmStringToString( Display *dpy, XrmValuePtr args, Cardinal *nargs, XrmValuePtr fval, XrmValuePtr toval, XtPointer data ) { XmString string = ((XmString *)fval->addr)[0]; char *buf; buf = XmStringToString(string); toval->addr = (caddr_t)buf; toval->size = buf ? strlen(buf) + 1 : 0; } void DtkshCvtKeySymToString( XrmValuePtr args, Cardinal *nargs, XrmValuePtr fval, XrmValuePtr toval ) { static char buf[2]; buf[0] = (char) (((KeySym *)(fval->addr))[0]); buf[1] = '\0'; toval->addr = (caddr_t)buf; toval->size = 2; } /* * Convert an XmStringTable to a String. * In keeping with the standard CvtStringToStringTable function provided * by Motif, we will separate each item by a comma. This of course does not * work properly if there is a comma in the data, but what can we do? */ char * _CvtXmStringTableToString( XmStringTable stringtable, int itemCount ) { static char *buf = NULL; XmStringContext context; XmStringCharSet charset; XmStringDirection dir; char *text; Boolean separator = FALSE; XmString string; int i; char * ptr; char * nextComma; XtFree(buf); buf = XtMalloc(3); buf[0] = '\0'; for (i = 0; i < itemCount; i++) { if (i > 0) strcat(buf, ","); XmStringInitContext(&context, stringtable[i]); while (!separator) { if (XmStringGetNextSegment(context, &text, &charset, &dir, &separator)) { /* * To be consistent with the Motif converter, which will take * a comma-separated string, and convert it to an XmStringTable, * we need to escape any ',' characters contained within a list * item. */ ptr = text; while (nextComma = strchr(ptr, ',')) { *nextComma = '\0'; buf = XtRealloc(buf, strlen(buf) + strlen(ptr) + 5); strcat(buf, ptr); strcat(buf, "\\,"); *nextComma = ','; ptr = nextComma + 1; } buf = XtRealloc(buf, strlen(buf) + strlen(ptr) + 3); strcat(buf, ptr); XtFree(text); } else break; } XmStringFreeContext(context); } return(buf); } void DtkshCvtListItemsToString( Display *dpy, XrmValuePtr args, Cardinal *nargs, XrmValuePtr fval, XrmValuePtr toval, XtPointer data ) { char *buf; XmStringTable stringtable = *((XmStringTable *)fval->addr); int itemCount = *((int *) args[0].addr); buf = _CvtXmStringTableToString(stringtable, itemCount); toval->addr = (caddr_t)buf; toval->size = buf ? strlen(buf) + 1 : 0; } /* * There are a number of resources in motif that consist of a few * named integer values. Most such resources only have 2 to 4 values, * none have more than 7. Because there are so few values, it's not * really worth the memory overhead to hash them. Also, these kinds * of resources are rarely read by programmers (most are written but * not read). So, we decided to go with a simple linear search converter * that takes as its first argument a table of the values allowed, and * as its second argument the number of items in the table. * * Note that we could not go with a simple indexing scheme because: * (1) the values are not guaranteed to be contiguous and (2) some * of the tables start with -1 instead of 0. * * If there are in the future many more items added to these lists, we * might want to convert to a hashing scheme or a binary search. */ void DtkshCvtNamedValueToString( XrmValue *args, Cardinal *nargs, XrmValuePtr fval, XrmValuePtr toval ) { /* * same buffer will get used each time */ static char *ret = NULL; struct named_integer *table; int numtable; long value; int i; char * errmsg; switch(fval->size) { case sizeof(char): { value = (long)*((char *)fval->addr); break; } case sizeof(short): { value = (long)*((short *)fval->addr); break; } case sizeof(long): { value = (long)*((long *)fval->addr); break; } default: if (fval->size == sizeof(int)) { value = (long)*((int *)fval->addr); break; } toval->addr = NULL; toval->size = 0; return; } if (*nargs != 1) { toval->addr = NULL; toval->size = 0; return; } table = (struct named_integer *)args[0].addr; numtable = args[0].size/sizeof(struct named_integer); for (i = 0; i < numtable; i++) { if (value == table[i].value) { toval->addr = (caddr_t)table[i].name; toval->size = strlen(table[i].name) + 1; return; } } toval->addr = NULL; toval->size = 0; return; } /*************************************************************************/ void DtkshCvtStringToNamedValue( XrmValue *args, Cardinal *nargs, XrmValuePtr fval, XrmValuePtr toval ) { /* * same buffer will get used each time */ static int ret; struct named_integer *table; int numtable; char *value; int i; char * errbuf; char * errmsg; value = (String)fval->addr; if (*nargs != 1) { toval->addr = NULL; toval->size = 0; return; } table = (struct named_integer *)args[0].addr; numtable = args[0].size/sizeof(struct named_integer); for (i = 0; i < numtable; i++) { if (DtCompareISOLatin1(value, (char *)(table[i].name))) { toval->addr = (caddr_t)&table[i].value; toval->size = sizeof(table[i].value); return; } } errmsg =strdup(GETMESSAGE(16,2, "DtkshCvtStringToNamedValue: Unable to convert the string '%s'")); errbuf = XtMalloc(strlen(errmsg) + strlen(value) + 10); sprintf(errbuf, errmsg, value); XtWarning(errbuf); free(errmsg); XtFree(errbuf); toval->addr = NULL; toval->size = 0; return; } struct named_integer NI_TraversalDirection[] = { { "TRAVERSE_CURRENT", XmTRAVERSE_CURRENT }, { "TRAVERSE_DOWN", XmTRAVERSE_DOWN }, { "TRAVERSE_HOME", XmTRAVERSE_HOME }, { "TRAVERSE_LEFT", XmTRAVERSE_LEFT }, { "TRAVERSE_NEXT", XmTRAVERSE_NEXT }, { "TRAVERSE_NEXT_TAB_GROUP", XmTRAVERSE_NEXT_TAB_GROUP }, { "TRAVERSE_PREV", XmTRAVERSE_PREV }, { "TRAVERSE_PREV_TAB_GROUP", XmTRAVERSE_PREV_TAB_GROUP }, { "TRAVERSE_PREV_TAB_GROUP", XmTRAVERSE_PREV_TAB_GROUP }, { "TRAVERSE_RIGHT", XmTRAVERSE_RIGHT }, { "TRAVERSE_UP", XmTRAVERSE_UP }, }; struct named_integer NI_VisibilityType[] = { { "VISIBILITY_UNOBSCURED", XmVISIBILITY_UNOBSCURED }, { "VISIBILITY_PARTIALLY_OBSCURED",XmVISIBILITY_PARTIALLY_OBSCURED }, { "VISIBILITY_FULLY_OBSCURED", XmVISIBILITY_FULLY_OBSCURED }, }; struct named_integer NI_CommandChild[] = { { "DIALOG_COMMAND_TEXT", XmDIALOG_COMMAND_TEXT }, { "DIALOG_PROMPT_LABEL", XmDIALOG_PROMPT_LABEL }, { "DIALOG_HISTORY_LIST", XmDIALOG_HISTORY_LIST }, { "DIALOG_WORK_AREA", XmDIALOG_WORK_AREA }, }; struct named_integer NI_MessageBoxChild[] = { { "DIALOG_CANCEL_BUTTON", XmDIALOG_CANCEL_BUTTON }, { "DIALOG_DEFAULT_BUTTON", XmDIALOG_DEFAULT_BUTTON }, { "DIALOG_HELP_BUTTON", XmDIALOG_HELP_BUTTON }, { "DIALOG_MESSAGE_LABEL", XmDIALOG_MESSAGE_LABEL }, { "DIALOG_OK_BUTTON", XmDIALOG_OK_BUTTON }, { "DIALOG_SEPARATOR", XmDIALOG_SEPARATOR }, { "DIALOG_SYMBOL_LABEL", XmDIALOG_SYMBOL_LABEL }, }; struct named_integer NI_FileSelChild[] = { { "DIALOG_APPLY_BUTTON", XmDIALOG_APPLY_BUTTON }, { "DIALOG_CANCEL_BUTTON", XmDIALOG_CANCEL_BUTTON }, { "DIALOG_DEFAULT_BUTTON", XmDIALOG_DEFAULT_BUTTON }, { "DIALOG_DIR_LIST", XmDIALOG_DIR_LIST }, { "DIALOG_DIR_LIST_LABEL", XmDIALOG_DIR_LIST_LABEL }, { "DIALOG_FILTER_LABEL", XmDIALOG_FILTER_LABEL }, { "DIALOG_FILTER_TEXT", XmDIALOG_FILTER_TEXT }, { "DIALOG_HELP_BUTTON", XmDIALOG_HELP_BUTTON }, { "DIALOG_LIST", XmDIALOG_LIST }, { "DIALOG_LIST_LABEL", XmDIALOG_LIST_LABEL }, { "DIALOG_OK_BUTTON", XmDIALOG_OK_BUTTON }, { "DIALOG_SELECTION_LABEL", XmDIALOG_SELECTION_LABEL }, { "DIALOG_SEPARATOR", XmDIALOG_SEPARATOR }, { "DIALOG_TEXT", XmDIALOG_TEXT }, { "DIALOG_WORK_AREA", XmDIALOG_WORK_AREA }, }; struct named_integer NI_SelBoxChild[] = { { "DIALOG_APPLY_BUTTON", XmDIALOG_APPLY_BUTTON }, { "DIALOG_CANCEL_BUTTON", XmDIALOG_CANCEL_BUTTON }, { "DIALOG_DEFAULT_BUTTON", XmDIALOG_DEFAULT_BUTTON }, { "DIALOG_HELP_BUTTON", XmDIALOG_HELP_BUTTON }, { "DIALOG_LIST", XmDIALOG_LIST }, { "DIALOG_LIST_LABEL", XmDIALOG_LIST_LABEL }, { "DIALOG_OK_BUTTON", XmDIALOG_OK_BUTTON }, { "DIALOG_SELECTION_LABEL", XmDIALOG_SELECTION_LABEL }, { "DIALOG_SEPARATOR", XmDIALOG_SEPARATOR }, { "DIALOG_TEXT", XmDIALOG_TEXT }, { "DIALOG_WORK_AREA", XmDIALOG_WORK_AREA }, }; /************************************************************************/ struct named_integer NI_ArrowDirection[] = { { "ARROW_UP", XmARROW_UP }, { "ARROW_DOWN", XmARROW_DOWN }, { "ARROW_LEFT", XmARROW_LEFT }, { "ARROW_RIGHT",XmARROW_RIGHT }, }; struct named_integer NI_MultiClick[] = { { "MULTICLICK_DISCARD", XmMULTICLICK_DISCARD }, { "MULTICLICK_KEEP", XmMULTICLICK_KEEP }, }; struct named_integer NI_DialogStyle[] = { { "DIALOG_SYSTEM_MODAL", XmDIALOG_SYSTEM_MODAL }, {"DIALOG_PRIMARY_APPLICATION_MODAL",XmDIALOG_PRIMARY_APPLICATION_MODAL}, { "DIALOG_APPLICATION_MODAL", XmDIALOG_APPLICATION_MODAL }, { "DIALOG_FULL_APPLICATION_MODAL", XmDIALOG_FULL_APPLICATION_MODAL }, { "DIALOG_MODELESS", XmDIALOG_MODELESS }, { "DIALOG_WORK_AREA", XmDIALOG_WORK_AREA }, }; struct named_integer NI_MWMInputMode[] = { { "-1", -1 }, { "MWM_INPUT_MODELESS", MWM_INPUT_MODELESS}, { "MWM_INPUT_PRIMARY_APPLICATION_MODAL", MWM_INPUT_PRIMARY_APPLICATION_MODAL }, { "MWM_INPUT_SYSTEM_MODAL", MWM_INPUT_SYSTEM_MODAL }, { "MWM_INPUT_FULL_APPLICATION_MODAL", MWM_INPUT_FULL_APPLICATION_MODAL }, }; struct named_integer NI_ResizePolicy[] = { { "RESIZE_NONE", XmRESIZE_NONE }, { "RESIZE_ANY", XmRESIZE_ANY }, { "RESIZE_GROW", XmRESIZE_GROW }, }; struct named_integer NI_FileTypeMask[] = { { "FILE_REGULAR", XmFILE_REGULAR }, { "FILE_DIRECTORY", XmFILE_DIRECTORY }, { "FILE_ANY_TYPE", XmFILE_ANY_TYPE }, }; struct named_integer NI_ShadowType[] = { { "SHADOW_IN", XmSHADOW_IN }, { "SHADOW_OUT", XmSHADOW_OUT }, { "SHADOW_ETCHED_IN", XmSHADOW_ETCHED_IN }, { "SHADOW_ETCHED_OUT", XmSHADOW_ETCHED_OUT }, }; struct named_integer NI_Attachment[] = { { "ATTACH_NONE", XmATTACH_NONE }, { "ATTACH_FORM", XmATTACH_FORM }, { "ATTACH_OPPOSITE_FORM", XmATTACH_OPPOSITE_FORM }, { "ATTACH_WIDGET", XmATTACH_WIDGET }, { "ATTACH_OPPOSITE_WIDGET", XmATTACH_OPPOSITE_WIDGET }, { "ATTACH_POSITION", XmATTACH_POSITION }, { "ATTACH_SELF", XmATTACH_SELF }, }; struct named_integer NI_ChildType[] = { { "FRAME_TITLE_CHILD", XmFRAME_TITLE_CHILD }, { "FRAME_WORKAREA_CHILD",XmFRAME_WORKAREA_CHILD }, { "FRAME_GENERIC_CHILD",XmFRAME_GENERIC_CHILD }, }; struct named_integer NI_ChildVerticalAlignment[] = { { "ALIGNMENT_BASELINE_BOTTOM", XmALIGNMENT_BASELINE_BOTTOM }, { "ALIGNMENT_BASELINE_TOP",XmALIGNMENT_BASELINE_TOP }, { "ALIGNMENT_WIDGET_TOP",XmALIGNMENT_WIDGET_TOP }, { "ALIGNMENT_CENTER",XmALIGNMENT_CENTER }, { "ALIGNMENT_WIDGET_BOTTOM",XmALIGNMENT_WIDGET_BOTTOM }, }; struct named_integer NI_UnitType[] = { { "PIXELS", XmPIXELS }, { "100TH_MILLIMETERS", Xm100TH_MILLIMETERS }, { "1000TH_INCHES", Xm1000TH_INCHES }, { "100TH_POINTS", Xm100TH_POINTS }, { "100TH_FONT_UNITS", Xm100TH_FONT_UNITS }, }; struct named_integer NI_NavigationType[] = { { "NONE", XmNONE }, { "TAB_GROUP", XmTAB_GROUP }, { "STICKY_TAB_GROUP", XmSTICKY_TAB_GROUP }, { "EXCLUSIVE_TAB_GROUP", XmEXCLUSIVE_TAB_GROUP }, }; struct named_integer NI_Alignment[] = { { "ALIGNMENT_CENTER", XmALIGNMENT_CENTER }, { "ALIGNMENT_END", XmALIGNMENT_END }, { "ALIGNMENT_BEGINNING", XmALIGNMENT_BEGINNING }, }; struct named_integer NI_LabelType[] = { { "STRING", XmSTRING }, { "PIXMAP", XmPIXMAP } }; struct named_integer NI_StringDirection[] = { { "STRING_DIRECTION_L_TO_R", XmSTRING_DIRECTION_L_TO_R }, { "STRING_DIRECTION_R_TO_L", XmSTRING_DIRECTION_R_TO_L }, }; struct named_integer NI_SelectionPolicy[] = { { "SINGLE_SELECT", XmSINGLE_SELECT }, { "MULTIPLE_SELECT", XmMULTIPLE_SELECT }, { "EXTENDED_SELECT", XmEXTENDED_SELECT }, { "BROWSE_SELECT", XmBROWSE_SELECT }, }; struct named_integer NI_ScrollBarPlacement[] = { { "TOP_LEFT", XmTOP_LEFT }, { "BOTTOM_LEFT", XmBOTTOM_LEFT }, { "TOP_RIGHT", XmTOP_RIGHT }, { "BOTTOM_RIGHT", XmBOTTOM_RIGHT }, }; struct named_integer NI_ScrollBarDisplayPolicy[] = { { "AS_NEEDED", XmAS_NEEDED }, { "STATIC", XmSTATIC }, }; struct named_integer NI_ScrollingPolicy[] = { { "AUTOMATIC", XmAUTOMATIC }, { "APPLICATION_DEFINED", XmAPPLICATION_DEFINED }, }; struct named_integer NI_VisualPolicy[] = { { "VARIABLE", XmVARIABLE }, { "CONSTANT", XmCONSTANT }, }; struct named_integer NI_ListSizePolicy[] = { { "CONSTANT", XmCONSTANT }, { "VARIABLE", XmVARIABLE }, { "RESIZE_IF_POSSIBLE", XmRESIZE_IF_POSSIBLE }, }; struct named_integer NI_EditMode[] = { { "SINGLE_LINE_EDIT", XmSINGLE_LINE_EDIT }, { "MULTI_LINE_EDIT", XmMULTI_LINE_EDIT }, }; struct named_integer NI_CommandWindowLocation[] = { { "COMMAND_ABOVE_WORKSPACE", XmCOMMAND_ABOVE_WORKSPACE }, { "COMMAND_BELOW_WORKSPACE", XmCOMMAND_BELOW_WORKSPACE }, }; struct named_integer NI_DefaultButtonType[] = { { "DIALOG_CANCEL_BUTTON", XmDIALOG_CANCEL_BUTTON }, { "DIALOG_OK_BUTTON", XmDIALOG_OK_BUTTON }, { "DIALOG_HELP_BUTTON", XmDIALOG_HELP_BUTTON }, { "DIALOG_NONE", XmDIALOG_NONE }, }; struct named_integer NI_DialogType[] = { { "DIALOG_TEMPLATE", XmDIALOG_TEMPLATE }, { "DIALOG_INFORMATION", XmDIALOG_INFORMATION }, { "DIALOG_QUESTION", XmDIALOG_QUESTION }, { "DIALOG_WORKING", XmDIALOG_WORKING }, { "DIALOG_ERROR", XmDIALOG_ERROR }, { "DIALOG_MESSAGE", XmDIALOG_MESSAGE }, { "DIALOG_WARNING", XmDIALOG_WARNING }, }; struct named_integer NI_EntryVerticalAlignment[] = { { "ALIGNMENT_BASELINE_BOTTOM", XmALIGNMENT_BASELINE_BOTTOM }, { "ALIGNMENT_BASELINE_TOP",XmALIGNMENT_BASELINE_TOP }, { "ALIGNMENT_CONTENTS_BOTTOM",XmALIGNMENT_CONTENTS_BOTTOM }, { "ALIGNMENT_CENTER",XmALIGNMENT_CENTER }, { "ALIGNMENT_CONTENTS_TOP",XmALIGNMENT_CONTENTS_TOP }, }; struct named_integer NI_Orientation[] = { { "HORIZONTAL", XmHORIZONTAL }, { "VERTICAL", XmVERTICAL }, }; struct named_integer NI_Packing[] = { { "PACK_TIGHT", XmPACK_TIGHT }, { "PACK_COLUMN",XmPACK_COLUMN }, { "PACK_NONE", XmPACK_NONE }, }; struct named_integer NI_RowColumnType[] = { { "WORK_AREA", XmWORK_AREA }, { "MENU_BAR", XmMENU_BAR }, { "MENU_PULLDOWN",XmMENU_PULLDOWN }, { "MENU_POPUP", XmMENU_POPUP }, { "MENU_OPTION",XmMENU_OPTION }, }; struct named_integer NI_ProcessingDirection[] = { { "MAX_ON_TOP", XmMAX_ON_TOP }, { "MAX_ON_BOTTOM",XmMAX_ON_BOTTOM }, { "MAX_ON_LEFT",XmMAX_ON_LEFT }, { "MAX_ON_RIGHT",XmMAX_ON_RIGHT }, }; struct named_integer NI_ChildPlacement[] = { { "PLACE_ABOVE_SELECTION", XmPLACE_ABOVE_SELECTION }, { "PLACE_BELOW_SELECTION", XmPLACE_BELOW_SELECTION }, { "PLACE_TOP", XmPLACE_TOP }, }; struct named_integer NI_SelectionDialogType[] = { { "DIALOG_PROMPT", XmDIALOG_PROMPT }, { "DIALOG_COMMAND", XmDIALOG_COMMAND }, { "DIALOG_SELECTION", XmDIALOG_SELECTION }, { "DIALOG_FILE_SELECTION", XmDIALOG_FILE_SELECTION }, { "DIALOG_WORK_AREA", XmDIALOG_WORK_AREA }, }; struct named_integer NI_SeparatorType[] = { { "SINGLE_LINE", XmSINGLE_LINE }, { "DOUBLE_LINE", XmDOUBLE_LINE }, { "SINGLE_DASHED_LINE", XmSINGLE_DASHED_LINE }, { "DOUBLE_DASHED_LINE", XmDOUBLE_DASHED_LINE }, { "NO_LINE", XmNO_LINE }, { "SHADOW_ETCHED_IN", XmSHADOW_ETCHED_IN }, { "SHADOW_ETCHED_OUT", XmSHADOW_ETCHED_OUT }, { "SHADOW_ETCHED_IN_DASH", XmSHADOW_ETCHED_IN_DASH }, { "SHADOW_ETCHED_OUT_DASH", XmSHADOW_ETCHED_OUT_DASH }, }; struct named_integer NI_IndicatorType[] = { { "ONE_OF_MANY", XmONE_OF_MANY }, { "N_OF_MANY", XmN_OF_MANY }, }; struct named_integer NI_AudibleWarning[] = { { "BELL", XmBELL }, { "NONE", XmNONE }, }; struct named_integer NI_DeleteResponse[] = { { "DESTROY", XmDESTROY }, { "UNMAP", XmUNMAP }, { "DO_NOTHING", XmDO_NOTHING }, }; struct named_integer NI_KeyboardFocusPolicy[] = { { "EXPLICIT", XmEXPLICIT }, { "POINTER", XmPOINTER }, }; struct named_integer NI_InitialState[] = { { "NormalState", NormalState }, { "IconicState", IconicState }, }; struct named_integer NI_HelpReturnSelectedWidgetResultType[] = { { "HELP_SELECT_VALID", DtHELP_SELECT_VALID }, { "HELP_SELECT_INVALID",DtHELP_SELECT_INVALID }, { "HELP_SELECT_ABORT", DtHELP_SELECT_ABORT }, { "HELP_SELECT_ERROR", DtHELP_SELECT_ERROR }, }; struct named_integer NI_QuickHelpChildType[] = { { "HELP_QUICK_CLOSE_BUTTON", DtHELP_QUICK_CLOSE_BUTTON }, { "HELP_QUICK_PRINT_BUTTON",DtHELP_QUICK_PRINT_BUTTON }, { "HELP_QUICK_HELP_BUTTON",DtHELP_QUICK_HELP_BUTTON }, { "HELP_QUICK_SEPARATOR", DtHELP_QUICK_SEPARATOR }, { "HELP_QUICK_MORE_BUTTON",DtHELP_QUICK_MORE_BUTTON }, { "HELP_QUICK_BACK_BUTTON",DtHELP_QUICK_BACK_BUTTON }, }; struct named_integer NI_HelpType[] = { { "HELP_TYPE_TOPIC", DtHELP_TYPE_TOPIC }, { "HELP_TYPE_STRING",DtHELP_TYPE_STRING }, { "HELP_TYPE_DYNAMIC_STRING",DtHELP_TYPE_DYNAMIC_STRING }, { "HELP_TYPE_MAN_PAGE", DtHELP_TYPE_MAN_PAGE }, { "HELP_TYPE_FILE",DtHELP_TYPE_FILE }, }; struct named_integer NI_HelpScrollBarDisplayPolicy[] = { { "HELP_AS_NEEDED_SCROLLBARS", DtHELP_AS_NEEDED_SCROLLBARS }, { "HELP_STATIC_SCROLLBARS", DtHELP_STATIC_SCROLLBARS }, { "HELP_NO_SCROLLBARS",DtHELP_NO_SCROLLBARS }, }; struct named_integer NI_TextHighlightMode[] = { { "HIGHLIGHT_NORMAL", XmHIGHLIGHT_NORMAL }, { "HIGHLIGHT_SELECTED", XmHIGHLIGHT_SELECTED }, { "HIGHLIGHT_SECONDARY_SELECTED",XmHIGHLIGHT_SECONDARY_SELECTED }, }; struct named_integer NI_TextSearchDirection[] = { { "TEXT_FORWARD", XmTEXT_FORWARD }, { "TEXT_BACKWARD", XmTEXT_BACKWARD }, }; struct named_integer NI_ListSelectionType[] = { { "INITIAL", XmINITIAL }, { "MODIFICATION", XmMODIFICATION }, { "ADDITION", XmADDITION }, }; struct named_integer NI_TT_STATUS[] = { { "TT_OK", TT_OK } , { "TT_WRN_NOTFOUND", TT_WRN_NOTFOUND } , { "TT_WRN_STALE_OBJID", TT_WRN_STALE_OBJID } , { "TT_WRN_STOPPED", TT_WRN_STOPPED } , { "TT_WRN_SAME_OBJID", TT_WRN_SAME_OBJID } , { "TT_WRN_START_MESSAGE", TT_WRN_START_MESSAGE } , { "TT_ERR_CLASS", TT_ERR_CLASS } , { "TT_ERR_DBAVAIL", TT_ERR_DBAVAIL } , { "TT_ERR_DBEXIST", TT_ERR_DBEXIST } , { "TT_ERR_FILE", TT_ERR_FILE } , { "TT_ERR_INVALID", TT_ERR_INVALID } , { "TT_ERR_MODE", TT_ERR_MODE } , { "TT_ERR_ACCESS", TT_ERR_ACCESS } , { "TT_ERR_NOMP", TT_ERR_NOMP } , { "TT_ERR_NOTHANDLER", TT_ERR_NOTHANDLER } , { "TT_ERR_NUM", TT_ERR_NUM } , { "TT_ERR_OBJID", TT_ERR_OBJID } , { "TT_ERR_OP", TT_ERR_OP } , { "TT_ERR_OTYPE", TT_ERR_OTYPE } , { "TT_ERR_ADDRESS", TT_ERR_ADDRESS } , { "TT_ERR_PATH", TT_ERR_PATH } , { "TT_ERR_POINTER", TT_ERR_POINTER } , { "TT_ERR_PROCID", TT_ERR_PROCID } , { "TT_ERR_PROPLEN", TT_ERR_PROPLEN } , { "TT_ERR_PROPNAME", TT_ERR_PROPNAME } , { "TT_ERR_PTYPE", TT_ERR_PTYPE } , { "TT_ERR_DISPOSITION", TT_ERR_DISPOSITION } , { "TT_ERR_SCOPE", TT_ERR_SCOPE } , { "TT_ERR_SESSION", TT_ERR_SESSION } , { "TT_ERR_VTYPE", TT_ERR_VTYPE } , { "TT_ERR_NO_VALUE", TT_ERR_NO_VALUE } , { "TT_ERR_INTERNAL", TT_ERR_INTERNAL } , { "TT_ERR_READONLY", TT_ERR_READONLY } , { "TT_ERR_NO_MATCH", TT_ERR_NO_MATCH } , { "TT_ERR_UNIMP", TT_ERR_UNIMP } , { "TT_ERR_OVERFLOW", TT_ERR_OVERFLOW } , { "TT_ERR_PTYPE_START", TT_ERR_PTYPE_START } , { "TT_ERR_CATEGORY", TT_ERR_CATEGORY } , { "TT_ERR_DBUPDATE", TT_ERR_DBUPDATE } , { "TT_ERR_DBFULL", TT_ERR_DBFULL } , { "TT_ERR_DBCONSIST", TT_ERR_DBCONSIST } , { "TT_ERR_STATE", TT_ERR_STATE } , { "TT_ERR_NOMEM", TT_ERR_NOMEM } , { "TT_ERR_SLOTNAME", TT_ERR_SLOTNAME } , { "TT_ERR_XDR", TT_ERR_XDR } , { "TT_ERR_NETFILE", TT_ERR_NETFILE } , { "TT_ERR_TOOLATE", TT_ERR_TOOLATE } , { "TT_ERR_AUTHORIZATION", TT_ERR_AUTHORIZATION } , { "TT_ERR_VERSION_MISMATCH", TT_ERR_VERSION_MISMATCH } , { "TT_DESKTOP_EPERM", TT_DESKTOP_EPERM } , { "TT_DESKTOP_ENOENT", TT_DESKTOP_ENOENT } , { "TT_DESKTOP_EINTR", TT_DESKTOP_EINTR } , { "TT_DESKTOP_EIO", TT_DESKTOP_EIO } , { "TT_DESKTOP_EAGAIN", TT_DESKTOP_EAGAIN } , { "TT_DESKTOP_ENOMEM", TT_DESKTOP_ENOMEM } , { "TT_DESKTOP_EACCES", TT_DESKTOP_EACCES } , { "TT_DESKTOP_EFAULT", TT_DESKTOP_EFAULT } , { "TT_DESKTOP_EEXIST", TT_DESKTOP_EEXIST } , { "TT_DESKTOP_ENODEV", TT_DESKTOP_ENODEV } , { "TT_DESKTOP_ENOTDIR", TT_DESKTOP_ENOTDIR } , { "TT_DESKTOP_EISDIR", TT_DESKTOP_EISDIR } , { "TT_DESKTOP_EINVAL", TT_DESKTOP_EINVAL } , { "TT_DESKTOP_ENFILE", TT_DESKTOP_ENFILE } , { "TT_DESKTOP_EMFILE", TT_DESKTOP_EMFILE } , { "TT_DESKTOP_ETXTBSY", TT_DESKTOP_ETXTBSY } , { "TT_DESKTOP_EFBIG", TT_DESKTOP_EFBIG } , { "TT_DESKTOP_ENOSPC", TT_DESKTOP_ENOSPC } , { "TT_DESKTOP_EROFS", TT_DESKTOP_EROFS } , { "TT_DESKTOP_EMLINK", TT_DESKTOP_EMLINK } , { "TT_DESKTOP_EPIPE", TT_DESKTOP_EPIPE } , { "TT_DESKTOP_ENOMSG", TT_DESKTOP_ENOMSG } , { "TT_DESKTOP_EDEADLK", TT_DESKTOP_EDEADLK } , { "TT_DESKTOP_ECANCELED", TT_DESKTOP_ECANCELED } , { "TT_DESKTOP_ENOTSUP", TT_DESKTOP_ENOTSUP } , { "TT_DESKTOP_ENODATA", TT_DESKTOP_ENODATA } , { "TT_DESKTOP_EPROTO", TT_DESKTOP_EPROTO } , { "TT_DESKTOP_ENOTEMPTY", TT_DESKTOP_ENOTEMPTY } , { "TT_DESKTOP_ETIMEDOUT", TT_DESKTOP_ETIMEDOUT } , { "TT_DESKTOP_EALREADY", TT_DESKTOP_EALREADY } , { "TT_DESKTOP_UNMODIFIED", TT_DESKTOP_UNMODIFIED } , { "TT_MEDIA_ERR_SIZE", TT_MEDIA_ERR_SIZE } , { "TT_MEDIA_ERR_FORMAT", TT_MEDIA_ERR_FORMAT } , { "TT_AUTHFILE_ACCESS", TT_AUTHFILE_ACCESS } , { "TT_AUTHFILE_LOCK", TT_AUTHFILE_LOCK } , { "TT_AUTHFILE_LOCK_TIMEOUT", TT_AUTHFILE_LOCK_TIMEOUT } , { "TT_AUTHFILE_UNLOCK", TT_AUTHFILE_UNLOCK } , { "TT_AUTHFILE_MISSING", TT_AUTHFILE_MISSING } , { "TT_AUTHFILE_ENTRY_MISSING", TT_AUTHFILE_ENTRY_MISSING } , { "TT_AUTHFILE_WRITE", TT_AUTHFILE_WRITE } , }; struct named_integer NI_TT_SCOPE[] = { { "TT_SCOPE_NONE", TT_SCOPE_NONE }, { "TT_SESSION", TT_SESSION }, { "TT_FILE", TT_FILE }, { "TT_BOTH", TT_BOTH }, { "TT_FILE_IN_SESSION", TT_FILE_IN_SESSION }, }; struct named_integer NI_TT_OP[] = { { "TTDT_OP_NONE", TTDT_OP_NONE }, { "TTDT_CREATED", TTDT_CREATED }, { "TTDT_DELETED", TTDT_DELETED }, { "TTDT_DO_COMMAND", TTDT_DO_COMMAND }, { "TTDT_SET_ENVIRONMENT", TTDT_SET_ENVIRONMENT }, { "TTDT_GET_ENVIRONMENT", TTDT_GET_ENVIRONMENT }, { "TTDT_SET_GEOMETRY", TTDT_SET_GEOMETRY }, { "TTDT_GET_GEOMETRY", TTDT_GET_GEOMETRY }, { "TTDT_SET_ICONIFIED", TTDT_SET_ICONIFIED }, { "TTDT_GET_ICONIFIED", TTDT_GET_ICONIFIED }, { "TTDT_SET_LOCALE", TTDT_SET_LOCALE }, { "TTDT_GET_LOCALE", TTDT_GET_LOCALE }, { "TTDT_SET_MAPPED", TTDT_SET_MAPPED }, { "TTDT_GET_MAPPED", TTDT_GET_MAPPED }, { "TTDT_MODIFIED", TTDT_MODIFIED }, { "TTDT_REVERTED", TTDT_REVERTED }, { "TTDT_GET_MODIFIED", TTDT_GET_MODIFIED }, { "TTDT_MOVED", TTDT_MOVED }, { "TTDT_PAUSE", TTDT_PAUSE }, { "TTDT_RESUME", TTDT_RESUME }, { "TTDT_QUIT", TTDT_QUIT }, { "TTDT_RAISE", TTDT_RAISE }, { "TTDT_LOWER", TTDT_LOWER }, { "TTDT_SAVE", TTDT_SAVE }, { "TTDT_REVERT", TTDT_REVERT }, { "TTDT_SAVED", TTDT_SAVED }, { "TTDT_SET_SITUATION", TTDT_SET_SITUATION }, { "TTDT_GET_SITUATION", TTDT_GET_SITUATION }, { "TTDT_SIGNAL", TTDT_SIGNAL }, { "TTDT_STARTED", TTDT_STARTED }, { "TTDT_STOPPED", TTDT_STOPPED }, { "TTDT_STATUS", TTDT_STATUS }, { "TTDT_GET_STATUS", TTDT_GET_STATUS }, { "TTDT_GET_SYSINFO", TTDT_GET_SYSINFO }, { "TTDT_SET_XINFO", TTDT_SET_XINFO }, { "TTDT_GET_XINFO", TTDT_GET_XINFO }, { "TTME_ABSTRACT", TTME_ABSTRACT }, { "TTME_DEPOSIT", TTME_DEPOSIT }, { "TTME_DISPLAY", TTME_DISPLAY }, { "TTME_EDIT", TTME_EDIT }, { "TTME_COMPOSE", TTME_COMPOSE }, { "TTME_INTERPRET", TTME_INTERPRET }, { "TTME_PRINT", TTME_PRINT }, { "TTME_TRANSLATE", TTME_TRANSLATE }, }; struct named_integer NI_TEAR_OFF[] = { { "TEAR_OFF_ENABLED", XmTEAR_OFF_ENABLED }, { "TEAR_OFF_DISABLED", XmTEAR_OFF_DISABLED }, }; /************************************************************************/ struct named_integer NI_Button[] = { { "Button1", Button1 }, { "Button2", Button2 }, { "Button3", Button3 }, { "Button4", Button4 }, { "Button5", Button5 }, }; struct named_integer NI_EventType[] = { {"KeyPress", KeyPress}, {"KeyRelease", KeyRelease}, {"ButtonPress", ButtonPress}, {"ButtonRelease", ButtonRelease}, {"MotionNotify", MotionNotify}, {"EnterNotify", EnterNotify}, {"LeaveNotify", LeaveNotify}, {"FocusIn", FocusIn}, {"FocusOut", FocusOut}, {"KeymapNotify", KeymapNotify}, {"Expose", Expose}, {"GraphicsExpose", GraphicsExpose}, {"NoExpose", NoExpose}, {"VisibilityNotify", VisibilityNotify}, {"CreateNotify", CreateNotify}, {"DestroyNotify", DestroyNotify}, {"UnmapNotify", UnmapNotify}, {"MapNotify", MapNotify}, {"MapRequest", MapRequest}, {"ReparentNotify", ReparentNotify}, {"ConfigureNotify", ConfigureNotify}, {"ConfigureRequest", ConfigureRequest}, {"GravityNotify", GravityNotify}, {"ResizeRequest", ResizeRequest}, {"CirculateNotify", CirculateNotify}, {"PropertyNotify", PropertyNotify}, {"SelectionClear", SelectionClear}, {"SelectionRequest", SelectionRequest}, {"SelectionNotify", SelectionNotify}, {"ColormapNotify", ColormapNotify}, {"ClientMessage", ClientMessage}, {"MappingNotify", MappingNotify}, }; struct named_integer NI_XBool[] = { { "true", 1 }, { "false", 0 }, }; struct named_integer NI_TextFormat[] = { { "FMT_8_BIT", XmFMT_8_BIT }, { "FMT_16_BIT", XmFMT_16_BIT }, }; struct named_integer NI_HelpHyperType[] = { { "HELP_LINK_TOPIC", DtHELP_LINK_TOPIC }, { "HELP_LINK_MAN_PAGE", DtHELP_LINK_MAN_PAGE }, { "HELP_LINK_APP_DEFINE", DtHELP_LINK_APP_DEFINE }, }; struct named_integer NI_WIN_GRAVITY[] = { { "ForgetGravity", ForgetGravity }, { "NorthWestGravity", NorthWestGravity }, { "NorthGravity", NorthGravity }, { "NorthEastGravity", NorthEastGravity }, { "WestGravity", WestGravity }, { "CenterGravity", CenterGravity }, { "EastGravity", EastGravity }, { "SouthWestGravity", SouthWestGravity }, { "SouthGravity", SouthGravity }, { "SouthEastGravity", SouthEastGravity }, { "StaticGravity", StaticGravity }, { "-1", -1 }, }; /************************************************************************/ void DtkshRegisterNamedIntConverters( void ) { XtConvertArgRec args[1]; #define SETARGS(X) args[0].address_mode = XtAddress; args[0].address_id = (caddr_t)&X[0]; args[0].size = sizeof(X); /* Special!! Converts string to named value */ SETARGS(NI_TraversalDirection); XtAddConverter(XmRString, "TraversalDirection", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_CommandChild); XtAddConverter(XmRString, "CommandChildType", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_MessageBoxChild); XtAddConverter(XmRString, "MessageBoxChildType", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_FileSelChild); XtAddConverter(XmRString, "FileSelChildType", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_SelBoxChild); XtAddConverter(XmRString, "SelBoxChildType", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_QuickHelpChildType); XtAddConverter(XmRString, "QuickHelpChildType", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_HelpType); XtAddConverter(XmRString, "HelpType", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_HelpScrollBarDisplayPolicy); XtAddConverter(XmRString, "HelpScrollBarDisplayPolicy", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_TextHighlightMode); XtAddConverter(XmRString, "TextHighlightMode", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_TextSearchDirection); XtAddConverter(XmRString, "TextSearchDirection", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_TextFormat); XtAddConverter(XmRString, "TextFormat", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_TT_OP); XtAddConverter(XmRString, "TtOp", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_TT_SCOPE); XtAddConverter(XmRString, "TtScope", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_TT_STATUS); XtAddConverter(XmRString, "TtStatus", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_TEAR_OFF); XtAddConverter(XmRString, XmRTearOffModel, DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_WIN_GRAVITY); XtAddConverter(XmRString, "XWinGravity", DtkshCvtStringToNamedValue, args, 1); SETARGS(NI_MWMInputMode); XtAddConverter(XmRString, "MWMInputMode", DtkshCvtStringToNamedValue, args, 1); /* The rest of these convert named values into strings */ SETARGS(NI_ArrowDirection); XtAddConverter(XmRArrowDirection, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_MultiClick); XtAddConverter(XmRMultiClick, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_DialogStyle); XtAddConverter(XmRDialogStyle, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_MWMInputMode); XtAddConverter("MWMInputMode", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ResizePolicy); XtAddConverter(XmRResizePolicy, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_FileTypeMask); XtAddConverter(XmRFileTypeMask, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ShadowType); XtAddConverter(XmRShadowType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_Attachment); XtAddConverter(XmRAttachment, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ChildType); XtAddConverter(XmRChildType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_Alignment); XtAddConverter(XmRChildHorizontalAlignment, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ChildVerticalAlignment); XtAddConverter(XmRChildVerticalAlignment, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_UnitType); XtAddConverter(XmRUnitType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_NavigationType); XtAddConverter(XmRNavigationType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_Alignment); XtAddConverter(XmRAlignment, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_LabelType); XtAddConverter(XmRLabelType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_StringDirection); XtAddConverter(XmRStringDirection, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_SelectionPolicy); XtAddConverter(XmRSelectionPolicy, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ScrollBarPlacement); XtAddConverter(XmRScrollBarPlacement, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ScrollBarDisplayPolicy); XtAddConverter(XmRScrollBarDisplayPolicy, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ScrollingPolicy); XtAddConverter(XmRScrollingPolicy, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_VisualPolicy); XtAddConverter(XmRVisualPolicy, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ListSizePolicy); XtAddConverter(XmRListSizePolicy, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_EditMode); XtAddConverter(XmREditMode, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_CommandWindowLocation); XtAddConverter(XmRCommandWindowLocation, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_DefaultButtonType); XtAddConverter(XmRDefaultButtonType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_DialogType); XtAddConverter(XmRDialogType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_EntryVerticalAlignment); XtAddConverter(XmRVerticalAlignment, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_Orientation); XtAddConverter(XmROrientation, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_Packing); XtAddConverter(XmRPacking, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_RowColumnType); XtAddConverter(XmRRowColumnType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ProcessingDirection); XtAddConverter(XmRProcessingDirection, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ChildPlacement); XtAddConverter(XmRChildPlacement, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_SelectionDialogType); XtAddConverter(XmRSelectionType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_SeparatorType); XtAddConverter(XmRSeparatorType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_IndicatorType); XtAddConverter(XmRIndicatorType, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_AudibleWarning); XtAddConverter(XmRAudibleWarning, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_DeleteResponse); XtAddConverter(XmRDeleteResponse, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_KeyboardFocusPolicy); XtAddConverter(XmRKeyboardFocusPolicy, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_InitialState); XtAddConverter(XmRInitialState, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_HelpReturnSelectedWidgetResultType); XtAddConverter("HelpReturnSelectedWidgetResultType", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_HelpType); XtAddConverter("HelpType", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_HelpScrollBarDisplayPolicy); XtAddConverter("HelpScrollBarDisplayPolicy", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_Button); XtAddConverter("XE_Button", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_EventType); XtAddConverter("XE_EventType", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_XBool); XtAddConverter("X_Bool", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_TraversalDirection); XtAddConverter("TraversalDirection", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_VisibilityType); XtAddConverter("VisibilityType", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_ListSelectionType); XtAddConverter("ListSelectionType", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_TextFormat); XtAddConverter("TextFormat", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_HelpHyperType); XtAddConverter("HelpHyperType", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_TT_STATUS); XtAddConverter("TtStatus", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_TT_OP); XtAddConverter("TtOp", XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_TEAR_OFF); XtAddConverter(XmRTearOffModel, XtRString, DtkshCvtNamedValueToString, args, 1); SETARGS(NI_WIN_GRAVITY); XtAddConverter("XWinGravity", XtRString, DtkshCvtNamedValueToString, args, 1); } /*****************************************************************************/ static ModifierState modifierTable[] = { {"Button1Mask", Button1Mask}, {"Button2Mask", Button2Mask}, {"Button3Mask", Button3Mask}, {"Button4Mask", Button4Mask}, {"Button5Mask", Button5Mask}, {"ControlMask", ControlMask}, {"LockMask", LockMask}, {"Mod1Mask", Mod1Mask}, {"Mod2Mask", Mod2Mask}, {"Mod3Mask", Mod3Mask}, {"Mod4Mask", Mod4Mask}, {"Mod5Mask", Mod5Mask}, {"ShiftMask", ShiftMask}, {NULL, 0}, }; void DtkshCvtXEModifierStateToString( XrmValuePtr args, Cardinal *nargs, XrmValuePtr fval, XrmValuePtr toval ) { static char *string = NULL; unsigned int value; int i = 0; Boolean firstOne = True; string = XtRealloc(string, 1); string[0] = '\0'; value = ((unsigned int *)(fval->addr))[0]; while (modifierTable[i].modifierName) { if (value & modifierTable[i].modifier) { if (!firstOne) { string = XtRealloc(string, strlen(string) + strlen(modifierTable[i].modifierName) + 2); strcat(string, "|"); strcat(string, modifierTable[i].modifierName); } else { firstOne = False; string = XtRealloc(string, strlen(string) + strlen(modifierTable[i].modifierName) + 1); strcat(string, modifierTable[i].modifierName); } } i++; } toval->addr = (caddr_t)string; toval->size = strlen(string) + 1; } void DtkshCvtXEMotionHintToString( XrmValuePtr args, Cardinal *nargs, XrmValuePtr fval, XrmValuePtr toval ) { if (fval->size != sizeof(char)) { toval->addr = NULL; toval->size = 0; return; } if ((((char *)(fval->addr))[0]) == NotifyNormal) toval->addr = (caddr_t)("NotifyNormal"); else toval->addr = (caddr_t)("NotifyHint"); toval->size = strlen(toval->addr)+1; } /* * The following routines exist in order to enable ToolTalk commands * to operate without the script having to call XtInitialize. Another way * of accomplishing the conversions done by these routines is by calling * XtConvert with appropriate parameters, but XtConvert requires a valid * widget in order to look up the converter tables. * * The routines provided are: * DtkshCvtTtStatusToString() * DtkshCvtStringToTtStatus() * DtkshCvtStringToBool() * DtkshCvtStringToTtOp() * DtkshCvtTtOpToString() * DtkshCvtStringToTtScope() */ /* * DtkshCvtTtStatusToString takes a toolTalk error code and a pointer to an * XrmValue struct. The XrmValue struct will be filled in with the * results of the translation - presumably a string version of the * error code. * This routine is in this file because it must "know" the size of the * NI_TT_STATUS array. */ void DtkshCvtTtStatusToString( Tt_status ttStatus, XrmValue *pToVal) { XrmValue cval[1], fval; Cardinal nargs; fval.addr = (caddr_t)&ttStatus; fval.size = sizeof(Tt_status); nargs = 1; cval[0].size = sizeof(NI_TT_STATUS); cval[0].addr = (caddr_t)NI_TT_STATUS; DtkshCvtNamedValueToString(cval, &nargs, &fval, pToVal); return; } /* * DtkshCvtStringToTtStatus - converts a string to the corresponding * TtStatus value. */ void DtkshCvtStringToTtStatus( char *pString, XrmValue *pToVal) { XrmValue cval[1], fval; Cardinal nargs; fval.addr = (caddr_t)pString; fval.size = strlen(pString); nargs = 1; cval[0].size = sizeof(NI_TT_STATUS); cval[0].addr = (caddr_t)NI_TT_STATUS; DtkshCvtStringToNamedValue(cval, &nargs, &fval, pToVal); return; } /* * DtkshCvtStringToBool - takes a string (either "true" or "false") * and a pointer to an XrmValue struct. The XrmValue struct will be filled * out with the results of the conversion of the string to a boolean. * This routine is in this file because it must "know" the size of the * NI_XBool array. */ void DtkshCvtStringToBool( char *pString, XrmValue *pToVal) { XrmValue cval[1], fval; Cardinal nargs; cval[0].size = sizeof(NI_XBool); cval[0].addr = (caddr_t)NI_XBool; fval.addr = pString; fval.size = strlen(pString); nargs = 1; DtkshCvtStringToNamedValue(cval, &nargs, &fval, pToVal); return; } /* * DtkshCvtStringToTtOp - converts a string to the corresponding * TtOp value. */ void DtkshCvtStringToTtOp( char *pString, XrmValue *pToVal) { XrmValue cval[1], fval; Cardinal nargs; fval.addr = (caddr_t)pString; fval.size = strlen(pString); nargs = 1; cval[0].size = sizeof(NI_TT_OP); cval[0].addr = (caddr_t)NI_TT_OP; DtkshCvtStringToNamedValue(cval, &nargs, &fval, pToVal); return; } /* * DtkshCvtTtOpToString - converts a TtOp to the representative string. */ void DtkshCvtTtOpToString( Tttk_op op, XrmValue *pToVal) { XrmValue cval[1], fval; Cardinal nargs; fval.addr = (caddr_t)&op; fval.size = sizeof(Tttk_op); nargs = 1; cval[0].size = sizeof(NI_TT_OP); cval[0].addr = (caddr_t)NI_TT_OP; DtkshCvtNamedValueToString(cval, &nargs, &fval, pToVal); return; } /* * DtkshCvtStringToTtScope - converts a string to the appropriate * TtScope numeric value. */ void DtkshCvtStringToTtScope( char *pString, XrmValue *pToVal) { XrmValue cval[1], fval; Cardinal nargs; fval.addr = (caddr_t)pString; fval.size = strlen(pString); nargs = 1; cval[0].size = sizeof(NI_TT_OP); cval[0].addr = (caddr_t)NI_TT_OP; DtkshCvtNamedValueToString(cval, &nargs, &fval, pToVal); return; }