Use C++ linker
[oweals/cde.git] / cde / programs / dtcreate / AddFiletype.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 librararies 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: AddFiletype.c /main/8 1999/09/17 15:43:02 mgreess $ */
24 /***************************************************************************/
25 /*                                                                         */
26 /*  AddFiletype.c                                                          */
27 /*                                                                         */
28 /*    Associated Header file:  AddFiletype.h                               */
29 /*                                                                         */
30 /*                                                                         */
31 /***************************************************************************/
32
33 #include <stdio.h>
34 #include <sys/stat.h>
35
36 #include <Xm/Xm.h>
37 #include <Xm/MwmUtil.h>
38 #include <Xm/DialogS.h>
39 #include <Xm/MenuShell.h>
40 #include <Xm/Separator.h>
41 #include <Xm/Text.h>
42 #include <Xm/ScrolledW.h>
43 #include <Xm/PushB.h>
44 #include <Xm/Form.h>
45 #include <Xm/Text.h>
46 #include <Xm/PushBG.h>
47 #include <Xm/TextF.h>
48 #include <Xm/Label.h>
49 #include <Xm/Form.h>
50
51 #include <Dt/Icon.h>
52
53 #include "UxXt.h"
54 #include "dtcreate.h"
55 #include "af_aux.h"
56 #include "CreateActionAppShell.h"
57 #include "cmncbs.h"
58
59 #define CONTEXT_MACRO_ACCESS 1
60 #include "AddFiletype.h"
61 #undef CONTEXT_MACRO_ACCESS
62
63 /*******************************************************************************
64        Global declarations.
65 *******************************************************************************/
66 /*
67 enum mode {NONE, NEW, SAVE, QUIT};
68 Widget activateField;
69 Widget Licon2;
70 extern int do_which;
71 enum icon_size_range filetype_icon_size = None_Selected;
72 */
73 enum icon_size_range filetype_icon_size;
74
75
76 /*******************************************************************************
77        The following are callback functions.
78 *******************************************************************************/
79
80 #if 0
81 /******************************************************************************/
82 /*                                                                            */
83 /* LayoutCB_AddFiletype                                                       */
84 /*                                                                            */
85 /* INPUT:  Widget    wid       - window id                                    */
86 /*         XtPointer cdata     - client data                                  */
87 /*         XtPointer *cbstruct - callback data                                */
88 /* OUTPUT: none                                                               */
89 /*                                                                            */
90 /******************************************************************************/
91 void LayoutCB_AddFiletype(Widget wid, XtPointer cdata, XtPointer cbs)
92 {
93   printf("In layout callback of AddFiletype\n");
94 }
95 #endif
96
97 /******************************************************************************/
98 /* activateCB_edit_id_characteristics - bring up file characteristics dialog  */
99 /* INPUT:  Widget filesel - edit button id                                    */
100 /*         XtPointer cdata - client data                                      */
101 /*         XtPointer *cbstruct - callback data                                */
102 /* OUTPUT: none                                                               */
103 /******************************************************************************/
104 void activateCB_edit_id_characteristics (Widget filesel, XtPointer cdata,
105                    XmFileSelectionBoxCallbackStruct *cbstruct)
106 {
107   FiletypeData  *pFtD;
108
109   XtVaGetValues (AddFiletype,
110                  XmNuserData, &pFtD,
111                  NULL);
112
113 /*FileCharacteristics = create_FileCharacteristics();*/
114
115   XtVaSetValues (FileCharacteristics,
116                  XmNuserData, pFtD,
117                  NULL);
118   clear_FileCharacteristics_dialog_fields();
119   init_FileCharacteristics_dialog_fields(pFtD);
120   UxPopupInterface (FILE_CHARACTERISTICS, no_grab);
121   return;
122 }
123
124 static  void    activateCB_AF_OkButton( Widget  UxWidget,
125                                        XtPointer UxClientData,
126                                        XtPointer UxCallbackArg)
127 {
128   FiletypeData  *pFtD;
129   FiletypeData  **papArray;
130   int           i;
131
132   /**************************************************************************/
133   /* Check if fields are valid.                                             */
134   /**************************************************************************/
135   if (!AddFiletypeCheckFields()) {
136
137      /***********************************************************************/
138      /* Get FiletypeData structure that was allocated when Add button on    */
139      /* the CreateActionAppShell interface was activated.                   */
140      /***********************************************************************/
141      XtVaGetValues(AddFiletype, XmNuserData, &pFtD, NULL);
142
143      /***********************************************************************/
144      /* Get all values from gui                                             */
145      /***********************************************************************/
146      readAFFromGUI(pFtD);
147
148      /***********************************************************************/
149      /* If in edit mode, then don't do add type things.                     */
150      /***********************************************************************/
151      if (!(pFtD->fsInternal & CA_FT_EDIT)) {
152
153         /********************************************************************/
154         /* Update the Filetype listbox with this new filetype               */
155         /********************************************************************/
156         AddFiletypeToList();
157
158         /********************************************************************/
159         /* Update FiletypeData array within the ActionData structure        */
160         /********************************************************************/
161         UpdateFiletypeDataArray(pFtD);
162
163      }
164
165      /***********************************************************************/
166      /* Unset previous set values.                                          */
167      /***********************************************************************/
168      pFtD->fsInternal &= (~(CA_FT_APPLY));
169      pFtD->fsInternal &= (~(CA_FT_EDIT));
170
171      /***********************************************************************/
172      /* Pop down the AddFiletype interface                                  */
173      /***********************************************************************/
174      UxPopdownInterface(AddFiletype);
175   }
176 }
177
178 static  void    activateCB_AF_ApplyButton( Widget UxWidget,
179                                           XtPointer UxClientData,
180                                           XtPointer UxCallbackArg)
181 {
182   FiletypeData  *pFtD;
183
184   /**************************************************************************/
185   /* Check if fields are valid.                                             */
186   /**************************************************************************/
187   if (!AddFiletypeCheckFields()) {
188
189      /***********************************************************************/
190      /* Get FiletypeData structure that was allocated when Add button on    */
191      /* the CreateActionAppShell interface was activated.                   */
192      /***********************************************************************/
193      XtVaGetValues(AddFiletype, XmNuserData, &pFtD, NULL);
194
195      /***********************************************************************/
196      /* Get all values from gui                                             */
197      /***********************************************************************/
198      readAFFromGUI(pFtD);
199
200      /***********************************************************************/
201      /* Set the variable that indicates that Apply button was used.         */
202      /***********************************************************************/
203      pFtD->fsInternal |= CA_FT_APPLY;
204
205      /***********************************************************************/
206      /* If in edit mode, then don't do apply type things.                   */
207      /***********************************************************************/
208      if (!(pFtD->fsInternal & CA_FT_EDIT)) {
209
210         /********************************************************************/
211         /* Update the Filetype listbox with this new filetype               */
212         /********************************************************************/
213         if (XmListItemExists(CA_FiletypesList, XmStringCreateSimple("NONE"))) {
214           XmListDeleteItem(CA_FiletypesList, XmStringCreateSimple("NONE"));
215         }
216         AddFiletypeToList();
217
218         /********************************************************************/
219         /* Update FiletypeData array within the ActionData structure        */
220         /********************************************************************/
221         UpdateFiletypeDataArray(pFtD);
222
223      }
224   }
225 }
226
227 static  void    activateCB_AF_CancelButton( Widget UxWidget,
228                                            XtPointer UxClientData,
229                                            XtPointer UxCallbackArg)
230 {
231    FiletypeData *pFtD;
232
233    UxPopdownInterface(AddFiletype);
234    XtVaGetValues(AddFiletype, XmNuserData, &pFtD, NULL);
235    if (!((pFtD->fsInternal & CA_FT_APPLY) || (pFtD->fsInternal & CA_FT_EDIT))) {
236       free_Filetypedata(pFtD);
237    } else {
238       pFtD->fsInternal &= (~(CA_FT_APPLY));
239       pFtD->fsInternal &= (~(CA_FT_EDIT));
240    }
241 }
242
243 /*******************************************************************************
244        The 'build_' function creates all the widgets
245        using the resource values specified in the Property Editor.
246 *******************************************************************************/
247
248 static Widget   _Uxbuild_AddFiletype(void)
249 {
250         Widget                _UxParent;
251         char                  *UxTmp0;
252         Widget                AF_CharacteristicsWindow;
253         Widget                ActionAreaForm;
254         int                   ntotalbuttons = 4;
255         int                   nbutton = 0;
256         Widget                AF_ScrolledWindow;
257         Widget                AF_BigForm;
258         Dimension             dim1, dim2, dim3;
259         Widget                AF_MED_IconForm, AF_TINY_IconForm;
260         IconData             *pIconData;
261         char                 *pre, *suf, *title;
262
263         XmString              emptyString;
264
265 #define TIGHTNESS             20
266 #define ICON_MIN_HEIGHT       83
267 #define FINDEDIT_SPACING       6
268 #define BORDER_OFFSET          3
269
270         /* Creation of AddFiletype */
271         _UxParent = UxParent;
272         if ( _UxParent == NULL )
273         {
274              _UxParent = UxTopLevel;
275         }
276
277         pre = GETMESSAGE(3, 10, "Create Action");
278         suf = GETMESSAGE(7, 10, "Add Datatype");
279         title = XtMalloc(strlen(pre) + strlen(suf) + 2);
280         sprintf(title, "%s - %s", pre, suf);
281
282         _UxParent = XtVaCreatePopupShell( "AddFiletype_shell",
283                         xmDialogShellWidgetClass, _UxParent,
284                         XmNx, 422,
285                         XmNy, 148,
286                         XmNshellUnitType, XmPIXELS,
287                         XmNtitle, title,
288                         NULL );
289         /*
290         XtAddCallback(_UxParent, XmNpopupCallback, LayoutCB_AddFiletype, NULL);
291         */
292
293         if (bLowRes) {
294            AF_BigForm = XtVaCreateWidget( "AF_BigForm",
295                            xmFormWidgetClass,
296                            _UxParent,
297                            XmNunitType, XmPIXELS,
298                            XmNdialogStyle, XmDIALOG_APPLICATION_MODAL,
299                            RES_CONVERT( XmNdialogTitle, title ),
300                            XmNautoUnmanage, FALSE,
301                            NULL );
302            AF_ScrolledWindow = XtVaCreateManagedWidget( "AF_ScrolledWindow",
303                            xmScrolledWindowWidgetClass,
304                            AF_BigForm,
305                            XmNscrollingPolicy, XmAUTOMATIC,
306                            XmNleftAttachment, XmATTACH_FORM,
307                            XmNrightAttachment, XmATTACH_FORM,
308                            XmNbottomAttachment, XmATTACH_FORM,
309                            XmNtopAttachment, XmATTACH_FORM,
310                            NULL );
311            XtVaSetValues(AF_BigForm, XmNuserData, AF_ScrolledWindow, NULL);
312
313            AddFiletype = XtVaCreateManagedWidget( "AddFiletype",
314                            xmFormWidgetClass,
315                            AF_ScrolledWindow,
316                            NULL );
317         } else {
318            AddFiletype = XtVaCreateWidget( "AddFiletype",
319                            xmFormWidgetClass,
320                            _UxParent,
321                            XmNunitType, XmPIXELS,
322                            XmNdialogStyle, XmDIALOG_APPLICATION_MODAL,
323                            RES_CONVERT( XmNdialogTitle, title ),
324                            XmNautoUnmanage, FALSE,
325                            NULL );
326         }
327
328         XtFree(title);
329
330         XtAddCallback( AddFiletype, XmNhelpCallback,
331                 (XtCallbackProc) helpCB_general,
332                 (XtPointer) HELP_ADDFILETYPE );
333
334         /* Creation of AF_FiletypeFamilyNameLabel */
335         AF_FiletypeFamilyNameLabel = XtVaCreateManagedWidget( "AF_FiletypeFamilyNameLabel",
336                         xmLabelWidgetClass,
337                         AddFiletype,
338                         RES_CONVERT( XmNlabelString, GETMESSAGE(7, 14, "Name of Datatype Family:")),
339                         XmNalignment, XmALIGNMENT_BEGINNING,
340                         XmNtopOffset, 15,
341                         XmNtopAttachment, XmATTACH_FORM,
342                         XmNleftOffset, 10,
343                         XmNleftAttachment, XmATTACH_FORM,
344                         XmNrightOffset, 10,
345                         XmNrightAttachment, XmATTACH_FORM,
346                         NULL );
347
348         /* Creation of AF_FileTypeNameTextField */
349         AF_FileTypeNameTextField = XtVaCreateManagedWidget( "AF_FileTypeNameTextField",
350                         xmTextFieldWidgetClass,
351                         AddFiletype,
352                         XmNtopOffset, 0,
353                         XmNtopWidget, AF_FiletypeFamilyNameLabel,
354                         XmNtopAttachment, XmATTACH_WIDGET,
355                         XmNleftOffset, 10,
356                         XmNleftAttachment, XmATTACH_FORM,
357                         XmNrightOffset, 10,
358                         XmNrightAttachment, XmATTACH_FORM,
359                         NULL );
360
361         ActionAreaForm = XtVaCreateManagedWidget( "ActionAreaForm",
362                         xmFormWidgetClass,
363                         AddFiletype,
364                         XmNnavigationType, XmTAB_GROUP,
365                         XmNskipAdjust, TRUE,
366                         XmNfractionBase, ((TIGHTNESS * ntotalbuttons) - 1),
367                         XmNleftOffset, 10,
368                         XmNleftAttachment, XmATTACH_FORM,
369                         XmNrightOffset, 10,
370                         XmNrightAttachment, XmATTACH_FORM,
371                         XmNbottomOffset, 20,
372                         XmNbottomAttachment, XmATTACH_FORM,
373                         NULL );
374
375         /* Creation of AF_OkButton */
376         AF_OkButton = XtVaCreateManagedWidget( "AF_OkButton",
377                         xmPushButtonGadgetClass,
378                         ActionAreaForm,
379                         RES_CONVERT( XmNlabelString, GETMESSAGE(6, 10, "OK")),
380                         XmNmultiClick, XmMULTICLICK_DISCARD,
381                         XmNleftAttachment, nbutton ?
382                                             XmATTACH_POSITION : XmATTACH_FORM,
383                         XmNleftPosition, TIGHTNESS * nbutton,
384                         XmNrightAttachment, nbutton != (ntotalbuttons - 1) ?
385                                              XmATTACH_POSITION : XmATTACH_FORM,
386                         XmNrightPosition, (TIGHTNESS * nbutton)+(TIGHTNESS - 1),
387                         NULL );
388         nbutton++;
389         XtAddCallback( AF_OkButton, XmNactivateCallback,
390                 (XtCallbackProc) activateCB_AF_OkButton,
391                 (XtPointer) NULL );
392
393         /* Creation of AF_ApplyButton */
394         AF_ApplyButton = XtVaCreateManagedWidget( "AF_ApplyButton",
395                         xmPushButtonGadgetClass,
396                         ActionAreaForm,
397                         RES_CONVERT( XmNlabelString, GETMESSAGE(6, 11, "Apply")),
398                         XmNleftAttachment, nbutton ?
399                                             XmATTACH_POSITION : XmATTACH_FORM,
400                         XmNleftPosition, TIGHTNESS * nbutton,
401                         XmNrightAttachment, nbutton != (ntotalbuttons - 1) ?
402                                              XmATTACH_POSITION : XmATTACH_FORM,
403                         XmNrightPosition, (TIGHTNESS * nbutton)+(TIGHTNESS - 1),
404                         NULL );
405         nbutton++;
406         XtAddCallback( AF_ApplyButton, XmNactivateCallback,
407                 (XtCallbackProc) activateCB_AF_ApplyButton,
408                 (XtPointer) NULL );
409
410         /* Creation of AF_CancelButton */
411         AF_CancelButton = XtVaCreateManagedWidget( "AF_CancelButton",
412                         xmPushButtonGadgetClass,
413                         ActionAreaForm,
414                         RES_CONVERT( XmNlabelString, GETMESSAGE(6, 12, "Cancel")),
415                         XmNleftAttachment, nbutton ?
416                                             XmATTACH_POSITION : XmATTACH_FORM,
417                         XmNleftPosition, TIGHTNESS * nbutton,
418                         XmNrightAttachment, nbutton != (ntotalbuttons - 1) ?
419                                              XmATTACH_POSITION : XmATTACH_FORM,
420                         XmNrightPosition, (TIGHTNESS * nbutton)+(TIGHTNESS - 1),
421                         NULL );
422         nbutton++;
423         XtAddCallback( AF_CancelButton, XmNactivateCallback,
424                 (XtCallbackProc) activateCB_AF_CancelButton,
425                 (XtPointer) NULL );
426
427         /* Creation of AF_HelpButton */
428         AF_HelpButton = XtVaCreateManagedWidget( "AF_HelpButton",
429                         xmPushButtonGadgetClass,
430                         ActionAreaForm,
431                         RES_CONVERT( XmNlabelString, GETMESSAGE(6, 13, "Help")),
432                         XmNuserData, AddFiletype,
433                         XmNleftAttachment, nbutton ?
434                                             XmATTACH_POSITION : XmATTACH_FORM,
435                         XmNleftPosition, TIGHTNESS * nbutton,
436                         XmNrightAttachment, nbutton != (ntotalbuttons - 1) ?
437                                              XmATTACH_POSITION : XmATTACH_FORM,
438                         XmNrightPosition, (TIGHTNESS * nbutton)+(TIGHTNESS - 1),
439                         NULL );
440         nbutton++;
441         XtAddCallback( AF_HelpButton, XmNactivateCallback,
442                 (XtCallbackProc) helpCB_general,
443                 (XtPointer) HELP_ADDFILETYPE );
444
445         /* Creation of AF_IdCharacteristicsLabel */
446         AF_IdCharacteristicsLabel = XtVaCreateManagedWidget( "AF_IdCharacteristicsLabel",
447                         xmLabelWidgetClass,
448                         AddFiletype,
449                         RES_CONVERT( XmNlabelString, GETMESSAGE(7, 15, "Identifying Characteristics:")),
450                         XmNalignment, XmALIGNMENT_BEGINNING,
451                         XmNtopOffset, 10,
452                         XmNtopWidget, AF_FileTypeNameTextField,
453                         XmNtopAttachment, XmATTACH_WIDGET,
454                         XmNleftOffset, 10,
455                         XmNleftAttachment, XmATTACH_FORM,
456                         XmNrightOffset, 10,
457                         XmNrightAttachment, XmATTACH_FORM,
458                         NULL );
459
460         /* Creation of AF_IdCharacteristicsText */
461         AF_IdCharacteristicsText = XtVaCreateManagedWidget( "AF_IdCharacteristicsText",
462                         xmTextWidgetClass,
463                         AddFiletype,
464                         XmNheight, 90,
465                         XmNeditMode, XmMULTI_LINE_EDIT ,
466                         XmNeditable, FALSE,
467                         XmNrows, 3,
468                         XmNleftOffset, 10,
469                         XmNleftAttachment, XmATTACH_FORM,
470                         XmNtopOffset, 0,
471                         XmNtopWidget, AF_IdCharacteristicsLabel,
472                         XmNtopAttachment, XmATTACH_WIDGET,
473                         NULL );
474 #ifdef DEBUG
475         printf("AF_IdCharacteristicsText = %p\n", AF_IdCharacteristicsText);
476 #endif
477
478         /* Creation of AF_IdCharacteristicsEdit */
479         AF_IdCharacteristicsEdit = XtVaCreateManagedWidget( "AF_IdCharacteristicsEdit",
480                         xmPushButtonGadgetClass,
481                         AddFiletype,
482                         RES_CONVERT( XmNlabelString, GETMESSAGE(7, 16, "Edit...")),
483                         XmNalignment, XmALIGNMENT_BEGINNING,
484                         XmNmultiClick, XmMULTICLICK_DISCARD,
485                         XmNnavigationType, XmTAB_GROUP,
486                         XmNtraversalOn, TRUE,
487                         XmNrightOffset, 10,
488                         XmNrightAttachment, XmATTACH_FORM,
489                         XmNbottomWidget, AF_IdCharacteristicsText,
490                         XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
491                         NULL );
492         XtAddCallback( AF_IdCharacteristicsEdit, XmNactivateCallback,
493                 (XtCallbackProc) activateCB_edit_id_characteristics,
494                 (XtPointer) NULL );
495         XtRealizeWidget(AF_IdCharacteristicsEdit);
496         XtVaGetValues(AF_IdCharacteristicsEdit, XmNwidth, &dim1, NULL);
497
498         XtVaSetValues(AF_IdCharacteristicsText,
499                       XmNrightOffset, dim1 + 25,
500                       XmNrightAttachment, XmATTACH_FORM,
501                       NULL);
502
503         /* Creation of AF_FiletypeIconHelpLabel */
504         AF_FiletypeIconHelpLabel = XtVaCreateManagedWidget( "AF_FiletypeIconHelpLabel",
505                       xmLabelWidgetClass,
506                       AddFiletype,
507                       RES_CONVERT( XmNlabelString, GETMESSAGE(7, 17, "Help Text for this Datatype Icon:")),
508                       XmNalignment, XmALIGNMENT_BEGINNING,
509                       XmNleftOffset, 10,
510                       XmNleftAttachment, XmATTACH_FORM,
511                       XmNrightOffset, 10,
512                       XmNrightAttachment, XmATTACH_FORM,
513                       XmNtopOffset, 10,
514                       XmNtopWidget, AF_IdCharacteristicsText,
515                       XmNtopAttachment, XmATTACH_WIDGET,
516                       NULL );
517
518         /*
519         XtVaSetValues(AF_IdCharacteristicsText,
520                       XmNrightWidget, AF_IdCharacteristicsEdit,
521                       XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
522                       NULL);
523         */
524
525         /* Creation of AF_FiletypePrintCmdTextField */
526         AF_FiletypePrintCmdTextField = XtVaCreateManagedWidget( "AF_FiletypePrintCmdTextField",
527                         xmTextFieldWidgetClass,
528                         AddFiletype,
529                         XmNbottomOffset, 15,
530                         XmNbottomWidget, AF_OkButton,
531                         XmNbottomAttachment, XmATTACH_WIDGET,
532                         XmNleftOffset, 10,
533                         XmNleftAttachment, XmATTACH_FORM,
534                         XmNrightOffset, 10,
535                         XmNrightAttachment, XmATTACH_FORM,
536                         NULL );
537
538         /* Creation of AF_FiletypePrintCmdLabel */
539         AF_FiletypePrintCmdLabel = XtVaCreateManagedWidget( "AF_FiletypePrintCmdLabel",
540                         xmLabelWidgetClass,
541                         AddFiletype,
542                         RES_CONVERT( XmNlabelString, GETMESSAGE(7, 23, "Command to Print this Datatype:")),
543                         XmNalignment, XmALIGNMENT_BEGINNING,
544                         XmNbottomOffset, 0,
545                         XmNbottomWidget, AF_FiletypePrintCmdTextField,
546                         XmNbottomAttachment, XmATTACH_WIDGET,
547                         XmNleftOffset, 10,
548                         XmNleftAttachment, XmATTACH_FORM,
549                         XmNrightOffset, 10,
550                         XmNrightAttachment, XmATTACH_FORM,
551                         NULL );
552
553         /* Creation of AF_OpenCmdText */
554         AF_OpenCmdText = XtVaCreateManagedWidget( "AF_OpenCmdText",
555                         xmTextWidgetClass,
556                         AddFiletype,
557                         XmNeditable, FALSE,
558                         XmNbottomOffset, 15,
559                         XmNbottomWidget, AF_FiletypePrintCmdLabel,
560                         XmNbottomAttachment, XmATTACH_WIDGET,
561                         XmNleftOffset, 10,
562                         XmNleftAttachment, XmATTACH_FORM,
563                         XmNrightOffset, 10,
564                         XmNrightAttachment, XmATTACH_FORM,
565                         XmNrows, 1,
566                         XmNeditMode, XmMULTI_LINE_EDIT ,
567                         NULL );
568
569         /* Creation of AF_OpenFiletypeCmdLabel */
570         AF_OpenFiletypeCmdLabel = XtVaCreateManagedWidget( "AF_OpenFiletypeCmdLabel",
571                         xmLabelWidgetClass,
572                         AddFiletype,
573                         RES_CONVERT( XmNlabelString, GETMESSAGE(7, 22, "Command to Open this Datatype:")),
574                         XmNalignment, XmALIGNMENT_BEGINNING,
575                         XmNbottomOffset, 0,
576                         XmNbottomWidget, AF_OpenCmdText,
577                         XmNbottomAttachment, XmATTACH_WIDGET,
578                         XmNleftOffset, 10,
579                         XmNleftAttachment, XmATTACH_FORM,
580                         XmNrightOffset, 10,
581                         XmNrightAttachment, XmATTACH_FORM,
582                         NULL );
583
584         /* Creation of AF_CommandsLabel */
585         AF_CommandsLabel = XtVaCreateManagedWidget( "AF_CommandsLabel",
586                         xmLabelWidgetClass,
587                         AddFiletype,
588                         XmNalignment, XmALIGNMENT_BEGINNING,
589                         RES_CONVERT( XmNlabelString, GETMESSAGE(7, 21, "Commands")),
590                         XmNleftOffset, 10,
591                         XmNleftAttachment, XmATTACH_FORM,
592                         XmNbottomOffset, 15,
593                         XmNbottomWidget, AF_OpenFiletypeCmdLabel,
594                         XmNbottomAttachment, XmATTACH_WIDGET,
595                         NULL );
596
597         /* Creation of AF_FiletypeIconForm */
598         AF_FiletypeIconForm = XtVaCreateManagedWidget( "AF_FiletypeIconForm",
599                         xmFormWidgetClass,
600                         AddFiletype,
601                         XmNresizePolicy, XmRESIZE_NONE,
602                         XmNborderWidth, 0,
603                         XmNbottomOffset, 20,
604                         XmNbottomWidget, AF_CommandsLabel,
605                         XmNbottomAttachment, XmATTACH_WIDGET,
606                         XmNleftOffset, 10,
607                         XmNleftAttachment, XmATTACH_FORM,
608                         XmNrightOffset, 10,
609                         XmNrightAttachment, XmATTACH_FORM,
610                         XmNshadowType, XmSHADOW_ETCHED_IN,
611                         XmNshadowThickness, 3,
612                         XmNheight, 90,
613                         NULL );
614
615         AF_MED_IconForm = XtVaCreateManagedWidget( "AF_MED_IconForm",
616                         xmFormWidgetClass,
617                         AF_FiletypeIconForm,
618                         XmNresizePolicy, XmRESIZE_NONE,
619                         XmNborderWidth, ICON_BORDER_WIDTH,
620                         XmNleftPosition, 16,
621                         XmNleftOffset, 0,
622                         XmNleftAttachment, XmATTACH_POSITION,
623                         XmNbottomPosition, 88,
624                         XmNbottomOffset, 0,
625                         XmNbottomAttachment, XmATTACH_POSITION,
626                         NULL );
627
628         /* Creation of AF_MED_IconGadget */
629         emptyString = XmStringCreateLocalized("");
630
631         pIconData = (IconData *)XtMalloc(sizeof(IconData));
632         memset(pIconData, 0, sizeof(IconData));
633         IconDataList[AF_MED] = pIconData;
634         AF_MED_IconGadget = XtVaCreateManagedWidget( "AF_MED_IconGadget",
635                         dtIconGadgetClass,
636                         AF_MED_IconForm,
637                         XmNalignment, XmALIGNMENT_CENTER,
638                         XmNuserData, pIconData,
639                         XmNrecomputeSize, TRUE,
640                         XmNstring, emptyString,
641                         XmNleftOffset, BORDER_OFFSET,
642                         XmNleftAttachment, XmATTACH_FORM,
643                         XmNrightOffset, BORDER_OFFSET,
644                         XmNrightAttachment, XmATTACH_FORM,
645                         XmNtopOffset, BORDER_OFFSET,
646                         XmNtopAttachment, XmATTACH_FORM,
647                         XmNbottomOffset, BORDER_OFFSET,
648                         XmNbottomAttachment, XmATTACH_FORM,
649                         NULL );
650         pIconData->wid = AF_MED_IconGadget;
651         pIconData->size = Medium_Icon;
652         XtAddCallback( AF_MED_IconGadget, XmNcallback,
653                 (XtCallbackProc) activateCB_filetype_icon,
654                 (XtPointer) NULL );
655         createCB_IconGadget(AF_MED_IconGadget, FALSE, Medium_Icon);
656         last_filetype_pushed = AF_MED_IconGadget;
657
658         AF_TINY_IconForm = XtVaCreateManagedWidget( "AF_TINY_IconForm",
659                         xmFormWidgetClass,
660                         AF_FiletypeIconForm,
661                         XmNresizePolicy, XmRESIZE_NONE,
662                         XmNleftPosition, 41,
663                         XmNleftOffset, -1,
664                         XmNleftAttachment, XmATTACH_POSITION,
665                         XmNbottomPosition, 86,
666                         XmNbottomOffset, 0,
667                         XmNbottomAttachment, XmATTACH_POSITION,
668                         NULL );
669
670         /* Creation of AF_TINY_IconGadget */
671         pIconData = (IconData *)XtMalloc(sizeof(IconData));
672         memset(pIconData, 0, sizeof(IconData));
673         IconDataList[AF_TINY] = pIconData;
674         AF_TINY_IconGadget = XtVaCreateManagedWidget( "AF_TINY_IconGadget",
675                         dtIconGadgetClass,
676                         AF_TINY_IconForm,
677                         XmNalignment, XmALIGNMENT_CENTER,
678                         XmNuserData, pIconData,
679                         XmNrecomputeSize, TRUE,
680                         XmNstring, emptyString,
681                         XmNleftOffset, BORDER_OFFSET,
682                         XmNleftAttachment, XmATTACH_FORM,
683                         XmNrightOffset, BORDER_OFFSET,
684                         XmNrightAttachment, XmATTACH_FORM,
685                         XmNtopOffset, BORDER_OFFSET,
686                         XmNtopAttachment, XmATTACH_FORM,
687                         XmNbottomOffset, BORDER_OFFSET,
688                         XmNbottomAttachment, XmATTACH_FORM,
689                         NULL );
690         pIconData->wid = AF_TINY_IconGadget;
691         pIconData->size = Tiny_Icon;
692         XtAddCallback( AF_TINY_IconGadget, XmNcallback,
693                 (XtCallbackProc) activateCB_filetype_icon,
694                 (XtPointer) NULL );
695         createCB_IconGadget(AF_TINY_IconGadget, FALSE, Tiny_Icon);
696
697         XmStringFree(emptyString);
698
699         /* Creation of AF_FiletypeIconsEditButton */
700         AF_FiletypeIconsEditButton = XtVaCreateManagedWidget( "AF_FiletypeIconsEditButton",
701                         xmPushButtonGadgetClass,
702                         AF_FiletypeIconForm,
703                         RES_CONVERT( XmNlabelString, GETMESSAGE(6, 20, "Edit Icon...")),
704                         XmNalignment, XmALIGNMENT_BEGINNING,
705                         XmNmultiClick, XmMULTICLICK_DISCARD,
706                         /*XmNnavigationType, XmTAB_GROUP,*/
707                         XmNleftPosition, 64,
708                         XmNleftOffset, -1,
709                         XmNleftAttachment, XmATTACH_POSITION,
710                         NULL );
711         XtAddCallback( AF_FiletypeIconsEditButton, XmNactivateCallback,
712                 (XtCallbackProc) activateCB_edit_icon,
713                 (XtPointer) CA_FILETYPE_ICONS );
714
715         /* Creation of AF_FiletypeIconFindSetButton */
716         AF_FiletypeIconFindSetButton = XtVaCreateManagedWidget( "AF_FiletypeIconFindSetButton",
717                         xmPushButtonGadgetClass,
718                         AF_FiletypeIconForm,
719                         XmNx, 290,
720                         XmNy, 20,
721                         RES_CONVERT( XmNlabelString, GETMESSAGE(6, 19, "Find Set...")),
722                         XmNalignment, XmALIGNMENT_BEGINNING,
723                         /*XmNnavigationType, XmTAB_GROUP,*/
724                         XmNmultiClick, XmMULTICLICK_DISCARD,
725                         XmNleftPosition, 64,
726                         XmNleftOffset, -1,
727                         XmNleftAttachment, XmATTACH_POSITION,
728                         NULL );
729         XtAddCallback( AF_FiletypeIconFindSetButton, XmNactivateCallback,
730                 (XtCallbackProc) activateCB_open_FindSet,
731                 (XtPointer) CA_FILETYPE_ICONS );
732
733         /******************************************************************/
734         /* Determine which button is wider, attach the short one onto it  */
735         /******************************************************************/
736         XtVaGetValues(AF_FiletypeIconsEditButton, XmNwidth, &dim1, NULL);
737         XtVaGetValues(AF_FiletypeIconFindSetButton, XmNwidth, &dim2, NULL);
738         if (dim1 > dim2) {
739            XtVaSetValues(AF_FiletypeIconFindSetButton,
740                          XmNwidth, dim1,
741                          NULL);
742         } else {
743            XtVaSetValues(AF_FiletypeIconsEditButton,
744                          XmNwidth, dim2,
745                          NULL);
746         }
747         /******************************************************************/
748         /* Determine vertical positioning for findset and edit buttons    */
749         /******************************************************************/
750         /*XtRealizeWidget(AF_FiletypeIconForm);*/
751         XtVaGetValues(AF_FiletypeIconForm, XmNheight, &dim3, NULL);
752         XtVaGetValues(AF_FiletypeIconsEditButton, XmNheight, &dim1, NULL);
753         XtVaGetValues(AF_FiletypeIconFindSetButton, XmNheight, &dim2, NULL);
754 #ifdef DEBUG
755         printf("find set size = %d\n", dim2);
756         printf("edit size = %d\n", dim1);
757         printf("icon area form size = %d\n", dim3);
758 #endif
759         if ((int)(dim1 + dim2) + 3*(FINDEDIT_SPACING) > (int)dim3) {
760            XtVaSetValues(AF_FiletypeIconsEditButton,
761                          XmNbottomOffset, FINDEDIT_SPACING,
762                          XmNbottomAttachment, XmATTACH_FORM,
763                          NULL);
764            XtVaSetValues(AF_FiletypeIconFindSetButton,
765                          XmNbottomOffset, FINDEDIT_SPACING,
766                          XmNbottomWidget, AF_FiletypeIconsEditButton,
767                          XmNbottomAttachment, XmATTACH_WIDGET,
768                          XmNtopOffset, FINDEDIT_SPACING,
769                          XmNtopAttachment, XmATTACH_FORM,
770                          NULL);
771         } else {
772            XtVaSetValues(AF_FiletypeIconsEditButton,
773                          XmNtopPosition, 50,
774                          XmNtopOffset, (int)(FINDEDIT_SPACING / 2),
775                          XmNtopAttachment, XmATTACH_POSITION,
776                          NULL);
777            XtVaSetValues(AF_FiletypeIconFindSetButton,
778                          XmNbottomPosition, 50,
779                          XmNbottomOffset, (int)(FINDEDIT_SPACING / 2),
780                          XmNbottomAttachment, XmATTACH_POSITION,
781                          NULL);
782         }
783
784         /******************************************************************/
785         /* Creation of AF_FiletypeIconsBoxLabel                           */
786         /******************************************************************/
787         AF_FiletypeIconsBoxLabel = XtVaCreateManagedWidget( "AF_FiletypeIconsBoxLabel",
788                         xmLabelWidgetClass,
789                         AddFiletype,
790                         RES_CONVERT( XmNlabelString, GETMESSAGE(7, 18, "Datatype Icons:")),
791                         XmNalignment, XmALIGNMENT_BEGINNING,
792                         XmNbottomOffset, 0,
793                         XmNbottomWidget, AF_FiletypeIconForm,
794                         XmNbottomAttachment, XmATTACH_WIDGET,
795                         XmNleftOffset, 10,
796                         XmNleftAttachment, XmATTACH_FORM,
797                         XmNrightOffset, 10,
798                         XmNrightAttachment, XmATTACH_FORM,
799                         NULL );
800
801         /* Creation of AF_FiletypeHelpScrolledWindow */
802         AF_FiletypeHelpScrolledWindow = XtVaCreateManagedWidget( "AF_FiletypeHelpScrolledWindow",
803                         xmScrolledWindowWidgetClass,
804                         AddFiletype,
805                         XmNscrollingPolicy, XmAPPLICATION_DEFINED,
806                         XmNx, 10,
807                         XmNy, 226,
808                         XmNvisualPolicy, XmVARIABLE,
809                         XmNscrollBarDisplayPolicy, XmSTATIC,
810                         XmNshadowThickness, 0,
811                         XmNtopOffset, 0,
812                         XmNtopWidget, AF_FiletypeIconHelpLabel,
813                         XmNtopAttachment, XmATTACH_WIDGET,
814                         XmNbottomOffset, 10,
815                         XmNbottomWidget, AF_FiletypeIconsBoxLabel,
816                         XmNbottomAttachment, XmATTACH_WIDGET,
817                         XmNleftOffset, 10,
818                         XmNleftAttachment, XmATTACH_FORM,
819                         XmNrightOffset, 10,
820                         XmNrightAttachment, XmATTACH_FORM,
821                         XmNheight, 94,
822                         NULL );
823
824         /* Creation of AF_FiletypeHelpText */
825         AF_FiletypeHelpText = XtVaCreateManagedWidget( "AF_FiletypeHelpText",
826                         xmTextWidgetClass,
827                         AF_FiletypeHelpScrolledWindow,
828                         XmNscrollHorizontal, FALSE,
829                         XmNscrollVertical, TRUE,
830                         XmNeditMode, XmMULTI_LINE_EDIT ,
831                         XmNwordWrap, TRUE,
832                         XmNx, 19,
833                         XmNy, 0,
834                         XmNheight, 80,
835                         NULL );
836
837         /* Creation of AF_separator2 */
838         AF_separator2 = XtVaCreateManagedWidget( "AF_separator2",
839                         xmSeparatorWidgetClass,
840                         AddFiletype,
841                         XmNleftOffset, 0,
842                         XmNleftWidget, AF_CommandsLabel,
843                         XmNleftAttachment, XmATTACH_WIDGET,
844                         XmNrightOffset, 10,
845                         XmNrightAttachment, XmATTACH_FORM,
846                         XmNbottomOffset, 10,
847                         XmNbottomWidget, AF_CommandsLabel,
848                         XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
849                         NULL );
850
851 #if 0
852         /* Creation of AF_separator1 */
853         AF_separator1 = XtVaCreateManagedWidget( "AF_separator1",
854                         xmSeparatorWidgetClass,
855                         AddFiletype,
856                         XmNbottomOffset, 0,
857                         XmNbottomWidget, AF_separator2,
858                         XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
859                         XmNleftOffset, 10,
860                         XmNleftAttachment, XmATTACH_FORM,
861                         XmNrightOffset, 0,
862                         XmNrightWidget, AF_CommandsLabel,
863                         XmNrightAttachment, XmATTACH_WIDGET,
864                         NULL );
865 #endif
866
867         XtVaSetValues(AddFiletype,
868                         XmNcancelButton, AF_CancelButton,
869                         XmNdefaultButton, AF_OkButton,
870                         XmNinitialFocus, AF_FileTypeNameTextField,
871                         NULL );
872
873         XtAddCallback( AddFiletype, XmNdestroyCallback,
874                 (XtCallbackProc) UxDestroyContextCB,
875                 (XtPointer) UxAddFiletypeContext);
876
877         if (bLowRes) {
878            return ( AF_BigForm );
879         } else {
880            return ( AddFiletype );
881         }
882 }
883
884 /*******************************************************************************
885        The following is the 'Interface function' which is the
886        external entry point for creating this interface.
887        This function should be called from your application or from
888        a callback function.
889 *******************************************************************************/
890
891 Widget  create_AddFiletype(swidget _UxUxParent)
892 {
893         Widget                  rtrn;
894         _UxCAddFiletype         *UxContext;
895         Dimension               dimHeight;
896         Dimension               dimWidth;
897         Dimension               dimTmp;
898         Widget                  widScrolledWindow;
899         Widget                  widTmp;
900
901         UxAddFiletypeContext = UxContext =
902                 (_UxCAddFiletype *) UxNewContext( sizeof(_UxCAddFiletype), False );
903
904         UxParent = _UxUxParent;
905
906         rtrn = _Uxbuild_AddFiletype();
907         if (bLowRes) {
908            XtRealizeWidget(rtrn);
909            XtVaGetValues (AddFiletype,
910                           XmNheight, &dimHeight,
911                           XmNwidth, &dimWidth,
912                           NULL);
913            XtVaGetValues (rtrn,
914                           XmNuserData, &widScrolledWindow,
915                           NULL);
916            XtVaGetValues (widScrolledWindow,
917                           XmNverticalScrollBar, &widTmp,
918                           NULL);
919            XtVaGetValues (widTmp,
920                           XmNwidth, &dimTmp,
921                           NULL);
922            dimHeight += dimTmp;
923            dimWidth += dimTmp;
924
925            XtVaSetValues (rtrn,
926                           XmNheight, dimHeight,
927                           XmNwidth, dimWidth,
928                           NULL);
929         }
930         return(rtrn);
931 }
932
933 /*******************************************************************************
934        END OF FILE
935 *******************************************************************************/
936