1 /*   vibforms.h
2 * ===========================================================================
3 *
4 *                            PUBLIC DOMAIN NOTICE
5 *            National Center for Biotechnology Information (NCBI)
6 *
7 *  This software/database is a "United States Government Work" under the
8 *  terms of the United States Copyright Act.  It was written as part of
9 *  the author's official duties as a United States Government employee and
10 *  thus cannot be copyrighted.  This software/database is freely available
11 *  to the public for use. The National Library of Medicine and the U.S.
12 *  Government do not place any restriction on its use or reproduction.
13 *  We would, however, appreciate having the NCBI and the author cited in
14 *  any work or product based on this material
15 *
16 *  Although all reasonable efforts have been taken to ensure the accuracy
17 *  and reliability of the software and data, the NLM and the U.S.
18 *  Government do not and cannot warrant the performance or results that
19 *  may be obtained by using this software or data. The NLM and the U.S.
20 *  Government disclaim all warranties, express or implied, including
21 *  warranties of performance, merchantability or fitness for any particular
22 *  purpose.
23 *
24 * ===========================================================================
25 *
26 * File Name:  vibforms.h
27 *
28 * Author:  Jonathan Kans, Sergei Egorov (EnumPopup code)
29 *
30 * Version Creation Date:   1/22/95
31 *
32 * $Revision: 6.22 $
33 *
34 * File Description:
35 *
36 * Modifications:
37 * --------------------------------------------------------------------------
38 *
39 * ==========================================================================
40 */
41 
42 #ifndef _VIBFORMS_
43 #define _VIBFORMS_
44 
45 #ifndef _VIBRANT_
46 #include <vibrant.h>
47 #endif
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
53 
54 typedef Nlm_Int4 Nlm_UIEnum, PNTR Nlm_UIEnumPtr;
55 
56 typedef struct Nlm_enum_field_assoc {
57    Nlm_CharPtr name;
58    Nlm_UIEnum value;
59 } Nlm_EnumFieldAssoc, PNTR Nlm_EnumFieldAssocPtr, Nlm_EnumFieldAlist[];
60 
61 #define ENUM_ALIST(name) Nlm_EnumFieldAssoc name[] = {
62 #define END_ENUM_ALIST { NULL, 0 } };
63 
64 #ifdef WIN_MAC
65 extern Pointer Nlm_currentFormDataPtr;
66 extern Nlm_IteM PNTR Nlm_globalMenuItemList;
67 extern Nlm_Int2 Nlm_globalMenuListSize;
68 #endif
69 
70 /* enum value -> name */
71 extern Nlm_CharPtr Nlm_GetEnumName (Nlm_UIEnum val, Nlm_EnumFieldAssocPtr al);
72 
73 /* enum field <-> popup list UI */
74 /* returns TRUE and enum in pdef if default is selected */
75 extern Nlm_Boolean Nlm_InitEnumPopup (Nlm_PopuP lst, Nlm_EnumFieldAssocPtr al, Nlm_UIEnumPtr pdef);
76 extern void Nlm_SetEnumPopup (Nlm_PopuP lst, Nlm_EnumFieldAssocPtr al, Nlm_UIEnum val);
77 /* returns TRUE and enum in pdef if selection exists */
78 extern Nlm_Boolean Nlm_GetEnumPopup (Nlm_PopuP lst, Nlm_EnumFieldAssocPtr al, Nlm_UIEnumPtr pval);
79 
80 extern Nlm_CharPtr Nlm_GetEnumPopupByName (Nlm_PopuP lst, Nlm_EnumFieldAssocPtr al);
81 extern void Nlm_SetEnumPopupByName (Nlm_PopuP lst, Nlm_EnumFieldAssocPtr al, Nlm_CharPtr name);
82 
83 extern Nlm_Boolean Nlm_WhereInEnumPopup (Nlm_EnumFieldAssocPtr al, Nlm_CharPtr name, Nlm_UIEnumPtr pval);
84 extern void Nlm_SortEnumFieldAlist (Nlm_EnumFieldAssocPtr alist);
85 extern Nlm_EnumFieldAssocPtr Nlm_DuplicateEnumFieldAlist (Nlm_EnumFieldAssocPtr alist);
86 extern Nlm_EnumFieldAssocPtr Nlm_FreeEnumFieldAlist (Nlm_EnumFieldAssocPtr alist);
87 extern Nlm_EnumFieldAssocPtr Nlm_MakeEnumFieldAlistFromValNodeList (ValNodePtr vlist);
88 
89 /* convenience functions that create the popup, set extra object data, init the popup, and set the value */
90 extern Nlm_PopuP Nlm_CreateEnumPopupListInitVal (Nlm_GrouP prnt, Nlm_Boolean macLike, Nlm_PupActnProc actn,
91                                                  Nlm_VoidPtr data, Nlm_EnumFieldAssocPtr al, Nlm_UIEnum val);
92 extern Nlm_PopuP Nlm_CreateEnumPopupListInitName (Nlm_GrouP prnt, Nlm_Boolean macLike, Nlm_PupActnProc actn,
93                                                   Nlm_VoidPtr data, Nlm_EnumFieldAssocPtr al, Nlm_CharPtr name);
94 
95 typedef void (*Nlm_HandleActnProc) PROTO((Nlm_Handle));
96 void CDECL Nlm_RepeatProcOnHandles VPROTO((Nlm_HandleActnProc proc, ...));
97 
98 extern void Nlm_SafeShow (Nlm_Handle a);
99 extern void Nlm_SafeHide (Nlm_Handle a);
100 extern void Nlm_SafeEnable (Nlm_Handle a);
101 extern void Nlm_SafeDisable (Nlm_Handle a);
102 extern void Nlm_SafeSetValue (Nlm_Handle a, Nlm_Int2 value);
103 extern void Nlm_SafeSetStatus (Nlm_Handle a, Nlm_Boolean status);
104 extern void Nlm_SafeSetTitle (Nlm_Handle a, Nlm_CharPtr title);
105 
106 extern Nlm_CharPtr Nlm_SaveStringFromText (Nlm_TexT t);
107 extern Nlm_CharPtr Nlm_JustSaveStringFromText (Nlm_TexT t);
108 extern ValNodePtr Nlm_SetTextFromVnp (Nlm_TexT t, ValNodePtr vnp);
109 extern ValNodePtr Nlm_GetVnpFromText (Nlm_TexT t, ValNodePtr vnp, Nlm_Boolean last);
110 extern Nlm_Int2 Nlm_MaxStringWidths (Nlm_CharPtr PNTR strs);
111 extern Nlm_CharPtr Nlm_WidestString (Nlm_CharPtr PNTR strs);
112 extern Nlm_Int2 Nlm_MaxAlistWidths (Nlm_EnumFieldAssocPtr al);
113 extern Nlm_CharPtr Nlm_WidestAlist (Nlm_EnumFieldAssocPtr al);
114 extern Nlm_GrouP Nlm_MultiLinePrompt (Nlm_GrouP prnt, Nlm_CharPtr text, Nlm_Int2 maxWidth, Nlm_FonT font);
115 extern Nlm_GrouP Nlm_MultiLinePromptEx (Nlm_GrouP prnt, Nlm_CharPtr text, Nlm_Int2 maxWidth, Nlm_FonT font, Nlm_Boolean stripSpaces);
116 
117 extern void Nlm_JustInvalObject (Nlm_Handle a);
118 
119 /* extern Nlm_CharPtr Nlm_TrimSpacesAroundString (Nlm_CharPtr str);  - now in ncbistr.h */
120 /* extern Nlm_Boolean Nlm_StringHasNoText (Nlm_CharPtr str); - now in ncbistr.h */
121 extern Nlm_Boolean Nlm_TextHasNoText (Nlm_TexT t);
122 
123 /*****************************************************************************
124 *
125 *   DialoG is a stand-alone Vibrant complex object.
126 *
127 *****************************************************************************/
128 
129 typedef  struct  Nlm_dialog {
130   Nlm_VoidPtr  dummy;
131 } HNDL Nlm_DialoG;
132 
133 typedef void (*Nlm_ToDialogFunc) (Nlm_DialoG, Pointer);
134 typedef Pointer (*Nlm_FromDialogFunc) (Nlm_DialoG);
135 typedef void (*Nlm_DialogActnFunc) (Nlm_DialoG);
136 typedef ValNodePtr (*Nlm_DialogTestFunc) (Nlm_DialoG);
137 typedef void (*Nlm_DialogMessageFunc) (Nlm_DialoG, Nlm_Int2);
138 typedef Nlm_Boolean (*Nlm_DialogInOutFunc) (Nlm_DialoG, Nlm_CharPtr filename);
139 
140 /*
141   Place DIALOG_MESSAGE_BLOCK at the head of the
142   dialog-specific extra object data structure
143 */
144 
145 #define DIALOG_MESSAGE_BLOCK       \
146   Nlm_DialoG             dialog;          \
147   Nlm_DialogActnFunc     actproc;         \
148   Nlm_ToDialogFunc       todialog;        \
149   Nlm_FromDialogFunc     fromdialog;      \
150   Nlm_DialogTestFunc     testdialog;      \
151   Nlm_DialogMessageFunc  dialogmessage;   \
152   Nlm_DialogInOutFunc    importdialog;    \
153   Nlm_DialogInOutFunc    exportdialog;    \
154   Nlm_Int4               intvalue;        \
155   Nlm_VoidPtr            userdata;
156 
157 typedef struct Nlm_basedialog {
158   DIALOG_MESSAGE_BLOCK
159 } PNTR Nlm_BaseDialogPtr;
160 
161 extern void Nlm_PointerToDialog (Nlm_DialoG d, Pointer data);
162 extern Pointer Nlm_DialogToPointer (Nlm_DialoG d);
163 extern ValNodePtr Nlm_TestDialog (Nlm_DialoG d);
164 extern void Nlm_SendMessageToDialog (Nlm_DialoG d, Nlm_Int2 mssg);
165 extern Nlm_Boolean Nlm_ImportDialog (Nlm_DialoG d, Nlm_CharPtr filename);
166 extern Nlm_Boolean Nlm_ExportDialog (Nlm_DialoG d, Nlm_CharPtr filename);
167 
168 extern void Nlm_SetDialogActnProc (Nlm_DialoG d, Nlm_DialogActnFunc actproc);
169 
170 /* popup list autonomous dialogs - copies alist, frees on cleanup */
171 
172 typedef struct alistdialogdata {
173   DIALOG_MESSAGE_BLOCK
174   Nlm_PopuP                pop;
175   Nlm_EnumFieldAssoc PNTR  alist;
176 } Nlm_AlistDialogData, PNTR Nlm_AlistDialogPtr;
177 
178 /* convenience function that creates enumerated popup as a dialog, copies alist, cleans up on freeing */
179 extern Nlm_PopuP Nlm_CreateEnumPopupDialog (Nlm_GrouP prnt, Nlm_Boolean macLike, Nlm_PupActnProc actn,
180                                             Nlm_EnumFieldAssocPtr al, Nlm_UIEnum val, Pointer userdata);
181 
182 /* convenience function that creates enumerated single list as a dialog, copies alist, cleans up on freeing */
183 extern Nlm_LisT Nlm_CreateEnumListDialog (Nlm_GrouP prnt, Nlm_Int2 width, Nlm_Int2 height, Nlm_LstActnProc actn,
184                                           Nlm_EnumFieldAssocPtr al, Nlm_UIEnum val, Pointer userdata);
185 /*****************************************************************************
186 *
187 *   A form is a general collection of associated Vibrant objects.
188 *   Like the DialoG, a handle to which ObjectExtra data is attached,
189 *   the ForM is itself a window to which data is attached.
190 *
191 *****************************************************************************/
192 
193 typedef  struct  Nlm_form {
194   Nlm_VoidPtr  dummy;
195 } HNDL Nlm_ForM;
196 
197 typedef void (*Nlm_ToFormFunc) (Nlm_ForM, Pointer);
198 typedef Pointer (*Nlm_FromFormFunc) (Nlm_ForM);
199 typedef void (*Nlm_FormActnFunc) (Nlm_ForM);
200 typedef ValNodePtr (*Nlm_FormTestFunc) (Nlm_ForM);
201 typedef void (*Nlm_FormMessageFunc) (Nlm_ForM, Nlm_Int2);
202 typedef Nlm_Boolean (*Nlm_FormInOutFunc) (Nlm_ForM, Nlm_CharPtr filename);
203 
204 #define FORM_MESSAGE_BLOCK         \
205   Nlm_ForM             form;            \
206   Nlm_FormActnFunc     actproc;         \
207   Nlm_ToFormFunc       toform;          \
208   Nlm_FromFormFunc     fromform;        \
209   Nlm_FormTestFunc     testform;        \
210   Nlm_FormMessageFunc  formmessage;     \
211   Nlm_FormInOutFunc    importform;      \
212   Nlm_FormInOutFunc    exportform;      \
213   Nlm_IteM PNTR        menuitemlist;    \
214   Nlm_Int2             menulistsize;    \
215   Nlm_FormMessageFunc  appmessage;      \
216   Nlm_Uint2            input_entityID;  \
217   Nlm_Uint4            input_itemID;    \
218   Nlm_Uint2            input_itemtype;  \
219   Nlm_Uint2            this_itemtype;   \
220   Nlm_Uint2            this_subtype;    \
221   Nlm_Uint2            procid;          \
222   Nlm_Uint2            proctype;        \
223   BIG_ID               docuid;          \
224   Nlm_Int2             doctype;         \
225   Nlm_VoidPtr          objectDataPtr;   \
226   Nlm_VoidPtr          userDataPtr;     \
227   Nlm_FreeProc         cleanupuser;     \
228   Nlm_Uint2            userkey;         \
229   Nlm_CharPtr          filepath;        \
230   WndActnProc          activate;
231 
232 typedef struct Nlm_baseform {
233   FORM_MESSAGE_BLOCK
234 } PNTR Nlm_BaseFormPtr;
235 
236 extern void Nlm_PointerToForm (Nlm_ForM f, Pointer data);
237 extern Pointer Nlm_FormToPointer (Nlm_ForM f);
238 extern ValNodePtr Nlm_TestForm (Nlm_ForM f);
239 extern void Nlm_SendMessageToForm (Nlm_ForM f, Nlm_Int2 mssg);
240 extern Nlm_Boolean Nlm_ImportForm (Nlm_ForM f, Nlm_CharPtr filename);
241 extern Nlm_Boolean Nlm_ExportForm (Nlm_ForM f, Nlm_CharPtr filename);
242 
243 
244 /* The following functions remove a window */
245 extern void Nlm_StdCloseWindowProc (Nlm_WindoW w);
246 extern void Nlm_StdCancelButtonProc (Nlm_ButtoN b);
247 
248 /* The following functions instead send a VIB_MSG_CLOSE message to a form */
249 extern void Nlm_StdSendCloseWindowMessageProc (Nlm_WindoW w);
250 extern void Nlm_StdSendCancelButtonMessageProc (Nlm_ButtoN b);
251 
252 extern void Nlm_SetFormActnProc (Nlm_ForM f, Nlm_FormActnFunc actproc);
253 
254 /* StdAcceptFormButtonProc hides the form, calls the actproc, and removes the form */
255 /* StdSendAcceptButtonMessageProc instead sends a VIB_MSG_ACCEPT message to a form */
256 extern void Nlm_StdAcceptFormButtonProc (Nlm_ButtoN b);
257 extern void Nlm_StdSendAcceptButtonMessageProc (Nlm_ButtoN b);
258 
259 /* StdCleanupExtraProc MemFree's the extra data */
260 /* StdCleanupFormProc MemFree's the menuitemlist and then the extra data */
261 extern void Nlm_StdCleanupExtraProc (Nlm_GraphiC g, Nlm_VoidPtr data);
262 extern void Nlm_StdCleanupFormProc (Nlm_GraphiC g, Nlm_VoidPtr data);
263 
264 /*****************************************************************************
265 *
266 *   Messages are meant to be passed to dialogs and forms.  Some messages are
267 *   sent by the application (e.g., init, enter, reset, redraw), while most are
268 *   from menu items.  Numbers greater than NUM_VIB_MSG may be used by individual
269 *   applications, but note that NUM_VIB_MSG may change over time, so application
270 *   messages should be defined as NUM_VIB_MSG + ###.
271 *
272 *   Forms can handle some messages, and could be designed to pass others back to
273 *   the application (e.g., communicated via an app property pointer, and set in
274 *   the form's appmessage slot) for special servicing.
275 *
276 *****************************************************************************/
277 
278 #define VIB_MSG_INIT     1
279 #define VIB_MSG_ENTER    2
280 #define VIB_MSG_RESET    3
281 #define VIB_MSG_REDRAW   4
282 
283 #define VIB_MSG_NEW      6
284 #define VIB_MSG_OPEN     7
285 #define VIB_MSG_SAVE     8
286 #define VIB_MSG_SAVE_AS  9
287 #define VIB_MSG_CLOSE   10
288 #define VIB_MSG_QUIT    11
289 #define VIB_MSG_ACCEPT  12
290 
291 #define VIB_MSG_IMPORT  15
292 #define VIB_MSG_EXPORT  16
293 #define VIB_MSG_PRINT   17
294 #define VIB_MSG_ABOUT   18
295 #define VIB_MSG_HELP    19
296 
297 
298 #define VIB_MSG_CUT     21
299 #define VIB_MSG_COPY    22
300 #define VIB_MSG_PASTE   23
301 #define VIB_MSG_DELETE  24
302 #define VIB_MSG_UNDO    25
303 
304 #define VIB_MSG_CHANGE  27
305 #define VIB_MSG_SELECT  28
306 
307 #define NUM_VIB_MSG     30
308 
309 /*****************************************************************************
310 *
311 *   FormCommandItem creates a menu item whose action is to send the designated
312 *   message to the specified form.  It will register the item handle in the
313 *   form's menuitemlist, or in the Mac's globalMenuItemList.  These handles can
314 *   then be accessed for disable/enable or for changing the item title.
315 *
316 *****************************************************************************/
317 
318 extern Nlm_IteM Nlm_FormCommandItem (Nlm_MenU m, Nlm_CharPtr title, Nlm_BaseFormPtr bfp, Nlm_Int2 mssg);
319 extern Nlm_IteM Nlm_FindFormMenuItem (Nlm_BaseFormPtr bfp, Nlm_Int2 mssg);
320 extern void Nlm_SetFormMenuItem (Nlm_BaseFormPtr bfp, Nlm_Int2 mssg, Nlm_IteM itm);
321 extern Nlm_Int2 Nlm_RegisterFormMenuItemName (Nlm_CharPtr title);
322 
323 /*****************************************************************************
324 *
325 *   Folder tabs object is implemented as an opaque dialog.  Tool bar has a
326 *   slightly different appearance.  Folder tabs should be used in forms where
327 *   every page should be visited.  Tool bars are for viewers where different
328 *   formats are shown in different pages.
329 *
330 *****************************************************************************/
331 
332 typedef void (*Nlm_TabActnProc) (Nlm_VoidPtr, Nlm_Int2, Nlm_Int2);
333 
334 extern Nlm_DialoG Nlm_CreateFolderTabs (Nlm_GrouP h, Nlm_CharPtr PNTR titles, Nlm_Int2 initPage,
335                                         Nlm_Int2 maxPerLine, Nlm_Int2 indentNextLine,
336                                         Nlm_FonT font, Nlm_Int2 horizMargin, Nlm_Int2 vertMargin,
337                                         Nlm_Int2 spaceBtwn, Nlm_Int2 cornerTaper, Nlm_Int2 endExt,
338                                         Nlm_TabActnProc changeView, Pointer userdata);
339 #ifdef WIN_MSWIN
340 #define SYSTEM_FOLDER_TAB programFont,20,5,2,6,10
341 #define PROGRAM_FOLDER_TAB systemFont,10,5,2,4,5
342 #else
343 #define SYSTEM_FOLDER_TAB systemFont,20,5,2,6,10
344 #define PROGRAM_FOLDER_TAB programFont,10,5,2,4,5
345 #endif
346 
347 extern void Nlm_ReleaseFolderTabButtons (Nlm_PaneL p, Nlm_PoinT pt);
348 extern void Nlm_SetFolderTabButton (Nlm_GraphiC a, Nlm_Int2 value, Nlm_Boolean savePort);
349 extern Nlm_DialoG Nlm_CreateFolderTabButtons (Nlm_GrouP h, Nlm_CharPtr PNTR titles, Nlm_Int2 initPage,
350 					  Nlm_Int2 maxPerLine, Nlm_Int2 indentNextLine,
351 					  Nlm_FonT font, Nlm_Int2 horizMargin, Nlm_Int2 vertMargin,
352 					  Nlm_Int2 spaceBtwn, Nlm_Int2 cornerTaper, Nlm_Int2 endExt,
353 					  Nlm_TabActnProc changeView, Pointer userdata);
354 extern void Nlm_SetFolderTabTitle (Nlm_DialoG dialog, Nlm_Int2 iTab, Nlm_CharPtr title);
355 
356 extern Nlm_DialoG Nlm_CreateTextTabs (Nlm_GrouP h, Nlm_CharPtr PNTR titles, Nlm_Int2 initPage,
357                                       Nlm_Int2 maxPerLine, Nlm_Int2 indentNextLine,
358                                       Nlm_FonT font, Nlm_Int2 horizMargin, Nlm_Int2 vertMargin,
359                                       Nlm_Int2 spaceBtwn, Nlm_TabActnProc changeView,
360                                       Pointer userdata);
361 
362 #define SYSTEM_TEXT_TAB systemFont,16,16,5
363 #define PROGRAM_TEXT_TAB programFont,14,14,5
364 
365 /*****************************************************************************
366 *
367 *   A tag list is an arbitrary opaque spreadsheet dialog.
368 *
369 *****************************************************************************/
370 
371 #define MAX_TAGLIST_ROWS   8
372 #define MAX_TAGLIST_COLS   12
373 #define STD_TAG_SPACING    2
374 
375 #define TAGLIST_TEXT     1
376 #define TAGLIST_POPUP    2
377 #define TAGLIST_LIST     3
378 #define TAGLIST_PROMPT   4
379 
380 typedef void (*TaglistCallback) PROTO ((Pointer userdata));
381 
382 typedef struct Nlm_taglist {
383   DIALOG_MESSAGE_BLOCK
384   Nlm_Int2               rows;
385   Nlm_Int2               cols;
386   Nlm_Uint2Ptr           types;
387   Nlm_Handle             control [MAX_TAGLIST_ROWS * MAX_TAGLIST_COLS];
388   Nlm_EnumFieldAssocPtr  PNTR alists;
389   Nlm_BaR                bar;
390   Nlm_BaR                left_bar;
391   Nlm_Int2               max;
392   Nlm_Boolean            noExtend;
393   ValNodePtr             vnp;
394   TaglistCallback        PNTR callbacks;
395   Pointer                callback_data;
396   ButtoN                 clear_btns [MAX_TAGLIST_ROWS];
397   Boolean                ask_before_clear;
398 } Nlm_TagList, PNTR Nlm_TagListPtr;
399 
400 extern Nlm_DialoG Nlm_CreateTagListDialog (Nlm_GrouP h, Nlm_Uint2 rows, Nlm_Uint2 cols,
401                                            Nlm_Int2 spacing, Nlm_Uint2Ptr types,
402                                            Nlm_Uint2Ptr textWidths,
403                                            Nlm_EnumFieldAssocPtr PNTR alists,
404                                            Nlm_ToDialogFunc tofunc, Nlm_FromDialogFunc fromfunc);
405 
406 extern Nlm_DialoG CreateTagListDialogEx (Nlm_GrouP h, Nlm_Uint2 rows, Nlm_Uint2 cols,
407                                          Nlm_Int2 spacing, Nlm_Uint2Ptr types,
408                                          Nlm_Uint2Ptr textWidths, Nlm_EnumFieldAssocPtr PNTR alists,
409                                          Nlm_Boolean useBar, Nlm_Boolean noExtend,
410                                          Nlm_ToDialogFunc tofunc, Nlm_FromDialogFunc fromfunc);
411 
412 extern Nlm_DialoG CreateTagListDialogExEx (Nlm_GrouP h, Nlm_Uint2 rows, Nlm_Uint2 cols,
413                                        Nlm_Int2 spacing, Nlm_Uint2Ptr types,
414                                        Nlm_Uint2Ptr textWidths, Nlm_EnumFieldAssocPtr PNTR alists,
415                                        Nlm_Boolean useBar, Nlm_Boolean noExtend,
416                                        Nlm_ToDialogFunc tofunc, Nlm_FromDialogFunc fromfunc,
417                                        TaglistCallback PNTR callbacks, Pointer callback_data,
418                                        Boolean useLeftBar);
419 
420 extern Nlm_DialoG CreateTagListDialogEx3 (Nlm_GrouP h, Nlm_Uint2 rows, Nlm_Uint2 cols,
421                                        Nlm_Int2 spacing, Nlm_Uint2Ptr types,
422                                        Nlm_Uint2Ptr textWidths, Nlm_EnumFieldAssocPtr PNTR alists,
423                                        Nlm_Boolean useBar, Nlm_Boolean noExtend,
424                                        Nlm_ToDialogFunc tofunc, Nlm_FromDialogFunc fromfunc,
425                                        TaglistCallback PNTR callbacks, Pointer callback_data,
426                                        Boolean useLeftBar, Boolean useClearBtns);
427 
428 extern Nlm_CharPtr Nlm_ExtractTagListColumn (Nlm_CharPtr source, Nlm_Int2 col);
429 extern Nlm_CharPtr ReplaceTagListColumn (CharPtr source, CharPtr new_value, Int2 col);
430 
431 #ifdef WIN_MAC
432 #define currentFormDataPtr Nlm_currentFormDataPtr
433 #define globalMenuItemList Nlm_globalMenuItemList
434 #define globalMenuListSize Nlm_globalMenuListSize
435 #endif
436 #define UIEnum Nlm_UIEnum
437 #define UIEnumPtr Nlm_UIEnumPtr
438 #define EnumFieldAssoc Nlm_EnumFieldAssoc
439 #define EnumFieldAssocPtr Nlm_EnumFieldAssocPtr
440 #define EnumFieldAlist Nlm_EnumFieldAlist
441 #define GetEnumName Nlm_GetEnumName
442 #define InitEnumPopup Nlm_InitEnumPopup
443 #define SetEnumPopup Nlm_SetEnumPopup
444 #define GetEnumPopup Nlm_GetEnumPopup
445 #define GetEnumPopupByName Nlm_GetEnumPopupByName
446 #define SetEnumPopupByName Nlm_SetEnumPopupByName
447 #define WhereInEnumPopup Nlm_WhereInEnumPopup
448 #define SortEnumFieldAlist Nlm_SortEnumFieldAlist
449 #define DuplicateEnumFieldAlist Nlm_DuplicateEnumFieldAlist
450 #define FreeEnumFieldAlist Nlm_FreeEnumFieldAlist
451 #define MakeEnumFieldAlistFromValNodeList Nlm_MakeEnumFieldAlistFromValNodeList
452 #define CreateEnumPopupListInitVal Nlm_CreateEnumPopupListInitVal
453 #define CreateEnumPopupListInitName Nlm_CreateEnumPopupListInitName
454 #define HandleActnProc Nlm_HandleActnProc
455 #define RepeatProcOnHandles Nlm_RepeatProcOnHandles
456 #define SafeShow Nlm_SafeShow
457 #define SafeHide Nlm_SafeHide
458 #define SafeEnable Nlm_SafeEnable
459 #define SafeDisable Nlm_SafeDisable
460 #define SafeSetValue Nlm_SafeSetValue
461 #define SafeSetStatus Nlm_SafeSetStatus
462 #define SafeSetTitle Nlm_SafeSetTitle
463 #define TrimSpacesAroundString Nlm_TrimSpacesAroundString
464 #define SaveStringFromText Nlm_SaveStringFromText
465 #define JustSaveStringFromText Nlm_JustSaveStringFromText
466 #define SetTextFromVnp Nlm_SetTextFromVnp
467 #define GetVnpFromText Nlm_GetVnpFromText
468 #define MaxStringWidths Nlm_MaxStringWidths
469 #define WidestString Nlm_WidestString
470 #define MaxAlistWidths Nlm_MaxAlistWidths
471 #define WidestAlist Nlm_WidestAlist
472 #define MultiLinePrompt Nlm_MultiLinePrompt
473 #define MultiLinePromptEx Nlm_MultiLinePromptEx
474 #define JustInvalObject Nlm_JustInvalObject
475 #define StringHasNoText Nlm_StringHasNoText
476 #define TextHasNoText Nlm_TextHasNoText
477 #define DialoG Nlm_DialoG
478 #define ToDialogFunc Nlm_ToDialogFunc
479 #define FromDialogFunc Nlm_FromDialogFunc
480 #define DialogActnFunc Nlm_DialogActnFunc
481 #define DialogTestFunc Nlm_DialogTestFunc
482 #define DialogMessageFunc Nlm_DialogMessageFunc
483 #define DialogInOutFunc Nlm_DialogInOutFunc
484 #define BaseDialogPtr Nlm_BaseDialogPtr
485 #define PointerToDialog Nlm_PointerToDialog
486 #define DialogToPointer Nlm_DialogToPointer
487 #define TestDialog Nlm_TestDialog
488 #define SendMessageToDialog Nlm_SendMessageToDialog
489 #define ImportDialog Nlm_ImportDialog
490 #define ExportDialog Nlm_ExportDialog
491 #define SetDialogActnProc Nlm_SetDialogActnProc
492 #define AlistDialogData Nlm_AlistDialogData
493 #define AlistDialogPtr Nlm_AlistDialogPtr
494 #define CreateEnumPopupDialog Nlm_CreateEnumPopupDialog
495 #define CreateEnumListDialog Nlm_CreateEnumListDialog
496 #define ForM Nlm_ForM
497 #define ToFormFunc Nlm_ToFormFunc
498 #define FromFormFunc Nlm_FromFormFunc
499 #define FormActnFunc Nlm_FormActnFunc
500 #define FormTestFunc Nlm_FormTestFunc
501 #define FormMessageFunc Nlm_FormMessageFunc
502 #define FormInOutFunc Nlm_FormInOutFunc
503 #define BaseFormPtr Nlm_BaseFormPtr
504 #define PointerToForm Nlm_PointerToForm
505 #define FormToPointer Nlm_FormToPointer
506 #define TestForm Nlm_TestForm
507 #define SendMessageToForm Nlm_SendMessageToForm
508 #define ImportForm Nlm_ImportForm
509 #define ExportForm Nlm_ExportForm
510 #define StdCloseWindowProc Nlm_StdCloseWindowProc
511 #define StdCancelButtonProc Nlm_StdCancelButtonProc
512 #define StdSendCloseWindowMessageProc Nlm_StdSendCloseWindowMessageProc
513 #define StdSendCancelButtonMessageProc Nlm_StdSendCancelButtonMessageProc
514 #define SetFormActnProc Nlm_SetFormActnProc
515 #define StdAcceptFormButtonProc Nlm_StdAcceptFormButtonProc
516 #define StdSendAcceptButtonMessageProc Nlm_StdSendAcceptButtonMessageProc
517 #define StdCleanupExtraProc Nlm_StdCleanupExtraProc
518 #define StdCleanupFormProc Nlm_StdCleanupFormProc
519 #define TabActnProc Nlm_TabActnProc
520 #define FormCommandItem Nlm_FormCommandItem
521 #define FindFormMenuItem Nlm_FindFormMenuItem
522 #define SetFormMenuItem Nlm_SetFormMenuItem
523 #define RegisterFormMenuItemName Nlm_RegisterFormMenuItemName
524 #define CreateFolderTabs Nlm_CreateFolderTabs
525 #define ReleaseFolderTabButtons Nlm_ReleaseFolderTabButtons
526 #define SetFolderTabButton Nlm_SetFolderTabButton
527 #define CreateFolderTabButtons Nlm_CreateFolderTabButtons
528 #define SetFolderTabTitle Nlm_SetFolderTabTitle
529 #define CreateTextTabs Nlm_CreateTextTabs
530 #define TagList Nlm_TagList
531 #define TagListPtr Nlm_TagListPtr
532 #define CreateTagListDialog Nlm_CreateTagListDialog
533 #define ExtractTagListColumn Nlm_ExtractTagListColumn
534 
535 #ifdef __cplusplus
536 }
537 #endif
538 
539 #endif /* ndef _DLOGUTIL_ */
540 
541