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