2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these libraries and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 /* $TOG: xmcmds.c /main/12 1997/07/14 18:15:21 samborn $ */
24 /* Copyright (c) 1991, 1992 UNIX System Laboratories, Inc. */
25 /* All Rights Reserved */
27 /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF */
28 /* UNIX System Laboratories, Inc. */
29 /* The copyright notice above does not evidence any */
30 /* actual or intended publication of such source code. */
38 #include <X11/Intrinsic.h>
39 #include <X11/IntrinsicP.h>
40 #include <X11/CoreP.h>
41 #include <X11/StringDefs.h>
42 #include <Xm/XmStrDefs.h>
47 #include <Xm/Protocols.h>
62 #include "xmwidgets.h"
64 #include <Xm/Protocols.h>
65 #include <Xm/AtomMgr.h>
66 #include <Xm/ArrowB.h>
67 #include <Xm/ArrowBG.h>
68 #include <Xm/BulletinB.h>
69 #include <Xm/CascadeB.h>
70 #include <Xm/CascadeBG.h>
71 #include <Xm/ComboBox.h>
72 #include <Xm/Command.h>
73 #include <Xm/CommandP.h>
74 #include <Xm/DialogS.h>
75 #include <Xm/DrawingA.h>
76 #include <Xm/DrawnB.h>
77 #include <Xm/FileSB.h>
78 #include <Xm/FileSBP.h>
82 #include <Xm/LabelG.h>
86 #include <Xm/MenuShell.h>
87 #include <Xm/MessageB.h>
88 #include <Xm/PanedW.h>
90 #include <Xm/PushBG.h>
91 #include <Xm/RowColumn.h>
93 #include <Xm/ScrollBar.h>
94 #include <Xm/ScrolledW.h>
95 #include <Xm/SelectioB.h>
96 #include <Xm/SelectioBP.h>
97 #include <Xm/Separator.h>
98 #include <Xm/SeparatoG.h>
100 #include <Xm/TextF.h>
101 #include <Xm/ToggleB.h>
102 #include <Xm/ToggleBG.h>
104 #include <Dt/HelpDialog.h>
105 #include <Dt/HelpQuickD.h>
106 #include <Dt/Print.h>
107 #include <Dt/PrintDlgMgrP.h>
111 static int _xmcreatefunc(
116 static wtab_t * verifyListWidget(
119 static int List_ItemAndPos(
123 static int List_ItemListAndPos(
127 static int List_WidgetOnly(
131 static int GetSelectedPosList(
137 static int List_ItemOnly(
141 static int List_PositionOnly(
145 static int ListSelectItem(
149 static int GetMainWindowSeparator(
153 static int CatchAndIgnoreXError(
156 static int AddOrDeleteWMProtocols(
159 static int GetToggleState(
162 static int SetToggleState(
165 static wtab_t * verifyTextWidget(
168 static int Text_Widget(
170 Boolean returnBoolean,
173 static int Text_VarAndWidget(
174 int (*func)(Widget w),
178 static int Text_WidgetAndBoolean(
179 void (*func)(Widget w, int b),
182 static int Text_WidgetAndOneParam(
184 Boolean returnBoolean,
185 Boolean paramIsString,
189 static void GetSelBoxItemCount(
192 XrmValue * valueReturn);
193 static void GetFileSelBoxFileItemCount(
196 XrmValue * valueReturn);
197 static void GetFileSelBoxDirItemCount(
200 XrmValue * valueReturn);
201 static wtab_t * ConvertWidgetToWtab(
204 static int GetSubWidget(
210 static int _CreatePDMJobSetup(
217 #define SLISTITEMSIZE 16
223 static char str_APPNAME[] = "DTKSH_APPNAME";
224 static char str_TOPLEVEL[] = "DTKSH_TOPLEVEL";
226 static XtConvertArgRec listItemConvertArgs[] = {
227 { XtWidgetBaseOffset,
228 (XtPointer)XtOffset(XmListWidget, list.itemCount),
233 static XtConvertArgRec selectedListItemConvertArgs[] = {
234 { XtWidgetBaseOffset,
235 (XtPointer) XtOffset(XmListWidget, list.selectedItemCount),
240 static XtConvertArgRec selBoxItemConvertArgs[] = {
242 (XtPointer)GetSelBoxItemCount,
247 static XtConvertArgRec fileSelBoxFileConvertArgs[] = {
249 (XtPointer)GetFileSelBoxFileItemCount,
254 static XtConvertArgRec fileSelBoxDirConvertArgs[] = {
256 (XtPointer)GetFileSelBoxDirItemCount,
270 wtab = (wtab_t *)widget_to_wtab(w);
272 * If the widget class has no resources registered, then this is
273 * the first known instance of this widget class, so we need to
274 * force the resource list to be loaded. This can frequently
275 * occur if a Motif convenience function is used, which creates
279 if (ctab->res == NULL)
280 (void)str_to_class(arg0, ctab->cname);
290 XrmValue * valueReturn )
292 XmSelectionBoxWidget sel = (XmSelectionBoxWidget) w;
298 XtSetArg( args[0], XmNitemCount, &data) ;
299 XtGetValues( SB_List( sel), args, 1) ;
303 data = (XtArgVal) 0 ;
306 valueReturn->addr = (XtPointer) &data ;
307 valueReturn->size = sizeof(int *);
311 GetFileSelBoxDirItemCount(
314 XrmValue * valueReturn )
320 dirList = XmFileSelectionBoxGetChild(w, XmDIALOG_DIR_LIST);
321 XtSetArg(args[0], XmNitemCount, &data);
322 XtGetValues(dirList, args, 1);
323 valueReturn->addr = (XtPointer) &data ;
324 valueReturn->size = sizeof(int *);
328 GetFileSelBoxFileItemCount(
331 XrmValue * valueReturn )
337 if (FS_StateFlags(w) & XmFS_NO_MATCH)
341 dirList = XmFileSelectionBoxGetChild(w, XmDIALOG_LIST);
342 XtSetArg(args[0], XmNitemCount, &data);
343 XtGetValues(dirList, args, 1);
345 valueReturn->addr = (XtPointer) &data ;
346 valueReturn->size = sizeof(int *);
365 newargv = (char **)malloc((argc - 3) * sizeof(char *));
368 * We apparently must alloc a long-lived array of strings for argv.
369 * If we don't, then the WM_COMMAND on the Toplevel shell is munged.
370 * This is presumably because XtInitialize just hangs onto a copy
371 * of the pointer to the argv[n] element of interest, but the shell
372 * apparently frees them up after toolkit_initialize returns.
373 * The argument list looks like:
374 * XtInitialize widgVar widgName className appName $@
376 * XtInitialize widgVar widgName className $0 $@
378 for(i = 0, newargc = argc - 4; i < newargc; i++)
380 newargv[i] = (char *)malloc(strlen(argv[i + 4]) + 1);
381 strcpy(newargv[i], argv[i + 4]);
383 newargv[i] = (char *)NULL;
385 Toplevel = XtInitialize((char *)NULL, argv[3], (XrmOptionDescRec *)NULL,
386 0, &newargc, newargv);
388 if (Toplevel == NULL) {
389 errmsg = strdup(GETMESSAGE(15,1,
390 "Unable to initialize the Toolkit"));
391 printerr(argv[0], errmsg, NULL);
397 lockedFds = LockKshFileDescriptors();
398 DtInitialize(XtDisplay(Toplevel), Toplevel, argv[4], argv[4]);
399 UnlockKshFileDescriptors(lockedFds);
401 DtkshRegisterNamedIntConverters();
402 XtAddConverter(XmRTopItemPosition, XtRString,
403 DtkshCvtIntToString, NULL, 0);
404 XtAddConverter(XmRHorizontalInt, XtRString,
405 DtkshCvtIntToString, NULL, 0);
406 XtAddConverter(XmRVerticalInt, XtRString,
407 DtkshCvtIntToString, NULL, 0);
408 XtAddConverter(XmRWhichButton, XtRString,
409 DtkshCvtIntToString, NULL, 0);
410 XtAddConverter(XmRShellHorizPos, XtRString,
411 DtkshCvtIntToString, NULL, 0);
412 XtAddConverter(XmRShellVertPos, XtRString,
413 DtkshCvtIntToString, NULL, 0);
414 XtAddConverter(XmRShellHorizDim, XtRString,
415 DtkshCvtIntToString, NULL, 0);
416 XtAddConverter(XmRShellVertDim, XtRString,
417 DtkshCvtIntToString, NULL, 0);
418 XtAddConverter(XmRKeySym, XtRString,
419 DtkshCvtKeySymToString, NULL, 0);
420 XtAddConverter(XtRInt, XtRString,
421 DtkshCvtIntToString, NULL, 0);
422 XtAddConverter(XtRShort, XtRString,
423 DtkshCvtIntToString, NULL, 0);
424 XtAddConverter(XtRCardinal, XtRString,
425 DtkshCvtIntToString, NULL, 0);
426 XtAddConverter(XtRDimension, XtRString,
427 DtkshCvtIntToString, NULL, 0);
428 XtAddConverter(XmRBooleanDimension, XtRString,
429 DtkshCvtIntToString, NULL, 0);
430 XtAddConverter(XtRPosition, XtRString,
431 DtkshCvtIntToString, NULL, 0);
432 XtAddConverter(XmRHorizontalDimension, XtRString,
433 DtkshCvtIntToString, NULL, 0);
434 XtAddConverter(XmRVerticalDimension, XtRString,
435 DtkshCvtIntToString, NULL, 0);
436 XtAddConverter(XmRHorizontalPosition, XtRString,
437 DtkshCvtIntToString, NULL, 0);
438 XtAddConverter(XmRVerticalPosition, XtRString,
439 DtkshCvtIntToString, NULL, 0);
440 XtAddConverter(XmRTextPosition, XtRString,
441 DtkshCvtIntToString, NULL, 0);
442 XtAddConverter(XtRBoolean, XtRString,
443 DtkshCvtBooleanToString, NULL, 0);
444 XtAddConverter("Set", XtRString,
445 DtkshCvtBooleanToString, NULL, 0);
446 XtAddConverter(XtRBool, XtRString,
447 DtkshCvtBooleanToString, NULL, 0);
448 XtAddConverter(XtRPixel, XtRString,
449 DtkshCvtHexIntToString, NULL, 0);
450 XtAddConverter(XtRPixmap, XtRString,
451 DtkshCvtHexIntToString, NULL, 0);
452 XtAddConverter("XE_ModifierState", XtRString,
453 DtkshCvtXEModifierStateToString, NULL, 0);
454 XtAddConverter("XE_MotionHint", XtRString,
455 DtkshCvtXEMotionHintToString, NULL, 0);
456 XtAddConverter("XE_HexValue", XtRString,
457 DtkshCvtHexIntToString, NULL, 0);
458 XtAddConverter("XE_IntValue", XtRString,
459 DtkshCvtIntToString, NULL, 0);
460 XtAddConverter(XtRPointer, XtRString,
461 DtkshCvtHexIntToString, NULL, 0);
462 XtAddConverter("XE_Window", XtRString,
463 DtkshCvtWindowToString, NULL, 0);
464 XtAddConverter(XtRScreen, XtRString,
465 DtkshCvtScreenToString, NULL, 0);
466 XtAddConverter(XtRString, XtRScreen,
467 DtkshCvtStringToScreen, NULL, 0);
468 XtAddConverter(XtRString, XmRTopItemPosition,
469 DtkshCvtStringToTopItemPosition, NULL, 0);
470 XtAddConverter(XtRString, XmRUnitType,
471 XmCvtStringToUnitType, NULL, 0);
472 XtSetTypeConverter(XmRXmString, XtRString,
473 (XtTypeConverter)DtkshCvtXmStringToString, NULL, 0,
475 XtSetTypeConverter(XtRWidget, XtRString,
476 (XtTypeConverter)DtkshCvtWidgetToString, NULL, 0,
478 XtSetTypeConverter("MenuWidget", XtRString,
479 (XtTypeConverter)DtkshCvtWidgetToString, NULL, 0,
481 XtSetTypeConverter(XtRString, XtRWidget,
482 (XtTypeConverter)DtkshCvtStringToWidget, NULL, 0,
484 XtSetTypeConverter(XtRString, "MenuWidget",
485 (XtTypeConverter)DtkshCvtStringToWidget, NULL, 0,
487 XtSetTypeConverter(XtRString, XtRCallback,
488 (XtTypeConverter)DtkshCvtStringToCallback, NULL, 0,
490 XtSetTypeConverter(XtRCallback, XtRString,
491 (XtTypeConverter)DtkshCvtCallbackToString, NULL, 0,
493 XtSetTypeConverter(XtRString, DtRPrintSetupProc,
494 (XtTypeConverter)DtkshCvtStringToPrintSetupProc, NULL, 0,
496 XtSetTypeConverter(XtRString, "EventMask",
497 (XtTypeConverter)DtkshCvtStringToEventMask, NULL, 0,
499 XtSetTypeConverter(XtRString, "MWMDecoration",
500 (XtTypeConverter)DtkshCvtStringToMWMDecoration, NULL, 0,
502 XtSetTypeConverter("MWMDecoration", XtRString,
503 (XtTypeConverter)DtkshCvtMWMDecorationToString, NULL, 0,
505 XtSetTypeConverter(XtRString, "MWMFunctions",
506 (XtTypeConverter)DtkshCvtStringToMWMFunctions, NULL, 0,
508 XtSetTypeConverter("MWMFunctions", XtRString,
509 (XtTypeConverter)DtkshCvtMWMFunctionsToString, NULL, 0,
511 XtSetTypeConverter(XtRString, "ListItems",
512 (XtTypeConverter)DtkshCvtStringToListItems, NULL, 0,
514 XtSetTypeConverter(XtRString, "SelectedListItems",
515 (XtTypeConverter)DtkshCvtStringToListItems, NULL, 0,
517 XtSetTypeConverter(XtRString, "SelBoxItems",
518 (XtTypeConverter)DtkshCvtStringToListItems, NULL, 0,
520 XtSetTypeConverter(XtRString, "FSFileItems",
521 (XtTypeConverter)DtkshCvtStringToListItems, NULL, 0,
523 XtSetTypeConverter(XtRString, "FSDirItems",
524 (XtTypeConverter)DtkshCvtStringToListItems, NULL, 0,
526 XtSetTypeConverter(XtRString, XmRWidgetClass,
527 (XtTypeConverter)DtkshCvtStringToWidgetClass, NULL, 0,
529 XtSetTypeConverter(XtRString, "PanedWinPosIndex",
530 (XtTypeConverter)DtkshCvtStringToPanedWinPosIndex, NULL, 0,
532 XtSetTypeConverter("PanedWinPosIndex", XtRString,
533 (XtTypeConverter)DtkshCvtPanedWinPosIndexToString, NULL, 0,
535 XtSetTypeConverter("ListItems", XtRString,
536 (XtTypeConverter)DtkshCvtListItemsToString,
537 listItemConvertArgs, 1,
539 XtSetTypeConverter("SelBoxItems", XtRString,
540 (XtTypeConverter)DtkshCvtListItemsToString,
541 selBoxItemConvertArgs, 1,
543 XtSetTypeConverter("SelectedListItems", XtRString,
544 (XtTypeConverter)DtkshCvtListItemsToString,
545 selectedListItemConvertArgs, 1,
547 XtSetTypeConverter("FSFileItems", XtRString,
548 (XtTypeConverter)DtkshCvtListItemsToString,
549 fileSelBoxFileConvertArgs, 1,
551 XtSetTypeConverter("FSDirItems", XtRString,
552 (XtTypeConverter)DtkshCvtListItemsToString,
553 fileSelBoxDirConvertArgs, 1,
555 XtSetTypeConverter(XmRWidgetClass, XtRString,
556 (XtTypeConverter)DtkshCvtWidgetClassToString,
557 NULL, 0, XtCacheNone, NULL);
560 * Override standard Xt StringToPixel converter;
561 * we need to handle both pixel names and pixel values.
563 RegisterXtOverrideConverters();
565 w = set_up_w(Toplevel, NULL, argv[1], argv[2],
566 str_to_class(argv[0], "ApplicationShell"));
568 var = env_get(str_TOPLEVEL);
569 if (var == NULL || *var == '\0') {
570 env_set_var(str_TOPLEVEL, w->widid);
573 var = env_get(str_APPNAME);
574 if (var == NULL || *var == '\0') {
575 env_set_var(str_APPNAME, argv[2]);
578 ksh_eval("unset DTKSH_ARGV");
579 for (i = 0; i < newargc; i++) {
580 sprintf(envbuf, "DTKSH_ARGV[%d]=%s", i, newargv[i]);
587 * There are certain classes of resources which cannot be specified when
588 * a widget is created. These are resources which rely on a unit of
589 * measure typically specified with the 'unitType' resource. Since there
590 * is no widget yet when we convert the resources from string to internal
591 * representation, there, of course, is no known unitType yet; thus the
592 * conversions cannot be performed. That is why we have this check, and
593 * why we have to tell the user to use XtSetValues().
595 * There is a second class of resources where this problem also exists;
596 * these are the gadget pixmaps. The problem exists because the string
597 * to pixmap converter for gadgets assumes that it has access to the
598 * widget ID, so that it can grab the parent. Since the widget Id does
599 * not yet exist, this information does not exist.
601 * A third class of problem resources are all pixmap resources. If these
602 * are specified in the same resource list as the foreground or background
603 * colors, then the converter uses the existing colors, instead of the new
604 * colors. To overcome this, we postpone the converting of any pixmap
605 * resources until after all others have been set.
608 toolkit_special_resource(
618 Boolean postponePixmaps )
621 ((strcmp(res->resource_type, XmRHorizontalDimension) == 0) ||
622 (strcmp(res->resource_type, XmRVerticalDimension) == 0) ||
623 (strcmp(res->resource_type, XmRHorizontalPosition) == 0) ||
624 (strcmp(res->resource_type, XmRVerticalPosition) == 0) ||
625 (strcmp(res->resource_type, XmRBooleanDimension) == 0) ||
626 (strcmp(res->resource_type, XmRGadgetPixmap) == 0) ||
627 (strcmp(res->resource_type, DtRPrintSetupProc) == 0)))
631 else if (postponePixmaps &&
632 ((strcmp(resource, XmNpixmap) == 0) ||
633 (strstr(resource, "Pixmap") != NULL)))
649 Widget widget, realparent;
651 char *arg0 = argv[0];
652 wtab_t *w, *pw, *wtab, *parenttab;
653 char *wname, *parentid, *var;
662 errmsg = strdup(GETMESSAGE(15,3,
663 "Usage: %s variable parent name [argument:value ...]"));
664 printerrf(str_nill, errmsg, argv[0], NULL,
665 NULL, NULL, NULL, NULL, NULL, NULL);
672 pw = str_to_wtab(argv[0], parentid);
674 errmsg = strdup(GetSharedMsg(DT_NO_PARENT));
675 printerr(argv[0], errmsg, NULL);
681 if ((class = str_to_class(arg0, wclass)) == NULL) {
686 pargv = (char **)XtMalloc(sizeof(char *) * argc);
691 parse_args(arg0, argc, argv, NULL, pw, class, &n, args, &pargc, pargv,
693 widget = func(pw->w, wname, args, n);
694 if (widget != NULL) {
695 /* Some of the XmCreate* functions return a widget
696 * id whose parent is not necessarily the parent
697 * passed in. For example, DialogShell returns the
698 * widget of the dialog, not the Shell which is the
701 * So, we check to see if the parent is the same as
702 * the passed-in parent, and if not then we create
703 * a new entry for the real parent.
705 realparent = XtParent(widget);
706 if (realparent != pw->w) {
707 parenttab = (wtab_t *)widget_to_wtab(realparent);
710 wtab = set_up_w(widget, parenttab, var, wname, class);
712 /* Process any postponed resources */
717 parse_args(arg0, pargc, pargv, wtab, pw, class, &n,
718 args, NULL, NULL, False);
719 XtSetValues(widget, args, n);
722 errmsg = strdup(GetSharedMsg(DT_WIDGET_CREATE_FAILED));
723 printerrf(argv[0], errmsg,
724 wname, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
729 XtFree((char *)pargv);
735 do_XmCreateArrowButton(
739 return(_xmcreatefunc(XmCreateArrowButton, "XmArrowButton",
745 do_XmCreateArrowButtonGadget(
749 return(_xmcreatefunc(XmCreateArrowButtonGadget,
750 "XmArrowButtonGadget", argc, argv));
755 do_XmCreateBulletinBoard(
759 return(_xmcreatefunc(XmCreateBulletinBoard, "XmBulletinBoard",
765 do_XmCreateBulletinBoardDialog(
769 return(_xmcreatefunc(XmCreateBulletinBoardDialog, "XmBulletinBoard",
775 do_XmCreateCascadeButton(
779 return(_xmcreatefunc(XmCreateCascadeButton, "XmCascadeButton",
785 do_XmCreateCascadeButtonGadget(
789 return(_xmcreatefunc(XmCreateCascadeButtonGadget,
790 "XmCascadeButtonGadget", argc, argv));
799 return(_xmcreatefunc(XmCreateComboBox,
800 "XmComboBox", argc, argv));
809 return(_xmcreatefunc(XmCreateCommand, "XmCommand", argc, argv));
814 do_XmCreateDialogShell(
818 return(_xmcreatefunc(XmCreateDialogShell, "XmDialogShell", argc,
824 do_XmCreateDrawingArea(
828 return(_xmcreatefunc(XmCreateDrawingArea, "XmDrawingArea", argc,
834 do_XmCreateDrawnButton(
838 return(_xmcreatefunc(XmCreateDrawnButton, "XmDrawnButton", argc,
844 do_XmCreateErrorDialog(
848 return(_xmcreatefunc(XmCreateErrorDialog, "XmMessageBox", argc,
854 do_XmCreateFileSelectionBox(
858 return(_xmcreatefunc(XmCreateFileSelectionBox, "XmFileSelectionBox",
864 do_XmCreateFileSelectionDialog(
868 return(_xmcreatefunc(XmCreateFileSelectionDialog,
869 "XmFileSelectionBox", argc, argv));
878 return(_xmcreatefunc(XmCreateForm, "XmForm", argc, argv));
883 do_XmCreateFormDialog(
887 return(_xmcreatefunc(XmCreateFormDialog, "XmForm", argc, argv));
896 return(_xmcreatefunc(XmCreateFrame, "XmFrame", argc, argv));
901 do_XmCreateInformationDialog(
905 return(_xmcreatefunc(XmCreateInformationDialog, "XmMessageBox",
915 return(_xmcreatefunc(XmCreateLabel, "XmLabel", argc, argv));
920 do_XmCreateLabelGadget(
924 return(_xmcreatefunc(XmCreateLabelGadget, "XmLabelGadget", argc,
934 return(_xmcreatefunc(XmCreateList, "XmList", argc, argv));
939 do_XmCreateMainWindow(
943 return(_xmcreatefunc(XmCreateMainWindow, "XmMainWindow", argc,
953 return(_xmcreatefunc(XmCreateMenuBar, "XmRowColumn", argc, argv));
958 do_XmCreateMenuShell(
962 return(_xmcreatefunc(XmCreateMenuShell, "XmMenuShell", argc, argv));
967 do_XmCreateMessageBox(
971 return(_xmcreatefunc(XmCreateMessageBox, "XmMessageBox", argc,
977 do_XmCreateMessageDialog(
981 return(_xmcreatefunc(XmCreateMessageDialog, "XmMessageBox", argc,
987 do_XmCreateOptionMenu(
991 return(_xmcreatefunc(XmCreateOptionMenu, "XmRowColumn", argc, argv));
996 do_XmCreatePanedWindow(
1000 return(_xmcreatefunc(XmCreatePanedWindow, "XmPanedWindow", argc,
1006 do_XmCreatePopupMenu(
1010 return(_xmcreatefunc(XmCreatePopupMenu, "XmRowColumn", argc, argv));
1015 do_XmCreatePromptDialog(
1019 return(_xmcreatefunc(XmCreatePromptDialog, "XmSelectionBox", argc,
1025 do_XmCreatePulldownMenu(
1029 return(_xmcreatefunc(XmCreatePulldownMenu, "XmRowColumn", argc,
1035 do_XmCreatePushButton(
1039 return(_xmcreatefunc(XmCreatePushButton, "XmPushButton", argc,
1045 do_XmCreatePushButtonGadget(
1049 return(_xmcreatefunc(XmCreatePushButtonGadget, "XmPushButtonGadget",
1055 do_XmCreateQuestionDialog(
1059 return(_xmcreatefunc(XmCreateQuestionDialog, "XmMessageBox", argc,
1065 do_XmCreateRadioBox(
1069 return(_xmcreatefunc(XmCreateRadioBox, "XmRowColumn", argc, argv));
1074 do_XmCreateRowColumn(
1078 return(_xmcreatefunc(XmCreateRowColumn, "XmRowColumn", argc, argv));
1087 return(_xmcreatefunc(XmCreateScale, "XmScale", argc, argv));
1092 do_XmCreateScrollBar(
1096 return(_xmcreatefunc(XmCreateScrollBar, "XmScrollBar", argc, argv));
1101 do_XmCreateScrolledList(
1105 return(_xmcreatefunc(XmCreateScrolledList, "XmList", argc, argv));
1110 do_XmCreateScrolledText(
1114 return(_xmcreatefunc(XmCreateScrolledText, "XmText", argc, argv));
1119 do_XmCreateScrolledWindow(
1123 return(_xmcreatefunc(XmCreateScrolledWindow, "XmScrolledWindow",
1129 do_XmCreateSelectionBox(
1133 return(_xmcreatefunc(XmCreateSelectionBox, "XmSelectionBox", argc,
1139 do_XmCreateSelectionDialog(
1143 return(_xmcreatefunc(XmCreateSelectionDialog, "XmSelectionBox",
1149 do_XmCreateSeparator(
1153 return(_xmcreatefunc(XmCreateSeparator, "XmSeparator", argc, argv));
1158 do_XmCreateSeparatorGadget(
1162 return(_xmcreatefunc(XmCreateSeparatorGadget, "XmSeparatorGadget",
1172 return(_xmcreatefunc(XmCreateText, "XmText", argc, argv));
1177 do_XmCreateTextField(
1181 return(_xmcreatefunc(XmCreateTextField, "XmTextField", argc, argv));
1186 do_XmCreateToggleButton(
1190 return(_xmcreatefunc(XmCreateToggleButton, "XmToggleButton", argc,
1196 do_XmCreateToggleButtonGadget(
1200 return(_xmcreatefunc(XmCreateToggleButtonGadget,
1201 "XmToggleButtonGadget", argc, argv));
1206 do_XmCreateWarningDialog(
1210 return(_xmcreatefunc(XmCreateWarningDialog, "XmMessageBox", argc,
1216 do_XmCreateWorkArea(
1220 return(_xmcreatefunc(XmCreateWorkArea, "XmRowColumn", argc, argv));
1225 do_XmCreateWorkingDialog(
1229 return(_xmcreatefunc(XmCreateWorkingDialog, "XmMessageBox", argc,
1235 do_DtCreateHelpDialog(
1239 return(_xmcreatefunc(DtCreateHelpDialog, "DtHelpDialog", argc,
1245 do_DtCreateHelpQuickDialog(
1249 return(_xmcreatefunc(DtCreateHelpQuickDialog, "DtHelpQuickDialog", argc,
1254 do_DtCreatePrintSetupDialog(
1258 return(_xmcreatefunc(DtCreatePrintSetupDialog, "DtPrintSetupBox", argc,
1263 do_DtCreatePrintSetupBox(
1267 return(_xmcreatefunc(DtCreatePrintSetupBox, "DtPrintSetupBox", argc,
1273 do_DtHelpReturnSelectedWidgetId(
1277 char *arg0 = argv[0];
1280 char * results = argv[1];
1281 char * variable = argv[3];
1290 errmsg = strdup(GETMESSAGE(15,4,
1291 "Usage: DtHelpReturnSelectedWidgetId variable widget variable"));
1292 printerr(str_nill, errmsg, NULL);
1297 w = str_to_wtab(arg0, argv[2]);
1299 alt_env_set_var(variable, "");
1304 res = DtHelpReturnSelectedWidgetId(w->w, NULL, &retWidget);
1305 XSync(XtDisplay(w->w), False);
1307 f.addr = (caddr_t)&res;
1308 f.size = sizeof(int);
1311 XtConvert(w->w, "HelpReturnSelectedWidgetResultType", &f, XtRString, &t);
1312 env_set_var(results, (char *)(t.addr));
1314 if (res != DtHELP_SELECT_VALID)
1316 alt_env_set_var(variable, "");
1320 w = ConvertWidgetToWtab(arg0, retWidget);
1322 alt_env_set_var(variable, w->widid);
1328 do_DtHelpSetCatalogName(
1332 char *arg0 = argv[0];
1337 errmsg = strdup(GETMESSAGE(15,5,
1338 "Usage: DtHelpSetCatalogName catalogName"));
1339 printerr(str_nill, errmsg, NULL);
1344 DtHelpSetCatalogName(argv[1]);
1351 do_DtHelpQuickDialogGetChild(
1355 char *arg0 = argv[0];
1358 char * variable = argv[1];
1367 errmsg = strdup(GETMESSAGE(15,6,
1368 "Usage: DtHelpQuickDialogGetChild variable quickHelpWidget child"));
1369 printerr(str_nill, errmsg, NULL);
1374 w = str_to_wtab(arg0, argv[2]);
1376 alt_env_set_var(variable, "");
1380 if (w->wclass->class != dtHelpQuickDialogWidgetClass) {
1381 errmsg = strdup(GETMESSAGE(15,7,
1382 "The widget must be a 'quickHelp' widget"));
1383 printerr(arg0, errmsg, NULL);
1385 alt_env_set_var(variable, "");
1390 f.size = strlen(argv[3]) + 1;
1393 XtConvert(w->w, XtRString, &f, "QuickHelpChildType", &t);
1395 if (t.size && t.addr)
1396 childType = *((int *)t.addr);
1399 errmsg = strdup(GetSharedMsg(DT_UNKNOWN_CHILD_TYPE));
1400 printerrf(argv[0], errmsg, argv[2], NULL, NULL,
1401 NULL, NULL, NULL, NULL, NULL);
1403 alt_env_set_var(variable, "");
1407 child = DtHelpQuickDialogGetChild(w->w, childType);
1411 alt_env_set_var(variable, "");
1415 w = ConvertWidgetToWtab(arg0, child);
1417 alt_env_set_var(variable, w->widid);
1430 if ((w = str_to_wtab(cmd, widget)) == NULL)
1433 if (w->wclass->class != xmListWidgetClass)
1435 errmsg = strdup(GETMESSAGE(15,8, "The widget must be a 'list' widget"));
1436 printerr(cmd, errmsg, NULL);
1451 char *arg0 = argv[0];
1459 errmsg = strdup(GETMESSAGE(15,9, "Usage: %s widget position item"));
1460 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL, NULL, NULL, NULL,
1466 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
1469 string = XmStringCreateLocalized(argv[3]);
1470 position = atoi(argv[2]);
1472 (*func) (w->w, string, position);
1473 XmStringFree(string);
1483 return (List_ItemAndPos(XmListAddItem, argc, argv));
1488 do_XmListAddItemUnselected(
1492 return (List_ItemAndPos(XmListAddItemUnselected, argc, argv));
1497 List_ItemListAndPos(
1502 char *arg0 = argv[0];
1505 XmString *items = NULL;
1507 int itemListSize = 0;
1513 errmsg = strdup(GETMESSAGE(15,10, "Usage: %s widget position itemList"));
1514 printerrf(str_nill, errmsg, arg0, NULL, NULL,
1515 NULL, NULL, NULL, NULL, NULL);
1520 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
1523 position = atoi(argv[2]);
1525 for (i = 3; i < argc; i++, itemCount++)
1527 if (itemCount >= itemListSize)
1530 items = (XmString *)XtRealloc((char *)items,
1531 sizeof(XmString) * itemListSize);
1533 items[itemCount] = XmStringCreateLocalized(argv[i]);
1536 (*func) (w->w, items, itemCount, position);
1538 for (i = 0; i < itemCount; i++)
1539 XmStringFree(items[i]);
1540 XtFree((char *)items);
1551 return (List_ItemListAndPos(XmListAddItems, argc, argv));
1556 do_XmListAddItemsUnselected(
1560 return (List_ItemListAndPos(XmListAddItemsUnselected, argc, argv));
1565 do_XmListReplaceItemsPos(
1569 return (List_ItemListAndPos(XmListReplaceItemsPos, argc, argv));
1574 do_XmListReplaceItemsPosUnselected(
1578 return (List_ItemListAndPos(XmListReplaceItemsPosUnselected, argc, argv));
1588 char *arg0 = argv[0];
1594 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET));
1595 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL, NULL, NULL,
1601 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
1611 do_XmListDeleteAllItems(
1615 return (List_WidgetOnly(XmListDeleteAllItems, argc, argv));
1620 do_XmListDeselectAllItems(
1624 return (List_WidgetOnly(XmListDeselectAllItems, argc, argv));
1629 do_XmListUpdateSelectedList(
1633 return (List_WidgetOnly(XmListUpdateSelectedList, argc, argv));
1643 char *arg0 = argv[0];
1650 errmsg = strdup(GETMESSAGE(15,11, "Usage: %s widget item"));
1651 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL, NULL,
1657 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
1660 string = XmStringCreateLocalized(argv[2]);
1662 (*func) (w->w, string);
1663 XmStringFree(string);
1669 do_XmListDeleteItem(
1673 return (List_ItemOnly(XmListDeleteItem, argc, argv));
1678 do_XmListDeselectItem(
1682 return (List_ItemOnly(XmListDeselectItem, argc, argv));
1687 do_XmListSetBottomItem(
1691 return (List_ItemOnly(XmListSetBottomItem, argc, argv));
1700 return (List_ItemOnly(XmListSetItem, argc, argv));
1710 char *arg0 = argv[0];
1717 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET_POS));
1718 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL,
1719 NULL, NULL, NULL, NULL);
1724 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
1727 position = atoi(argv[2]);
1728 (*func) (w->w, position);
1738 return (List_PositionOnly(XmListDeletePos, argc, argv));
1743 do_XmListDeselectPos(
1747 return (List_PositionOnly(XmListDeselectPos, argc, argv));
1752 do_XmListSetBottomPos(
1756 return (List_PositionOnly(XmListSetBottomPos, argc, argv));
1761 do_XmListSetHorizPos(
1765 return (List_PositionOnly(XmListSetHorizPos, argc, argv));
1774 return (List_PositionOnly(XmListSetPos, argc, argv));
1779 do_XmListDeleteItemsPos(
1783 char *arg0 = argv[0];
1791 errmsg = strdup(GETMESSAGE(15,12,
1792 "Usage: XmListDeleteItemsPos widget count position"));
1793 printerr(str_nill, errmsg, NULL);
1798 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
1801 count = atoi(argv[2]);
1802 position = atoi(argv[3]);
1803 XmListDeleteItemsPos(w->w, count, position);
1809 do_XmListDeleteItems(
1813 char *arg0 = argv[0];
1815 XmString *items = NULL;
1817 int itemListSize = 0;
1823 errmsg = strdup(GETMESSAGE(15,13,
1824 "Usage: XmListDeleteItems widget itemList"));
1825 printerr(str_nill, errmsg, NULL);
1830 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
1833 for (i = 2; i < argc; i++, itemCount++)
1835 if (itemCount >= itemListSize)
1838 items = (XmString *)XtRealloc((char *)items,
1839 sizeof(XmString) * itemListSize);
1841 items[itemCount] = XmStringCreateLocalized(argv[i]);
1844 XmListDeleteItems(w->w, items, itemCount);
1846 for (i = 0; i < itemCount; i++)
1847 XmStringFree(items[i]);
1848 XtFree((char *)items);
1855 do_XmListDeletePositions(
1859 char *arg0 = argv[0];
1861 int positionCount = 0;
1862 int * positionList = NULL;
1863 int positionListSize = 0;
1869 errmsg = strdup(GETMESSAGE(15,14,
1870 "Usage: XmListDeletePositions widget positionList"));
1871 printerr(str_nill, errmsg, NULL);
1876 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
1879 for (i = 2; i < argc; i++, positionCount++)
1881 if (positionCount >= positionListSize)
1883 positionListSize += 10;
1884 positionList = (int *)XtRealloc((char *)positionList,
1885 sizeof(int) * positionListSize);
1887 positionList[positionCount] = atoi(argv[i]);
1890 XmListDeletePositions(w->w, positionList, positionCount);
1892 XtFree((char *)positionList);
1906 char *arg0 = argv[0];
1916 if (argc != paramCount)
1918 printerr(str_nill, errmsg, NULL);
1922 if ((w = verifyListWidget(argv[0], argv[2])) == NULL)
1924 alt_env_set_var(argv[1], "");
1928 if (paramCount == 3)
1929 result = (*func)(w->w, &posList, &posCount);
1932 string = XmStringCreateLocalized(argv[3]);
1933 result = (*func)(w->w, string, &posList, &posCount);
1934 XmStringFree(string);
1942 for (i = 0; i < posCount; i++)
1944 sprintf(pos, "%d", (int)posList[i]);
1945 buf = XtRealloc(buf, strlen(buf) + strlen(pos) + 2);
1951 env_set_var(argv[1], buf);
1952 XtFree ((char *)posList);
1963 do_XmListGetSelectedPos(
1970 errmsg = strdup(GETMESSAGE(15,94,
1971 "Usage: XmListGetSelectedPos variable widget"));
1972 result = GetSelectedPosList(XmListGetSelectedPos, 3, errmsg, argc, argv);
1979 do_XmListGetMatchPos(
1986 errmsg = strdup(GETMESSAGE(15,95,
1987 "Usage: XmListGetMatchPos variable widget item"));
1988 result = GetSelectedPosList(XmListGetMatchPos, 4, errmsg, argc, argv);
1995 do_XmListGetKbdItemPos(
1999 char *arg0 = argv[0];
2008 errmsg = strdup(GETMESSAGE(15,15,
2009 "Usage: XmListGetKbdItemPos variable widget"));
2010 printerr(str_nill, errmsg, NULL);
2015 if ((w = verifyListWidget(argv[0], argv[2])) == NULL)
2017 alt_env_set_var(argv[1], "");
2021 position = XmListGetKbdItemPos(w->w);
2022 sprintf(buf, "%d", position);
2023 alt_env_set_var(argv[1], buf);
2030 do_XmListItemExists(
2034 char *arg0 = argv[0];
2042 errmsg = strdup(GETMESSAGE(15,16, "Usage: XmListItemExists widget item"));
2043 printerr(str_nill, errmsg, NULL);
2048 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
2051 string = XmStringCreateLocalized(argv[2]);
2053 res = !XmListItemExists(w->w, string);
2054 XmStringFree(string);
2064 char *arg0 = argv[0];
2074 errmsg = strdup(GETMESSAGE(15,17,
2075 "Usage: XmListItemPos variable widget item"));
2076 printerr(str_nill, errmsg, NULL);
2081 if ((w = verifyListWidget(argv[0], argv[2])) == NULL)
2083 alt_env_set_var(argv[1], "");
2087 item = XmStringCreateLocalized(argv[3]);
2088 position = XmListItemPos(w->w, item);
2089 sprintf(buf, "%d", position);
2090 alt_env_set_var(argv[1], buf);
2098 do_XmListPosSelected(
2102 char *arg0 = argv[0];
2110 errmsg = strdup(GETMESSAGE(15,18,
2111 "Usage: XmListPosSelected widget position"));
2112 printerr(str_nill, errmsg, NULL);
2117 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
2120 position = atoi(argv[2]);
2122 res = !XmListPosSelected(w->w, position);
2128 do_XmListPosToBounds(
2132 char *arg0 = argv[0];
2145 errmsg=strdup(GETMESSAGE(15,19,
2146 "Usage: XmListPosToBounds widget position variable variable variable variable"));
2147 printerr(str_nill, errmsg, NULL);
2152 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
2161 position = atoi(argv[2]);
2163 res = !XmListPosToBounds(w->w, position, &x, &y, &width, &height);
2167 sprintf(buf, "%d", x);
2168 env_set_var(argv[3], buf);
2169 sprintf(buf, "%d", y);
2170 env_set_var(argv[4], buf);
2171 sprintf(buf, "%d", width);
2172 env_set_var(argv[5], buf);
2173 sprintf(buf, "%d", height);
2174 env_set_var(argv[6], buf);
2189 Boolean usePosition,
2193 char *arg0 = argv[0];
2197 XrmValue fval, tval;
2206 errmsg = strdup(GETMESSAGE(15,20,
2207 "Usage: %s widget position notifyFlag"));
2211 errmsg = strdup(GETMESSAGE(15,21, "Usage: %s widget item notifyFlag"));
2214 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL, NULL, NULL, NULL,
2220 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
2224 position = atoi(argv[2]);
2226 item = XmStringCreateLocalized(argv[2]);
2228 fval.addr = argv[3];
2229 fval.size = strlen(argv[3]);
2230 XtConvert(Toplevel, XtRString, &fval, XtRBoolean, &tval);
2232 notify = *((Boolean *)(tval.addr));
2237 XmListSelectPos(w->w, position, notify);
2240 XmListSelectItem(w->w, item, notify);
2249 do_XmListSelectItem(
2253 return(ListSelectItem(False, argc, argv));
2262 return(ListSelectItem(True, argc, argv));
2267 do_XmListSetAddMode(
2271 char *arg0 = argv[0];
2273 XrmValue fval, tval;
2279 errmsg = strdup(GETMESSAGE(15,22,
2280 "Usage: XmListSetAddMode widget boolean"));
2281 printerr(str_nill, errmsg, NULL);
2286 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
2289 fval.addr = argv[2];
2290 fval.size = strlen(argv[2]);
2291 XtConvert(Toplevel, XtRString, &fval, XtRBoolean, &tval);
2293 state = *((Boolean *)(tval.addr));
2297 XmListSetAddMode(w->w, state);
2303 do_XmListSetKbdItemPos(
2307 char *arg0 = argv[0];
2315 errmsg = strdup(GETMESSAGE(15,23,
2316 "Usage: XmListSetKbdItemPos widget position"));
2317 printerr(str_nill, errmsg, NULL);
2322 if ((w = verifyListWidget(argv[0], argv[1])) == NULL)
2325 position = atoi(argv[2]);
2327 res = !XmListSetKbdItemPos(w->w, position);
2333 do_XmMainWindowSetAreas(
2337 char *arg0 = argv[0];
2344 errmsg=strdup(GETMESSAGE(15,24,
2345 "Usage: XmMainWindowSetAreas mainwindow menu command hscroll vscroll work"));
2346 printerr(str_nill, errmsg, NULL);
2351 for (i = 1; i < 7; i++)
2353 if ((argv[i][0] == '\0') ||
2354 (strcmp(argv[i], (char *)("NULL")) == 0))
2360 w[i-1] = str_to_wtab(arg0, argv[i]);
2366 errmsg = strdup(GETMESSAGE(15,25, "The 'mainWindow' handle is NULL"));
2367 printerr(argv[0], errmsg, NULL);
2372 if (w[0]->wclass->class != xmMainWindowWidgetClass) {
2373 errmsg = strdup(GetSharedMsg(DT_MAIN_WIN_WIDGET));
2374 printerr(arg0, errmsg, NULL);
2379 XmMainWindowSetAreas(w[0]->w,
2380 w[1] ? w[1]->w : (Widget)NULL,
2381 w[2] ? w[2]->w : (Widget)NULL,
2382 w[3] ? w[3]->w : (Widget)NULL,
2383 w[4] ? w[4]->w : (Widget)NULL,
2384 w[5] ? w[5]->w : (Widget)NULL);
2390 GetMainWindowSeparator(
2395 char *arg0 = argv[0];
2398 char * variable = argv[1];
2405 errmsg = strdup(GETMESSAGE(15,26, "Usage: %s variable mainwindow"));
2406 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL,
2407 NULL, NULL, NULL, NULL);
2412 w = str_to_wtab(arg0, argv[2]);
2414 alt_env_set_var(variable, "");
2418 if (w->wclass->class != xmMainWindowWidgetClass) {
2419 errmsg = strdup(GetSharedMsg(DT_MAIN_WIN_WIDGET));
2420 printerr(arg0, errmsg, NULL);
2422 alt_env_set_var(variable, "");
2426 if (childType == MWSep1)
2427 child = XmMainWindowSep1(w->w);
2428 else if (childType == MWSep2)
2429 child = XmMainWindowSep2(w->w);
2430 else if (childType == MWSep3)
2431 child = XmMainWindowSep3(w->w);
2435 alt_env_set_var(variable, "");
2439 w = ConvertWidgetToWtab(arg0, child);
2441 alt_env_set_var(variable, w->widid);
2447 do_XmMainWindowSep1(
2451 return(GetMainWindowSeparator(MWSep1, argc, argv));
2456 do_XmMainWindowSep2(
2460 return(GetMainWindowSeparator(MWSep2, argc, argv));
2465 do_XmMainWindowSep3(
2469 return(GetMainWindowSeparator(MWSep3, argc, argv));
2474 do_XmProcessTraversal(
2483 errmsg = strdup(GETMESSAGE(15,27,
2484 "Usage: XmProcessTraversal widget direction"));
2485 printerr(str_nill, errmsg, NULL);
2490 w = str_to_wtab(argv[0], argv[1]);
2495 f.size = strlen(argv[2]) + 1;
2498 XtConvert(w->w, XtRString, &f, "TraversalDirection", &t);
2500 if (t.size && t.addr)
2502 int direction = ((int *)(t.addr))[0];
2503 return(!XmProcessTraversal(w->w, direction));
2507 errmsg = strdup(GETMESSAGE(15,28, "Unknown traversal direction: %s"));
2508 printerrf(argv[0], errmsg, argv[2], NULL,
2509 NULL, NULL, NULL, NULL, NULL, NULL);
2521 XrmValue fval, tval;
2522 Boolean onlyIfExists;
2531 errmsg = strdup(GETMESSAGE(15,29,
2532 "Usage: XmInternAtom variable display name onlyIfExists"));
2533 printerr(str_nill, errmsg, NULL);
2538 display = (Display *)strtoul(argv[2], &p, 0);
2541 errmsg = strdup(GetSharedMsg(DT_BAD_DISPLAY));
2542 printerrf(argv[0], errmsg, argv[2], NULL, NULL, NULL, NULL, NULL,
2545 alt_env_set_var(argv[1], "");
2549 fval.addr = argv[4];
2550 fval.size = strlen(argv[4]);
2551 XtConvert(Toplevel, XtRString, &fval, XtRBoolean, &tval);
2554 onlyIfExists = *((Boolean *)(tval.addr));
2557 alt_env_set_var(argv[1], "");
2561 atom = XmInternAtom (display, argv[3], onlyIfExists);
2563 sprintf(buf, "%ld", atom);
2564 alt_env_set_var(argv[1], buf);
2570 * Simply prevents non-fatal X errors from killing the application.
2573 CatchAndIgnoreXError(
2588 int (*oldHandler)();
2594 errmsg = strdup(GETMESSAGE(15,30,
2595 "Usage: XmGetAtomName variable display atom"));
2596 printerr(str_nill, errmsg, NULL);
2601 display = (Display *)strtoul(argv[2], &p, 0);
2604 errmsg = strdup(GetSharedMsg(DT_BAD_DISPLAY));
2605 printerrf(argv[0], errmsg, argv[2], NULL, NULL, NULL, NULL, NULL,
2608 alt_env_set_var(argv[1], "");
2612 atom = (Atom)strtoul(argv[3], &p, 0);
2615 errmsg = strdup(GETMESSAGE(15,31, "The specified atom is invalid: %s"));
2616 printerrf(argv[0], errmsg, argv[3],
2617 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
2619 alt_env_set_var(argv[1], "");
2622 oldHandler = XSetErrorHandler((int(*)())CatchAndIgnoreXError);
2623 name = XmGetAtomName (display, atom);
2624 XSetErrorHandler((int(*)())oldHandler);
2627 alt_env_set_var(argv[1], "");
2631 alt_env_set_var(argv[1], name);
2657 errmsg=strdup(GETMESSAGE(15,32,
2658 "Usage: XmGetColors widget background foreground topshadow bottomshadow select"));
2659 printerr(str_nill, errmsg, NULL);
2664 w = str_to_wtab(argv[0], argv[1]);
2674 background = strtoul(argv[2], &p, 0);
2677 errmsg = strdup(GETMESSAGE(15,33, "The background pixel is invalid: %s"));
2678 printerrf(argv[0], errmsg, argv[2],
2679 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
2688 XtSetArg (args[0], XmNcolormap, &colormap);
2689 XtGetValues (w->w, args, 1);
2691 XmGetColors (XtScreen(w->w), colormap, background, &foreground,
2692 &topShadow, &bottomShadow, &select);
2694 sprintf(buf, "0x%lx", foreground);
2695 env_set_var(argv[3], buf);
2696 sprintf(buf, "0x%lx", topShadow);
2697 env_set_var(argv[4], buf);
2698 sprintf(buf, "0x%lx", bottomShadow);
2699 env_set_var(argv[5], buf);
2700 sprintf(buf, "0x%lx", select);
2701 env_set_var(argv[6], buf);
2717 errmsg = strdup(GETMESSAGE(15,34, "Usage: XmUpdateDisplay widget"));
2718 printerr(str_nill, errmsg, NULL);
2723 w = str_to_wtab(argv[0], argv[1]);
2727 XmUpdateDisplay (w->w);
2733 AddOrDeleteWMProtocols(
2739 Atom * protocolList;
2745 errmsg = strdup(GETMESSAGE(15,35,
2746 "Usage: %s widget protocol [protocol ...]"));
2747 printerrf(argv[0], errmsg, argv[0],
2748 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
2753 w = str_to_wtab(argv[0], argv[1]);
2757 protocolList = (Atom*)XtMalloc(sizeof(Atom) * (argc - 2));
2758 for (i = 2; i < argc; i++)
2760 protocolList[i - 2] = (Atom)strtoul(argv[i], &p, 0);
2763 errmsg = strdup(GETMESSAGE(15,36,
2764 "The atom specified is invalid: %s"));
2765 printerrf(argv[0], errmsg, argv[i],
2766 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
2768 XtFree((char *)protocolList);
2773 if (strcmp(argv[0], "XmAddWMProtocols") == 0)
2774 XmAddWMProtocols (w->w, protocolList, argc-2);
2776 XmRemoveWMProtocols (w->w, protocolList, argc-2);
2777 XtFree((char *)protocolList);
2783 do_XmAddWMProtocols(
2787 return (AddOrDeleteWMProtocols(argc, argv));
2792 do_XmRemoveWMProtocols(
2796 return (AddOrDeleteWMProtocols(argc, argv));
2801 do_XmAddWMProtocolCallback(
2809 errmsg = strdup(GETMESSAGE(15,37,
2810 "Usage: XmAddWMProtocolCallback widget protocol ksh-command"));
2811 printerr(str_nill, errmsg, NULL);
2816 return(AddOneCallback(argv[0], argv[1], NULL, argv[3], argv[2]));
2820 do_XmRemoveWMProtocolCallback(
2828 errmsg = strdup(GETMESSAGE(15,38,
2829 "Usage: XmRemoveWMProtocolCallback widget protocol ksh-command"));
2830 printerr(str_nill, errmsg, NULL);
2835 return(RemoveOneCallback (argv[0], argv[1], NULL, argv[3], argv[2], NULL));
2851 errmsg = strdup(GETMESSAGE(15,39, "Usage: XmMenuPosition menu event"));
2852 printerr(str_nill, errmsg, NULL);
2857 w = str_to_wtab(argv[0], argv[1]);
2861 event = (XEvent *)strtoul(argv[2], &p, 0);
2864 errmsg = strdup(GETMESSAGE(15,40, "The specified event is invalid: %s"));
2865 printerrf(argv[0], errmsg, argv[2], NULL,
2866 NULL, NULL, NULL, NULL, NULL, NULL);
2871 XmMenuPosition (w->w, (XButtonPressedEvent *)event);
2877 do_XmCommandAppendValue(
2881 char *arg0 = argv[0];
2888 errmsg = strdup(GETMESSAGE(15,41,
2889 "Usage: XmCommandAppendValue commandWidget string"));
2890 printerr(str_nill, errmsg, NULL);
2895 w = str_to_wtab(arg0, argv[1]);
2899 if (w->wclass->class != xmCommandWidgetClass) {
2900 errmsg = strdup(GetSharedMsg(DT_CMD_WIDGET));
2901 printerr(arg0, errmsg, NULL);
2906 string = XmStringCreateLocalized(argv[2]);
2907 XmCommandAppendValue(w->w, string);
2908 XmStringFree(string);
2919 char *arg0 = argv[0];
2926 errmsg = strdup(GETMESSAGE(15,42,
2927 "Usage: XmCommandError commandWidget errorMessage"));
2928 printerr(str_nill, errmsg, NULL);
2933 w = str_to_wtab(arg0, argv[1]);
2937 if (w->wclass->class != xmCommandWidgetClass) {
2938 errmsg = strdup(GetSharedMsg(DT_CMD_WIDGET));
2939 printerr(arg0, errmsg, NULL);
2944 string = XmStringCreateLocalized(argv[2]);
2945 XmCommandError(w->w, string);
2946 XmStringFree(string);
2953 do_XmCommandSetValue(
2957 char *arg0 = argv[0];
2964 errmsg = strdup(GETMESSAGE(15,43,
2965 "Usage: XmCommandSetValue commandWidget command"));
2966 printerr(str_nill, errmsg, NULL);
2971 w = str_to_wtab(arg0, argv[1]);
2975 if (w->wclass->class != xmCommandWidgetClass) {
2976 errmsg = strdup(GetSharedMsg(DT_CMD_WIDGET));
2977 printerr(arg0, errmsg, NULL);
2982 string = XmStringCreateLocalized(argv[2]);
2983 XmCommandSetValue(w->w, string);
2984 XmStringFree(string);
2991 do_XmCommandGetChild(
2995 char *arg0 = argv[0];
2998 char * variable = argv[1];
3007 errmsg = strdup(GETMESSAGE(15,44,
3008 "Usage: XmCommandGetChild variable commandWidget child"));
3009 printerr(str_nill, errmsg, NULL);
3014 w = str_to_wtab(arg0, argv[2]);
3016 alt_env_set_var(variable, "");
3020 if (w->wclass->class != xmCommandWidgetClass) {
3021 errmsg = strdup(GetSharedMsg(DT_CMD_WIDGET));
3022 printerr(arg0, errmsg, NULL);
3024 alt_env_set_var(variable, "");
3029 f.size = strlen(argv[3]) + 1;
3032 XtConvert(w->w, XtRString, &f, "CommandChildType", &t);
3034 if (t.size && t.addr)
3035 childType = *((int *)t.addr);
3038 errmsg = strdup(GetSharedMsg(DT_UNKNOWN_CHILD_TYPE));
3039 printerrf(argv[0], errmsg, argv[2], NULL, NULL,
3040 NULL, NULL, NULL, NULL, NULL);
3042 alt_env_set_var(variable, "");
3046 child = XmCommandGetChild(w->w, childType);
3050 alt_env_set_var(variable, "");
3054 w = ConvertWidgetToWtab(arg0, child);
3056 alt_env_set_var(variable, w->widid);
3062 do_XmMessageBoxGetChild(
3066 char *arg0 = argv[0];
3069 char * variable = argv[1];
3078 errmsg = strdup(GETMESSAGE(15,45,
3079 "Usage: XmMessageBoxGetChild variable commandWidget child"));
3080 printerr(str_nill, errmsg, NULL);
3085 w = str_to_wtab(arg0, argv[2]);
3087 alt_env_set_var(variable, "");
3091 if (w->wclass->class != xmMessageBoxWidgetClass) {
3092 errmsg = strdup(GETMESSAGE(15,46,
3093 "The widget must be a 'messageBox' widget"));
3094 printerr(arg0, errmsg, NULL);
3096 alt_env_set_var(variable, "");
3101 f.size = strlen(argv[3]) + 1;
3104 XtConvert(w->w, XtRString, &f, "MessageBoxChildType", &t);
3106 if (t.size && t.addr)
3107 childType = *((int *)t.addr);
3110 errmsg = strdup(GetSharedMsg(DT_UNKNOWN_CHILD_TYPE));
3111 printerrf(argv[0], errmsg, argv[2], NULL, NULL, NULL,
3112 NULL, NULL, NULL, NULL);
3114 alt_env_set_var(variable, "");
3118 child = XmMessageBoxGetChild(w->w, childType);
3122 alt_env_set_var(variable, "");
3126 w = ConvertWidgetToWtab(arg0, child);
3128 alt_env_set_var(variable, w->widid);
3134 do_XmFileSelectionBoxGetChild(
3138 char *arg0 = argv[0];
3141 char * variable = argv[1];
3150 errmsg = strdup(GETMESSAGE(15,47,
3151 "Usage: XmFileSelectionBoxGetChild variable widget child"));
3152 printerr(str_nill, errmsg, NULL);
3157 w = str_to_wtab(arg0, argv[2]);
3159 alt_env_set_var(variable, "");
3163 if (w->wclass->class != xmFileSelectionBoxWidgetClass) {
3164 errmsg = strdup(GETMESSAGE(15,48,
3165 "The widget must be a 'file selection box' widget"));
3166 printerr(arg0, errmsg, NULL);
3168 alt_env_set_var(variable, "");
3173 f.size = strlen(argv[3]) + 1;
3176 XtConvert(w->w, XtRString, &f, "FileSelChildType", &t);
3178 if (t.size && t.addr)
3179 childType = *((int *)t.addr);
3182 errmsg = strdup(GetSharedMsg(DT_UNKNOWN_CHILD_TYPE));
3183 printerrf(argv[0], errmsg, argv[2], NULL, NULL, NULL,
3184 NULL, NULL, NULL, NULL);
3186 alt_env_set_var(variable, "");
3190 child = XmFileSelectionBoxGetChild(w->w, childType);
3194 alt_env_set_var(variable, "");
3198 w = ConvertWidgetToWtab(arg0, child);
3200 alt_env_set_var(variable, w->widid);
3206 do_XmSelectionBoxGetChild(
3210 char *arg0 = argv[0];
3213 char * variable = argv[1];
3222 errmsg = strdup(GETMESSAGE(15,49,
3223 "Usage: XmSelectionBoxGetChild variable widget child"));
3224 printerr(str_nill, errmsg, NULL);
3229 w = str_to_wtab(arg0, argv[2]);
3231 alt_env_set_var(variable, "");
3235 if (w->wclass->class != xmSelectionBoxWidgetClass) {
3236 errmsg = strdup(GETMESSAGE(15,50,
3237 "The widget must be a 'selection box' widget"));
3238 printerr(arg0, errmsg, NULL);
3240 alt_env_set_var(variable, "");
3245 f.size = strlen(argv[3]) + 1;
3248 XtConvert(w->w, XtRString, &f, "SelBoxChildType", &t);
3250 if (t.size && t.addr)
3251 childType = *((int *)t.addr);
3254 errmsg = strdup(GetSharedMsg(DT_UNKNOWN_CHILD_TYPE));
3255 printerrf(argv[0], errmsg, argv[2], NULL, NULL, NULL,
3256 NULL, NULL, NULL, NULL);
3258 alt_env_set_var(variable, "");
3262 child = XmSelectionBoxGetChild(w->w, childType);
3266 alt_env_set_var(variable, "");
3270 w = ConvertWidgetToWtab(arg0, child);
3272 alt_env_set_var(variable, w->widid);
3281 return(do_single_widget_test_func((int(*)())XmIsTraversable, argc,
3291 char *arg0 = argv[0];
3293 char * variable = argv[2];
3300 errmsg = strdup(GETMESSAGE(15,51,
3301 "Usage: XmScaleGetValue scaleWidget variable"));
3302 printerr(str_nill, errmsg, NULL);
3307 w = str_to_wtab(arg0, argv[1]);
3310 env_blank(variable);
3314 if (w->wclass->class != xmScaleWidgetClass) {
3315 errmsg = strdup(GetSharedMsg(DT_SCALE_WIDGET));
3316 printerr(arg0, errmsg, NULL);
3318 env_blank(variable);
3322 XmScaleGetValue(w->w, &scaleValue);
3323 sprintf(buf, "%d", scaleValue);
3324 env_set_var(variable, buf);
3334 char *arg0 = argv[0];
3343 errmsg = strdup(GETMESSAGE(15,52,
3344 "Usage: XmScaleSetValue scaleWidget value"));
3345 printerr(str_nill, errmsg, NULL);
3350 w = str_to_wtab(arg0, argv[1]);
3354 if (w->wclass->class != xmScaleWidgetClass) {
3355 errmsg = strdup(GetSharedMsg(DT_SCALE_WIDGET));
3356 printerr(arg0, errmsg, NULL);
3361 scaleValue = strtol(argv[2], &p, 0);
3364 errmsg = strdup(GETMESSAGE(15,53,
3365 "The scale value specified is invalid: %s"));
3366 printerrf(arg0, errmsg, argv[2],
3367 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
3371 XmScaleSetValue(w->w, scaleValue);
3377 do_XmScrollBarGetValues(
3381 char *arg0 = argv[0];
3393 errmsg=strdup(GETMESSAGE(15,54,
3394 "Usage: XmScrollBarGetValues scrollbar variable variable variable variable"));
3395 printerr(str_nill, errmsg, NULL);
3400 w = str_to_wtab(arg0, argv[1]);
3410 if (w->wclass->class != xmScrollBarWidgetClass) {
3411 errmsg = strdup(GetSharedMsg(DT_SCROLLBAR_WIDGET));
3412 printerr(arg0, errmsg, NULL);
3421 XmScrollBarGetValues(w->w, &value, &sliderSize, &increment, &pageIncrement);
3422 sprintf(buf, "%d", value);
3423 env_set_var(argv[2], buf);
3424 sprintf(buf, "%d", sliderSize);
3425 env_set_var(argv[3], buf);
3426 sprintf(buf, "%d", increment);
3427 env_set_var(argv[4], buf);
3428 sprintf(buf, "%d", pageIncrement);
3429 env_set_var(argv[5], buf);
3435 do_XmScrollBarSetValues(
3439 char *arg0 = argv[0];
3448 XrmValue fval, tval;
3453 errmsg=strdup(GETMESSAGE(15,55,
3454 "Usage: XmScrollBarSetValues scrollbar value sliderSize increment pageIncrement notify"));
3455 printerr(str_nill, errmsg, NULL);
3460 w = str_to_wtab(arg0, argv[1]);
3464 if (w->wclass->class != xmScrollBarWidgetClass) {
3465 errmsg = strdup(GetSharedMsg(DT_SCROLLBAR_WIDGET));
3466 printerr(arg0, errmsg, NULL);
3471 value = strtol(argv[2], &p, 0);
3474 errmsg = strdup(GETMESSAGE(15,56, "The value specified is invalid: %s"));
3475 printerrf(arg0, errmsg, argv[2], NULL,
3476 NULL, NULL, NULL, NULL, NULL, NULL);
3481 sliderSize = strtoul(argv[3], &p, 0);
3484 errmsg = strdup(GETMESSAGE(15,57,
3485 "The slider size specified is invalid: %s"));
3486 printerrf(arg0, errmsg, argv[3],
3487 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
3492 increment = strtoul(argv[4], &p, 0);
3495 errmsg = strdup(GETMESSAGE(15,58,
3496 "The increment specified is invalid: %s"));
3497 printerrf(arg0, errmsg, argv[4],
3498 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
3503 pageIncrement = strtoul(argv[5], &p, 0);
3506 errmsg = strdup(GETMESSAGE(15,59,
3507 "The page increment specified is invalid: %s"));
3508 printerrf(arg0, errmsg, argv[5],
3509 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
3514 fval.addr = argv[6];
3515 fval.size = strlen(argv[6]);
3516 XtConvert(Toplevel, XtRString, &fval, XtRBoolean, &tval);
3518 notify = *((Boolean *)(tval.addr));
3522 XmScrollBarSetValues(w->w, value, sliderSize, increment, pageIncrement,
3533 char *arg0 = argv[0];
3544 errmsg=strdup(GETMESSAGE(15,60,
3545 "Usage: XmScrollVisible scrolledWin widget leftRightMargin topBottomMargin"));
3546 printerr(str_nill, errmsg, NULL);
3551 w = str_to_wtab(arg0, argv[1]);
3555 if (w->wclass->class != xmScrolledWindowWidgetClass) {
3556 errmsg = strdup(GETMESSAGE(15,61,
3557 "The widget must be a 'scrolledWindow' widget"));
3558 printerr(arg0, errmsg, NULL);
3563 w2 = str_to_wtab(arg0, argv[2]);
3566 errmsg = strdup(GETMESSAGE(15,62,
3567 "The widget to be made visible does not exist."));
3568 printerr(arg0, errmsg, NULL);
3573 lrMargin = strtol(argv[3], &p, 0);
3576 errmsg = strdup(GETMESSAGE(15,63,
3577 "The left/right margin specified is invalid: %s"));
3578 printerrf(arg0, errmsg, argv[3], NULL, NULL, NULL, NULL, NULL, NULL,
3584 tbMargin = strtoul(argv[4], &p, 0);
3587 errmsg = strdup(GETMESSAGE(15,64,
3588 "The top/bottom margin specified is invalid: %s"));
3589 printerrf(arg0, errmsg, argv[4], NULL, NULL, NULL, NULL, NULL, NULL,
3595 XmScrollVisible(w->w, w2->w, lrMargin, tbMargin);
3605 char *arg0 = argv[0];
3611 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET));
3612 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL, NULL,
3618 w = str_to_wtab(arg0, argv[1]);
3622 if ((w->wclass->class != xmToggleButtonWidgetClass) &&
3623 (w->wclass->class != xmToggleButtonGadgetClass))
3625 errmsg = strdup(GetSharedMsg(DT_TOGGLE_WIDGET));
3626 printerr(arg0, errmsg, NULL);
3631 return(do_single_widget_test_func((int(*)())XmToggleButtonGetState, argc,
3637 do_XmToggleButtonGetState(
3641 return (GetToggleState(argc, argv));
3646 do_XmToggleButtonGadgetGetState(
3650 return (GetToggleState(argc, argv));
3659 char *arg0 = argv[0];
3661 XrmValue fval, tval;
3668 errmsg = strdup(GETMESSAGE(15,65, "Usage: %s widget state notify"));
3669 printerrf(str_nill, errmsg, arg0, NULL, NULL,
3670 NULL, NULL, NULL, NULL, NULL);
3675 w = str_to_wtab(arg0, argv[1]);
3679 if ((w->wclass->class != xmToggleButtonWidgetClass) &&
3680 (w->wclass->class != xmToggleButtonGadgetClass))
3682 errmsg = strdup(GetSharedMsg(DT_TOGGLE_WIDGET));
3683 printerr(arg0, errmsg, NULL);
3688 fval.addr = argv[2];
3689 fval.size = strlen(argv[2]);
3690 XtConvert(Toplevel, XtRString, &fval, XtRBoolean, &tval);
3692 state = *((Boolean *)(tval.addr));
3696 fval.addr = argv[3];
3697 fval.size = strlen(argv[3]);
3698 XtConvert(Toplevel, XtRString, &fval, XtRBoolean, &tval);
3700 notify = *((Boolean *)(tval.addr));
3704 XmToggleButtonSetState(w->w, state, notify);
3710 do_XmToggleButtonSetState(
3714 return (SetToggleState(argc, argv));
3718 do_XmToggleButtonGadgetSetState(
3722 return (SetToggleState(argc, argv));
3732 char * arg0 = argv[0];
3733 char * var = argv[1];
3734 char * catName = argv[2];
3738 nl_catd nlmsg_fd = (nl_catd)-1;
3740 #if defined(SVR4) || defined (_AIX) || defined(CSRG_BASED) || \
3741 defined(__linux__) || defined(sun)
3747 errmsg = strdup(GETMESSAGE(15,66, "Usage: catopen variable catName"));
3748 printerr(str_nill, errmsg, NULL);
3753 lockedFds = LockKshFileDescriptors();
3755 if ((nlmsg_fd = catopen(catName, 0)) == (nl_catd)-1)
3758 * Try several other formats supported by the various
3759 * architectures; i.e. if the catName ends in ".cat",
3760 * then try removing that part, or if the catName does
3761 * not end in ".cat", then try adding it.
3764 altCatName = XtMalloc(strlen(catName) + 10);
3765 #if defined(SVR4) || defined (_AIX) || defined(CSRG_BASED) || \
3766 defined(__linux__) || defined(sun)
3767 /* These platforms don't have strrstr() */
3769 nextMatch = catName;
3770 while (nextMatch = strstr(nextMatch, ".cat"))
3776 ptr = (char *)strrstr(catName, ".cat");
3778 if (ptr && (strlen(ptr) == 4))
3780 /* Strip off the ".cat", and try again */
3782 strcpy(altCatName, catName);
3787 /* Add the ".cat", and try again */
3788 strcpy(altCatName, catName);
3789 strcat(altCatName, ".cat");
3791 nlmsg_fd = catopen(altCatName, 0);
3794 UnlockKshFileDescriptors(lockedFds);
3796 sprintf(buf, "%ld", (long)nlmsg_fd);
3797 alt_env_set_var(var, buf);
3806 char * arg0 = argv[0];
3807 char * catId = argv[1];
3814 errmsg = strdup(GETMESSAGE(15,67, "Usage: catclose catId"));
3815 printerr(str_nill, errmsg, NULL);
3820 sscanf(catId, "%ld", &long_id);
3821 id = (nl_catd)long_id;
3831 char * arg0 = argv[0];
3832 char * variable = argv[1];
3833 char * catId = argv[2];
3834 char * setNum = argv[3];
3835 char * msgNum = argv[4];
3836 char * dftMsg = argv[5];
3846 errmsg = strdup(GETMESSAGE(15,68,
3847 "Usage: catgets variable catId setNum msgNum dftMsg"));
3848 printerr(str_nill, errmsg, NULL);
3853 sscanf(catId, "%ld", &long_id);
3854 id = (nl_catd)long_id;
3855 sscanf(setNum, "%d", &setNumVal);
3856 sscanf(msgNum, "%d", &msgNumVal);
3857 msg = catgets(id, setNumVal, msgNumVal, dftMsg);
3858 alt_env_set_var(variable, msg);
3871 if ((w = str_to_wtab(cmd, widget)) == NULL)
3874 if ((w->wclass->class != xmTextWidgetClass) &&
3875 (w->wclass->class != xmTextFieldWidgetClass))
3877 errmsg = strdup(GETMESSAGE(15,69,
3878 "The widget must be a 'text' or 'textField' widget"));
3879 printerr(cmd, errmsg, NULL);
3891 Boolean returnBoolean,
3895 char *arg0 = argv[0];
3902 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET));
3903 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL, NULL, NULL,
3909 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
3912 result = (*func) (w->w);
3922 do_XmTextDisableRedisplay(
3926 return (Text_Widget((Boolean (*)())XmTextDisableRedisplay, False, argc,
3932 do_XmTextEnableRedisplay(
3936 return (Text_Widget((Boolean (*)())XmTextEnableRedisplay, False, argc,
3946 return (Text_Widget(XmTextPaste, True, argc, argv));
3951 do_XmTextGetEditable(
3955 return (Text_Widget(XmTextGetEditable, True, argc, argv));
3964 return (Text_Widget(XmTextRemove, True, argc, argv));
3970 int (*func)(Widget w),
3971 Boolean varIsString,
3975 char *arg0 = argv[0];
3984 errmsg = strdup(GETMESSAGE(15,70, "Usage: %s variable widget"));
3985 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL,
3986 NULL, NULL, NULL, NULL);
3991 if ((w = verifyTextWidget(argv[0], argv[2])) == NULL)
3993 alt_env_set_var(argv[1], "");
3999 string = (char *)(*func) (w->w);
4000 alt_env_set_var(argv[1], string);
4006 result = (*func) (w->w);
4007 sprintf(buf, "%d", result);
4008 alt_env_set_var(argv[1], buf);
4015 do_XmTextGetTopCharacter(
4019 return (Text_VarAndWidget((int (*)())XmTextGetTopCharacter, False, argc,
4025 do_XmTextGetBaseline(
4029 return (Text_VarAndWidget(XmTextGetBaseline, False, argc, argv));
4034 do_XmTextGetInsertionPosition(
4038 return (Text_VarAndWidget((int (*)())XmTextGetInsertionPosition, False,
4044 do_XmTextGetLastPosition(
4048 return (Text_VarAndWidget((int (*)())XmTextGetLastPosition, False, argc,
4054 do_XmTextGetMaxLength(
4058 return (Text_VarAndWidget(XmTextGetMaxLength, False, argc, argv));
4063 do_XmTextGetSelection(
4067 return (Text_VarAndWidget((int (*)())XmTextGetSelection, True, argc, argv));
4076 return (Text_VarAndWidget((int (*)())XmTextGetString, True, argc, argv));
4081 Text_WidgetAndBoolean(
4082 void (*func)(Widget w, int b),
4086 char *arg0 = argv[0];
4090 XrmValue fval, tval;
4095 errmsg = strdup(GETMESSAGE(15,71, "Usage: %s widget boolean"));
4096 printerrf(str_nill, errmsg, arg0, NULL, NULL, NULL,
4097 NULL, NULL, NULL, NULL);
4102 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4105 fval.addr = argv[2];
4106 fval.size = strlen(argv[2]);
4107 XtConvert(Toplevel, XtRString, &fval, XtRBoolean, &tval);
4109 boolean = *((Boolean *)(tval.addr));
4113 (*func) (w->w, boolean);
4119 do_XmTextSetEditable(
4123 return (Text_WidgetAndBoolean(XmTextSetEditable, argc, argv));
4128 do_XmTextSetAddMode(
4132 return (Text_WidgetAndBoolean(XmTextSetAddMode, argc, argv));
4137 Text_WidgetAndOneParam(
4139 Boolean returnBoolean,
4140 Boolean paramIsString,
4145 char *arg0 = argv[0];
4156 printerrf(str_nill, usageMsg, arg0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4160 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4164 result = (*func) (w->w, argv[2]);
4167 param = strtoul(argv[2], &p, 0);
4170 errmsg = strdup(GETMESSAGE(15,72,
4171 "The parameter specified is invalid: %s"));
4172 printerrf(arg0, errmsg, argv[2],
4173 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4177 result = (*func) (w->w, param);
4195 errmsg = strdup(GETMESSAGE(15,73, "Usage: %s widget lines"));
4196 retVal = Text_WidgetAndOneParam((Boolean (*)())XmTextScroll, False, False,
4197 errmsg, argc, argv);
4204 do_XmTextSetInsertionPosition(
4212 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET_POS));
4213 retVal = Text_WidgetAndOneParam((Boolean (*)())XmTextSetInsertionPosition,
4214 False, False, errmsg, argc, argv);
4221 do_XmTextSetTopCharacter(
4228 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET_POS));
4229 retVal = Text_WidgetAndOneParam((Boolean (*)())XmTextSetTopCharacter, False,
4230 False, errmsg, argc, argv);
4237 do_XmTextSetMaxLength(
4244 errmsg = strdup(GETMESSAGE(15,74, "Usage: %s widget maxLength"));
4245 retVal = Text_WidgetAndOneParam((Boolean (*)())XmTextSetMaxLength, False,
4246 False, errmsg, argc, argv);
4260 errmsg = strdup(GETMESSAGE(15,75, "Usage: %s widget string"));
4261 retVal = Text_WidgetAndOneParam((Boolean (*)())XmTextSetString, False, True,
4262 errmsg, argc, argv);
4269 do_XmTextShowPosition(
4276 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET_POS));
4277 retVal = Text_WidgetAndOneParam((Boolean (*)())XmTextShowPosition, False,
4278 False, errmsg, argc, argv);
4285 do_XmTextClearSelection(
4292 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET_TIME));
4293 retVal = Text_WidgetAndOneParam((Boolean (*)())XmTextClearSelection, False,
4294 False, errmsg, argc, argv);
4308 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET_TIME));
4309 retVal = Text_WidgetAndOneParam(XmTextCopy, True, False, errmsg, argc, argv);
4323 errmsg = strdup(GetSharedMsg(DT_USAGE_WIDGET_TIME));
4324 retVal = Text_WidgetAndOneParam(XmTextCut, True, False, errmsg, argc, argv);
4331 do_XmTextGetSelectionPosition(
4335 char *arg0 = argv[0];
4338 XmTextPosition left;
4339 XmTextPosition right;
4345 errmsg = strdup(GETMESSAGE(15,76, "Usage: %s widget variable variable"));
4346 printerrf(str_nill, errmsg, arg0, NULL, NULL,
4347 NULL, NULL, NULL, NULL, NULL);
4352 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4359 result = XmTextGetSelectionPosition(w->w, &left, &right);
4362 sprintf(buf, "%ld", left);
4363 env_set_var(argv[2], buf);
4364 sprintf(buf, "%ld", right);
4365 env_set_var(argv[3], buf);
4382 char *arg0 = argv[0];
4384 XmTextPosition position;
4390 errmsg = strdup(GETMESSAGE(15,77, "Usage: %s widget position string"));
4391 printerrf(str_nill, errmsg, arg0, NULL, NULL,
4392 NULL, NULL, NULL, NULL, NULL);
4397 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4400 position = strtoul(argv[2], &p, 0);
4403 errmsg = strdup(GetSharedMsg(DT_BAD_POSITION));
4404 printerrf(arg0, errmsg, argv[2],
4405 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4410 XmTextInsert(w->w, position, argv[3]);
4420 char *arg0 = argv[0];
4422 XmTextPosition position;
4432 errmsg = strdup(GETMESSAGE(15,78,
4433 "Usage: %s widget position variable variable"));
4434 printerrf(str_nill, errmsg, arg0, NULL,
4435 NULL, NULL, NULL, NULL, NULL, NULL);
4440 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4447 position = strtoul(argv[2], &p, 0);
4450 errmsg = strdup(GetSharedMsg(DT_BAD_POSITION));
4451 printerrf(arg0, errmsg, argv[2], NULL,
4452 NULL, NULL, NULL, NULL, NULL, NULL);
4459 result = XmTextPosToXY(w->w, position, &x, &y);
4462 sprintf(buf, "%d", x);
4463 env_set_var(argv[3], buf);
4464 sprintf(buf, "%d", y);
4465 env_set_var(argv[4], buf);
4481 char *arg0 = argv[0];
4483 XmTextPosition from;
4490 errmsg = strdup(GETMESSAGE(15,79,
4491 "Usage: %s widget fromPosition toPosition string"));
4492 printerrf(str_nill, errmsg, arg0, NULL,
4493 NULL, NULL, NULL, NULL, NULL, NULL);
4498 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4501 from = strtoul(argv[2], &p, 0);
4504 errmsg = strdup(GETMESSAGE(15,80,
4505 "The 'from' position specified is invalid: %s"));
4506 printerrf(arg0, errmsg, argv[2],
4507 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4512 to = strtoul(argv[3], &p, 0);
4515 errmsg = strdup(GETMESSAGE(15,81,
4516 "The 'to' position specified is invalid: %s"));
4517 printerrf(arg0, errmsg, argv[3],
4518 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4523 XmTextReplace(w->w, from, to, argv[4]);
4529 do_XmTextSetSelection(
4533 char *arg0 = argv[0];
4535 XmTextPosition first;
4536 XmTextPosition last;
4543 errmsg = strdup(GETMESSAGE(15,82,
4544 "Usage: %s widget firstPosition lastPosition time"));
4545 printerrf(str_nill, errmsg, arg0, NULL,
4546 NULL, NULL, NULL, NULL, NULL, NULL);
4551 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4554 first = strtoul(argv[2], &p, 0);
4557 errmsg = strdup(GETMESSAGE(15,83,
4558 "The first position specified is invalid: %s"));
4559 printerrf(arg0, errmsg, argv[2],
4560 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4565 last = strtoul(argv[3], &p, 0);
4568 errmsg = strdup(GETMESSAGE(15,84,
4569 "The last position specified is invalid: %s"));
4570 printerrf(arg0, errmsg, argv[3],
4571 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4576 time = strtoul(argv[4], &p, 0);
4579 errmsg = strdup(GETMESSAGE(15,85, "The time specified is invalid: %s"));
4580 printerrf(arg0, errmsg, argv[4],
4581 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4586 XmTextSetSelection(w->w, first, last, time);
4596 char *arg0 = argv[0];
4600 XmTextPosition position;
4607 errmsg = strdup(GETMESSAGE(15,86, "Usage: %s variable widget x y"));
4608 printerrf(str_nill, errmsg, arg0, NULL, NULL,
4609 NULL, NULL, NULL, NULL, NULL);
4614 if ((w = verifyTextWidget(argv[0], argv[2])) == NULL)
4616 alt_env_set_var(argv[1], "");
4620 x = strtoul(argv[3], &p, 0);
4623 errmsg = strdup(GETMESSAGE(15,87,
4624 "The x position specified is invalid: %s"));
4625 printerrf(arg0, errmsg, argv[3],
4626 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4628 alt_env_set_var(argv[1], "");
4632 y = strtoul(argv[4], &p, 0);
4635 errmsg = strdup(GETMESSAGE(15,88,
4636 "The y position specified is invalid: %s"));
4637 printerrf(arg0, errmsg, argv[4],
4638 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4640 alt_env_set_var(argv[1], "");
4644 position = XmTextXYToPos(w->w, x, y);
4645 sprintf(buf, "%ld", position);
4646 alt_env_set_var(argv[1], buf);
4652 do_XmTextSetHighlight(
4656 char *arg0 = argv[0];
4658 XmTextPosition left;
4659 XmTextPosition right;
4660 XmHighlightMode mode;
4662 XrmValue fval, tval;
4667 errmsg = strdup(GETMESSAGE(15,89, "Usage: %s widget left right mode"));
4668 printerrf(str_nill, errmsg, arg0, NULL, NULL,
4669 NULL, NULL, NULL, NULL, NULL);
4674 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4677 left = strtoul(argv[2], &p, 0);
4680 errmsg = strdup(GETMESSAGE(15,90,
4681 "The left position specified is invalid: %s"));
4682 printerrf(arg0, errmsg, argv[2],
4683 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4688 right = strtoul(argv[3], &p, 0);
4691 errmsg = strdup(GETMESSAGE(15,91,
4692 "The right position specified is invalid: %s"));
4693 printerrf(arg0, errmsg, argv[3],
4694 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4699 fval.addr = argv[4];
4700 fval.size = strlen(argv[4]);
4701 XtConvert(Toplevel, XtRString, &fval, "TextHighlightMode", &tval);
4703 mode = *((XmHighlightMode *)(tval.addr));
4707 XmTextSetHighlight(w->w, left, right, mode);
4713 do_XmTextFindString(
4717 char *arg0 = argv[0];
4719 XmTextPosition start;
4720 XmTextDirection direction;
4721 XmTextPosition position;
4723 XrmValue fval, tval;
4730 errmsg = strdup(GETMESSAGE(15,92,
4731 "Usage: %s widget start string direction variable"));
4732 printerrf(str_nill, errmsg, arg0, NULL,
4733 NULL, NULL, NULL, NULL, NULL, NULL);
4738 if ((w = verifyTextWidget(argv[0], argv[1])) == NULL)
4744 start = strtoul(argv[2], &p, 0);
4747 errmsg = strdup(GETMESSAGE(15,93,
4748 "The start position specified is invalid: %s"));
4749 printerrf(arg0, errmsg, argv[2],
4750 NULL, NULL, NULL, NULL, NULL, NULL, NULL);
4756 fval.addr = argv[4];
4757 fval.size = strlen(argv[4]);
4758 XtConvert(Toplevel, XtRString, &fval, "TextSearchDirection", &tval);
4760 direction = *((XmTextDirection *)(tval.addr));
4767 result = XmTextFindString(w->w, start, argv[3], direction, &position);
4770 sprintf(buf, "%ld", position);
4771 env_set_var(argv[5], buf);
4787 char *arg0 = argv[0];
4789 char * variable = argv[1];
4794 printerr(str_nill, errmsg, NULL);
4798 w = str_to_wtab(arg0, argv[2]);
4800 alt_env_set_var(variable, "");
4804 child = (*func)(w->w);
4808 alt_env_set_var(variable, "");
4812 w = ConvertWidgetToWtab(arg0, child);
4814 alt_env_set_var(variable, w->widid);
4820 do_XmOptionLabelGadget(
4827 errmsg = strdup(GETMESSAGE(15,96,
4828 "Usage: XmOptionLabelGadget variable widget"));
4829 retVal = GetSubWidget(errmsg, XmOptionLabelGadget, argc, argv);
4836 do_XmOptionButtonGadget(
4843 errmsg = strdup(GETMESSAGE(15,97,
4844 "Usage: XmOptionButtonGadget variable widget"));
4845 retVal = GetSubWidget(errmsg, XmOptionButtonGadget, argc, argv);
4856 char *arg0 = argv[0];
4858 char * results = argv[1];
4865 errmsg = strdup(GETMESSAGE(15,98,
4866 "Usage: XmGetVisibility variable widget"));
4867 printerr(str_nill, errmsg, NULL);
4872 w = str_to_wtab(arg0, argv[2]);
4874 alt_env_set_var(results, "");
4878 res = XmGetVisibility(w->w);
4880 f.addr = (caddr_t)&res;
4881 f.size = sizeof(XmVisibility);
4884 XtConvert(w->w, "VisibilityType", &f, XtRString, &t);
4885 alt_env_set_var(results, (char *)(t.addr));
4891 do_XmGetTearOffControl(
4898 errmsg = strdup(GETMESSAGE(15,99,
4899 "Usage: XmGetTearOffControl variable widget"));
4900 retVal = GetSubWidget(errmsg, XmGetTearOffControl, argc, argv);
4914 errmsg = strdup(GETMESSAGE(15,100,
4915 "Usage: XmGetTabGroup variable widget"));
4916 retVal = GetSubWidget(errmsg, XmGetTabGroup, argc, argv);
4923 do_XmGetPostedFromWidget(
4930 errmsg = strdup(GETMESSAGE(15,101,
4931 "Usage: XmGetPostedFromWidget variable widget"));
4932 retVal = GetSubWidget(errmsg, XmGetPostedFromWidget, argc, argv);
4939 do_XmGetFocusWidget(
4946 errmsg = strdup(GETMESSAGE(15,102,
4947 "Usage: XmGetFocusWidget variable widget"));
4948 retVal = GetSubWidget(errmsg, XmGetFocusWidget, argc, argv);
4955 do_XmFileSelectionDoSearch(
4959 char *arg0 = argv[0];
4966 errmsg = strdup(GETMESSAGE(15,103,
4967 "Usage: XmFileSelectionDoSearch widget directoryMask"));
4968 printerr(str_nill, errmsg, NULL);
4973 w = str_to_wtab(arg0, argv[1]);
4977 string = XmStringCreateLocalized(argv[2]);
4979 XmFileSelectionDoSearch(w->w, string);
4980 XmStringFree(string);
4990 Widget widget, realparent;
4992 char *arg0 = argv[0];
4993 wtab_t *w, *pw, *wtab, *parenttab;
4994 char *parentid, *var;
5001 errmsg = strdup(GETMESSAGE(15,3,
5002 "Usage: %s variable parent"));
5003 printerrf(str_nill, errmsg, argv[0], NULL,
5004 NULL, NULL, NULL, NULL, NULL, NULL);
5010 pw = str_to_wtab(argv[0], parentid);
5012 errmsg = strdup(GetSharedMsg(DT_NO_PARENT));
5013 printerr(argv[0], errmsg, NULL);
5017 widget = func(pw->w);
5018 wclass = XtClass(widget);
5019 if ((class = str_to_class(arg0, wclass->core_class.class_name)) == NULL) {
5022 if (widget != NULL) {
5023 /* Some of the XmCreate* functions return a widget
5024 * id whose parent is not necessarily the parent
5025 * passed in. For example, DialogShell returns the
5026 * widget of the dialog, not the Shell which is the
5029 * So, we check to see if the parent is the same as
5030 * the passed-in parent, and if not then we create
5031 * a new entry for the real parent.
5033 realparent = XtParent(widget);
5034 if (realparent != pw->w) {
5035 parenttab = (wtab_t *)widget_to_wtab(realparent);
5038 wtab = set_up_w(widget, parenttab, var, XtName(widget), class);
5041 errmsg = strdup(GetSharedMsg(DT_WIDGET_CREATE_FAILED));
5042 printerrf(argv[0], errmsg,
5043 wclass->core_class.class_name, NULL, NULL, NULL,
5044 NULL, NULL, NULL, NULL);
5052 do_DtCreatePDMJobSetup(
5056 return(_CreatePDMJobSetup(_DtCreatePDMJobSetup, argc, argv));