1 /*------------------------------------------------------------\
2 | |
3 | This file is part of the Alliance CAD System Copyright |
4 | (C) Laboratoire LIP6 - D�partement ASIM Universite P&M Curie|
5 | |
6 | Home page : http://www-asim.lip6.fr/alliance/ |
7 | E-mail : mailto:alliance-users@asim.lip6.fr |
8 | |
9 | This progam is free software; you can redistribute it |
10 | and/or modify it under the terms of the GNU General Public |
11 | License as published by the Free Software Foundation; |
12 | either version 2 of the License, or (at your option) any |
13 | later version. |
14 | |
15 | Alliance VLSI CAD System is distributed in the hope that |
16 | it will be useful, but WITHOUT ANY WARRANTY; |
17 | without even the implied warranty of MERCHANTABILITY or |
18 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
19 | Public License for more details. |
20 | |
21 | You should have received a copy of the GNU General Public |
22 | License along with the GNU C Library; see the file COPYING. |
23 | If not, write to the Free Software Foundation, Inc., |
24 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
25 | |
26 \------------------------------------------------------------*/
27
28 /*------------------------------------------------------------\
29 | |
30 | Tool : GRAAL |
31 | |
32 | File : Setup.c |
33 | |
34 | Author : Jacomme Ludovic |
35 | |
36 | Date : 28.03.95 |
37 | |
38 \------------------------------------------------------------*/
39 /*------------------------------------------------------------\
40 | |
41 | Include Files |
42 | |
43 \------------------------------------------------------------*/
44
45 # include <stdio.h>
46 # include <Xm/Xm.h>
47 # include <Xm/PushBG.h>
48
49 # include "mut.h"
50 # include "mph.h"
51 # include "rds.h"
52 # include "rpr.h"
53 # include "GTB.h"
54 # include "GSB.h"
55 # include "GMX.h"
56 # include "GMF.h"
57 # include "GME.h"
58 # include "GMC.h"
59 # include "GMV.h"
60 # include "GMT.h"
61 # include "GMS.h"
62 # include "GMH.h"
63
64 # include "GMS_setup.h"
65 # include "GMV_panel.h"
66
67 /*------------------------------------------------------------\
68 | |
69 | Constants |
70 | |
71 \------------------------------------------------------------*/
72 /*------------------------------------------------------------\
73 | |
74 | Types |
75 | |
76 \------------------------------------------------------------*/
77 /*------------------------------------------------------------\
78 | |
79 | Variables |
80 | |
81 \------------------------------------------------------------*/
82
83 static FILE *FileConfig;
84
85 /*------------------------------------------------------------\
86 | |
87 | Functions |
88 | |
89 \------------------------------------------------------------*/
90 /*------------------------------------------------------------\
91 | |
92 | Set Panel New Values |
93 | |
94 \------------------------------------------------------------*/
95
GraalSetPanelValues(Panel,Values)96 void GraalSetPanelValues( Panel, Values )
97
98 GraalPanelItem *Panel;
99 int *Values;
100 {
101 rdsbegin();
102
103 Panel->COMPUTE = 1;
104 Panel->X = Values[0];
105 Panel->Y = Values[1];
106 Panel->WIDTH = Values[2];
107 Panel->HEIGHT = Values[3];
108 Panel->MANAGED = Values[4];
109
110 XtVaSetValues( Panel->PANEL,
111 XmNx , Values[0],
112 XmNy , Values[1],
113 XmNwidth , Values[2],
114 XmNheight , Values[3],
115 NULL );
116
117 if ( Panel->MANAGED )
118 {
119 GraalEnterPanel( Panel );
120 }
121 else
122 {
123 XtUnmanageChild( Panel->PANEL );
124 }
125
126 rdsend();
127 }
128
129 /*------------------------------------------------------------\
130 | |
131 | Write TopLevel Values |
132 | |
133 \------------------------------------------------------------*/
134
GraalWriteTopLevelValues()135 void GraalWriteTopLevelValues()
136
137 {
138 Dimension Values[5];
139
140 rdsbegin();
141
142 XtVaGetValues( GraalTopLevel,
143 XmNx , &Values[0],
144 XmNy , &Values[1],
145 XmNwidth , &Values[2],
146 XmNheight , &Values[3],
147 NULL );
148
149 Values[0] = Values[0] - GRAAL_TOPLEVEL_TRANSLATE_X;
150 Values[1] = Values[1] - GRAAL_TOPLEVEL_TRANSLATE_Y;
151 Values[4] = 1;
152
153 fprintf( FileConfig, "VERSION: %s\n", VERSION );
154 fprintf( FileConfig, "X: %d, Y: %d, WIDTH: %d, HEIGHT: %d, MANAGED: %d\n",
155 Values[0], Values[1], Values[2], Values[3], Values[4] );
156
157 rdsend();
158 }
159
160 /*------------------------------------------------------------\
161 | |
162 | Write Panel Values |
163 | |
164 \------------------------------------------------------------*/
165
GraalWritePanelValues(Panel)166 void GraalWritePanelValues( Panel )
167
168 GraalPanelItem *Panel;
169 {
170 Dimension Values[5];
171
172 rdsbegin();
173
174 if ( Panel->COMPUTE == 0 )
175 {
176 XtVaGetValues( Panel->PANEL,
177 XmNx , &Values[0],
178 XmNy , &Values[1],
179 XmNwidth , &Values[2],
180 XmNheight , &Values[3],
181 NULL );
182
183 Values[0] = Values[0] - GRAAL_PANEL_TRANSLATE_X;
184 Values[1] = Values[1] - GRAAL_PANEL_TRANSLATE_Y;
185 }
186 else
187 {
188 Values[0] = Panel->X;
189 Values[1] = Panel->Y;
190 Values[2] = Panel->WIDTH;
191 Values[3] = Panel->HEIGHT;
192 }
193
194 Values[2] /= Panel->COLUMN;
195 Values[3] /= Panel->ROW;
196
197 Values[4] = Panel->MANAGED;
198
199 fprintf( FileConfig, "X: %d, Y: %d, WIDTH: %d, HEIGHT: %d, MANAGED: %d\n",
200 Values[0], Values[1], Values[2], Values[3], Values[4] );
201
202 rdsend();
203 }
204
205 /*------------------------------------------------------------\
206 | |
207 | Read Panel Values |
208 | |
209 \------------------------------------------------------------*/
210
GraalReadPanelValues(Panel)211 void GraalReadPanelValues( Panel )
212
213 GraalPanelItem *Panel;
214 {
215 int Values[5];
216
217 rdsbegin();
218
219 fscanf( FileConfig, "X: %11d, Y: %11d, WIDTH: %11d, HEIGHT: %11d, MANAGED: %11d\n",
220 &Values[0], &Values[1], &Values[2], &Values[3], &Values[4] );
221
222 Values[2] *= Panel->COLUMN;
223 Values[3] *= Panel->ROW;
224
225 GraalSetPanelValues( Panel, Values );
226
227 rdsend();
228 }
229
230 /*------------------------------------------------------------\
231 | |
232 | Read Panel Values |
233 | |
234 \------------------------------------------------------------*/
235
GraalReadTopLevelValues()236 char GraalReadTopLevelValues()
237
238 {
239 int Values[5];
240 char Version[64];
241
242 rdsbegin();
243
244 fscanf( FileConfig, "VERSION: %63s\n", Version );
245
246 if ( strcmp( Version, VERSION ) )
247 {
248 rdsend();
249 return( 0 );
250 }
251
252 fscanf( FileConfig, "X: %11d, Y: %11d, WIDTH: %11d, HEIGHT: %11d, MANAGED: %11d\n",
253 &Values[0], &Values[1], &Values[2], &Values[3], &Values[4] );
254
255 XtVaSetValues( GraalTopLevel,
256 XmNx , Values[0],
257 XmNy , Values[1],
258 XmNwidth , Values[2],
259 XmNheight , Values[3],
260 NULL );
261 rdsend();
262 return( 1 );
263 }
264
265 /*------------------------------------------------------------\
266 | |
267 | ReadActiveLayers |
268 | |
269 \------------------------------------------------------------*/
270
GraalReadActiveLayers()271 void GraalReadActiveLayers()
272
273 {
274 char Layer;
275 int Value;
276
277 rdsbegin();
278
279 for ( Layer = 0; Layer < RDS_ALL_LAYER; Layer++ )
280 {
281 fscanf( FileConfig, "ACTIVE: %11d\n", &Value );
282
283 if ( ( GRAAL_RDS_LAYER_NAME_TABLE[ (int)Layer ][ 0 ] != (char *)NULL ) &&
284 ( RDS_DYNAMIC_LAYER[ (int)Layer ] != RDS_LAYER_UNUSED ) )
285 {
286 GRAAL_RDS_ACTIVE_LAYER_TABLE[ (int)Layer ] = Value;
287 }
288 else
289 {
290 GRAAL_RDS_ACTIVE_LAYER_TABLE[ (int)Layer ] = -1;
291 }
292 }
293
294 for ( Layer = 0; Layer < GRAAL_MAX_ACTIVE_NAME; Layer++ )
295 {
296 fscanf( FileConfig, "ACTIVE: %11d\n", &Value );
297
298 GRAAL_RDS_ACTIVE_NAME_TABLE[ (int)Layer ] = Value;
299 }
300
301 fscanf( FileConfig, "FILLMODE: %11d\n", &Value );
302
303 GRAAL_FILL_MODE = Value;
304
305 fscanf( FileConfig, "INTERFACE: %11d\n", &Value );
306
307 GRAAL_INSTANCE_INTERFACE = Value;
308
309 rdsend();
310 }
311
312 /*------------------------------------------------------------\
313 | |
314 | WriteActiveLayers |
315 | |
316 \------------------------------------------------------------*/
317
GraalWriteActiveLayers()318 void GraalWriteActiveLayers()
319
320 {
321 char Layer;
322
323 rdsbegin();
324
325 for ( Layer = 0; Layer < RDS_ALL_LAYER; Layer++ )
326 {
327 fprintf( FileConfig, "ACTIVE: %d\n",
328 ( GRAAL_RDS_ACTIVE_LAYER_TABLE[ (int)Layer ] != 0 ) );
329 }
330
331 for ( Layer = 0; Layer < GRAAL_MAX_ACTIVE_NAME; Layer++ )
332 {
333 fprintf( FileConfig, "ACTIVE: %d\n",
334 GRAAL_RDS_ACTIVE_NAME_TABLE[ (int)Layer ] );
335 }
336
337 fprintf( FileConfig, "FILLMODE: %d\n",
338 GRAAL_FILL_MODE );
339
340 fprintf( FileConfig, "INTERFACE: %d\n",
341 GRAAL_INSTANCE_INTERFACE );
342
343 rdsend();
344 }
345
346 /*------------------------------------------------------------\
347 | |
348 | GraalDefaultTopLevelValues |
349 | |
350 \------------------------------------------------------------*/
351
GraalDefaultTopLevelValues()352 void GraalDefaultTopLevelValues()
353
354 {
355 rdsbegin();
356
357 XtVaSetValues( GraalTopLevel,
358 XmNheight , GRAAL_TOPLEVEL_HEIGHT,
359 XmNwidth , GRAAL_TOPLEVEL_WIDTH,
360 XmNx , GRAAL_TOPLEVEL_X,
361 XmNy , GRAAL_TOPLEVEL_Y,
362 NULL
363 );
364
365 rdsend();
366 }
367
368 /*------------------------------------------------------------\
369 | |
370 | GraalDefaultConfig |
371 | |
372 \------------------------------------------------------------*/
373
GraalDefaultConfig()374 void GraalDefaultConfig()
375
376 {
377 char Layer;
378
379 rdsbegin();
380
381 GraalDefaultTopLevelValues();
382
383 GraalSetPanelValues( &GraalViewArrowsPanel,
384 GraalViewArrowsDefaultValues );
385 GraalSetPanelValues( &GraalViewZoomPanel,
386 GraalViewZoomDefaultValues );
387 GraalSetPanelValues( &GraalViewLayerPanel,
388 GraalViewLayerDefaultValues );
389 GraalSetPanelValues( &GraalViewGridPanel,
390 GraalViewGridDefaultValues );
391 GraalSetPanelValues( &GraalViewMapPanel,
392 GraalViewMapDefaultValues );
393 GraalSetPanelValues( &GraalEditGlobalPanel,
394 GraalEditGlobalDefaultValues );
395 GraalSetPanelValues( &GraalWindowGlobalPanel,
396 GraalWindowGlobalDefaultValues );
397 GraalSetPanelValues( &GraalEditSelectPanel,
398 GraalEditSelectDefaultValues );
399 GraalSetPanelValues( &GraalEditIdentifyPanel,
400 GraalEditIdentifyDefaultValues );
401 GraalSetPanelValues( &GraalEditSearchPanel,
402 GraalEditSearchDefaultValues );
403 GraalSetPanelValues( &GraalEditSearchViewPanel,
404 GraalEditSearchViewDefaultValues );
405 GraalSetPanelValues( &GraalModifySegmentPanel,
406 GraalModifySegmentDefaultValues );
407 GraalSetPanelValues( &GraalModifyViaPanel,
408 GraalModifyViaDefaultValues );
409 GraalSetPanelValues( &GraalModifyBigViaPanel,
410 GraalModifyBigViaDefaultValues );
411 GraalSetPanelValues( &GraalModifyTransistorPanel,
412 GraalModifyTransistorDefaultValues );
413 GraalSetPanelValues( &GraalModifyConnectorPanel,
414 GraalModifyConnectorDefaultValues );
415 GraalSetPanelValues( &GraalModifyReferencePanel,
416 GraalModifyReferenceDefaultValues );
417 GraalSetPanelValues( &GraalModifyInstancePanel,
418 GraalModifyInstanceDefaultValues );
419 GraalSetPanelValues( &GraalCreateSegmentPanel,
420 GraalCreateSegmentDefaultValues );
421 GraalSetPanelValues( &GraalCreateViaPanel,
422 GraalCreateViaDefaultValues );
423 GraalSetPanelValues( &GraalCreateBigViaPanel,
424 GraalCreateBigViaDefaultValues );
425 GraalSetPanelValues( &GraalCreateTransistorPanel,
426 GraalCreateTransistorDefaultValues );
427 GraalSetPanelValues( &GraalCreateConnectorPanel,
428 GraalCreateConnectorDefaultValues );
429 GraalSetPanelValues( &GraalCreateReferencePanel,
430 GraalCreateReferenceDefaultValues );
431 GraalSetPanelValues( &GraalCreateInstancePanel,
432 GraalCreateInstanceDefaultValues );
433 GraalSetPanelValues( &GraalToolsGlobalPanel,
434 GraalToolsGlobalDefaultValues );
435 GraalSetPanelValues( &GraalToolsMessagePanel,
436 GraalToolsMessageDefaultValues );
437 GraalSetPanelValues( &GraalToolsDrucPanel,
438 GraalToolsDrucDefaultValues );
439 GraalSetPanelValues( &GraalToolsHierarchyPanel,
440 GraalToolsHierarchyDefaultValues );
441 GraalSetPanelValues( &GraalSetupInformationsPanel,
442 GraalSetupInformationsDefaultValues );
443 GraalSetPanelValues( &GraalHelpPresentPanel,
444 GraalHelpPresentDefaultValues );
445
446 for ( Layer = 0; Layer < RDS_ALL_LAYER; Layer++ )
447 {
448 if ( ( GRAAL_RDS_LAYER_NAME_TABLE[ (int)Layer ][ 0 ] != (char *)NULL ) &&
449 ( RDS_DYNAMIC_LAYER[ (int)Layer ] != RDS_LAYER_UNUSED ) )
450 {
451 GRAAL_RDS_ACTIVE_LAYER_TABLE[ (int)Layer ] = 1;
452 }
453 else
454 {
455 GRAAL_RDS_ACTIVE_LAYER_TABLE[ (int)Layer ] = -1;
456 }
457 }
458
459 for ( Layer = 0; Layer < GRAAL_MAX_ACTIVE_NAME; Layer++ )
460 {
461 GRAAL_RDS_ACTIVE_NAME_TABLE[ (int)Layer ] = 1;
462 }
463
464 GRAAL_FILL_MODE = GRAAL_FILL_MODE_PATTERN;
465 GRAAL_INSTANCE_INTERFACE = GRAAL_TRUE;
466
467 GraalInitializeLayer();
468
469 rdsend();
470 }
471
472 /*------------------------------------------------------------\
473 | |
474 | GraalLoadTopLevelConfig |
475 | |
476 \------------------------------------------------------------*/
477
GraalLoadTopLevelConfig()478 void GraalLoadTopLevelConfig()
479
480 {
481 rdsbegin();
482
483 FileConfig = fopen( GRAAL_GMS_FILE_NAME, "r" );
484
485 if ( FileConfig == (FILE *)NULL )
486 {
487 GraalDefaultTopLevelValues();
488 }
489 else
490 {
491 if ( ! GraalReadTopLevelValues() )
492 {
493 GraalDefaultTopLevelValues();
494 }
495
496 fclose( FileConfig );
497 }
498
499 rdsend();
500 }
501
502 /*------------------------------------------------------------\
503 | |
504 | GraalLoadConfig |
505 | |
506 \------------------------------------------------------------*/
507
GraalLoadConfig(Message)508 void GraalLoadConfig( Message )
509
510 char Message;
511 {
512 rdsbegin();
513
514 FileConfig = fopen( GRAAL_GMS_FILE_NAME, "r" );
515
516 if ( FileConfig == (FILE *)NULL )
517 {
518 if ( Message )
519 {
520 GraalErrorMessage( GraalMainWindow,
521 "Unable to open config file !" );
522 }
523 else
524 {
525 GraalDefaultConfig();
526 }
527 }
528 else
529 {
530 if ( GraalReadTopLevelValues() )
531 {
532 GraalReadPanelValues( &GraalViewArrowsPanel );
533 GraalReadPanelValues( &GraalViewZoomPanel );
534 GraalReadPanelValues( &GraalViewLayerPanel );
535 GraalReadPanelValues( &GraalViewGridPanel );
536 GraalReadPanelValues( &GraalViewMapPanel );
537 GraalReadPanelValues( &GraalEditGlobalPanel );
538 GraalReadPanelValues( &GraalWindowGlobalPanel );
539 GraalReadPanelValues( &GraalEditSelectPanel );
540 GraalReadPanelValues( &GraalEditIdentifyPanel );
541 GraalReadPanelValues( &GraalEditSearchPanel );
542 GraalReadPanelValues( &GraalEditSearchViewPanel );
543 GraalReadPanelValues( &GraalModifySegmentPanel );
544 GraalReadPanelValues( &GraalModifyViaPanel );
545 GraalReadPanelValues( &GraalModifyBigViaPanel );
546 GraalReadPanelValues( &GraalModifyTransistorPanel );
547 GraalReadPanelValues( &GraalModifyConnectorPanel );
548 GraalReadPanelValues( &GraalModifyReferencePanel );
549 GraalReadPanelValues( &GraalModifyInstancePanel );
550 GraalReadPanelValues( &GraalCreateSegmentPanel );
551 GraalReadPanelValues( &GraalCreateViaPanel );
552 GraalReadPanelValues( &GraalCreateBigViaPanel );
553 GraalReadPanelValues( &GraalCreateTransistorPanel );
554 GraalReadPanelValues( &GraalCreateConnectorPanel );
555 GraalReadPanelValues( &GraalCreateReferencePanel );
556 GraalReadPanelValues( &GraalCreateInstancePanel );
557 GraalReadPanelValues( &GraalToolsGlobalPanel );
558 GraalReadPanelValues( &GraalToolsMessagePanel );
559 GraalReadPanelValues( &GraalToolsDrucPanel );
560 GraalReadPanelValues( &GraalToolsHierarchyPanel );
561 GraalReadPanelValues( &GraalSetupInformationsPanel );
562 GraalReadPanelValues( &GraalHelpPresentPanel );
563
564 GraalReadActiveLayers();
565 GraalInitializeLayer();
566 }
567 else
568 if ( Message )
569 {
570 GraalErrorMessage( GraalMainWindow,
571 "Bad version, unable to open config file !" );
572 }
573 else
574 {
575 GraalDefaultConfig();
576 }
577
578 fclose( FileConfig );
579 }
580
581 rdsend();
582 }
583
584 /*------------------------------------------------------------\
585 | |
586 | GraalSaveConfig |
587 | |
588 \------------------------------------------------------------*/
589
GraalSaveConfig()590 void GraalSaveConfig()
591
592 {
593 rdsbegin();
594
595 FileConfig = fopen( GRAAL_GMS_FILE_NAME, "w" );
596
597 if ( FileConfig == (FILE *)NULL )
598 {
599 GraalErrorMessage( GraalMainWindow,
600 "Unable to open config file !" );
601 }
602 else
603 {
604 GraalWriteTopLevelValues();
605
606 GraalWritePanelValues( &GraalViewArrowsPanel );
607 GraalWritePanelValues( &GraalViewZoomPanel );
608 GraalWritePanelValues( &GraalViewLayerPanel );
609 GraalWritePanelValues( &GraalViewGridPanel );
610 GraalWritePanelValues( &GraalViewMapPanel );
611 GraalWritePanelValues( &GraalEditGlobalPanel );
612 GraalWritePanelValues( &GraalWindowGlobalPanel );
613 GraalWritePanelValues( &GraalEditSelectPanel );
614 GraalWritePanelValues( &GraalEditIdentifyPanel );
615 GraalWritePanelValues( &GraalEditSearchPanel );
616 GraalWritePanelValues( &GraalEditSearchViewPanel );
617 GraalWritePanelValues( &GraalModifySegmentPanel );
618 GraalWritePanelValues( &GraalModifyViaPanel );
619 GraalWritePanelValues( &GraalModifyBigViaPanel );
620 GraalWritePanelValues( &GraalModifyTransistorPanel );
621 GraalWritePanelValues( &GraalModifyConnectorPanel );
622 GraalWritePanelValues( &GraalModifyReferencePanel );
623 GraalWritePanelValues( &GraalModifyInstancePanel );
624 GraalWritePanelValues( &GraalCreateSegmentPanel );
625 GraalWritePanelValues( &GraalCreateViaPanel );
626 GraalWritePanelValues( &GraalCreateBigViaPanel );
627 GraalWritePanelValues( &GraalCreateTransistorPanel );
628 GraalWritePanelValues( &GraalCreateConnectorPanel );
629 GraalWritePanelValues( &GraalCreateReferencePanel );
630 GraalWritePanelValues( &GraalCreateInstancePanel );
631 GraalWritePanelValues( &GraalToolsGlobalPanel );
632 GraalWritePanelValues( &GraalToolsMessagePanel );
633 GraalWritePanelValues( &GraalToolsDrucPanel );
634 GraalWritePanelValues( &GraalToolsHierarchyPanel );
635 GraalWritePanelValues( &GraalSetupInformationsPanel );
636 GraalWritePanelValues( &GraalHelpPresentPanel );
637
638 GraalWriteActiveLayers();
639
640 fclose( FileConfig );
641 }
642
643 rdsend();
644 }
645