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 : Menu.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 # include <Xm/CascadeBG.h>
49
50 # include "mut.h"
51 # include "mph.h"
52 # include "rds.h"
53 # include "rpr.h"
54 # include "rtl.h"
55 # include "GSB.h"
56 # include "GTB.h"
57 # include "GRM.h"
58 # include "GMV.h"
59 # include "GMT.h"
60 # include "GMX.h"
61
62 # include "GMT_menu.h"
63 # include "GMT_dialog.h"
64 # include "GMT_tools.h"
65 # include "GMT_message.h"
66
67 /*------------------------------------------------------------\
68 | |
69 | Constants |
70 | |
71 \------------------------------------------------------------*/
72 /*------------------------------------------------------------\
73 | |
74 | Types |
75 | |
76 \------------------------------------------------------------*/
77 /*------------------------------------------------------------\
78 | |
79 | Variables |
80 | |
81 \------------------------------------------------------------*/
82
83 GraalMenuItem GraalToolsMenu[] =
84
85 {
86 {
87 "Equi",
88 'E',
89 NULL,
90 NULL,
91 &xmPushButtonGadgetClass,
92 False,
93 False,
94 False,
95 CallbackToolsEqui,
96 (XtPointer)NULL,
97 (Widget)NULL,
98 (Widget)NULL,
99 (GraalMenuItem *)NULL
100 }
101 ,
102 {
103 "UnEqui",
104 'i',
105 NULL,
106 NULL,
107 &xmPushButtonGadgetClass,
108 False,
109 False,
110 False,
111 CallbackToolsUnEqui,
112 (XtPointer)NULL,
113 (Widget)NULL,
114 (Widget)NULL,
115 (GraalMenuItem *)NULL
116 }
117 ,
118 {
119 "Flat",
120 'F',
121 NULL,
122 NULL,
123 &xmPushButtonGadgetClass,
124 False,
125 False,
126 False,
127 CallbackToolsFlatInstance,
128 (XtPointer)NULL,
129 (Widget)NULL,
130 (Widget)NULL,
131 (GraalMenuItem *)NULL
132 }
133 ,
134 {
135 "Unflat",
136 't',
137 NULL,
138 NULL,
139 &xmPushButtonGadgetClass,
140 False,
141 False,
142 False,
143 CallbackToolsUnflatInstance,
144 (XtPointer)NULL,
145 (Widget)NULL,
146 (Widget)NULL,
147 (GraalMenuItem *)NULL
148 }
149 ,
150 {
151 "Peek",
152 'P',
153 NULL,
154 NULL,
155 &xmPushButtonGadgetClass,
156 False,
157 False,
158 False,
159 CallbackToolsPeek,
160 (XtPointer)NULL,
161 (Widget)NULL,
162 (Widget)NULL,
163 (GraalMenuItem *)NULL
164 }
165 ,
166 {
167 "Unpeek",
168 'k',
169 NULL,
170 NULL,
171 &xmPushButtonGadgetClass,
172 False,
173 False,
174 False,
175 CallbackToolsUnpeek,
176 (XtPointer)NULL,
177 (Widget)NULL,
178 (Widget)NULL,
179 (GraalMenuItem *)NULL
180 }
181 ,
182 {
183 "Druc",
184 'D',
185 NULL,
186 NULL,
187 &xmPushButtonGadgetClass,
188 False,
189 False,
190 False,
191 CallbackToolsDruc,
192 (XtPointer)NULL,
193 (Widget)NULL,
194 (Widget)NULL,
195 (GraalMenuItem *)NULL
196 }
197 ,
198 {
199 "Real flat",
200 'R',
201 NULL,
202 NULL,
203 &xmPushButtonGadgetClass,
204 False,
205 False,
206 False,
207 CallbackToolsRealFlatInstance,
208 (XtPointer)NULL,
209 (Widget)NULL,
210 (Widget)NULL,
211 (GraalMenuItem *)NULL
212 }
213 ,
214 {
215 "Hierarchy",
216 'H',
217 NULL,
218 NULL,
219 &xmPushButtonGadgetClass,
220 False,
221 False,
222 False,
223 CallbackToolsHierarchy,
224 (XtPointer)NULL,
225 (Widget)NULL,
226 (Widget)NULL,
227 (GraalMenuItem *)NULL
228 }
229 ,
230 {
231 "Load Error",
232 'L',
233 NULL,
234 NULL,
235 &xmPushButtonGadgetClass,
236 False,
237 False,
238 False,
239 CallbackToolsLoadError,
240 (XtPointer)NULL,
241 (Widget)NULL,
242 (Widget)NULL,
243 (GraalMenuItem *)NULL
244 }
245 ,
246 {
247 "Save Image",
248 'S',
249 NULL,
250 NULL,
251 &xmPushButtonGadgetClass,
252 False,
253 False,
254 False,
255 CallbackToolsSavePixmap,
256 (XtPointer)NULL,
257 (Widget)NULL,
258 (Widget)NULL,
259 (GraalMenuItem *)NULL
260 }
261 ,
262 {
263 "Message",
264 'M',
265 NULL,
266 NULL,
267 &xmPushButtonGadgetClass,
268 False,
269 False,
270 False,
271 CallbackToolsMessage,
272 (XtPointer)NULL,
273 (Widget)NULL,
274 (Widget)NULL,
275 (GraalMenuItem *)NULL
276 }
277 ,
278 {
279 NULL
280 }
281 };
282
283 /*------------------------------------------------------------\
284 | |
285 | Functions |
286 | |
287 \------------------------------------------------------------*/
288 /*------------------------------------------------------------\
289 | |
290 | CallbackToolsEqui |
291 | |
292 \------------------------------------------------------------*/
293
CallbackToolsEqui(MyWidget,ClientData,CallData)294 void CallbackToolsEqui( MyWidget, ClientData, CallData )
295
296 Widget MyWidget;
297 caddr_t ClientData;
298 caddr_t CallData;
299 {
300 rdsbegin();
301
302 GraalEnterPanel( &GraalToolsGlobalPanel );
303
304 if ( GraalHeadEqui != (rdsrec_list *)NULL )
305 {
306 GraalDelEqui();
307 GraalZoomRefresh();
308 }
309
310 GraalChangeEditMode( GRAAL_TOOLS_EQUI,
311 GraalPromptToolsEqui );
312
313 rdsend();
314 }
315
316 /*------------------------------------------------------------\
317 | |
318 | CallbackToolsUnEqui |
319 | |
320 \------------------------------------------------------------*/
321
CallbackToolsUnEqui(MyWidget,ClientData,CallData)322 void CallbackToolsUnEqui( MyWidget, ClientData, CallData )
323
324 Widget MyWidget;
325 caddr_t ClientData;
326 caddr_t CallData;
327 {
328 rdsbegin();
329
330 if ( GraalHeadEqui != (rdsrec_list *)NULL )
331 {
332 GraalDelEqui();
333 GraalZoomRefresh();
334 }
335
336 GraalEnterPanel( &GraalToolsGlobalPanel );
337
338 rdsend();
339 }
340
341 /*------------------------------------------------------------\
342 | |
343 | CallbackToolsFlatInstance |
344 | |
345 \------------------------------------------------------------*/
346
CallbackToolsFlatInstance(MyWidget,ClientData,CallData)347 void CallbackToolsFlatInstance( MyWidget, ClientData, CallData )
348
349 Widget MyWidget;
350 caddr_t ClientData;
351 caddr_t CallData;
352 {
353 rdsbegin();
354
355 GraalEnterPanel( &GraalToolsGlobalPanel );
356
357 GraalChangeEditMode( GRAAL_TOOLS_FLATTEN,
358 GraalPromptToolsFlatten );
359
360 rdsend();
361 }
362
363 /*------------------------------------------------------------\
364 | |
365 | CallbackToolsRealFlatInstance |
366 | |
367 \------------------------------------------------------------*/
368
CallbackToolsRealFlatInstance(MyWidget,ClientData,CallData)369 void CallbackToolsRealFlatInstance( MyWidget, ClientData, CallData )
370
371 Widget MyWidget;
372 caddr_t ClientData;
373 caddr_t CallData;
374 {
375 rdsbegin();
376
377 GraalEnterPanel( &GraalToolsGlobalPanel );
378
379 GraalChangeEditMode( GRAAL_TOOLS_REAL_FLATTEN,
380 GraalPromptToolsRealFlatten );
381
382 rdsend();
383 }
384
385 /*------------------------------------------------------------\
386 | |
387 | CallbackToolsUnflatInstance |
388 | |
389 \------------------------------------------------------------*/
390
CallbackToolsUnflatInstance(MyWidget,ClientData,CallData)391 void CallbackToolsUnflatInstance( MyWidget, ClientData, CallData )
392
393 Widget MyWidget;
394 caddr_t ClientData;
395 caddr_t CallData;
396 {
397 rdsbegin();
398
399 GraalEnterPanel( &GraalToolsGlobalPanel );
400
401 GraalChangeEditMode( GRAAL_TOOLS_UNFLATTEN,
402 GraalPromptToolsUnflatten );
403
404 rdsend();
405 }
406
407 /*------------------------------------------------------------\
408 | |
409 | CallbackToolsPeek |
410 | |
411 \------------------------------------------------------------*/
412
CallbackToolsPeek(MyWidget,ClientData,CallData)413 void CallbackToolsPeek( MyWidget, ClientData, CallData )
414
415 Widget MyWidget;
416 caddr_t ClientData;
417 caddr_t CallData;
418 {
419 rdsbegin();
420
421 GraalEnterPanel( &GraalToolsGlobalPanel );
422
423 GraalChangeEditMode( GRAAL_TOOLS_PEEK,
424 GraalPromptToolsPeek );
425
426 rdsend();
427 }
428
429 /*------------------------------------------------------------\
430 | |
431 | CallbackToolsUnpeek |
432 | |
433 \------------------------------------------------------------*/
434
CallbackToolsUnpeek(MyWidget,ClientData,CallData)435 void CallbackToolsUnpeek( MyWidget, ClientData, CallData )
436
437 Widget MyWidget;
438 caddr_t ClientData;
439 caddr_t CallData;
440 {
441 rdsbegin();
442
443 GraalEnterPanel( &GraalToolsGlobalPanel );
444
445 GraalToolsUnpeek();
446
447 rdsend();
448 }
449
450 /*------------------------------------------------------------\
451 | |
452 | CallbackToolsDruc |
453 | |
454 \------------------------------------------------------------*/
455
CallbackToolsDruc(MyWidget,ClientData,CallData)456 void CallbackToolsDruc( MyWidget, ClientData, CallData )
457
458 Widget MyWidget;
459 caddr_t ClientData;
460 caddr_t CallData;
461 {
462 rdsbegin();
463
464 GraalEnterPanel( &GraalToolsGlobalPanel );
465
466 GraalChangeEditMode( GRAAL_TOOLS_DRUC,
467 GraalPromptToolsDruc );
468
469 rdsend();
470 }
471
472 /*------------------------------------------------------------\
473 | |
474 | CallbackToolsMessage |
475 | |
476 \------------------------------------------------------------*/
477
CallbackToolsMessage(MyWidget,ClientData,CallData)478 void CallbackToolsMessage( MyWidget, ClientData, CallData )
479
480 Widget MyWidget;
481 caddr_t ClientData;
482 caddr_t CallData;
483 {
484 rdsbegin();
485
486 GraalEnterPanel( &GraalToolsMessagePanel );
487
488 rdsend();
489 }
490
491 /*------------------------------------------------------------\
492 | |
493 | CallbackToolsHierarchy |
494 | |
495 \------------------------------------------------------------*/
496
CallbackToolsHierarchy(MyWidget,ClientData,CallData)497 void CallbackToolsHierarchy( MyWidget, ClientData, CallData )
498
499 Widget MyWidget;
500 caddr_t ClientData;
501 caddr_t CallData;
502 {
503 rdsbegin();
504
505 GraalEnterPanel( &GraalToolsHierarchyPanel );
506
507 GraalChangeEditMode( GRAAL_TOOLS_HIERARCHY_DOWN,
508 GraalPromptToolsHierarchyDown );
509
510 rdsend();
511 }
512
513 /*------------------------------------------------------------\
514 | |
515 | CallbackToolsSavePixmap |
516 | |
517 \------------------------------------------------------------*/
518
CallbackToolsSavePixmap(MyWidget,ClientData,CallData)519 void CallbackToolsSavePixmap( MyWidget, ClientData, CallData )
520
521 Widget MyWidget;
522 caddr_t ClientData;
523 caddr_t CallData;
524 {
525 rdsbegin();
526
527 if ( GraalFigureMbk != (phfig_list *)NULL )
528 {
529 GraalEnterDialog( &GraalToolsSavePixmapDialog );
530 }
531 else
532 {
533 GraalErrorMessage( GraalMainWindow, "No current figure !" );
534 }
535
536 rdsend();
537 }
538
539 /*------------------------------------------------------------\
540 | |
541 | CallbackToolsLoadError |
542 | |
543 \------------------------------------------------------------*/
544
CallbackToolsLoadError(MyWidget,ClientData,CallData)545 void CallbackToolsLoadError( MyWidget, ClientData, CallData )
546
547 Widget MyWidget;
548 caddr_t ClientData;
549 caddr_t CallData;
550 {
551 XmString Filter;
552
553 rdsbegin();
554
555 if ( GraalToolsFilter[2] == '\0' )
556 {
557 strcat( GraalToolsFilter, RDS_IN );
558 strcat( GraalToolsExtention, RDS_IN );
559
560 Filter = XmStringCreateSimple( GraalToolsFilter );
561
562 XtVaSetValues( GraalToolsLoadErrorDialog.WIDGET,
563 XmNpattern, Filter, NULL);
564
565 XmStringFree( Filter );
566 }
567
568 if ( GraalFigureMbk != (phfig_list *)NULL )
569 {
570 GraalEnterDialog( &GraalToolsLoadErrorDialog );
571 }
572 else
573 {
574 GraalErrorMessage( GraalMainWindow, "No current figure !" );
575 }
576
577 rdsend();
578 }
579