Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / yagle / xyagle / XMS_setup.c
1 /*------------------------------------------------------------\
2 | |
3 | Tool : XYAG |
4 | |
5 | File : Setup.c |
6 | |
7 | Authors : Jacomme Ludovic |
8 | Lester Anthony |
9 | Picault Stephane |
10 | |
11 \------------------------------------------------------------*/
12
13 #include <stdio.h>
14 #include <Xm/Xm.h>
15 #include <Xm/PushBG.h>
16
17 #include MUT_H
18 #include MLO_H
19 #include XSB_H
20 #include XTB_H
21 #include XMX_H
22 #include XMF_H
23 #include XME_H
24 #include XMV_H
25 #include XMT_H
26 #include XMS_H
27 #include XMH_H
28
29 #include "XMS_setup.h"
30
31 static FILE *FileConfig;
32
33 /*------------------------------------------------------------\
34 | Set Panel New Values |
35 \------------------------------------------------------------*/
36
37 void
38 XyagSetPanelValues(Panel, Values)
39 XyagPanelItem *Panel;
40 int *Values;
41 {
42 Panel->COMPUTE = 1;
43 Panel->X = Values[0];
44 Panel->Y = Values[1];
45 Panel->WIDTH = Values[2];
46 Panel->HEIGHT = Values[3];
47 Panel->MANAGED = Values[4];
48
49 XtVaSetValues(Panel->PANEL,
50 XmNx, Values[0],
51 XmNy, Values[1],
52 XmNwidth, Values[2],
53 XmNheight, Values[3],
54 NULL);
55
56 if (Panel->MANAGED) {
57 XyagEnterPanel(Panel);
58 }
59 else {
60 XtUnmanageChild(Panel->PANEL);
61 }
62 }
63
64 /*------------------------------------------------------------\
65 | Write TopLevel Values |
66 \------------------------------------------------------------*/
67
68 void
69 XyagWriteTopLevelValues()
70 {
71 Dimension Values[5];
72
73 XtVaGetValues(XyagTopLevel,
74 XmNx, &Values[0],
75 XmNy, &Values[1],
76 XmNwidth, &Values[2],
77 XmNheight, &Values[3],
78 NULL);
79
80 Values[0] = Values[0] - XYAG_TOPLEVEL_TRANSLATE_X;
81 Values[1] = Values[1] - XYAG_TOPLEVEL_TRANSLATE_Y;
82 Values[4] = 1;
83
84 fprintf(FileConfig, "X: %d, Y: %d, WIDTH: %d, HEIGHT: %d, MANAGED: %d\n",
85 Values[0], Values[1], Values[2], Values[3], Values[4]);
86 }
87
88 /*------------------------------------------------------------\
89 | Write Panel Values |
90 \------------------------------------------------------------*/
91
92 void
93 XyagWritePanelValues(Panel)
94 XyagPanelItem *Panel;
95 {
96 Dimension Values[5];
97
98 if (Panel->COMPUTE == 0) {
99 XtVaGetValues(Panel->PANEL,
100 XmNx, &Values[0],
101 XmNy, &Values[1],
102 XmNwidth, &Values[2],
103 XmNheight, &Values[3],
104 NULL);
105
106 Values[0] = Values[0] - XYAG_PANEL_TRANSLATE_X;
107 Values[1] = Values[1] - XYAG_PANEL_TRANSLATE_Y;
108 }
109 else {
110 Values[0] = Panel->X - XYAG_PANEL_TRANSLATE_X;
111 Values[1] = Panel->Y - XYAG_PANEL_TRANSLATE_Y;
112 Values[2] = Panel->WIDTH;
113 Values[3] = Panel->HEIGHT;
114 }
115
116 Values[4] = Panel->MANAGED;
117
118 fprintf(FileConfig, "X: %d, Y: %d, WIDTH: %d, HEIGHT: %d, MANAGED: %d\n",
119 Values[0], Values[1], Values[2], Values[3], Values[4]);
120 }
121
122 /*------------------------------------------------------------\
123 | Read Panel Values |
124 \------------------------------------------------------------*/
125
126 void
127 XyagReadPanelValues(Panel)
128 XyagPanelItem *Panel;
129 {
130 int Values[5];
131
132 fscanf(FileConfig, "X: %d, Y: %d, WIDTH: %d, HEIGHT: %d, MANAGED: %d\n",
133 &Values[0], &Values[1], &Values[2], &Values[3], &Values[4]);
134
135 XyagSetPanelValues(Panel, Values);
136 }
137
138 /*------------------------------------------------------------\
139 | Read Panel Values |
140 \------------------------------------------------------------*/
141
142 char
143 XyagReadTopLevelValues()
144 {
145 int Values[5];
146 char Version[64];
147
148 fscanf(FileConfig, "X: %d, Y: %d, WIDTH: %d, HEIGHT: %d, MANAGED: %d\n",
149 &Values[0], &Values[1], &Values[2], &Values[3], &Values[4]);
150
151 XtVaSetValues(XyagTopLevel,
152 XmNx, Values[0],
153 XmNy, Values[1],
154 XmNwidth, Values[2],
155 XmNheight, Values[3],
156 NULL);
157 return (1);
158 }
159
160 /*------------------------------------------------------------\
161 | ReadActiveLayers |
162 \------------------------------------------------------------*/
163
164 void
165 XyagReadActiveLayers()
166 {
167 short Layer;
168 int Value;
169
170 for (Layer = 0; Layer < XYAG_MAX_LAYER; Layer++) {
171 fscanf(FileConfig, "ACTIVE: %d\n", &Value);
172
173 XYAG_ACTIVE_LAYER_TABLE[Layer] = Value;
174 }
175
176 for (Layer = 0; Layer < XYAG_MAX_ACTIVE_NAME; Layer++) {
177 fscanf(FileConfig, "ACTIVE: %d\n", &Value);
178
179 XYAG_ACTIVE_NAME_TABLE[Layer] = Value;
180 }
181 }
182
183 /*------------------------------------------------------------\
184 | WriteActiveLayers |
185 \------------------------------------------------------------*/
186
187 void
188 XyagWriteActiveLayers()
189 {
190 int Layer;
191
192 for (Layer = 0; Layer < XYAG_MAX_LAYER; Layer++) {
193 fprintf(FileConfig, "ACTIVE: %d\n", XYAG_ACTIVE_LAYER_TABLE[Layer]);
194 }
195
196 for (Layer = 0; Layer < XYAG_MAX_ACTIVE_NAME; Layer++) {
197 fprintf(FileConfig, "ACTIVE: %d\n", XYAG_ACTIVE_NAME_TABLE[Layer]);
198 }
199 }
200
201 /*------------------------------------------------------------\
202 | XyagDefaultTopLevelValues |
203 \------------------------------------------------------------*/
204
205 void
206 XyagDefaultTopLevelValues()
207 {
208 XtVaSetValues(XyagTopLevel,
209 XmNheight, XYAG_TOPLEVEL_HEIGHT,
210 XmNwidth, XYAG_TOPLEVEL_WIDTH,
211 XmNx, XYAG_TOPLEVEL_X,
212 XmNy, XYAG_TOPLEVEL_Y,
213 NULL
214 );
215 }
216
217 /*------------------------------------------------------------\
218 | XyagDefaultConfig |
219 \------------------------------------------------------------*/
220
221 void
222 XyagDefaultConfig()
223 {
224 short Layer;
225
226 XyagDefaultTopLevelValues();
227
228 XyagSetPanelValues(&XyagViewLayerPanel, XyagViewLayerDefaultValues);
229 XyagSetPanelValues(&XyagEditIdentifyPanel, XyagEditIdentifyDefaultValues);
230 XyagSetPanelValues(&XyagViewMessagePanel, XyagViewMessageDefaultValues);
231 XyagSetPanelValues(&XyagSetupInformationsPanel, XyagSetupInformationsDefaultValues);
232 XyagSetPanelValues(&XyagHelpPresentPanel, XyagHelpPresentDefaultValues);
233
234 XyagSetPanelValues(&XyagEditBehPanel, XyagEditBehDefaultValues);
235
236 XYAG_ACTIVE_LAYER_TABLE[XYAG_CGVBOX_LAYER] = 1;
237 XYAG_ACTIVE_LAYER_TABLE[XYAG_CGVCONIN_LAYER] = 1;
238 XYAG_ACTIVE_LAYER_TABLE[XYAG_CGVCONOUT_LAYER] = 1;
239 XYAG_ACTIVE_LAYER_TABLE[XYAG_CGVNET_LAYER] = 1;
240 XYAG_ACTIVE_LAYER_TABLE[XYAG_CONSTRUCTION_LAYER] = 0;
241
242 for (Layer = 0; Layer < XYAG_MAX_ACTIVE_NAME; Layer++) {
243 XYAG_ACTIVE_NAME_TABLE[Layer] = 1;
244 }
245
246 XyagInitializeLayer();
247 }
248
249 /*------------------------------------------------------------\
250 | XyagLoadTopLevelConfig |
251 \------------------------------------------------------------*/
252
253 void
254 XyagLoadTopLevelConfig()
255 {
256 FileConfig = fopen(XYAG_XMS_FILE_NAME, "r");
257
258 if (FileConfig == (FILE *) NULL) {
259 XyagDefaultTopLevelValues();
260 }
261 else {
262 if (!XyagReadTopLevelValues()) {
263 XyagDefaultTopLevelValues();
264 }
265
266 fclose(FileConfig);
267 }
268 }
269
270 /*------------------------------------------------------------\
271 | XyagLoadConfig |
272 \------------------------------------------------------------*/
273
274 void
275 XyagLoadConfig(Message)
276 char Message;
277 {
278 FileConfig = fopen(XYAG_XMS_FILE_NAME, "r");
279
280 if (FileConfig == (FILE *) NULL) {
281 if (Message) {
282 XyagErrorMessage(XyagMainWindow, "Unable to open config file !");
283 }
284 else {
285 XyagDefaultConfig();
286 }
287 }
288 else {
289 if (XyagReadTopLevelValues()) {
290 XyagReadPanelValues(&XyagViewLayerPanel);
291 XyagReadPanelValues(&XyagEditIdentifyPanel);
292 XyagReadPanelValues(&XyagViewMessagePanel);
293 XyagReadPanelValues(&XyagSetupInformationsPanel);
294 XyagReadPanelValues(&XyagHelpPresentPanel);
295 XyagReadPanelValues(&XyagEditBehPanel);
296 XyagReadActiveLayers();
297 XyagInitializeLayer();
298 }
299 else if (Message) {
300 XyagErrorMessage(XyagMainWindow, "Bad version, unable to open config file !");
301 }
302
303 fclose(FileConfig);
304 }
305 }
306
307 /*------------------------------------------------------------\
308 | XyagSaveConfig |
309 \------------------------------------------------------------*/
310
311 void
312 XyagSaveConfig()
313 {
314 FileConfig = fopen(XYAG_XMS_FILE_NAME, "w");
315
316 if (FileConfig == (FILE *) NULL) {
317 XyagErrorMessage(XyagMainWindow, "Unable to open config file !");
318 }
319 else {
320 XyagWriteTopLevelValues();
321
322 XyagWritePanelValues(&XyagViewLayerPanel);
323 XyagWritePanelValues(&XyagEditIdentifyPanel);
324 XyagWritePanelValues(&XyagViewMessagePanel);
325 XyagWritePanelValues(&XyagSetupInformationsPanel);
326 XyagWritePanelValues(&XyagHelpPresentPanel);
327 XyagWritePanelValues(&XyagEditBehPanel);
328
329 XyagWriteActiveLayers();
330
331 fclose(FileConfig);
332 }
333 }
334
335
336
337