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