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