1 /*********************************************************************/
2 /*  bibView: Administration of BibTeX-Databases                      */
3 /*           (Verwaltung von BibTeX-Literaturdatenbanken)            */
4 /*                                                                   */
5 /*  Module:  bibview.h                                               */
6 /*                                                                   */
7 /*             - Headerfile                                          */
8 /*             -                                                     */
9 /*                                                                   */
10 /*  Author:  Holger Martin,  martinh@informatik.tu-muenchen.de       */
11 /*           Peter M. Urban, urban@informatik.tu-muenchen.de         */
12 /*                                                                   */
13 /*  History:                                                         */
14 /*    11.22.91  PMU  created                                         */
15 /*    05.26.92       Version 1.0 released                            */
16 /*                                                                   */
17 /*  Copyright 1991 Martin, Urban                                     */
18 /*    See ./Copyright for complete rights and liability information. */
19 /*                                                                   */
20 /*********************************************************************/
21 
22 #include "patchlevel.h"
23 
24 /* Macros and Definitions */
25 /* ---------------------- */
26 
27 /* general stuff */
28 #define PROGNAME	   "bibView"
29 #define DEFAULT_RCFILE     ".bibviewrc"
30 #define MAX_BIBTEX_TYPES   30
31 #define MAX_FIELDS         80
32 #define MAX_ICONNAMELEN	   25
33 #define MAX_FILEPATHLEN    1024
34 #define MAX_FILENAMELEN    256
35 #define MAX_OPENFILE       256
36 #define MAXTREEROOTS       MAX_OPENFILE
37 #define MAX_NEW_USERDEF_FLDS 3
38 #define MAX_LINELEN        80
39 #define MAX_ERRORSTRLEN    1000
40 #define MAX_ERRLINELENGTH  80
41 #define MAX_UEBERGABE      10000
42 #define FLDINDENT          3
43 #define CONTINDENT         15
44 #define NEWLINEINDENT      7
45 #define OK		   1
46 
47 /* defines for window spacing */
48 #define BIBWIN_MARGIN	   20
49 #define SUBWIN_MARGIN	   20
50 #define BV_ICON_MARGIN	   10
51 #define BV_ICON_WIDTH	   75
52 #define LST_ICON_WIDTH	   75
53 #define LST_ICON_MARGIN	   10
54 #define CARDWIN_MARGIN     20
55 #define CARD_ICON_MARGIN   10
56 #define CARD_ICON_WIDTH	   75
57 #define BIBWIN_HSPACE	   40
58 #define BIBWIN_VSPACE	   60
59 #define CARDWIN_HSPACE	   40
60 #define CARDWIN_VSPACE	   40
61 
62 #define LST_WHITESPACE		5
63 
64 /* errors of type Errcode */
65 typedef int Errcode;  /* return type for error codes */
66 
67 /* general errors */
68 #define ERR_NOT_IMPLEMENTED     -10
69 #define ERR_NOMALLOC            -11
70 #define ERR_NOBIB               -12
71 #define ERR_NOCARD              -13
72 #define ERR_NOBIBOPEN		-14
73 #define ERR_COLL_SAME_BIB       -15
74 #define ERR_COPY_SAME_BIB       -16
75 #define ERR_COPY_SAME_LIST      -17
76 #define ERR_CROSSEMPTY      	-18
77 #define ERR_CROSSNOTFOUND      	-19
78 
79 
80 /* gui errors */
81 #define ERR_NOCASCADE		-30
82 
83 /* file errors */
84 #define ERR_NO_OPEN_FILE        -50
85 #define ERR_NO_CFGFILE          -51
86 #define ERR_NO_OPEN_TMP         -52
87 #define ERR_SAVING_TMP          -53
88 #define ERR_IS_CORRECTED        -54
89 #define NO_VALID_FILENAME       -56
90 #define BIF_OK  		1
91 #define BIF_ECALLOC 		-11
92 #define BIF_EWRITE  		-55
93 #define BIF_EOPEN   		-50
94 #define BIF_ENOTEXISTS   	-57
95 
96 /* card errors */
97 #define ERR_ILLEGAL_CARDS       -60
98 #define ERR_NO_ILLEGAL_CARDS    -61
99 #define ERR_ERROR_IN_FILE	-62
100 #define ERR_REQFIELDS           -63
101 #define SYNTAX_ERROR	        -64
102 
103 /* database tree errors */
104 #define DBT_OK                    1
105 #define DBT_ECALLOC             -11
106 #define DBT_EDUPKEY             -100
107 #define DBT_ECOMP               -101
108 #define DBT_ENOMATCH            -102
109 #define DBT_ENOCARD             -103
110 #define DBT_EAUTHOR_EDITOR      -114
111 #define DBT_ECHAPTER_PAGES      -115
112 #define DBT_ROOTSFULL           -120
113 #define DBT_ENONODE             -121
114 
115 
116 /* structure for single linked list of strings */
117 typedef struct _ListNode {
118    String data;
119    struct _ListNode *next;
120 } ListNode;
121 
122 /* structure to hold lists of predefined field data */
123 typedef struct {
124    ListNode *allfields,
125 	    *bibtype,
126 	    *mainkey;
127    ListNode *field[MAX_FIELDS];
128 } PredefLists;
129 
130 
131 /* structure to hold information for list layout */
132 typedef struct {
133    int number;
134    int field[MAX_FIELDS];
135    int width[MAX_FIELDS];
136    } listEntry;
137 
138 
139 /* type to hold lists of user defined fields */
140 typedef ListNode *UserDefFld;
141 
142 /* card types possible in a BibTeX file */
143 typedef enum {  article,
144                 book,
145                 booklet,
146                 conference,
147                 inbook,
148                 incollection,
149                 inproceedings,
150                 manual,
151                 mastersthesis,
152                 misc,
153                 phdthesis,
154                 proceedings,
155                 techreport,
156                 unpublished,
157                 otherentry,
158                 bibrc,
159                 regexpr,
160 		illegal
161 } CardType; /* must be changed if new type is added */
162 
163 
164 /* card types possible in a BibTeX file */
165 typedef enum {
166             ncrossref,
167             nkey,
168             nauthor,
169             neditor,
170             ntitle,
171             nbooktitle,
172             ninstitution,
173             njournal,
174             norganization,
175             nchapter,
176             npages,
177             nyear,
178             nmonth,
179             npublisher,
180    	    naddress,
181             nschool,
182             nedition,
183             nhowpublished,
184             nvolume,
185             nnumber,
186             nseries,
187             ntype,
188             nnote,
189             nannote,
190 	    nillegal
191 } FieldName; /* must be changed if new field is added */
192 
193 /* structure for user defined fields */
194 typedef struct _UserFld {
195    String fldName;
196    String fldData;
197    Widget fldLabel;
198    Widget fldText;
199    struct _UserFld *next;
200 } UserFld;
201 
202 
203 /* structure for all possible data of any card */
204 typedef struct {
205    int cardtype;
206    Boolean  annoteChanged;
207    int      sorted;
208    String   authorsort,
209 	    cardtypestr,
210             mainkey;
211    String   field[MAX_FIELDS];
212    UserFld  *ufield;
213 } CardData, *CardDataPtr;
214 
215 typedef struct _CardListNode {
216                               CardData *data;
217                               struct _CardListNode *next;
218 } CardListNode, *CardDataList;
219 
220 /* structure to hold all widget pointers for all card types */
221 typedef struct {
222    Widget wfield[2*MAX_FIELDS];
223    Widget owntype,      owntypeL,
224 	  mainkey,      mainkeyL,
225 	  annote;
226 } CardWidgets, *CardWidgetsPtr;
227 
228 /* structure for annote windows within card wins */
229 typedef struct {
230    String shellName;	/* name of popup shell */
231    Widget annoteShell,	/* popup shell */
232 	  annoteWin,	/* paned window for menu, list and cmds */
233 	  cmdBox,	/* command box (menu bar) */
234 	  save, 	/* save command button */
235 	  close;	/* close command button */
236    Position winX,	/* x-coord of cardWin relativ to bibDesk */
237 	    winY,	/* y-coord of cardWin relativ to bibDesk */
238 	    iconX,	/* x-coord of icon for shell */
239 	    iconY;	/* y-coord of icon for shell */
240    Boolean changed;	/* annote changed flag */
241 } AnnoteWin, *AnnoteWinPtr;
242 
243 
244 /* structure that hold widgets for displaying card data */
245 typedef struct {
246    CardWidgets cw;     	/* structure of all possible widgets */
247    CardData buf;	/* pointers in textBuf for string buffers */
248    String textBuf;      /* ptr to memory malloc'ed in one block */
249 } CardTextWin, *CardTextWinPtr;
250 
251 /* structure for card window within bibliography wins */
252 typedef struct {
253    String shellName;	/* label for window */
254    Widget cardShell,	/* popup shell */
255 	  cardWin,	/* paned window */
256 	  duplicateMenu,/* menu */
257 	  cmdBox,	/* command box */
258 	  userDef,	/* user defined command button */
259 	  annote,	/* annote command button */
260 	  delete,	/* delete command button */
261 	  change,	/* change command button */
262 	  duplicate,	/* duplicate command button */
263 	  copy,		/* copy command button */
264 	  crossref,	/* copy command button */
265 	  next,  	/* next command button */
266 	  close,	/* close command button */
267 	  cardDesk,	/* desktop for general attribs for all cards */
268 	  cardFlds,	/* desktop on which to place display widgets */
269           usrFldVport,  /* vieport for user def fields */
270 	  usrFldDesk,   /* desktop for user def fields */
271 	  usrFldHead;   /* heading for user def fields */
272    Dimension width,     /* Values of Shell without user def fields */
273 	     height,
274 	     borderWidth;
275    CardTextWin ct;	/* structure of widgets to display data */
276    Position winX,	/* x-coord of cardWin relativ to bibDesk */
277 	    winY,	/* y-coord of cardWin relativ to bibDesk */
278 	    iconX,	/* x-coord of icon for shell */
279 	    iconY;	/* y-coord of icon for shell */
280 } CardWin, *CardWinPtr;
281 
282 /* structure for opened bibliography card */
283 typedef struct {
284    CardDataPtr cd;	/* ptr to card bibliography data */
285    CardWinPtr cw;	/* ptr to card window data */
286    AnnoteWinPtr aw;	/* ptr to annote window data */
287    Boolean extended;    /* user fields displayed (T/F) */
288    Boolean changed;	/* card changed flag */
289    Boolean new;  	/* card is new flag */
290    void  *bp;		/* ptr to bib card belongs to */
291 } Card, *CardPtr;
292 
293 /* structure for linked list of bib cards */
294 typedef struct _CardEl {
295    Card card;
296    struct _CardEl *next,
297 	          *prev;
298 } CardEl, *CardList;
299 
300 /* structure for list windows within bibliography wins */
301 typedef struct {
302    String shellName;	/* name of popup shell */
303    Widget lstShell,	/* popup shell */
304 	  lstWin,	/* paned window for menu, list and cmds */
305 	  lstVp, 	/* viewport for list */
306 	  vpWin, 	/* child of viewport */
307 	  cmdBox,	/* command box (menu bar) */
308 	  list,		/* window containing list */
309 	  headBox,	/* heading for list */
310 	  save,	        /* save command button */
311 	  print,	/* print command button */
312 	  sort,	        /* sort command button */
313 	  copy,	        /* sort command button */
314 	  quit,		/* quit command button */
315 	  sortMenu;	/* sort pulldown menu */
316    int listArgc;	/* no of entries in list */
317    String *listArgv;	/* argv of ptr to list entries */
318    String strs;		/* buffer for list entries */
319    CardListNode *cardLst; /* argv of ptr to cards in list */
320    Position winX,	/* x-coord of list window */
321 	    winY,	/* y-coord of list window */
322 	    iconX,	/* x-coord of icon for shell */
323 	    iconY;	/* y-coord of icon for shell */
324 } LstWin, *LstWinPtr;
325 
326 /* structure for macro windows within bibliograhpy wins */
327 typedef struct {
328    String shellName;	/* name of popup shell */
329    Widget macShell,	/* popup shell */
330 	  macWin,	/* paned window for menu, list and cmds */
331 	  cmdBox,	/* command box (menu bar) */
332 	  save, 	/* save command button */
333 	  close,	/* close command button */
334           file;         /* text widget for macro file */
335    Position winX,	/* x-coord of shell */
336 	    winY,	/* y-coord of shell */
337 	    iconX,	/* x-coord of icon for shell */
338 	    iconY;	/* y-coord of icon for shell */
339    Boolean changed;	/* macros changed flag */
340 } MacroWin, *MacroWinPtr;
341 
342 /* structure for bibliography windows */
343 typedef struct {
344    String shellName;	/* label for popup shell */
345    Widget bibShell,	/* popup shell */
346           bibWin,	/* main window */
347 	  cmdBox,	/* command box */
348 	  bibdesk,	/* desktop for cardWins */
349 	  new,		/* new command button */
350 	  search,	/* search command button */
351 	  list,		/* list command button */
352 	  macro,	/* macro command button */
353 	  print,	/* print command button */
354 	  save,		/* save command button */
355 	  close,	/* close command button */
356 	  window,	/* window command button */
357 	  newMenu,	/* pulldown menu new */
358 	  windowMenu;	/* pulldown menu window */
359    Position winX,	/* x-coord of shell */
360 	    winY,	/* y-coord of shell */
361 	    iconX,	/* x-coord of icon for shell */
362 	    iconY;	/* y-coord of icon for shell */
363 } BibWin, *BibWinPtr;
364 
365 /* structure for an opened BibTeX-file */
366 typedef struct {
367    char filepath[MAX_FILEPATHLEN];	/* BibTeX filename */
368    char filename[MAX_FILENAMELEN];	/* BibTeX filename */
369    char *tempfile;			/* temp   filename */
370    char *macrofile;			/* macro   filename */
371    Boolean changed;			/* file changed flag */
372    int treeIdx;				/* handle of data tree */
373    BibWinPtr bw;			/* ptr to bib window data */
374    LstWinPtr lw;			/* ptr to list window data */
375    int sortedby;	                /* how the list is sorted */
376    MacroWinPtr mw;			/* ptr to macro win data */
377    MacroWinPtr ew;			/* ptr to edit win data */
378    CardList  cl;			/* ptr to list of open cards */
379    int noOfCardWins;			/* number of opened cards */
380    int nextCardPos;			/* pos of next opened card */
381 } Bib, *BibPtr;
382 
383 typedef struct {
384    Boolean quiet;
385    Boolean iconsOnDesk;
386    Boolean makeBackup;
387    Boolean autoCheck;
388    Boolean reqFields;
389    Boolean ignoreCase;
390    Boolean printAsBib;
391    Boolean displayErrWin;
392    Boolean focus;
393    Boolean orig;
394    String  bibfile;
395    String  rcfile;
396    String  bibdir;
397    Pixel   focusColor;
398    Pixel   reqColor;
399    Pixel   authedColor;
400 } OptionsRec;
401 
402 
403 #define	SORT_MAINKEY		-1
404 #define	SORT_UNSRT		-2
405 #define	SORT_TYPE		-3
406 
407 /* codes and macros for options functions */
408 #define OPT_MAX_OPTION		10+1 /* plus line in menu */
409 #define OPT_BEEP_ON_ERROR       1
410 #define OPT_BACKUP_ON_SAVE      2
411 #define OPT_ICON_ON_DESKTOP     3
412 #define OPT_AUTO_CHECK_BIB      4
413 #define OPT_REQUIRED_FIELDS     5
414 #define OPT_IGNORE_CASE         6
415 #define OPT_PRINT_AS_BIB	7
416 #define OPT_DISPLAY_ERRWIN	8
417 #define OPT_FOCUS	        9
418 #define OPT_ORIG	        10
419 
420 #if !defined(COT_OPT)
421 extern Boolean optionsStatus[];
422 #endif
423 #define cotBeepOnError()	(optionsStatus[OPT_BEEP_ON_ERROR])
424 #define cotBackupBeforeSave()	(optionsStatus[OPT_BACKUP_ON_SAVE])
425 #define cotIconizeOnDesktop()	(optionsStatus[OPT_ICON_ON_DESKTOP])
426 #define cotAutoCheckBib()	(optionsStatus[OPT_AUTO_CHECK_BIB])
427 #define cotRequiredFields()	(optionsStatus[OPT_REQUIRED_FIELDS])
428 #define cotIgnoreCase()	        (optionsStatus[OPT_IGNORE_CASE])
429 #define cotPrintAsBib()	        (optionsStatus[OPT_PRINT_AS_BIB])
430 #define cotDisplayErrWin()	(optionsStatus[OPT_DISPLAY_ERRWIN])
431 #define cotFocus()	        (optionsStatus[OPT_FOCUS])
432 #define cotOrig()	        (optionsStatus[OPT_ORIG])
433 
434 
435 /* Prototypes */
436 /* ---------- */
437 
438 /* types */
439 typedef Errcode (*CtlFuncPtr) (BibPtr bp);
440 
441 /* bibview.c */
442 
443 /* gui_main.c */
444 int gumMainWin (void);
445 
446 /* ctl_open.c */
447 void copNewCmd (Widget w, XtPointer clientData, XtPointer callData);
448 void copOpenCmd (Widget w, XtPointer clientData, XtPointer callData);
449 void copLoadBibFile (Widget w, XtPointer clientData, XtPointer callData);
450 
451 /* ctl_save.c */
452 void csaQuitBibviewCmd (Widget w, XtPointer clientData, XtPointer callData);
453 void csaCloseBibCmd (Widget w, XtPointer clientData, XtPointer callData);
454 void csaCloseCmd (Widget w, XtPointer clientData, XtPointer callData);
455 Errcode csaCloseBib (BibPtr bp);
456 void csaSaveBibCmd (Widget w, XtPointer clientData, XtPointer callData);
457 void csaSaveCmd (Widget w, XtPointer clientData, XtPointer callData);
458 void csaSaveAsBibCmd (Widget w, XtPointer clientData, XtPointer callData);
459 Errcode csaSaveBib (BibPtr bp);
460 Errcode csaSaveAsBib (BibPtr bp);
461 
462 /* ctl_serv.c */
463 void cseCollateBibCmd (Widget w, XtPointer clientData, XtPointer callData);
464 Errcode cseCollateBibs (BibPtr sbp, BibPtr dbp);
465 void cseCheckBibCmd (Widget w, XtPointer clientData, XtPointer callData);
466 Errcode cseCheckBib (BibPtr bp, Boolean sayOkMsg);
467 void cseEditMacrosCmd (Widget w, XtPointer clientData, XtPointer callData);
468 void cseMacrosCmd (Widget w, XtPointer clientData, XtPointer callData);
469 Errcode cseEditMacros (BibPtr bp);
470 void cseSetMacroChangeFlag (Widget w, XtPointer clientData, XtPointer callData);
471 void cseQuitMacrosCmd (Widget w, XtPointer clientData, XtPointer callData);
472 void cseSaveMacrosCmd (Widget w, XtPointer clientData, XtPointer callData);
473 void cseLoadConfigCmd (Widget w, XtPointer clientData, XtPointer callData);
474 
475 /* ctl_opt.c */
476 void cotOptionsControl (Widget w, XtPointer client_data, XtPointer call_data);
477 void cotOptionIconOnDeskCmd (Widget w, XtPointer clientData, XtPointer callData);
478 
479 /* gui_bibl.c */
480 int gubOpenBibWin(BibPtr bp);
481 int gubNoOfOpenBibs (void);
482 void gubCloseBibWinCmd(Widget w, XtPointer clientData, XtPointer callData);
483 Errcode gubCloseBibWin (BibPtr bp);
484 void gubCascadeCmd(Widget w, XtPointer clientData, XtPointer callData);
485 Errcode gubCascade(void);
486 Errcode gubSetWindowCoords (Boolean calcOnly);
487 Errcode gubSetIconCoords (Boolean calcOnly);
488 Errcode gubUnsetIconCoords (Boolean calcOnly);
489 
490 /* ctl_srch.c */
491 void csrSearchCmd (Widget w, XtPointer clientData, XtPointer callData);
492 void csrListCmd (Widget w, XtPointer clientData, XtPointer callData);
493 void csrDisplayCardCmd (Widget w, XtPointer clientData, XtPointer callData);
494 
495 /* gui_card.c */
496 Errcode gucOpenCardWin (BibPtr bp, CardPtr cp, Boolean isNew);
497 void gucCloseCardCmd (Widget w, XtPointer clientData, XtPointer callData);
498 Errcode gucCloseCardWin (CardPtr cp);
499 Errcode gucOpenUserFields (CardPtr cp);
500 Errcode gucCloseUserFields (CardPtr cp);
501 Errcode gucSaveCardData (CardPtr cp);
502 Errcode gucSaveUserFields (CardPtr cp);
503 Boolean gucStdFldsChanged (CardPtr cp);
504 Boolean gucAuthorChanged (CardPtr cp);
505 void gucCascadeCmd (Widget w, XtPointer clientData, XtPointer callData);
506 Errcode gucCascade (BibPtr bp);
507 Errcode gucSetWindowCoords (BibPtr bp, Boolean calcOnly);
508 Errcode gucSetIconCoords (BibPtr bp, Boolean calcOnly);
509 Errcode gucUnsetIconCoords (BibPtr bp, Boolean calcOnly);
510 
511 /* ctl_card.c */
512 void ccdNewCardCmd (Widget w, XtPointer clientData, XtPointer callData);
513 void ccdUserdataCmd (Widget w, XtPointer clientData, XtPointer callData);
514 void ccdSaveCardCmd (Widget w, XtPointer clientData, XtPointer callData);
515 void ccdDeleteCardCmd (Widget w, XtPointer clientData, XtPointer callData);
516 void ccdAnnoteCardCmd (Widget w, XtPointer clientData, XtPointer callData);
517 void ccdChangeCardCmd (Widget w, XtPointer clientData, XtPointer callData);
518 void ccdCopyCardCmd (Widget w, XtPointer clientData, XtPointer callData);
519 void ccdOpenCrossrefCmd (Widget w, XtPointer clientData, XtPointer callData);
520 void ccdNextCardCmd (Widget w, XtPointer clientData, XtPointer callData);
521 void ccdNextChangeCmd (Widget w, XtPointer clientData, XtPointer callData);
522 void ccdDuplicateCardCmd (Widget w, XtPointer clientData, XtPointer callData);
523 Errcode ccdCopyCard1 (BibPtr bp);
524 Errcode ccdCopyCard (BibPtr bp, CardPtr cp);
525 void ccdSetChangeFlag (Widget w, XtPointer clientData, XtPointer callData);
526 void ccdCloseCardCmd (Widget w, XtPointer clientData, XtPointer callData);
527 Errcode ccdCloseCard (BibPtr bp, CardPtr cp);
528 
529 /* ctl_prt.c */
530 void cprPrintBibCmd (Widget widget, XtPointer clientData, XtPointer callData);
531 void cprPrintCmd (Widget widget, XtPointer clientData, XtPointer callData);
532 Errcode cprPrintBib (BibPtr bp);
533 void cprPrintListCmd (Widget widget, XtPointer clientData, XtPointer callData);
534 Errcode cprPrintList (BibPtr bp, String fname, int type);
535 void cprSaveListCmd(Widget widget, XtPointer clientData, XtPointer callData);
536 
537 /* gui_list.c */
538 Errcode gulOpenListWin (BibPtr bp, CardDataList cl);
539 Boolean gulListWinExists (BibPtr bp);
540 Errcode gulReplaceListData (BibPtr bp, CardDataList cl);
541 void gulCloseListWinCmd (Widget w, XtPointer clientData, XtPointer callData);
542 void gulCopyListWinCmd (Widget w, XtPointer clientData, XtPointer callData);
543 void gulSortListWinCmd (Widget w, XtPointer clientData, XtPointer callData);
544 Errcode gulCloseListWin (BibPtr bp);
545 Errcode gulCopyListWin (BibPtr bp);
546 Errcode gulSortListWin (BibPtr bp);
547 Errcode gulCascade (BibPtr bp);
548 Errcode gulSetWindowCoords (BibPtr bp, Boolean calcOnly);
549 Errcode gulSetIconCoords (BibPtr bp, Boolean calcOnly);
550 Errcode gulUnsetIconCoords (BibPtr bp, Boolean calcOnly);
551 
552 /* gui_edit.c */
553 Errcode gueOpenListWin (BibPtr bp);
554 Boolean gueMacroWinExists (BibPtr bp);
555 void    gueCloseMacroWinCmd (Widget w, XtPointer clientData, XtPointer callData);
556 Errcode gueCloseMacroWin (BibPtr bp);
557 Errcode gueSaveMacrosToFile (BibPtr bp);
558 Errcode gueCascade (BibPtr bp);
559 Errcode gueSetWindowCoords (BibPtr bp, Boolean calcOnly);
560 Errcode gueSetIconCoords (BibPtr bp, Boolean calcOnly);
561 Errcode gueUnsetIconCoords (BibPtr bp, Boolean calcOnly);
562 Errcode gueOpenBibErrWin(BibPtr bp, int line);
563 Errcode gueCloseBibErrWin (BibPtr bp);
564 void gueCloseBibErrWinCmd (Widget w, XtPointer clientData, XtPointer callData);
565 
566 /* gui_widg.c */
567 Errcode guwSelectBib (String head, CtlFuncPtr fct);
568 void    guwNotImpl (Widget w, XtPointer clientData, XtPointer callData);
569 void guwError(Errcode errcode);
570 void guwWarning(Errcode errcode);
571 void guwNotice(Errcode errcode);
572 void guwConfirmClose (Position x, Position y,
573                       XtCallbackProc p1, XtCallbackProc p2);
574 void guwConfirmDelete (Position x, Position y,
575                       XtCallbackProc p1, XtCallbackProc p2);
576 void guwProgInfo (Widget w, XtPointer clientData, XtPointer callData);
577 
578 /* gui_help.c */
579 void hlpOpenHelpWin(int nummer, char *string1, char *string2);
580 void hlpOpenHelpWinCmd (Widget w, XtPointer clientData, XtPointer callData);
581 void hlpQuitHelpError(int nummer);
582 
583 /* bib_file */
584 Errcode bifFileRead(BibPtr bp);
585 Errcode bifFileWrite(BibPtr bp);
586 Errcode bifFileListWrite(BibPtr bp, CardListNode *list, String fname);
587 
588 /* rc_file.c */
589 Errcode rcfReadCfgFile (char *cfgFname);
590 Errcode rcfReadOptions (Boolean bool);
591 Errcode rcfSetPrintMode (Boolean bool);
592 Errcode procDefaultDirLine (char *str);
593 
594 /* globdata.c */
595 Errcode Scalloc(String *s1, String s2);
596 int isstandardfield(int ft, int ct);
597 int isrequiredfield(int ft, int ct);
598 void CollapsePath(char *in, char *out);
599 char *strupr (char *s);
600 char *strlower (char *s);
601 void glbCreateTypeMenu (String menuName, Widget parent, Widget *menu,
602      XtCallbackProc cb, XtPointer p);
603 void glbCreateFieldMenu (String menuName, Widget parent, Widget *menu,
604      XtCallbackProc cb, XtPointer p);
605 void glbReadFileOpenBib(BibPtr bp);
606 String glbNewString (String s);
607 String glbTrimString (String s);
608 Boolean glbIsStringEmpty (String s);
609 String glbTypeToName (int type);
610 String glbFldToName (int i);
611 String glbFldToUpName (int i);
612 int glbNameToType (String name);
613 int glbNameToField (String name);
614 Errcode glbNewBibListEl (BibPtr *bp);
615 Errcode glbDelBibListEl (BibPtr bp);
616 BibPtr glbFirstBibListEl (void);
617 BibPtr glbNextBibListEl (BibPtr bp);
618 Boolean glbIsBibListEl (BibPtr bp);
619 Errcode glbNewCardListEl (BibPtr bp, CardPtr *cp, CardDataPtr cd);
620 Errcode glbDupCardListEl (BibPtr bp, CardPtr *cp, CardDataPtr cd, int type);
621 Errcode glbDelCardListEl (BibPtr bp, CardPtr cp);
622 CardPtr glbFirstCardListEl (BibPtr bp);
623 CardPtr glbNextCardListEl (BibPtr bp, CardPtr cp);
624 CardPtr glbLastCardListEl (BibPtr bp);
625 Boolean glbIsCardListEl (BibPtr bp, CardPtr cp);
626 CardPtr glbFindCard (BibPtr bp, CardDataPtr cd);
627 int     glbContIllegalChar(char *dateiName);
628 Errcode glbCheckPath(String path, String name);
629 Errcode glbMakeBackup(String path);
630 
631 /* db_tree.c */
632 Errcode dbtInsert (BibPtr bp, CardData *card);
633 Errcode dbtDelete (int treeIdx, CardData *card, int *deleted);
634 Errcode dbtSearch (int treeIdx, CardData **card, CardListNode **list);
635 Errcode dbtMakeCard (CardData **card);
636 Errcode dbtDeleteCard (CardData **card);
637 Errcode dbtMakeTreeList (int treeIdx, int listIdx);
638 Errcode dbtGetFreeTreeIdx (int *treeIdx);
639 Errcode dbtGetFreeListIdx (int *listIdx);
640 Errcode dbtSearchList (int treeIdx, CardData *card, CardListNode **list,
641 		       int sortedby);
642 Errcode dbtBuildList (int treeIdx, CardListNode **list, int sortedby);
643 Errcode dbtTestCard (CardData *c);
644 Errcode dbtCheckAllCards (int treeIdx, CardListNode **list);
645 Errcode dbtDeleteTree (int treeIdx);
646 Errcode dbtAppendUserFld(UserFld **list, UserFld *obj);
647 Errcode dbtMakeListNode (ListNode **list);
648 Errcode dbtListAppend (ListNode **list, String word);
649 Errcode dbtCardListDelete(CardListNode **list);
650 Errcode dbtCardListInsert(CardListNode **list, CardData *card, int sortedby);
651 Errcode dbtCardListSortIns(CardListNode **list, CardData *card, int sortedby);
652