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 "GSB.h"
55 # include "GTB.h"
56 # include "GRM.h"
57 # include "GMV.h"
58 # include "GME.h"
59 # include "GMX.h"
60 
61 # include "GME_menu.h"
62 # include "GME_edit.h"
63 # include "GME_modify.h"
64 # include "GME_message.h"
65 
66 /*------------------------------------------------------------\
67 |                                                             |
68 |                           Constants                         |
69 |                                                             |
70 \------------------------------------------------------------*/
71 /*------------------------------------------------------------\
72 |                                                             |
73 |                            Types                            |
74 |                                                             |
75 \------------------------------------------------------------*/
76 /*------------------------------------------------------------\
77 |                                                             |
78 |                          Variables                          |
79 |                                                             |
80 \------------------------------------------------------------*/
81 
82    GraalMenuItem GraalEditMenu[] =
83 
84          {
85            {
86              "Undo",
87              'U',
88              "Ctrl<Key>U",
89              "Ctrl U",
90              &xmPushButtonGadgetClass,
91              False,
92              False,
93              False,
94              CallbackEditUndo,
95              (XtPointer)NULL,
96              (Widget)NULL,
97              (Widget)NULL,
98              (GraalMenuItem *)NULL
99            }
100            ,
101            {
102              "Redo",
103              'R',
104              "Ctrl<Key>R",
105              "Ctrl R",
106              &xmPushButtonGadgetClass,
107              False,
108              False,
109              False,
110              CallbackEditRedo,
111              (XtPointer)NULL,
112              (Widget)NULL,
113              (Widget)NULL,
114              (GraalMenuItem *)NULL
115            }
116            ,
117            {
118              "Copy",
119              'C',
120              "Ctrl<Key>C",
121              "Ctrl C",
122              &xmPushButtonGadgetClass,
123              False,
124              False,
125              False,
126              CallbackEditCopy,
127              (XtPointer)0,
128              (Widget)NULL,
129              (Widget)NULL,
130              (GraalMenuItem *)NULL
131            }
132            ,
133            {
134              "Move",
135              'M',
136              "Ctrl<Key>M",
137              "Ctrl M",
138              &xmPushButtonGadgetClass,
139              False,
140              False,
141              False,
142              CallbackEditMove,
143              (XtPointer)0,
144              (Widget)NULL,
145              (Widget)NULL,
146              (GraalMenuItem *)NULL
147            }
148            ,
149            {
150              "Delete",
151              'D',
152              "Ctrl<Key>D",
153              "Ctrl D",
154              &xmPushButtonGadgetClass,
155              False,
156              False,
157              False,
158              CallbackEditDelete,
159              (XtPointer)0,
160              (Widget)NULL,
161              (Widget)NULL,
162              (GraalMenuItem *)NULL
163            }
164            ,
165            {
166              "Stretch",
167              'S',
168              "Ctrl<Key>S",
169              "Ctrl S",
170              &xmPushButtonGadgetClass,
171              False,
172              False,
173              False,
174              CallbackEditStretch,
175              (XtPointer)0,
176              (Widget)NULL,
177              (Widget)NULL,
178              (GraalMenuItem *)NULL
179            }
180            ,
181            {
182              "Modify           ",
183              'y',
184              "Ctrl<Key>Y",
185              "Ctrl Y",
186              &xmPushButtonGadgetClass,
187              False,
188              False,
189              False,
190              CallbackEditModify,
191              (XtPointer)0,
192              (Widget)NULL,
193              (Widget)NULL,
194              (GraalMenuItem *)NULL
195            }
196            ,
197            {
198              "Identify",
199              'I',
200              NULL,
201              NULL,
202              &xmPushButtonGadgetClass,
203              False,
204              False,
205              False,
206              CallbackEditIdentify,
207              (XtPointer)0,
208              (Widget)NULL,
209              (Widget)NULL,
210              (GraalMenuItem *)NULL
211            }
212            ,
213            {
214              "Search           ",
215              'h',
216              "Ctrl<Key>H",
217              "Ctrl H",
218              &xmPushButtonGadgetClass,
219              False,
220              False,
221              False,
222              CallbackEditSearch,
223              (XtPointer)0,
224              (Widget)NULL,
225              (Widget)NULL,
226              (GraalMenuItem *)NULL
227            }
228            ,
229            {
230              NULL
231            }
232          };
233 
234    GraalMenuItem GraalWindowMenu[] =
235 
236          {
237            {
238              "Undo",
239              'U',
240              "Meta<Key>U",
241              "Meta U",
242              &xmPushButtonGadgetClass,
243              False,
244              False,
245              False,
246              CallbackEditUndo,
247              (XtPointer)1,
248              (Widget)NULL,
249              (Widget)NULL,
250              (GraalMenuItem *)NULL
251            }
252            ,
253            {
254              "Redo",
255              'R',
256              "Meta<Key>R",
257              "Meta R",
258              &xmPushButtonGadgetClass,
259              False,
260              False,
261              False,
262              CallbackEditRedo,
263              (XtPointer)1,
264              (Widget)NULL,
265              (Widget)NULL,
266              (GraalMenuItem *)NULL
267            }
268            ,
269            {
270              "Copy",
271              'C',
272              "Meta<Key>C",
273              "Meta C",
274              &xmPushButtonGadgetClass,
275              False,
276              False,
277              False,
278              CallbackEditCopy,
279              (XtPointer)1,
280              (Widget)NULL,
281              (Widget)NULL,
282              (GraalMenuItem *)NULL
283            }
284            ,
285            {
286              "Move",
287              'M',
288              "Meta<Key>M",
289              "Meta M",
290              &xmPushButtonGadgetClass,
291              False,
292              False,
293              False,
294              CallbackEditMove,
295              (XtPointer)1,
296              (Widget)NULL,
297              (Widget)NULL,
298              (GraalMenuItem *)NULL
299            }
300            ,
301            {
302              "Delete",
303              'D',
304              "Meta<Key>D",
305              "Meta D",
306              &xmPushButtonGadgetClass,
307              False,
308              False,
309              False,
310              CallbackEditDelete,
311              (XtPointer)1,
312              (Widget)NULL,
313              (Widget)NULL,
314              (GraalMenuItem *)NULL
315            }
316            ,
317            {
318              "Stretch",
319              'S',
320              "Meta<Key>S",
321              "Meta S",
322              &xmPushButtonGadgetClass,
323              False,
324              False,
325              False,
326              CallbackEditStretch,
327              (XtPointer)1,
328              (Widget)NULL,
329              (Widget)NULL,
330              (GraalMenuItem *)NULL
331            }
332            ,
333            {
334              "Modify           ",
335              'y',
336              "Meta<Key>Y",
337              "Meta Y",
338              &xmPushButtonGadgetClass,
339              False,
340              False,
341              False,
342              CallbackEditModify,
343              (XtPointer)1,
344              (Widget)NULL,
345              (Widget)NULL,
346              (GraalMenuItem *)NULL
347            }
348            ,
349            {
350              "Identify          ",
351              'I',
352              "Meta<Key>I",
353              "Meta I",
354              &xmPushButtonGadgetClass,
355              False,
356              False,
357              False,
358              CallbackEditIdentify,
359              (XtPointer)1,
360              (Widget)NULL,
361              (Widget)NULL,
362              (GraalMenuItem *)NULL
363            }
364            ,
365            {
366              NULL
367            }
368         };
369 
370 /*------------------------------------------------------------\
371 |                                                             |
372 |                          Functions                          |
373 |                                                             |
374 \------------------------------------------------------------*/
375 /*------------------------------------------------------------\
376 |                                                             |
377 |                     CallbackEditIdentify                    |
378 |                                                             |
379 \------------------------------------------------------------*/
380 
CallbackEditIdentify(MyWidget,ClientData,CallData)381 void CallbackEditIdentify( MyWidget, ClientData, CallData )
382 
383      Widget  MyWidget;
384      caddr_t ClientData;
385      caddr_t CallData;
386 {
387   rdsbegin();
388 
389   if ( ClientData )
390   {
391     GraalEnterPanel( &GraalWindowGlobalPanel );
392 
393     GraalChangeEditMode( GRAAL_SELECT_WINDOW_IDENTIFY,
394                          GraalPromptSelectWindowIdentify );
395   }
396   else
397   {
398     GraalEnterPanel( &GraalEditGlobalPanel );
399 
400     GraalChangeEditMode( GRAAL_SELECT_POINT_IDENTIFY,
401                          GraalPromptSelectPointIdentify );
402   }
403 
404   rdsend();
405 }
406 
407 /*------------------------------------------------------------\
408 |                                                             |
409 |                     CallbackEditCopy                        |
410 |                                                             |
411 \------------------------------------------------------------*/
412 
CallbackEditCopy(MyWidget,ClientData,CallData)413 void CallbackEditCopy( MyWidget, ClientData, CallData )
414 
415      Widget  MyWidget;
416      caddr_t ClientData;
417      caddr_t CallData;
418 {
419   rdsbegin();
420 
421   if ( ClientData )
422   {
423     GraalEnterPanel( &GraalWindowGlobalPanel );
424 
425     GraalChangeEditMode( GRAAL_SELECT_WINDOW_COPY,
426                          GraalPromptSelectWindowCopy );
427   }
428   else
429   {
430     GraalEnterPanel( &GraalEditGlobalPanel );
431 
432     GraalChangeEditMode( GRAAL_SELECT_POINT_COPY,
433                          GraalPromptSelectPointCopy );
434   }
435 
436   rdsend();
437 }
438 
439 /*------------------------------------------------------------\
440 |                                                             |
441 |                     CallbackEditMove                        |
442 |                                                             |
443 \------------------------------------------------------------*/
444 
CallbackEditMove(MyWidget,ClientData,CallData)445 void CallbackEditMove( MyWidget, ClientData, CallData )
446 
447      Widget  MyWidget;
448      caddr_t ClientData;
449      caddr_t CallData;
450 {
451   rdsbegin();
452 
453   if ( ClientData )
454   {
455     GraalEnterPanel( &GraalWindowGlobalPanel );
456 
457     GraalChangeEditMode( GRAAL_SELECT_WINDOW_MOVE,
458                          GraalPromptSelectWindowMove );
459   }
460   else
461   {
462     GraalEnterPanel( &GraalEditGlobalPanel );
463 
464     GraalChangeEditMode( GRAAL_SELECT_POINT_MOVE,
465                          GraalPromptSelectPointMove );
466   }
467 
468   rdsend();
469 }
470 
471 /*------------------------------------------------------------\
472 |                                                             |
473 |                     CallbackEditDelete                      |
474 |                                                             |
475 \------------------------------------------------------------*/
476 
CallbackEditDelete(MyWidget,ClientData,CallData)477 void CallbackEditDelete( MyWidget, ClientData, CallData )
478 
479      Widget  MyWidget;
480      caddr_t ClientData;
481      caddr_t CallData;
482 {
483   rdsbegin();
484 
485   if ( ClientData )
486   {
487     GraalEnterPanel( &GraalWindowGlobalPanel );
488 
489     GraalChangeEditMode( GRAAL_SELECT_WINDOW_DELETE,
490                          GraalPromptSelectWindowDelete );
491   }
492   else
493   {
494     GraalEnterPanel( &GraalEditGlobalPanel );
495 
496     GraalChangeEditMode( GRAAL_SELECT_POINT_DELETE,
497                          GraalPromptSelectPointDelete );
498   }
499 
500   rdsend();
501 }
502 
503 /*------------------------------------------------------------\
504 |                                                             |
505 |                   CallbackEditStretch                       |
506 |                                                             |
507 \------------------------------------------------------------*/
508 
CallbackEditStretch(MyWidget,ClientData,CallData)509 void CallbackEditStretch( MyWidget, ClientData, CallData )
510 
511      Widget  MyWidget;
512      caddr_t ClientData;
513      caddr_t CallData;
514 {
515   rdsbegin();
516 
517   if ( ClientData )
518   {
519     GraalEnterPanel( &GraalWindowGlobalPanel );
520 
521     GraalChangeEditMode( GRAAL_SELECT_WINDOW_STRETCH,
522                          GraalPromptSelectWindowStretch );
523   }
524   else
525   {
526     GraalEnterPanel( &GraalEditGlobalPanel );
527 
528     GraalChangeEditMode( GRAAL_SELECT_POINT_STRETCH,
529                          GraalPromptSelectPointStretch );
530   }
531 
532   rdsend();
533 }
534 
535 /*------------------------------------------------------------\
536 |                                                             |
537 |                   CallbackEditModify                        |
538 |                                                             |
539 \------------------------------------------------------------*/
540 
CallbackEditModify(MyWidget,ClientData,CallData)541 void CallbackEditModify( MyWidget, ClientData, CallData )
542 
543      Widget  MyWidget;
544      caddr_t ClientData;
545      caddr_t CallData;
546 {
547   rdsbegin();
548 
549   if ( ClientData )
550   {
551     GraalEnterPanel( &GraalWindowGlobalPanel );
552 
553     GraalChangeEditMode( GRAAL_SELECT_WINDOW_MODIFY,
554                          GraalPromptSelectWindowModify );
555   }
556   else
557   {
558     GraalEnterPanel( &GraalEditGlobalPanel );
559 
560     GraalChangeEditMode( GRAAL_SELECT_POINT_MODIFY,
561                          GraalPromptSelectPointModify );
562   }
563 
564   rdsend();
565 }
566 
567 /*------------------------------------------------------------\
568 |                                                             |
569 |                       CallbackEditSearch                    |
570 |                                                             |
571 \------------------------------------------------------------*/
572 
CallbackEditSearch(MyWidget,ClientData,CallData)573 void CallbackEditSearch( MyWidget, ClientData, CallData )
574 
575      Widget  MyWidget;
576      caddr_t ClientData;
577      caddr_t CallData;
578 {
579   rdsbegin();
580 
581   GraalEnterPanel( &GraalEditSearchPanel );
582 
583   rdsend();
584 }
585 
586 /*------------------------------------------------------------\
587 |                                                             |
588 |                       CallbackEditUndo                      |
589 |                                                             |
590 \------------------------------------------------------------*/
591 
CallbackEditUndo(MyWidget,ClientData,CallData)592 void CallbackEditUndo( MyWidget, ClientData, CallData )
593 
594      Widget  MyWidget;
595      caddr_t ClientData;
596      caddr_t CallData;
597 {
598   rdsbegin();
599 
600   GraalEditUndo();
601 
602   if ( ClientData )
603   {
604     GraalEnterPanel( &GraalWindowGlobalPanel );
605   }
606   else
607   {
608     GraalEnterPanel( &GraalEditGlobalPanel );
609   }
610 
611   rdsend();
612 }
613 
614 /*------------------------------------------------------------\
615 |                                                             |
616 |                       CallbackEditRedo                      |
617 |                                                             |
618 \------------------------------------------------------------*/
619 
CallbackEditRedo(MyWidget,ClientData,CallData)620 void CallbackEditRedo( MyWidget, ClientData, CallData )
621 
622      Widget  MyWidget;
623      caddr_t ClientData;
624      caddr_t CallData;
625 {
626   rdsbegin();
627 
628   GraalEditRedo();
629 
630   if ( ClientData )
631   {
632     GraalEnterPanel( &GraalWindowGlobalPanel );
633   }
634   else
635   {
636     GraalEnterPanel( &GraalEditGlobalPanel );
637   }
638 
639   rdsend();
640 }
641 
642