Initial commit of pristine erwise source
[erwise] / erwise / Setup.c
1 static char *rcsid = "$Id: Setup.c,v 1.1 1992/05/18 21:43:03 tvr Exp $";
2
3 #include "Includes.h"
4
5
6 void attachtoplevelcallbacks(void);
7 void attachpagecallbacks(void);
8 void attachhierarchycallbacks(void);
9 void attachsearchcallbacks(void);
10 void bindpagevariables(void);
11 void bindsearchvariables(void);
12 void bindprintvariables(void);
13
14
15 void AttachCallbacks()
16 {
17     attachtoplevelcallbacks();
18     attachpagecallbacks();
19     attachhierarchycallbacks();
20     attachsearchcallbacks();
21 }
22
23
24
25 char *
26  parse_key(type, item)
27 int *type;
28 char *item;
29 {
30     char *p;
31
32     if (!item)
33         return item;
34
35     if (*item == '^') {
36         *type = UI_CTRL;
37
38         p = strdup(item + 1);
39
40         if (strlen(p) == 1)
41             *p = tolower(*p);
42
43         return p;
44     }
45     if (strlen(item) == 1) {
46         if (isupper(*item)) {
47             *type = UI_SHIFT;
48         } else {
49             *type = UI_NONE;
50         }
51         p = (char *) strdup(item);
52
53         *p = tolower(*p);
54
55         return p;
56     }
57     *type = UI_NONE;
58
59     return (char *) strdup(item);
60 }
61
62
63 /*
64  * Keyboard bindings
65  */
66
67 typedef struct erwise_key_bindings_s {
68     char *itemname;
69     void (*callback) ();
70     void *data;
71 } erwise_key_bindings_t;
72
73 erwise_key_bindings_t erwise_keys[] =
74 {
75     {C_GETPAGE, PageGetPageCB, NULL},
76     {C_PREVWORD, PagePrevWordCB, NULL},
77     {C_NEXTWORD, PageNextWordCB, NULL},
78     {C_PREVTAG, PagePrevTagCB, (void *) NO_AUTOGET},
79     {C_NEXTTAG, PageNextTagCB, (void *) NO_AUTOGET},
80     {C_CLOSE, PageCloseCB, NULL},
81     {C_SEARCH, PageSearchCB, NULL},
82     {C_SETTINGS, PageSettingsCB, NULL},
83     {C_LIST, PageListCB, NULL},
84     {C_PRINTDOC, PagePrintCB, NULL},
85     {NULL, NULL, NULL},
86 };
87
88
89 void BindKeys()
90 {
91     void *table;
92     char *item;
93     char *key;
94     int keytype;
95
96     erwise_key_bindings_t *k;
97
98     table = (void *) ConfigGetValue((void *) NULL, C_KEYBINDINGS);
99
100     for (k = erwise_keys; k->itemname; k++) {
101         item = (char *) ConfigGetValue(table, k->itemname);
102
103         if (item) {
104             key = parse_key(&keytype, item);
105
106             if (key) {
107                 UiBindKey(key, keytype, k->callback, k->data);
108                 free(key);
109             }
110         }
111     }
112 }
113
114
115 void BindVariables()
116 {
117     bindpagevariables();
118     bindsearchvariables();
119     bindprintvariables();
120 }
121
122
123 void attachtoplevelcallbacks()
124 {
125     UiAttachCallback("Quit", TopQuitCB, (void *) NULL);
126     UiAttachCallback("Info", TopInfoCB, (void *) NULL);
127     UiAttachCallback("Open", TopOpenCB, (void *) NULL);
128     UiAttachCallback("Help", HelpManualCB, (void *) NULL);
129 }
130
131
132 void attachpagecallbacks()
133 {
134     UiAttachCallback("Search", PageSearchCB, (void *) NULL);
135     UiAttachCallback("Copy", PageCopyCB, (void *) NULL);
136     UiAttachCallback("List", PageListCB, (void *) NULL);
137     UiAttachCallback("Load to file", PageLoadToFileCB, (void *) NULL);
138     UiAttachCallback("Print", PagePrintCB, (void *) NULL);
139     UiAttachCallback("Settings", PageSettingsCB, (void *) NULL);
140     UiAttachCallback("Close", PageCloseCB, (void *) NULL);
141
142     UiAttachCallback("Prev tag", PagePrevTagCB, (void *) AUTOGET);
143     UiAttachCallback("Next tag", PageNextTagCB, (void *) AUTOGET);
144
145     UiAttachCallback("Home", PageHomeCB, (void *) NULL);
146     UiAttachCallback("Recall", PageRecallCB, (void *) NULL);
147     UiAttachCallback("Back", PageBackCB, (void *) NULL);
148     UiAttachCallback("Prev page", PagePrevPageCB, (void *) NULL);
149     UiAttachCallback("Next page", PageNextPageCB, (void *) NULL);
150
151     UiAttachCallback("On function", HelpOnFunctionCB, (void *) NULL);
152
153     UiAttachCallback("Get page", PageGetPageCB, (void *) NULL);
154     UiAttachCallback("Click page", PageClickCB, (void *) NULL);
155     UiAttachCallback("IndexFind", IndexFindCB, (void *) NULL);
156 }
157
158
159 void attachhierarchycallbacks()
160 {
161     UiAttachCallback("Connections", ConnectionsCB, (void *) NULL);
162     UiAttachCallback("Controlpanel", ControlPanelCB, (void *) NULL);
163     UiAttachCallback("Defaults", DefaultsCB, (void *) NULL);
164     UiAttachCallback("Close hierarchy", HierarchyCloseCB, (void *) NULL);
165 }
166
167
168 void attachsearchcallbacks()
169 {
170     UiAttachCallback("SearchBackward", SearchBackwardCB, (void *) NULL);
171     UiAttachCallback("SearchForward", SearchForwardCB, (void *) NULL);
172 }
173
174
175 void bindpagevariables()
176 {
177     UiBindVariable("FindText", (void *) FindText, uiVTstring);
178 }
179
180
181 void bindsearchvariables()
182 {
183     UiBindVariable("SearchText", (void *) SearchText, uiVTstring);
184     UiBindVariable("SearchDepth", (void *) &SearchDepth, uiVTint);
185     UiBindVariable("SearchCase", (void *) &SearchCase, uiVTint);
186 }
187
188
189 void bindprintvariables()
190 {
191     UiBindVariable("PrintTopMargin", (void *) &PrintTopMargin, uiVTint);
192     UiBindVariable("PrintBottomMargin", (void *) &PrintBottomMargin, uiVTint);
193     UiBindVariable("PrintLeftMargin", (void *) &PrintLeftMargin, uiVTint);
194     UiBindVariable("PrintWidth", (void *) &PrintWidth, uiVTint);
195     UiBindVariable("PrintCommand", (void *) &PrintCommand, uiVTstring);
196     UiBindVariable("PrintToFile", (void *) &PrintToFile, uiVTint);
197     UiBindVariable("PrintFileName", (void *) &PrintFileName, uiVTstring);
198 }