1 /*
2   Functions used inside the liflines module
3   The high-level but not curses-specific portion of the program
4   screen.h is not included before this header, so UIWIN etc cannot
5   be used here (see screeni.h for declarations requiring screen.h).
6 */
7 
8 #ifndef llinesi_h_included
9 #define llinesi_h_included
10 
11 #ifndef _GEDCOM_H
12 #include "gedcom.h"
13 #endif
14 
15 #ifndef _INDISEQ_H
16 #include "indiseq.h"
17 #endif
18 
19 typedef struct tag_llrect {
20 	INT top;
21 	INT bottom;
22 	INT left;
23 	INT right;
24 } *LLRECT;
25 
26 struct tag_import_feedback;
27 #ifndef IMPORT_FEEDBACK_type_defined
28 typedef struct tag_import_feedback *IMPORT_FEEDBACK;
29 #define IMPORT_FEEDBACK_type_defined
30 #endif
31 
32 struct tag_export_feedback;
33 
34 /* add.c */
35 RECORD add_family_by_edit(RECORD sprec1, RECORD sprec2, RECORD chrec, RFMT rfmt);
36 RECORD add_indi_by_edit(RFMT rfmt);
37 BOOLEAN add_indi_no_cache(NODE);
38 STRING get_unresolved_ref_error_string(INT count);
39 NODE prompt_add_child(NODE child, NODE fam, RFMT rfmt);
40 BOOLEAN prompt_add_spouse(RECORD spouse, RECORD fam, BOOLEAN conf);
41 
42 /* advedit.c */
43 void advanced_person_edit(NODE);
44 void advanced_family_edit(NODE);
45 
46 /* ask.c */
47 RECORD ask_for_any(STRING ttl, ASK1Q ask1);
48 INDISEQ ask_for_indiseq(CNSTRING ttl, char ctype, INT *prc);
49 
50 /* browse.c */
51 RECORD choose_any_event(void);
52 RECORD choose_any_other(void);
53 RECORD choose_any_source(void);
54 INT get_chist_len(void);
55 INDISEQ get_chistory_list(void);
56 INT get_vhist_len(void);
57 INDISEQ get_vhistory_list(void);
58 BOOLEAN handle_fam_mode_cmds(INT c, INT * mode);
59 BOOLEAN handle_indi_mode_cmds(INT c, INT * mode);
60 BOOLEAN handle_menu_cmds(INT c, BOOLEAN * reuse);
61 BOOLEAN handle_scroll_cmds(INT c, BOOLEAN * reuse);
62 void history_record_change(RECORD);
63 void init_browse_module(void);
64 void main_browse(RECORD, INT code);
65 NODE my_prompt_add_child(NODE child, NODE fam);
66 void term_browse_module(void);
67 
68 /* delete.c */
69 void choose_and_remove_indi(NODE indi, CONFIRMQ confirmq);
70 void choose_and_delete_family(void);
71 BOOLEAN choose_and_remove_child(RECORD irec, RECORD frec, BOOLEAN nolast);
72 BOOLEAN choose_and_remove_spouse(RECORD irec, RECORD frec, BOOLEAN nolast);
73 BOOLEAN choose_and_remove_any_record(RECORD rec, CONFIRMQ confirmq);
74 
75 /* edit.c */
76 BOOLEAN edit_family(RECORD frec1, RFMT rfmt);
77 BOOLEAN edit_indi(RECORD irec1, RFMT rfmt);
78 
79 /* export.c */
80 BOOLEAN archive_in_file (struct tag_export_feedback * efeed, FILE *fp);
81 
82 /* import.c */
83 BOOLEAN import_from_gedcom_file(IMPORT_FEEDBACK ifeed, FILE *fp);
84 
85 /* lbrowse.c */
86 INT browse_list(RECORD *prec1, RECORD *prec2, INDISEQ *pseq);
87 
88 /* lines_usage.c */
89 void print_lines_usage(CNSTRING exename);
90 
91 
92 /* merge.c */
93 RECORD merge_two_indis(NODE, NODE, BOOLEAN);
94 RECORD merge_two_fams(NODE, NODE);
95 
96 /* miscutls.c */
97 void key_util(void);
98 void show_database_stats(void);
99 void who_is_he_she(void);
100 
101 /* newrecs.c */
102 RECORD edit_add_event(void);
103 RECORD edit_add_other(void);
104 RECORD edit_add_source(void);
105 BOOLEAN edit_any_record(RECORD rec, RFMT rfmt);
106 BOOLEAN edit_event(RECORD rec, RFMT rfmt);
107 BOOLEAN edit_other(RECORD rec, RFMT rfmt);
108 BOOLEAN edit_source(RECORD rec, RFMT rfmt);
109 
110 /* pedigree.c */
111 	/* gedcom view mode */
112 enum { GDVW_NORMAL, GDVW_EXPANDED, GDVW_TEXT };
113 	/* data for output canvas */
114 	/* NB: pedigree will adjust scroll if out of limits */
115 	struct tag_canvasdata;
116 		/* callback to output a line */
117 	typedef void (*PEDLINE)(struct tag_canvasdata * canvas, INT x, INT y
118 		, STRING string, INT overflow);
119 		/* collection of data needed by pedigree */
120 	typedef struct tag_canvasdata { LLRECT rect; INT scroll; void * param;
121 		PEDLINE line; } *CANVASDATA;
122 	/* functions */
123 void pedigree_draw_ancestors(RECORD rec, CANVASDATA canvasdata, BOOLEAN reuse);
124 void pedigree_draw_descendants(RECORD rec, CANVASDATA canvasdata, BOOLEAN reuse);
125 void pedigree_draw_gedcom(RECORD rec, INT gdvw, CANVASDATA canvasdata, BOOLEAN reuse);
126 void pedigree_increase_generations(INT delta);
127 void pedigree_toggle_mode(void);
128 
129 /* scan.c */
130 INDISEQ full_name_scan(STRING sts);
131 INDISEQ name_fragment_scan(STRING sts);
132 INDISEQ refn_scan(STRING sts);
133 INDISEQ scan_souce_by_author(STRING sts);
134 INDISEQ scan_souce_by_title(STRING sts);
135 
136 /* screen.c */
137 void clear_status_display(void);
138 
139 /* searchui.c */
140 INDISEQ invoke_search_menu(void);
141 
142 /* swap.c */
143 BOOLEAN swap_children(RECORD prnt, RECORD frec);
144 BOOLEAN reorder_child(RECORD prnt, RECORD frec, RFMT rfmt);
145 BOOLEAN swap_families(RECORD);
146 
147 /* tandem.c */
148 INT browse_tandem(RECORD *prec1, RECORD *prec2, INDISEQ *pseq);
149 INT browse_2fam(RECORD *prec1, RECORD *prec2, INDISEQ *pseq);
150 
151 /* valgdcom.c */
152 void addmissingkeys (INT);
153 int check_stdkeys (void);
154 BOOLEAN scan_header(FILE * fp, TABLE metadatatab, ZSTR * zerr);
155 BOOLEAN validate_gedcom(IMPORT_FEEDBACK ifeed, FILE*);
156 void validate_end_import(void);
157 INT validate_get_warning_count(void);
158 INT xref_to_index (STRING);
159 
160 
161 #endif /* llinesi_h_included */
162