Merge branch 'master' into cde-next
[oweals/cde.git] / cde / programs / dtcreate / CreateActionAppShell.c
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
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)
10  * any later version.
11  *
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
16  * details.
17  *
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
22  */
23 /* $TOG: CreateActionAppShell.c /main/11 1998/10/26 17:17:50 mgreess $ */
24 /*******************************************************************************
25         CreateActionAppShell.c
26
27        Associated Header file: CreateActionAppShell.h
28 *******************************************************************************/
29
30 #include <stdlib.h>
31 #include <stdio.h>
32 #include <sys/stat.h>
33
34 #include <Xm/Xm.h>
35 #include <Xm/MwmUtil.h>
36 #include <Xm/MenuShell.h>
37 #include <Xm/Text.h>
38 #include <Xm/ToggleBG.h>
39 #include <Xm/List.h>
40 #include <Xm/ScrolledW.h>
41 #include <Xm/Text.h>
42 #include <Xm/PushBG.h>
43 #include <Xm/TextF.h>
44 #include <Xm/Label.h>
45 #include <Xm/Form.h>
46 #include <Xm/CascadeB.h>
47 #include <Xm/ToggleB.h>
48 #include <Xm/Separator.h>
49 #include <Xm/PushB.h>
50 #include <Xm/RowColumn.h>
51 #include <Xm/MainW.h>
52 #include <Xm/Protocols.h>
53 #include <Xm/AtomMgr.h>
54
55 #include <X11/Shell.h>
56 #include <X11/cursorfont.h>
57
58 #include <Dt/Dt.h>
59 #include <Dt/Icon.h>
60 #include <Dt/Action.h>
61 #include <Dt/HourGlass.h>
62 #include <Dt/Wsm.h>
63
64 #include "dtcreate.h"
65 #include "UxXt.h"
66 #include "af_aux.h"
67 #include "ca_aux.h"
68 #include "cmncbs.h"
69 #include "cmnrtns.h"
70 #include "fileio.h"
71 #include "Confirmed.h"
72 #include "ErrorDialog.h"
73
74 #define CONTEXT_MACRO_ACCESS 1
75 #include "CreateActionAppShell.h"
76 #undef CONTEXT_MACRO_ACCESS
77
78 /*******************************************************************************
79        Includes, Defines, and Global variables from the Declarations Editor:
80 *******************************************************************************/
81
82 XtArgVal /* Dimension */ winheight, xprtheight, newheight, wintypeheight;
83 Widget    FileTypes;
84
85 /*******************************************************************************
86        The following are callback functions.
87 *******************************************************************************/
88 static char * GetDefinitionFileName( char *pszName);
89 static void  CreateFiles(void);
90 static void  questionCB_ReplaceFile(Widget UxWidget,
91                              XtPointer UxClientData,
92                              XtPointer UxCallbackArg);
93 static void  questionCB_CancelSave(Widget UxWidget,
94                             XtPointer UxClientData,
95                             XtPointer UxCallbackArg);
96
97 static char * GetDefinitionFileName( char *pszName)
98 {
99   char     *pszEnvVar;
100   char     *defname = (char *)NULL;
101   int      bytesneeded = 0;
102   char     *msgPtr, *errPtr;
103   char     *newName;
104
105   /****************************************************************/
106   /* Create definition file name.                                 */
107   /****************************************************************/
108   newName = ReplaceSpaces(pszName);
109   pszEnvVar = getenv("HOME");
110   if ( pszEnvVar && strlen(pszEnvVar) ) {
111      bytesneeded = strlen("/.dt/types/.dt") + strlen(pszEnvVar) + strlen(newName) + 1;
112      defname = (char *)XtMalloc(bytesneeded);
113      sprintf(defname, "%s/.dt/types/%s.dt", pszEnvVar, newName);
114   } else {
115      msgPtr = GETMESSAGE(5, 170,
116          "The HOME environment variable is not set.\n\
117 The HOME environment variable must be set in order\n\
118 for this action to be saved.");
119      errPtr = XtNewString(msgPtr);
120      display_error_message(CreateActionAppShell, errPtr);
121      XtFree(errPtr);
122   }
123   XtFree(newName);
124   return(defname);
125 }
126
127
128 static void  CreateFiles(void)
129 {
130   Boolean  bHaveError = False;
131   ushort   usRc = 0;
132   char     *pszDefName;
133   char     *msgPtr1, *msgPtr2, *fmtPtr, *bufPtr;
134 #ifdef UNDO_CMVC_3571
135   char     *msgPtr3;
136 #endif
137
138   /******************************************************************/
139   /* Create Definition file name.                                   */
140   /******************************************************************/
141   pszDefName = GetDefinitionFileName(AD.pszName);
142   if (!pszDefName) {
143      bHaveError = True;
144   }
145
146   /******************************************************************/
147   /* Create Definition file.                                        */
148   /******************************************************************/
149   if ( !bHaveError && ((usRc = WriteDefinitionFile(pszDefName, &AD)) != 0) ) {
150      bHaveError = TRUE;
151   }
152
153   /******************************************************************/
154   /* Create Action file.                                            */
155   /******************************************************************/
156   if ( !bHaveError && ((usRc = WriteActionFile(&AD)) != 0) ) {
157      bHaveError = TRUE;
158   }
159
160   /******************************************************************/
161   /* Copy icon files to home directory   ~/.dt/icons                */
162   /******************************************************************/
163   if ( !bHaveError && ((usRc = CopyIconFiles(&AD)) != 0) ) {
164      bHaveError = TRUE;
165   }
166
167   /*******************************************************************/
168   /* Reload action database and pop up confirmation message if       */
169   /* operation was successful.                                       */
170   /*******************************************************************/
171   if (!bHaveError) {
172      _DtTurnOnHourGlass(CreateActionAppShell);
173      if (!DbInitDone) {
174         DtInitialize(UxDisplay, UxTopLevel, pszExecName, pszExecName);
175         DtDbLoad();
176         DbInitDone = TRUE;
177      }
178      DtActionInvoke(UxTopLevel, "ReloadActions",
179                       NULL, 0, NULL, NULL, NULL, 0, NULL, NULL);
180
181      _DtTurnOffHourGlass(CreateActionAppShell);
182
183      msgPtr1 = XtNewString(GETMESSAGE(5, 70, "The new action"));
184      msgPtr2 = XtNewString(GETMESSAGE(5, 71,
185               "has been placed in your home folder."));
186 #ifdef UNDO_CMVC_3571
187      msgPtr3 = XtNewString(GETMESSAGE(5, 73,
188               "The action definition file that was created is called:"));
189      fmtPtr = "%s\n\n   %s\n\n%s\n\n%s\n   %s";
190 #else
191      fmtPtr = "%s\n\n   %s\n\n%s";
192 #endif
193
194      bufPtr = XtMalloc((strlen(msgPtr1) + strlen(msgPtr2) +
195                         strlen(AD.pszName) +
196 #ifdef UNDO_CMVC_3571
197                         strlen(msgPtr3) + strlen(pszFile) +
198 #endif
199                         strlen(fmtPtr) + 1) * sizeof(char));
200
201      sprintf(bufPtr, fmtPtr, msgPtr1, AD.pszName, msgPtr2
202 #ifdef UNDO_CMVC_3571
203              , msgPtr3, pszFile
204 #endif
205              );
206
207      display_confirmed_message(CreateActionAppShell, bufPtr);
208
209      XtFree(bufPtr);
210 #ifdef UNDO_CMVC_3571
211      XtFree(msgPtr3);
212 #endif
213      XtFree(msgPtr2);
214      XtFree(msgPtr1);
215
216   }
217
218   /*******************************************************************/
219   /* Update the copy of the AD structure.  This will be used to      */
220   /* determine if the user has saved the most recent data before     */
221   /* exiting.                                                        */
222   /*******************************************************************/
223   FreeAndClearAD(pMyCopyAD);
224   XtFree((char *) pMyCopyAD);
225   pMyCopyAD = copyAD(&AD);
226
227 }
228
229
230 static void  questionCB_ReplaceFile(Widget UxWidget,
231                              XtPointer UxClientData,
232                              XtPointer UxCallbackArg)
233 {
234   CreateFiles();
235   XtDestroyWidget(XtParent(UxWidget));
236 }
237
238 static void  questionCB_CancelSave(Widget UxWidget,
239                             XtPointer UxClientData,
240                             XtPointer UxCallbackArg)
241 {
242   XtDestroyWidget(XtParent(UxWidget));
243 }
244
245
246 void  activateCB_CA_MB_FileSave(Widget UxWidget,
247                                 XtPointer UxClientData,
248                                 XtPointer UxCallbackArg)
249
250 {
251   ushort   usRc = 0;
252   char     *pszActionFile = NULL;
253   char     *msgPtr, *bufPtr;
254   Boolean  bHaveError = FALSE;
255   struct   stat statbuf;
256   char     *newName;
257   char     *pszEnvVar;
258
259   /*********************************************************************/
260   /*  Check that required fields are filled in for main window.        */
261   /*********************************************************************/
262   if (!CreateActionAppShellCheckFields()) {
263
264     /*******************************************************************/
265     /*  Query fields from main window and save into structure.         */
266     /*******************************************************************/
267     readCAFromGUI(&AD);
268
269     /*******************************************************************/
270     /*  Write the files.                                               */
271     /*******************************************************************/
272 #ifdef UNDO_CMVC_4662
273     if (pszFileToEdit) {
274        strcpy(pszFile, pszFileToEdit);
275     } else {
276 #endif
277
278        /****************************************************************/
279        /* Create Action file name.                                     */
280        /****************************************************************/
281        newName = ReplaceSpaces(AD.pszName);
282        pszActionFile = NULL;
283        pszEnvVar = getenv("HOME");
284        if ( pszEnvVar && strlen(pszEnvVar) ) {
285           pszActionFile = malloc(strlen(pszEnvVar)+strlen(newName)+10);
286           if (pszActionFile)
287             sprintf(pszActionFile, "%s/%s", pszEnvVar, newName);
288        } else {
289           msgPtr = GETMESSAGE(5, 170,
290               "The HOME environment variable is not set.\n\
291 The HOME environment variable must be set in order\n\
292 for this action to be saved.");
293           bufPtr = XtNewString(msgPtr);
294           display_error_message(CreateActionAppShell, bufPtr);
295           XtFree(bufPtr);
296           bHaveError = TRUE;
297        }
298
299        /****************************************************************/
300        /* Check if action file exists and flag a warning if it does.   */
301        /****************************************************************/
302        if ( (!bHaveError) &&
303             (pszActionFile) &&
304             (!stat(pszActionFile, &statbuf)) ) {
305
306           /* INTERNATIONALIZE */
307           msgPtr = "A file named\n\n   %s\n\n\
308 already exists in your home folder.\n\
309 The existing file may be an application,\n\
310 data file, or an action file.\n\n\
311 What do you want to do?";
312           bufPtr = XtMalloc((strlen(msgPtr) + strlen(newName) + 1) *
313                             sizeof(char));
314           sprintf(bufPtr, msgPtr, newName);
315
316           /* INTERNATIONALIZE */
317           display_question_message(CreateActionAppShell, bufPtr,
318                               "Replace", questionCB_ReplaceFile,
319                               "Cancel Save", questionCB_CancelSave,
320                               (char *)NULL, (XtCallbackProc)NULL);
321           XtFree(bufPtr);
322           bHaveError = True;
323        }
324
325        /****************************************************************/
326        /* Now we are done with the newName variable and can free.      */
327        /****************************************************************/
328        XtFree(newName);
329
330 #ifdef UNDO_CMVC_4662
331     }
332 #endif
333
334     if (!bHaveError) {
335        CreateFiles();
336     }
337
338   }
339
340   XtFree(pszActionFile);
341 }
342
343 static  void    activateCB_CA_FiletypesDelete( Widget UxWidget,
344                                               XtPointer UxClientData,
345                                               XtPointer UxCallbackArg)
346 {
347   int           *poslist, poscnt;
348   int           *p, n;
349   XmString      *items;
350   FiletypeData  **papArray;
351   int           i, k;
352   int           cnt;
353   Boolean       bFound;
354   char          *msgPtr1, *msgPtr2, *fmtPtr, *errPtr;
355   size_t        len;
356
357   /**************************************************************************/
358   /* Determine the filetypes to delete and delete them.                     */
359   /**************************************************************************/
360   XtVaGetValues(FileTypes, XmNitems, &items, NULL);
361   if (XmListGetSelectedPos(FileTypes, &poslist, &poscnt)) {
362      n = poscnt;
363      p = poslist + (n-1);
364      while (n--) {
365        /*********************************************************************/
366        /* Delete the filetype name from the listbox.                        */
367        /*********************************************************************/
368        XmListDeleteItem(FileTypes, items[*p -1]);
369        p--;
370      }
371
372      /***********************************************************************/
373      /* Remove the filetypes from the filetype array in the ActionData      */
374      /* structure.                                                          */
375      /***********************************************************************/
376      if ((AD.cFiletypes - poscnt) > 0) {
377         if ( papArray = (FiletypeData **) XtMalloc(sizeof(FiletypeData *) * (AD.cFiletypes - poscnt)) ) {
378            cnt = 0;
379            for (i = 0; i < AD.cFiletypes; i++) {
380               bFound = FALSE;
381               for (k = 0; k < poscnt; k++) {
382                 if ((i + 1) == poslist[k]) {
383                    bFound = TRUE;
384                    break;
385                 }
386               }
387               /**************************************************************/
388               /* If did not find this element in the delete list, then add  */
389               /* it back to our good list.                                  */
390               /* Else do not include in the good list and free its memory.  */
391               /**************************************************************/
392               if (!bFound) {
393                  papArray[cnt] = AD.papFiletypes[i];
394                  cnt++;
395               } else {
396                  free_Filetypedata(AD.papFiletypes[i]);
397               }
398            }
399            if (AD.papFiletypes) {
400              XtFree((XtPointer)AD.papFiletypes);
401            }
402            AD.papFiletypes = papArray;
403            AD.cFiletypes = cnt;
404         }
405      } else {
406         /********************************************************************/
407         /* Delete the entire array.                                         */
408         /********************************************************************/
409         for (i = 0; i < AD.cFiletypes; i++) {
410           free_Filetypedata(AD.papFiletypes[i]);
411         }
412         AD.papFiletypes = (FiletypeData **)NULL;
413         AD.cFiletypes = 0;
414      }
415   } else {
416      msgPtr1 = XtNewString(GETMESSAGE(5, 120,
417                   "You have not selected a Datatype from the\n\
418 'Datatypes That Use This Action' list."));
419      msgPtr2 = XtNewString(GETMESSAGE(5, 125,
420                   "Please select the Datatype you would like to Delete."));
421      fmtPtr = "%s\n%s";
422      len = (strlen(msgPtr1) + strlen(msgPtr2) + strlen(fmtPtr) + 2);
423      errPtr = XtMalloc(len);
424      snprintf(errPtr,len - 1, fmtPtr, msgPtr1, msgPtr2);
425      XtFree(msgPtr2);
426      XtFree(msgPtr1);
427      display_error_message(CreateActionAppShell, errPtr);
428      XtFree(errPtr);
429   }
430 }
431
432 #if 0
433 /*****************************************************************************/
434 /*                                                                           */
435 /* valueChangedCB_CA_WinType                                                 */
436 /*                                                                           */
437 /*****************************************************************************/
438 static  void    valueChangedCB_CA_WinType( Widget UxWidget,
439                                            XtPointer UxClientData,
440                                            XtPointer UxCallbackArg)
441 {
442   Boolean bSetToggle;
443
444   bSetToggle = ((XmToggleButtonCallbackStruct *)UxCallbackArg)->set;
445 #ifdef DEBUG
446   printf("Wintype change before %X\n", AD.fsFlags);
447 #endif
448   switch ((int)UxClientData) {
449     case CA_WT_XWINDOWS :
450          if (bSetToggle) AD.fsFlags |= CA_WT_XWINDOWS;
451          else AD.fsFlags &= (~(CA_WT_XWINDOWS));
452          break;
453     case CA_WT_TERM :
454          if (bSetToggle) AD.fsFlags |= CA_WT_TERM;
455          else AD.fsFlags &= (~(CA_WT_TERM));
456          break;
457     case CA_WT_PERMTERM :
458          if (bSetToggle) AD.fsFlags |= CA_WT_PERMTERM;
459          else AD.fsFlags &= (~(CA_WT_PERMTERM));
460          break;
461   }
462 #ifdef DEBUG
463   printf("Wintype change after %X\n", AD.fsFlags);
464 #endif
465 }
466 #endif
467
468 /*****************************************************************************/
469 /*                                                                           */
470 /* valueChangedCB_DroppableFiletypes                                         */
471 /*                                                                           */
472 /*****************************************************************************/
473 static  void    valueChangedCB_DroppableFiletypes( Widget UxWidget,
474                                            XtPointer UxClientData,
475                                            XtPointer UxCallbackArg)
476 {
477   if (((XmToggleButtonCallbackStruct *)UxCallbackArg)->set) {
478     AD.fsFlags |= CA_DF_ONLYFTFILES;
479   } else {
480     AD.fsFlags &= (~(CA_DF_ONLYFTFILES));
481   }
482 }
483
484 /*****************************************************************************/
485 /*                                                                           */
486 /* simpleCB_WindowTypeOptionMenu                                             */
487 /*                                                                           */
488 /*****************************************************************************/
489 static  void    activateCB_WindowTypeOptionMenu( Widget UxWidget,
490                                            XtPointer UxClientData,
491                                            XtPointer UxCallbackArg)
492 {
493   AD.fsFlags &= (~(CA_WT_XWINDOWS | CA_WT_TERM | CA_WT_PERMTERM));
494   switch ((int)(XtArgVal)UxClientData) {
495     case CA_WT_XWINDOWS :
496          AD.fsFlags |= CA_WT_XWINDOWS;
497          break;
498     case CA_WT_TERM :
499          AD.fsFlags |= CA_WT_TERM;
500          break;
501     case CA_WT_PERMTERM :
502          AD.fsFlags |= CA_WT_PERMTERM;
503          break;
504   }
505 }
506
507 /*******************************************************************************
508        The 'build_' function creates all the widgets
509        using the resource values specified in the Property Editor.
510 *******************************************************************************/
511
512 static Widget   _Uxbuild_CreateActionAppShell(void)
513 {
514         Widget               _UxParent;
515         Widget               CA_MB_FileOption_shell;
516         Widget               CA_MB_HelpOption_shell;
517         Widget               CA_MB_Help_Sep1;
518         Widget               CA_MB_Help_Sep2;
519         Widget               CA_MB_OptionsOption_shell;
520         char                 *UxTmp0;
521
522         Widget               CA_WindowType_OptionMenuShell;
523         Widget               CA_WindowType_Pane;
524         Widget               CA_WindowType_OptionMenu;
525         char                 mnemonic[2];
526         XtArgVal /* Dimension */        dim1, dim2;
527         Widget               CA_MED_IconForm, CA_TINY_IconForm, CA_LRG_IconForm;
528         IconData             *pIconData;
529
530         XmString             emptyString;
531         char                 titleBuf[MAXBUFSIZE];
532
533 #define ICON_MIN_HEIGHT      83
534 #define FINDEDIT_SPACING     6
535 #define BORDER_OFFSET        3
536
537         /* Creation of CreateActionAppShell */
538         _UxParent = UxParent;
539         if ( _UxParent == NULL )
540         {
541             _UxParent = UxTopLevel;
542         }
543
544         snprintf(titleBuf, sizeof(titleBuf), "%s", GETMESSAGE(3, 10, "Create Action"));
545         CreateActionAppShell = XtVaCreatePopupShell( "CreateActionAppShell",
546                         applicationShellWidgetClass,
547                         _UxParent,
548                         /*
549                         XmNx, 35,
550                         XmNy, 8,
551                         XmNminWidth, -1,
552                         XmNminHeight, -1,
553                         */
554                         XmNiconName, titleBuf,
555                         XmNtitle, titleBuf,
556                         XmNallowShellResize, TRUE,
557                         XmNheight, 550,
558                         XmNdeleteResponse, XmDO_NOTHING, /* CDExc19440 */
559                         NULL );
560
561         /* CDExc19440 - make sure user doesn't accidentally lose work. */
562         XmAddWMProtocolCallback(CreateActionAppShell,
563                                 XmInternAtom(UxDisplay,
564                                              "WM_DELETE_WINDOW",
565                                              False),
566                                 activateCB_FileQuit,
567                                 (XtPointer)NULL);
568
569         if (bLowRes) {
570            /* Creation of CreateActionMainWindow */
571            CreateActionMainWindow = XtVaCreateManagedWidget( "CreateActionMainWindow",
572                         xmMainWindowWidgetClass,
573                         CreateActionAppShell,
574                         XmNunitType, XmPIXELS,
575                         XmNx, 0,
576                         XmNy, 0,
577                         XmNscrollingPolicy, XmAUTOMATIC,
578                         NULL );
579         } else {
580            /* Creation of CreateActionMainWindow */
581            CreateActionMainWindow = XtVaCreateManagedWidget( "CreateActionMainWindow",
582                         xmMainWindowWidgetClass,
583                         CreateActionAppShell,
584                         XmNunitType, XmPIXELS,
585                         XmNx, 0,
586                         XmNy, 0,
587                         NULL );
588         }
589         XtAddCallback( CreateActionMainWindow, XmNhelpCallback,
590                 (XtCallbackProc) helpCB_general,
591                 (XtPointer) HELP_ONITEM );
592
593         /*********************************************************************/
594         /*                                                                   */
595         /* MenuBar                                                           */
596         /*                                                                   */
597         /*********************************************************************/
598         /* Creation of CA_MenuBar */
599         CA_MenuBar = XtVaCreateManagedWidget( "CA_MenuBar",
600                         xmRowColumnWidgetClass,
601                         CreateActionMainWindow,
602                         XmNrowColumnType, XmMENU_BAR,
603                         XmNmenuAccelerator, "<KeyUp>F10",
604                         XmNpacking, XmPACK_TIGHT,
605                         XmNentryAlignment, XmALIGNMENT_BEGINNING,
606                         XmNorientation, XmHORIZONTAL,
607                         NULL );
608
609         /* Creation of CA_MB_FileOption */
610         CA_MB_FileOption_shell = XtVaCreatePopupShell ("CA_MB_FileOption_shell",
611                         xmMenuShellWidgetClass, CA_MenuBar,
612                         XmNwidth, 1,
613                         XmNheight, 1,
614                         XmNallowShellResize, TRUE,
615                         XmNoverrideRedirect, TRUE,
616                         NULL );
617
618         CA_MB_FileOption = XtVaCreateWidget( "CA_MB_FileOption",
619                         xmRowColumnWidgetClass,
620                         CA_MB_FileOption_shell,
621                         XmNrowColumnType, XmMENU_PULLDOWN,
622                         NULL );
623
624         /* Creation of CA_MB_FileNew */
625         /*
626         mnemonic = GETMESSAGE(2, 21, "N");
627         */
628         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 21, "N"));
629         CA_MB_FileNew = XtVaCreateManagedWidget( "CA_MB_FileNew",
630                         xmPushButtonWidgetClass,
631                         CA_MB_FileOption,
632                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 20, "New")),
633                         XmNmnemonic, mnemonic[0],
634                         NULL );
635         XtAddCallback( CA_MB_FileNew, XmNactivateCallback,
636                 (XtCallbackProc) activateCB_FileNew,
637                 (XtPointer) NULL );
638
639         /* Creation of CA_MB_FileOpen */
640         /*
641         mnemonic = GETMESSAGE(2, 16, "O");
642         */
643         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 16, "O"));
644         CA_MB_FileOpen = XtVaCreateManagedWidget( "CA_MB_FileOpen",
645                         xmPushButtonWidgetClass,
646                         CA_MB_FileOption,
647                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 15, "Open...")),
648                         XmNmnemonic, mnemonic[0],
649                         NULL );
650         XtAddCallback( CA_MB_FileOpen, XmNactivateCallback,
651                 (XtCallbackProc) activateCB_FileOpen,
652                 (XtPointer) NULL );
653
654         /* Creation of CA_MB_FileSave */
655         /*
656         mnemonic = GETMESSAGE(2, 26, "S");
657         */
658         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 26, "S"));
659         CA_MB_FileSave = XtVaCreateManagedWidget( "CA_MB_FileSave",
660                         xmPushButtonWidgetClass,
661                         CA_MB_FileOption,
662                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 25, "Save")),
663                         XmNmnemonic, mnemonic[0],
664                         NULL );
665         XtAddCallback( CA_MB_FileSave, XmNactivateCallback,
666                 (XtCallbackProc) activateCB_CA_MB_FileSave,
667                 (XtPointer) NULL );
668
669         /* Creation of CA_MB_Sep */
670         CA_MB_Sep = XtVaCreateManagedWidget( "CA_MB_Sep",
671                         xmSeparatorWidgetClass,
672                         CA_MB_FileOption,
673                         NULL );
674
675         /* Creation of CA_MB_FileExit */
676         /*
677         mnemonic = GETMESSAGE(2, 31, "x");
678         */
679         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 31, "x"));
680         CA_MB_FileExit = XtVaCreateManagedWidget( "CA_MB_FileExit",
681                         xmPushButtonWidgetClass,
682                         CA_MB_FileOption,
683                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 30, "Exit")),
684                         XmNmnemonic, mnemonic[0],
685                         NULL );
686         XtAddCallback( CA_MB_FileExit, XmNactivateCallback,
687                 (XtCallbackProc) activateCB_FileQuit,
688                 (XtPointer) NULL );
689
690         /* Creation of CA_MB_FileTop */
691         /*
692         mnemonic = GETMESSAGE(2, 11, "F");
693         */
694         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 11, "F"));
695         CA_MB_FileTop = XtVaCreateManagedWidget( "CA_MB_FileTop",
696                         xmCascadeButtonWidgetClass,
697                         CA_MenuBar,
698                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 10, "File")),
699                         XmNmnemonic, mnemonic[0],
700                         XmNsubMenuId, CA_MB_FileOption,
701                         NULL );
702
703         /* Creation of CA_MB_HelpOption */
704         CA_MB_HelpOption_shell = XtVaCreatePopupShell ("CA_MB_HelpOption_shell",
705                         xmMenuShellWidgetClass, CA_MenuBar,
706                         XmNwidth, 1,
707                         XmNheight, 1,
708                         XmNallowShellResize, TRUE,
709                         XmNoverrideRedirect, TRUE,
710                         NULL );
711
712         CA_MB_HelpOption = XtVaCreateWidget( "CA_MB_HelpOption",
713                         xmRowColumnWidgetClass,
714                         CA_MB_HelpOption_shell,
715                         XmNrowColumnType, XmMENU_PULLDOWN,
716                         NULL );
717
718         /*
719          * Creation of CA_MB_HelpOverview
720         */
721         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 61, "v"));
722         CA_MB_HelpOverview = XtVaCreateManagedWidget( "CA_MB_HelpOverview",
723                         xmPushButtonWidgetClass,
724                         CA_MB_HelpOption,
725                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 60, "Overview")),
726                         XmNmnemonic, mnemonic[0],
727                         XmNuserData, CreateActionAppShell,
728                         NULL );
729         XtAddCallback( CA_MB_HelpOverview, XmNactivateCallback,
730                 (XtCallbackProc) helpCB_general,
731                 (XtPointer) HELP_OVERVIEW );
732
733         /*
734          * Creation of CA_MB_HelpTasks
735         */
736         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 71, "T"));
737         CA_MB_HelpTasks = XtVaCreateManagedWidget( "CA_MB_HelpTasks",
738                         xmPushButtonWidgetClass,
739                         CA_MB_HelpOption,
740                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 70, "Tasks")),
741                         XmNmnemonic, mnemonic[0],
742                         XmNuserData, CreateActionAppShell,
743                         NULL );
744         XtAddCallback( CA_MB_HelpTasks, XmNactivateCallback,
745                 (XtCallbackProc) helpCB_general,
746                 (XtPointer) HELP_TASKS );
747
748 #if 0
749         /* Creation of CA_MB_HelpTOC */
750         /*
751         mnemonic = GETMESSAGE(2, 66, "T");
752         */
753         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 66, "T"));
754         CA_MB_HelpTOC = XtVaCreateManagedWidget( "CA_MB_HelpTOC",
755                         xmPushButtonWidgetClass,
756                         CA_MB_HelpOption,
757                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 65, "Table Of Contents...")),
758                         XmNmnemonic, mnemonic[0],
759                         XmNuserData, CreateActionAppShell,
760                         NULL );
761 #endif
762         /*
763         * Creation of CA_MB_HelpReference
764         */
765         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 76, "R"));
766         CA_MB_HelpReference = XtVaCreateManagedWidget( "CA_MB_HelpReference",
767                         xmPushButtonWidgetClass,
768                         CA_MB_HelpOption,
769                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 75, "Reference")),
770                         XmNmnemonic, mnemonic[0],
771                         XmNuserData, CreateActionAppShell,
772                         NULL );
773         XtAddCallback( CA_MB_HelpReference, XmNactivateCallback,
774                 (XtCallbackProc) helpCB_general,
775                 (XtPointer) HELP_REFERENCE );
776
777         /*
778          * Creation of CA_MB_Help_Sep1
779          */
780         CA_MB_Help_Sep1 = XtVaCreateManagedWidget( "CA_MB_Help_Sep1",
781                         xmSeparatorWidgetClass,
782                         CA_MB_HelpOption,
783                         NULL );
784
785         /*
786          * Creation of CA_MB_HelpUsing
787          */
788         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 81, "U"));
789         CA_MB_HelpUsing = XtVaCreateManagedWidget( "CA_MB_HelpUsing",
790                         xmPushButtonWidgetClass,
791                         CA_MB_HelpOption,
792                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 80, "Using Help")),
793                         XmNmnemonic, mnemonic[0],
794                         XmNuserData, CreateActionAppShell,
795                         NULL );
796         XtAddCallback( CA_MB_HelpUsing, XmNactivateCallback,
797                 (XtCallbackProc) helpCB_general,
798                 (XtPointer) HELP_USING );
799
800         /*
801          * Creation of CA_MB_Help_Sep2
802          */
803         CA_MB_Help_Sep2 = XtVaCreateManagedWidget( "CA_MB_Help_Sep2",
804                         xmSeparatorWidgetClass,
805                         CA_MB_HelpOption,
806                         NULL );
807
808         /*
809          * Creation of CA_MB_HelpAbout
810          */
811         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 86, "A"));
812         CA_MB_HelpAbout = XtVaCreateManagedWidget( "CA_MB_HelpAbout",
813                         xmPushButtonWidgetClass,
814                         CA_MB_HelpOption,
815                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 85, "About Create Action")),
816                         XmNmnemonic, mnemonic[0],
817                         XmNuserData, CreateActionAppShell,
818                         NULL );
819         XtAddCallback( CA_MB_HelpAbout, XmNactivateCallback,
820                 (XtCallbackProc) helpCB_general,
821                 (XtPointer) HELP_ABOUT );
822
823         /*
824          * Creation of CA_MB_HelpTop
825          */
826         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 54, "H"));
827         CA_MB_HelpTop = XtVaCreateManagedWidget( "CA_MB_HelpTop",
828                         xmCascadeButtonWidgetClass,
829                         CA_MenuBar,
830                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 53, "Help")),
831                         XmNmnemonic, mnemonic[0],
832                         XmNsubMenuId, CA_MB_HelpOption,
833                         XmNuserData, CreateActionAppShell,
834                         NULL );
835
836         /* Creation of CA_MB_OptionsOption */
837         CA_MB_OptionsOption_shell = XtVaCreatePopupShell ("CA_MB_OptionsOption_shell",
838                         xmMenuShellWidgetClass, CA_MenuBar,
839                         XmNwidth, 1,
840                         XmNheight, 1,
841                         XmNallowShellResize, TRUE,
842                         XmNoverrideRedirect, TRUE,
843                         NULL );
844
845         CA_MB_OptionsOption = XtVaCreateWidget( "CA_MB_OptionsOption",
846                         xmRowColumnWidgetClass,
847                         CA_MB_OptionsOption_shell,
848                         XmNrowColumnType, XmMENU_PULLDOWN,
849                         NULL );
850
851         /* Creation of ColorMonoOption */
852         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 50, "M"));
853         ColorMonoOption = XtVaCreateManagedWidget( "ColorMonoOption",
854                         xmToggleButtonWidgetClass,
855                         CA_MB_OptionsOption,
856                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 49, "Show Monochrome Icons")),
857                         XmNmnemonic, mnemonic[0],
858                         XmNindicatorSize, 20,
859                         XmNhighlightThickness, 0,
860                         NULL );
861         XtAddCallback( ColorMonoOption, XmNvalueChangedCallback,
862                 (XtCallbackProc) valueChangedCB_ColorMonoOption,
863                 (XtPointer) NULL );
864         createCB_ColorMonoOption(ColorMonoOption);
865
866
867         /* Creation of CA_MB_OptionTop */
868         snprintf(mnemonic, sizeof(mnemonic), "%s", GETMESSAGE(2, 36, "O"));
869         CA_MB_OptionTop = XtVaCreateManagedWidget( "CA_MB_OptionTop",
870                         xmCascadeButtonWidgetClass,
871                         CA_MenuBar,
872                         RES_CONVERT( XmNlabelString, GETMESSAGE(2, 35, "Options")),
873                         XmNmnemonic, mnemonic[0],
874                         XmNsubMenuId, CA_MB_OptionsOption,
875                         NULL );
876
877         /* Creation of CA_Form */
878         CA_Form = XtVaCreateManagedWidget( "CA_Form",
879                         xmFormWidgetClass,
880                         CreateActionMainWindow,
881                         XmNnoResize, FALSE,
882                         XmNresizePolicy, XmRESIZE_ANY,
883                         NULL );
884
885         /*********************************************************************/
886         /*                                                                   */
887         /* Action Name                                                       */
888         /*                                                                   */
889         /*********************************************************************/
890         /* Creation of CA_ActionNameLabel */
891         CA_ActionNameLabel = XtVaCreateManagedWidget( "CA_ActionNameLabel",
892                         xmLabelWidgetClass,
893                         CA_Form,
894                         XmNx, 10,
895                         XmNy, 30,
896                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 12, "Action Name (Icon Label):")),
897                         XmNalignment, XmALIGNMENT_BEGINNING,
898                         XmNleftOffset, 10,
899                         XmNleftAttachment, XmATTACH_FORM,
900                         XmNtopOffset, 20,
901                         XmNtopAttachment, XmATTACH_FORM,
902                         XmNrightOffset, 10,
903                         XmNrightAttachment, XmATTACH_FORM,
904                         NULL );
905
906         /* Creation of CA_ActionNameTextField */
907         CA_ActionNameTextField = XtVaCreateManagedWidget( "CA_ActionNameTextField",
908                         xmTextFieldWidgetClass,
909                         CA_Form,
910                         XmNx, 10,
911                         XmNy, 50,
912                         XmNtopOffset, 0,
913                         XmNtopWidget, CA_ActionNameLabel,
914                         XmNtopAttachment, XmATTACH_WIDGET,
915                         XmNleftOffset, 10,
916                         XmNleftAttachment, XmATTACH_FORM,
917                         XmNrightOffset, 10,
918                         XmNrightAttachment, XmATTACH_FORM,
919                         NULL );
920 #if 0
921         XtAddCallback( CA_ActionNameTextField, XmNvalueChangedCallback,
922                 (XtCallbackProc) valueChangedCB_CA_ActionNameTextField,
923                 (XtPointer) NULL );
924 #endif
925
926         /*********************************************************************/
927         /*                                                                   */
928         /* Icons                                                             */
929         /*                                                                   */
930         /*********************************************************************/
931         /* Creation of CA_ActionIconLabel */
932         CA_ActionIconLabel = XtVaCreateManagedWidget( "CA_ActionIconLabel",
933                         xmLabelWidgetClass,
934                         CA_Form,
935                         XmNx, 10,
936                         XmNy, 95,
937                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 13, "Action Icons:")),
938                         XmNalignment, XmALIGNMENT_BEGINNING,
939                         XmNleftOffset, 10,
940                         XmNleftAttachment, XmATTACH_FORM,
941                         XmNtopOffset, 15,
942                         XmNtopWidget, CA_ActionNameTextField,
943                         XmNtopAttachment, XmATTACH_WIDGET,
944                         XmNrightOffset, 10,
945                         XmNrightAttachment, XmATTACH_FORM,
946                         NULL );
947
948         /* Creation of CA_ActionIconForm */
949         CA_ActionIconForm = XtVaCreateManagedWidget( "CA_ActionIconForm",
950                         xmFormWidgetClass,
951                         CA_Form,
952                         XmNresizePolicy, XmRESIZE_NONE,
953                         XmNx, 10,
954                         XmNy, 121,
955                         XmNborderWidth, 0,
956                         XmNnavigationType, XmTAB_GROUP,
957                         XmNtopOffset, 0,
958                         XmNtopWidget, CA_ActionIconLabel,
959                         XmNtopAttachment, XmATTACH_WIDGET,
960                         XmNleftOffset, 10,
961                         XmNleftAttachment, XmATTACH_FORM,
962                         XmNrightOffset, 10,
963                         XmNrightAttachment, XmATTACH_FORM,
964                         XmNshadowThickness, 3,
965                         XmNshadowType, XmSHADOW_ETCHED_IN,
966                         XmNautoUnmanage, FALSE,
967                         XmNnoResize, FALSE,
968                         XmNallowOverlap, TRUE,
969                         XmNmarginHeight, 0,
970                         XmNverticalSpacing, 5,
971                         NULL );
972
973         CA_MED_IconForm = XtVaCreateManagedWidget( "CA_MED_IconForm",
974                         xmFormWidgetClass,
975                         CA_ActionIconForm,
976                         XmNresizePolicy, XmRESIZE_NONE,
977                         XmNborderWidth, ICON_BORDER_WIDTH,
978                         XmNleftPosition, 32,
979                         XmNleftOffset, 0,
980                         XmNleftAttachment, XmATTACH_POSITION,
981                         XmNbottomPosition, 88,
982                         XmNbottomOffset, 0,
983                         XmNbottomAttachment, XmATTACH_POSITION,
984                         NULL );
985
986         /* Creation of CA_MED_IconGadget */
987         emptyString = XmStringCreateLocalized("");
988         pIconData = (IconData *)XtMalloc(sizeof(IconData));
989         memset(pIconData, 0, sizeof(IconData));
990         IconDataList[CA_MED] = pIconData;
991         CA_MED_IconGadget = XtVaCreateManagedWidget( "CA_MED_IconGadget",
992                         dtIconGadgetClass,
993                         CA_MED_IconForm,
994                         XmNalignment, XmALIGNMENT_CENTER,
995                         XmNuserData, pIconData,
996                         XmNstring, emptyString,
997                         XmNrecomputeSize, TRUE,
998                         XmNleftOffset, BORDER_OFFSET,
999                         XmNleftAttachment, XmATTACH_FORM,
1000                         XmNrightOffset, BORDER_OFFSET,
1001                         XmNrightAttachment, XmATTACH_FORM,
1002                         XmNtopOffset, BORDER_OFFSET,
1003                         XmNtopAttachment, XmATTACH_FORM,
1004                         XmNbottomOffset, BORDER_OFFSET,
1005                         XmNbottomAttachment, XmATTACH_FORM,
1006                         /*
1007                         XmNleftPosition, 32,
1008                         XmNleftOffset, 0,
1009                         XmNleftAttachment, XmATTACH_POSITION,
1010                         XmNbottomPosition, 88,
1011                         XmNbottomOffset, 0,
1012                         XmNbottomAttachment, XmATTACH_POSITION,
1013                         */
1014                         NULL );
1015         pIconData->wid = CA_MED_IconGadget;
1016         pIconData->size = Medium_Icon;
1017         XtAddCallback( CA_MED_IconGadget, XmNcallback,
1018                 (XtCallbackProc) activateCB_action_icon,
1019                 (XtPointer) NULL );
1020         createCB_IconGadget( CA_MED_IconGadget, TRUE, Medium_Icon );
1021         last_action_pushed = CA_MED_IconGadget;
1022
1023         CA_TINY_IconForm = XtVaCreateManagedWidget( "CA_TINY_IconForm",
1024                         xmFormWidgetClass,
1025                         CA_ActionIconForm,
1026                         XmNresizePolicy, XmRESIZE_NONE,
1027                         XmNborderWidth, 0,
1028                         XmNleftPosition, 52,
1029                         XmNleftOffset, 1,
1030                         XmNleftAttachment, XmATTACH_POSITION,
1031                         XmNbottomPosition, 88,
1032                         XmNbottomOffset, 0,
1033                         XmNbottomAttachment, XmATTACH_POSITION,
1034                         NULL );
1035
1036         /* Creation of CA_TINY_IconGadget */
1037         pIconData = (IconData *)XtMalloc(sizeof(IconData));
1038         memset(pIconData, 0, sizeof(IconData));
1039         IconDataList[CA_TINY] = pIconData;
1040         CA_TINY_IconGadget = XtVaCreateManagedWidget( "CA_TINY_IconGadget",
1041                         dtIconGadgetClass,
1042                         CA_TINY_IconForm,
1043                         XmNalignment, XmALIGNMENT_CENTER,
1044                         XmNuserData, pIconData,
1045                         XmNrecomputeSize, TRUE,
1046                         XmNstring, emptyString,
1047                         XmNleftOffset, BORDER_OFFSET,
1048                         XmNleftAttachment, XmATTACH_FORM,
1049                         XmNrightOffset, BORDER_OFFSET,
1050                         XmNrightAttachment, XmATTACH_FORM,
1051                         XmNtopOffset, BORDER_OFFSET,
1052                         XmNtopAttachment, XmATTACH_FORM,
1053                         XmNbottomOffset, BORDER_OFFSET,
1054                         XmNbottomAttachment, XmATTACH_FORM,
1055                         NULL );
1056         pIconData->wid = CA_TINY_IconGadget;
1057         pIconData->size = Tiny_Icon;
1058         XtAddCallback( CA_TINY_IconGadget, XmNcallback,
1059                 (XtCallbackProc) activateCB_action_icon,
1060                 (XtPointer) NULL );
1061         createCB_IconGadget( CA_TINY_IconGadget, TRUE, Tiny_Icon );
1062
1063         CA_LRG_IconForm = XtVaCreateManagedWidget( "CA_LRG_IconForm",
1064                         xmFormWidgetClass,
1065                         CA_ActionIconForm,
1066                         XmNresizePolicy, XmRESIZE_NONE,
1067                         XmNborderWidth, 0,
1068                         XmNleftPosition, 11,
1069                         XmNleftOffset, -1,
1070                         XmNleftAttachment, XmATTACH_POSITION,
1071                         XmNbottomPosition, 88,
1072                         XmNbottomOffset, 0,
1073                         XmNbottomAttachment, XmATTACH_POSITION,
1074                         NULL );
1075
1076         /* Creation of CA_LRG_IconGadget */
1077         pIconData = (IconData *)XtMalloc(sizeof(IconData));
1078         memset(pIconData, 0, sizeof(IconData));
1079         IconDataList[CA_LRG] = pIconData;
1080         CA_LRG_IconGadget = XtVaCreateManagedWidget( "CA_LRG_IconGadget",
1081                         dtIconGadgetClass,
1082                         CA_LRG_IconForm,
1083                         XmNalignment, XmALIGNMENT_CENTER,
1084                         XmNuserData, pIconData,
1085                         XmNstring, emptyString,
1086                         XmNrecomputeSize, TRUE,
1087                         XmNleftOffset, BORDER_OFFSET,
1088                         XmNleftAttachment, XmATTACH_FORM,
1089                         XmNrightOffset, BORDER_OFFSET,
1090                         XmNrightAttachment, XmATTACH_FORM,
1091                         XmNtopOffset, BORDER_OFFSET,
1092                         XmNtopAttachment, XmATTACH_FORM,
1093                         XmNbottomOffset, BORDER_OFFSET,
1094                         XmNbottomAttachment, XmATTACH_FORM,
1095                         NULL );
1096         pIconData->wid = CA_LRG_IconGadget;
1097         pIconData->size = Large_Icon;
1098         XtAddCallback( CA_LRG_IconGadget, XmNcallback,
1099                 (XtCallbackProc) activateCB_action_icon,
1100                 (XtPointer) NULL );
1101         createCB_IconGadget( CA_LRG_IconGadget, TRUE, Large_Icon );
1102
1103         XmStringFree(emptyString);
1104
1105         /* Creation of CA_EditIcon_button */
1106         CA_EditIcon_button = XtVaCreateManagedWidget( "CA_EditIcon_button",
1107                         xmPushButtonGadgetClass,
1108                         CA_ActionIconForm,
1109                         RES_CONVERT( XmNlabelString, GETMESSAGE(6, 20, "Edit Icon...")),
1110                         XmNalignment, XmALIGNMENT_BEGINNING,
1111                         XmNleftPosition, 68,
1112                         XmNleftOffset, 1,
1113                         XmNleftAttachment, XmATTACH_POSITION,
1114                         XmNtopPosition, 50,
1115                         XmNtopOffset, (int)(FINDEDIT_SPACING / 2),
1116                         XmNtopAttachment, XmATTACH_POSITION,
1117                         NULL );
1118         XtAddCallback( CA_EditIcon_button, XmNactivateCallback,
1119                 (XtCallbackProc) activateCB_edit_icon,
1120                 (XtPointer) CA_ACTION_ICONS );
1121
1122         /* Creation of CA_FindSet_button */
1123         CA_FindSet_button = XtVaCreateManagedWidget( "CA_FindSet_button",
1124                         xmPushButtonGadgetClass,
1125                         CA_ActionIconForm,
1126                         RES_CONVERT( XmNlabelString, GETMESSAGE(6, 19, "Find Set...")),
1127                         XmNalignment, XmALIGNMENT_BEGINNING,
1128                         XmNmultiClick, XmMULTICLICK_DISCARD,
1129                         XmNleftPosition, 68,
1130                         XmNleftOffset, 0,
1131                         XmNleftAttachment, XmATTACH_POSITION,
1132                         XmNbottomPosition, 50,
1133                         XmNbottomOffset, (int)(FINDEDIT_SPACING / 2),
1134                         XmNbottomAttachment, XmATTACH_POSITION,
1135                         NULL );
1136         XtAddCallback( CA_FindSet_button, XmNactivateCallback,
1137                 (XtCallbackProc) activateCB_open_FindSet,
1138                 (XtPointer) CA_ACTION_ICONS );
1139
1140         /******************************************************************/
1141         /* Determine which button is wider, and attach the short on to it */
1142         /******************************************************************/
1143         XtVaGetValues(CA_EditIcon_button, XmNwidth, &dim1, NULL);
1144         XtVaGetValues(CA_FindSet_button, XmNwidth, &dim2, NULL);
1145         if (dim1 > dim2) {
1146            XtVaSetValues(CA_FindSet_button,
1147                          XmNwidth, dim1,
1148                          NULL);
1149         } else {
1150            XtVaSetValues(CA_EditIcon_button,
1151                          XmNwidth, dim2,
1152                          NULL);
1153         }
1154         /******************************************************************/
1155         /* Determine vertical positioning for findset and edit buttons    */
1156         /******************************************************************/
1157         XtVaGetValues(CA_EditIcon_button, XmNheight, &dim1, NULL);
1158         XtVaGetValues(CA_FindSet_button, XmNheight, &dim2, NULL);
1159         if ((int)(dim1 + dim2) + (3*(FINDEDIT_SPACING)) > ICON_MIN_HEIGHT) {
1160            XtVaSetValues(CA_EditIcon_button,
1161                          XmNbottomOffset, FINDEDIT_SPACING,
1162                          XmNbottomAttachment, XmATTACH_FORM,
1163                          NULL);
1164            XtVaSetValues(CA_FindSet_button,
1165                          XmNbottomOffset, FINDEDIT_SPACING,
1166                          XmNbottomWidget, CA_EditIcon_button,
1167                          XmNbottomAttachment, XmATTACH_WIDGET,
1168                          XmNtopOffset, FINDEDIT_SPACING,
1169                          XmNtopAttachment, XmATTACH_FORM,
1170                          NULL);
1171         }
1172
1173
1174         /******************************************************************/
1175         /* Bogus separator to keep ActionIconForm a minimum height        */
1176         /******************************************************************/
1177         separator1 = XtVaCreateManagedWidget( "separator1",
1178                         xmSeparatorWidgetClass,
1179                         CA_ActionIconForm,
1180                         XmNx, 10,
1181                         XmNy, 10,
1182                         XmNwidth, 20,
1183                         XmNheight, ICON_MIN_HEIGHT,
1184                         XmNorientation, XmVERTICAL,
1185                         XmNseparatorType, XmNO_LINE,
1186                         XmNtopOffset, 5,
1187                         XmNtopAttachment, XmATTACH_FORM,
1188                         XmNbottomOffset, 5,
1189                         XmNbottomAttachment, XmATTACH_FORM,
1190                         NULL );
1191
1192         /*********************************************************************/
1193         /*                                                                   */
1194         /* Open Command                                                      */
1195         /*                                                                   */
1196         /*********************************************************************/
1197         /* Creation of CA_DblClkLabel */
1198         CA_DblClkLabel = XtVaCreateManagedWidget( "CA_DblClkLabel",
1199                         xmLabelWidgetClass,
1200                         CA_Form,
1201                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 22, "Command When Action Is Opened (Double-clicked):")),
1202                         XmNalignment, XmALIGNMENT_BEGINNING,
1203                         XmNleftOffset, 10,
1204                         XmNleftAttachment, XmATTACH_FORM,
1205                         XmNtopOffset, 15,
1206                         XmNtopWidget, CA_ActionIconForm,
1207                         XmNtopAttachment, XmATTACH_WIDGET,
1208                         XmNrightOffset, 10,
1209                         XmNrightAttachment, XmATTACH_FORM,
1210                         NULL );
1211
1212         /* Creation of CA_DblClkText */
1213         CA_DblClkText = XtVaCreateManagedWidget( "CA_DblClkText",
1214                         xmTextFieldWidgetClass,
1215                         CA_Form,
1216                         XmNnavigationType, XmTAB_GROUP,
1217                         XmNtopOffset, 0,
1218                         XmNtopWidget, CA_DblClkLabel,
1219                         XmNtopAttachment, XmATTACH_WIDGET,
1220                         XmNleftOffset, 10,
1221                         XmNleftAttachment, XmATTACH_FORM,
1222                         XmNrightOffset, 10,
1223                         XmNrightAttachment, XmATTACH_FORM,
1224                         XmNrows, 1,
1225                         NULL );
1226
1227         /*********************************************************************/
1228         /*                                                                   */
1229         /* Help Text Label                                                   */
1230         /*                                                                   */
1231         /*********************************************************************/
1232         /* Creation of CA_HlpTxtLabel */
1233         CA_HlpTxtLabel = XtVaCreateManagedWidget( "CA_HlpTxtLabel",
1234                         xmLabelWidgetClass,
1235                         CA_Form,
1236                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 30, "Help Text For Action Icon:")),
1237                         XmNalignment, XmALIGNMENT_BEGINNING,
1238                         XmNleftOffset, 10,
1239                         XmNleftAttachment, XmATTACH_FORM,
1240                         XmNtopOffset, 15,
1241                         XmNtopWidget, CA_DblClkText,
1242                         XmNtopAttachment, XmATTACH_WIDGET,
1243                         XmNrightOffset, 10,
1244                         XmNrightAttachment, XmATTACH_FORM,
1245                         NULL );
1246
1247         /*********************************************************************/
1248         /*                                                                   */
1249         /* Advanced Features Area                                            */
1250         /*                                                                   */
1251         /*********************************************************************/
1252         /* Creation of XprtOptionForm */
1253         XprtOptionForm = XtVaCreateManagedWidget( "XprtOptionForm",
1254                         xmFormWidgetClass,
1255                         CA_Form,
1256                         XmNresizePolicy, XmRESIZE_ANY,
1257                         XmNleftOffset, 1,
1258                         XmNleftAttachment, XmATTACH_FORM,
1259                         XmNrightOffset, 1,
1260                         XmNrightAttachment, XmATTACH_FORM,
1261                         XmNbottomOffset, 0,
1262                         XmNbottomAttachment, XmATTACH_FORM,
1263                         NULL );
1264
1265         /*********************************************************************/
1266         /*                                                                   */
1267         /* Optional Separator                                                */
1268         /*                                                                   */
1269         /*********************************************************************/
1270
1271         /* Creation of CA_XprtSep1 */
1272         CA_XprtSep1 = XtVaCreateManagedWidget( "CA_XprtSep1",
1273                         xmSeparatorWidgetClass,
1274                         XprtOptionForm,
1275                         XmNleftOffset, 1,
1276                         XmNleftAttachment, XmATTACH_FORM,
1277                         XmNrightOffset, 1,
1278                         XmNrightAttachment, XmATTACH_FORM,
1279                         XmNtopOffset, 0,
1280                         XmNtopAttachment, XmATTACH_FORM,
1281                         NULL );
1282
1283         /*********************************************************************/
1284         /*                                                                   */
1285         /* Prompt Field                                                      */
1286         /*                                                                   */
1287         /*********************************************************************/
1288         /* Creation of CA_ActionOpenLabel */
1289         CA_ActionOpenLabel = XtVaCreateManagedWidget( "CA_ActionOpenLabel",
1290                         xmLabelWidgetClass,
1291                         XprtOptionForm,
1292                         RES_CONVERT( XmNlabelString, GETMESSAGE(4, 11, "When Action Opens, Ask Users for:")),
1293                         XmNalignment, XmALIGNMENT_BEGINNING,
1294                         XmNleftOffset, 10,
1295                         XmNleftAttachment, XmATTACH_FORM,
1296                         XmNrightOffset, 10,
1297                         XmNrightAttachment, XmATTACH_FORM,
1298                         XmNtopOffset, 15,
1299                         XmNtopWidget, CA_XprtSep1,
1300                         XmNtopAttachment, XmATTACH_WIDGET,
1301                         NULL );
1302
1303         /* Creation of CA_XprtActionOpenText */
1304         CA_XprtActionOpenText = XtVaCreateManagedWidget( "CA_XprtActionOpenText",
1305                         xmTextWidgetClass,
1306                         XprtOptionForm,
1307                         XmNvalue, "",
1308                         XmNnavigationType, XmTAB_GROUP,
1309                         XmNleftOffset, 10,
1310                         XmNleftAttachment, XmATTACH_FORM,
1311                         XmNrightOffset, 10,
1312                         XmNrightAttachment, XmATTACH_FORM,
1313                         XmNtopOffset, 0,
1314                         XmNtopWidget, CA_ActionOpenLabel,
1315                         XmNtopAttachment, XmATTACH_WIDGET,
1316                       /*XmNeditMode, XmMULTI_LINE_EDIT,*/
1317                       /*XmNwordWrap, TRUE,*/
1318                         NULL );
1319
1320         /*********************************************************************/
1321         /*                                                                   */
1322         /* Filetypes that use this Action area                               */
1323         /*                                                                   */
1324         /*********************************************************************/
1325         /* Creation of CA_FiletypesLabel */
1326         CA_FiletypesLabel = XtVaCreateManagedWidget( "CA_FiletypesLabel",
1327                         xmLabelWidgetClass,
1328                         XprtOptionForm,
1329                         XmNx, 10,
1330                         XmNy, 122,
1331                         RES_CONVERT( XmNlabelString, GETMESSAGE(4, 12, "Datatypes That Use This Action:")),
1332                         XmNalignment, XmALIGNMENT_BEGINNING,
1333                         XmNleftOffset, 10,
1334                         XmNleftAttachment, XmATTACH_FORM,
1335                         XmNrightOffset, 10,
1336                         XmNrightAttachment, XmATTACH_FORM,
1337                         XmNtopOffset, 15,
1338                         XmNtopWidget, CA_XprtActionOpenText,
1339                         XmNtopAttachment, XmATTACH_WIDGET,
1340                         NULL );
1341
1342         /*********************************************************************/
1343         /*                                                                   */
1344         /* Add, Delete, Edit buttons for Filetypes                           */
1345         /*                                                                   */
1346         /*********************************************************************/
1347         /* Creation of rowColumn1 */
1348         rowColumn1 = XtVaCreateManagedWidget( "rowColumn1",
1349                         xmRowColumnWidgetClass,
1350                         XprtOptionForm,
1351                         XmNnavigationType, XmTAB_GROUP,
1352                         XmNtopOffset, 0,
1353                         XmNtopWidget, CA_FiletypesLabel,
1354                         XmNtopAttachment, XmATTACH_WIDGET,
1355                         XmNrightOffset, 10,
1356                         XmNrightAttachment, XmATTACH_FORM,
1357                         NULL );
1358
1359         /* Creation of CA_FiletypesAdd */
1360         CA_FiletypesAdd = XtVaCreateManagedWidget( "CA_FiletypesAdd",
1361                         xmPushButtonGadgetClass,
1362                         rowColumn1,
1363                         RES_CONVERT( XmNlabelString, GETMESSAGE(4, 13, "Add...")),
1364                         XmNalignment, XmALIGNMENT_BEGINNING,
1365                         XmNmarginLeft, 5,
1366                         XmNmarginRight, 5,
1367                         NULL );
1368         XtAddCallback( CA_FiletypesAdd, XmNactivateCallback,
1369                 (XtCallbackProc) activateCB_add_filetype,
1370                 (XtPointer) NULL );
1371
1372         /* Creation of CA_FiletypesDelete */
1373         CA_FiletypesDelete = XtVaCreateManagedWidget( "CA_FiletypesDelete",
1374                         xmPushButtonGadgetClass,
1375                         rowColumn1,
1376                         RES_CONVERT( XmNlabelString, GETMESSAGE(4, 14, "Delete")),
1377                         XmNalignment, XmALIGNMENT_BEGINNING,
1378                         XmNmarginLeft, 5,
1379                         XmNmarginRight, 5,
1380                         NULL );
1381         XtAddCallback( CA_FiletypesDelete, XmNactivateCallback,
1382                 (XtCallbackProc) activateCB_CA_FiletypesDelete,
1383                 (XtPointer) NULL );
1384
1385         /* Creation of CA_FiletypesEdit */
1386         CA_FiletypesEdit = XtVaCreateManagedWidget( "CA_FiletypesEdit",
1387                         xmPushButtonGadgetClass,
1388                         rowColumn1,
1389                         RES_CONVERT( XmNlabelString, GETMESSAGE(4, 15, "Edit...")),
1390                         XmNalignment, XmALIGNMENT_BEGINNING,
1391                         XmNmarginLeft, 5,
1392                         XmNmarginRight, 5,
1393                         NULL );
1394         XtAddCallback( CA_FiletypesEdit, XmNactivateCallback,
1395                 (XtCallbackProc) activateCB_edit_filetype,
1396                 (XtPointer) NULL );
1397
1398         /*********************************************************************/
1399         /*                                                                   */
1400         /* Filetypes Listbox Area                                            */
1401         /*                                                                   */
1402         /*********************************************************************/
1403         /* Creation of CA_FiletypesWindow */
1404         CA_FiletypesWindow = XtVaCreateManagedWidget( "CA_FiletypesWindow",
1405                         xmScrolledWindowWidgetClass,
1406                         XprtOptionForm,
1407                         XmNx, 10,
1408                         XmNy, 140,
1409                         XmNshadowThickness, 2,
1410                         XmNleftOffset, 10,
1411                         XmNleftAttachment, XmATTACH_FORM,
1412                         XmNtopOffset, 0,
1413                         XmNtopWidget, CA_FiletypesLabel,
1414                         XmNtopAttachment, XmATTACH_WIDGET,
1415                         XmNbottomOffset, 0,
1416                         XmNbottomWidget, rowColumn1,
1417                         XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
1418                         XmNrightOffset, 10,
1419                         XmNrightWidget, rowColumn1,
1420                         XmNrightAttachment, XmATTACH_WIDGET,
1421                         NULL );
1422
1423         /* Creation of CA_FiletypesList */
1424         CA_FiletypesList = XtVaCreateManagedWidget( "CA_FiletypesList",
1425                         xmListWidgetClass,
1426                         CA_FiletypesWindow,
1427                         XmNselectionPolicy, XmSINGLE_SELECT,
1428                         XmNshadowThickness, 0,
1429                         NULL );
1430
1431         /*********************************************************************/
1432         /*                                                                   */
1433         /* Droppable Filetypes Toggle Area                                   */
1434         /*                                                                   */
1435         /*********************************************************************/
1436         /* Creation of CA_DroppableFiletypesLabel */
1437         CA_DroppableFiletypesLabel = XtVaCreateManagedWidget( "CA_DroppableFiletypesLabel",
1438                         xmLabelWidgetClass,
1439                         XprtOptionForm,
1440                         XmNx, 10,
1441                         XmNy, 204,
1442                         XmNalignment, XmALIGNMENT_BEGINNING,
1443                         RES_CONVERT( XmNlabelString, GETMESSAGE(4, 16, "Dropable Datatypes:")),
1444                         XmNleftOffset, 10,
1445                         XmNleftAttachment, XmATTACH_FORM,
1446                         XmNtopOffset, 15,
1447                         XmNtopWidget, rowColumn1,
1448                         XmNtopAttachment, XmATTACH_WIDGET,
1449                         NULL );
1450
1451         if (bLowRes) {
1452            /* Creation of CA_DroppableFiletypesRowColumn */
1453            CA_DroppableFiletypesRowColumn = XtVaCreateManagedWidget( "CA_DroppableFiletypesRowColumn",
1454                            xmRowColumnWidgetClass,
1455                            XprtOptionForm,
1456                            XmNx, 200,
1457                            XmNy, 204,
1458                            RES_CONVERT( XmNlabelString, "" ),
1459                            XmNorientation, XmHORIZONTAL,
1460                            XmNpacking, XmPACK_TIGHT,
1461                            XmNradioBehavior, TRUE,
1462                            XmNwhichButton, 1,
1463                            XmNnavigationType, XmTAB_GROUP,
1464                            XmNtopOffset, 0,
1465                            XmNtopWidget, CA_DroppableFiletypesLabel,
1466                            XmNtopAttachment, XmATTACH_WIDGET,
1467                            XmNbottomOffset, 0,
1468                            XmNbottomAttachment, XmATTACH_FORM,
1469                            XmNleftOffset, 10,
1470                            XmNleftAttachment, XmATTACH_FORM,
1471                            XmNrightOffset, 10,
1472                            XmNrightAttachment, XmATTACH_FORM,
1473                            NULL );
1474         } else {
1475            /* Creation of CA_DroppableFiletypesRowColumn */
1476            CA_DroppableFiletypesRowColumn = XtVaCreateManagedWidget( "CA_DroppableFiletypesRowColumn",
1477                            xmRowColumnWidgetClass,
1478                            XprtOptionForm,
1479                            RES_CONVERT( XmNlabelString, "" ),
1480                            XmNorientation, XmHORIZONTAL,
1481                            XmNpacking, XmPACK_TIGHT,
1482                            XmNradioBehavior, TRUE,
1483                            XmNwhichButton, 1,
1484                            XmNnavigationType, XmTAB_GROUP,
1485                            XmNtopOffset, -7,
1486                            XmNtopWidget, CA_DroppableFiletypesLabel,
1487                            XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
1488                            XmNbottomOffset, 0,
1489                            XmNbottomAttachment, XmATTACH_FORM,
1490                            XmNleftOffset, 0,
1491                            XmNleftWidget, CA_DroppableFiletypesLabel,
1492                            XmNleftAttachment, XmATTACH_WIDGET,
1493                            XmNrightOffset, 10,
1494                            XmNrightAttachment, XmATTACH_FORM,
1495                            NULL );
1496         }
1497
1498         /* Creation of CA_AllFiletypesToggle */
1499         CA_AllFiletypesToggle = XtVaCreateManagedWidget( "CA_AllFiletypesToggle",
1500                         xmToggleButtonWidgetClass,
1501                         CA_DroppableFiletypesRowColumn,
1502                         RES_CONVERT( XmNlabelString, GETMESSAGE(4, 17, "All Datatypes")),
1503                         XmNset, TRUE,
1504                         NULL );
1505
1506         /* Creation of CA_FiletypesInListToggle */
1507         CA_FiletypesInListToggle = XtVaCreateManagedWidget( "CA_FiletypesInListToggle",
1508                         xmToggleButtonWidgetClass,
1509                         CA_DroppableFiletypesRowColumn,
1510                         RES_CONVERT( XmNlabelString, GETMESSAGE(4, 18, "Only Above List")),
1511                         NULL );
1512         XtAddCallback( CA_FiletypesInListToggle, XmNvalueChangedCallback,
1513                 (XtCallbackProc) valueChangedCB_DroppableFiletypes,
1514                 (XtPointer) CA_DF_ONLYFTFILES );
1515
1516
1517         /*********************************************************************/
1518         /*                                                                   */
1519         /* Expand button                                                     */
1520         /*                                                                   */
1521         /*********************************************************************/
1522         CA_Expand = XtVaCreateManagedWidget( "CA_Expand",
1523                         xmPushButtonWidgetClass,
1524                         CA_Form,
1525                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 50, "Advanced")),
1526                         XmNmultiClick, XmMULTICLICK_DISCARD,
1527                         XmNnavigationType, XmTAB_GROUP,
1528                         XmNmarginLeft, 5,
1529                         XmNmarginRight, 5,
1530                         XmNleftOffset, 10,
1531                         XmNleftAttachment, XmATTACH_FORM,
1532                         XmNbottomOffset, 20,
1533                         XmNbottomWidget, XprtOptionForm,
1534                         XmNbottomAttachment, XmATTACH_WIDGET,
1535                         NULL );
1536         XtAddCallback( CA_Expand, XmNactivateCallback,
1537                 (XtCallbackProc) activateCB_ExpertOption,
1538                 (XtPointer) NULL );
1539
1540         /*********************************************************************/
1541         /*                                                                   */
1542         /* Start of WindowType Option Menu                                   */
1543         /*                                                                   */
1544         /*********************************************************************/
1545         CA_WindowType_OptionMenuShell = XtVaCreatePopupShell ("CA_WindowType_OptionMenuShell",
1546                         xmMenuShellWidgetClass,
1547                         CA_Form,
1548                         XmNwidth, 1,
1549                         XmNheight, 1,
1550                         XmNallowShellResize, TRUE,
1551                         XmNoverrideRedirect, TRUE,
1552                         NULL );
1553
1554         CA_WindowType_Pane = XtVaCreateWidget( "CA_WindowType_Pane",
1555                         xmRowColumnWidgetClass,
1556                       /*CA_WindowType,*/
1557                         CA_WindowType_OptionMenuShell,
1558                         XmNrowColumnType, XmMENU_PULLDOWN,
1559                         NULL );
1560
1561         CA_WinTypeX = XtVaCreateManagedWidget( "CA_WinTypeX",
1562                         xmPushButtonWidgetClass,
1563                         CA_WindowType_Pane,
1564                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 34, "Graphical (X-Window)")),
1565                         NULL );
1566         XtAddCallback( CA_WinTypeX, XmNactivateCallback,
1567                 (XtCallbackProc) activateCB_WindowTypeOptionMenu,
1568                 (XtPointer) CA_WT_XWINDOWS );
1569
1570         CA_WinTypeAutoClose = XtVaCreateManagedWidget( "CA_WinTypeAutoClose",
1571                         xmPushButtonWidgetClass,
1572                         CA_WindowType_Pane,
1573                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 36, "Terminal (Auto-Close)")),
1574                         NULL );
1575         XtAddCallback( CA_WinTypeAutoClose, XmNactivateCallback,
1576                 (XtCallbackProc) activateCB_WindowTypeOptionMenu,
1577                 (XtPointer) CA_WT_TERM );
1578
1579         CA_WinTypeManualClose = XtVaCreateManagedWidget( "CA_WinTypeManualClose",
1580                         xmPushButtonWidgetClass,
1581                         CA_WindowType_Pane,
1582                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 38, "Terminal (Manual Close)")),
1583                         NULL );
1584         XtAddCallback( CA_WinTypeManualClose, XmNactivateCallback,
1585                 (XtCallbackProc) activateCB_WindowTypeOptionMenu,
1586                 (XtPointer) CA_WT_PERMTERM );
1587
1588         CA_WinTypeNoOutput = XtVaCreateManagedWidget( "CA_WinTypeNoOutput",
1589                         xmPushButtonWidgetClass,
1590                         CA_WindowType_Pane,
1591                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 40, "No Output")),
1592                         NULL );
1593         XtAddCallback( CA_WinTypeNoOutput, XmNactivateCallback,
1594                 (XtCallbackProc) activateCB_WindowTypeOptionMenu,
1595                 (XtPointer) CA_WT_XWINDOWS );
1596
1597         CA_WindowType_OptionMenu = XtVaCreateManagedWidget( "CA_WindowType_OptionMenu",
1598                         xmRowColumnWidgetClass,
1599                         CA_Form,
1600                         XmNrowColumnType, XmMENU_OPTION,
1601                         XmNsubMenuId, CA_WindowType_Pane,
1602                         RES_CONVERT( XmNlabelString, GETMESSAGE(3, 32, "Window Type: ")),
1603                         XmNnavigationType, XmTAB_GROUP,
1604                         XmNleftOffset, 10,
1605                         XmNleftAttachment, XmATTACH_FORM,
1606                         XmNrightOffset, 10,
1607                         XmNrightAttachment, XmATTACH_FORM,
1608                         XmNbottomOffset, 15,
1609                         XmNbottomWidget, CA_Expand,
1610                         XmNbottomAttachment, XmATTACH_WIDGET,
1611                         NULL );
1612         CA_WindowTypeArea = CA_WindowType_OptionMenu;
1613
1614         /*********************************************************************/
1615         /*                                                                   */
1616         /* Help Text Window                                                  */
1617         /*                                                                   */
1618         /*********************************************************************/
1619         /* Creation of CA_HelpTextWindow */
1620         CA_HelpTextWindow = XtVaCreateManagedWidget( "CA_HelpTextWindow",
1621                         xmScrolledWindowWidgetClass,
1622                         CA_Form,
1623                         XmNx, 10,
1624                         XmNy, 336,
1625                         XmNshadowThickness, 0,
1626                         XmNtopOffset, 0,
1627                         XmNtopWidget, CA_HlpTxtLabel,
1628                         XmNtopAttachment, XmATTACH_WIDGET,
1629                         XmNleftOffset, 10,
1630                         XmNleftAttachment, XmATTACH_FORM,
1631                         XmNrightOffset, 10,
1632                         XmNrightAttachment, XmATTACH_FORM,
1633                         XmNbottomOffset, 15,
1634                         XmNbottomWidget, CA_WindowTypeArea,
1635                         XmNbottomAttachment, XmATTACH_WIDGET,
1636                         NULL );
1637
1638         /* Creation of CA_HelpText */
1639         CA_HelpText = XtVaCreateManagedWidget( "CA_HelpText",
1640                         xmTextWidgetClass,
1641                         CA_HelpTextWindow,
1642                         XmNeditMode, XmMULTI_LINE_EDIT ,
1643                         XmNscrollVertical, TRUE,
1644                         XmNscrollHorizontal, FALSE,
1645                         XmNwordWrap, TRUE,
1646                         XmNx, 12,
1647                         XmNy, 0,
1648                         XmNrows, 3,
1649                         NULL );
1650
1651         /*********************************************************************/
1652         /*                                                                   */
1653         /* Misc.                                                             */
1654         /*                                                                   */
1655         /*********************************************************************/
1656         XtVaSetValues(CA_MenuBar,
1657                         XmNmenuHelpWidget, CA_MB_HelpTop,
1658                         NULL );
1659
1660         XtAddCallback( CreateActionAppShell, XmNdestroyCallback,
1661                 (XtCallbackProc) UxDestroyContextCB,
1662                 (XtPointer) NULL );
1663
1664         XmMainWindowSetAreas( CreateActionMainWindow, CA_MenuBar, (Widget) NULL,
1665                         (Widget) NULL, (Widget) NULL, CA_Form );
1666
1667         return ( CreateActionAppShell );
1668 }
1669
1670 /*******************************************************************************
1671        The following is the 'Interface function' which is the
1672        external entry point for creating this interface.
1673        This function should be called from your application or from
1674        a callback function.
1675 *******************************************************************************/
1676
1677 Widget  create_applicationShell1(swidget _UxUxParent)
1678 {
1679         Widget                   rtrn;
1680         _UxCCreateActionAppShell *UxContext;
1681         Dimension                dimHeight;
1682         Dimension                dimWidth;
1683         Dimension                dimTmp;
1684         Widget                   widTmp;
1685
1686         UxCreateActionAppShellContext = UxContext =
1687                 (_UxCCreateActionAppShell *) UxNewContext( sizeof(_UxCCreateActionAppShell), False );
1688
1689         UxParent = _UxUxParent;
1690
1691         rtrn = _Uxbuild_CreateActionAppShell();
1692
1693         /******************************************************************/
1694         /* Need to realize app shell widget now, because we need to       */
1695         /* determine initial geometry before the advanced area is         */
1696         /* unmanaged in   set_ca_dialog_height  routine.                  */
1697         /******************************************************************/
1698         XtSetMappedWhenManaged(rtrn, False);
1699         XtRealizeWidget(rtrn);
1700         XmProcessTraversal(CA_ActionNameTextField, XmTRAVERSE_CURRENT);
1701
1702         FileTypes = (Widget)CA_FiletypesList;
1703
1704         set_ca_dialog_height ();
1705
1706         if (sessiondata.useSession) {
1707            XtVaSetValues (CreateActionAppShell,
1708                           XmNx, sessiondata.x,
1709                           XmNy, sessiondata.y,
1710                           XmNwidth, sessiondata.width,
1711                           XmNheight, sessiondata.height,
1712                           XmNinitialState, sessiondata.iconicState,
1713                           NULL);
1714
1715            /* display in workspace */
1716
1717            if (sessiondata.workspaces[0])
1718            {
1719                char *workspaces = sessiondata.workspaces;
1720                char *ptr;
1721                Atom * workspace_atoms = NULL;
1722                int num_workspaces = 0;
1723                do
1724                {
1725                    ptr = strchr (workspaces, '*');
1726                    if (ptr != NULL) *ptr = '\0';
1727
1728                    workspace_atoms = (Atom *) XtRealloc (
1729                                 (char *)workspace_atoms, 
1730                                 sizeof (Atom) * (num_workspaces + 1));
1731                    workspace_atoms[num_workspaces] = XmInternAtom(
1732                                         XtDisplay(CreateActionAppShell),
1733                                         workspaces, True);
1734
1735                    num_workspaces++;                            
1736                    if (ptr != NULL)
1737                    {
1738                        *ptr = '*';
1739                        workspaces = ptr + 1;
1740                    }
1741                } while (ptr != NULL);
1742                DtWsmSetWorkspacesOccupied( XtDisplay(CreateActionAppShell),
1743                                            XtWindow(CreateActionAppShell),
1744                                            workspace_atoms,
1745                                            num_workspaces);
1746                XtFree ((char *) workspace_atoms);
1747                workspace_atoms = NULL;
1748            }
1749         }
1750         else if (bLowRes) {
1751            XtVaGetValues (CA_Form,
1752                           XmNheight, &dimHeight,
1753                           XmNwidth, &dimWidth,
1754                           NULL);
1755            XtVaGetValues (CreateActionMainWindow,
1756                           XmNverticalScrollBar, &widTmp,
1757                           NULL);
1758            XtVaGetValues (widTmp,
1759                           XmNwidth, &dimTmp,
1760                           NULL);
1761            dimHeight += dimTmp;
1762            dimWidth += dimTmp;
1763
1764            XtVaGetValues (CA_MenuBar,
1765                           XmNheight, &dimTmp,
1766                           NULL);
1767            dimHeight += dimTmp;
1768
1769            XtVaSetValues (CreateActionAppShell,
1770                           XmNheight, dimHeight,
1771                           XmNwidth, dimWidth,
1772                           NULL);
1773         }
1774
1775         XtSetMappedWhenManaged(rtrn, True);
1776         XtManageChild(rtrn);
1777
1778         return(rtrn);
1779 }
1780
1781 /*******************************************************************************
1782        END OF FILE
1783 *******************************************************************************/
1784