Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / yagle / xyagle / XME_menu.c
1 /*------------------------------------------------------------\
2 | |
3 | Tool : XYAG |
4 | |
5 | File : Menu.c |
6 | |
7 | Authors : Jacomme Ludovic |
8 | Lester Anthony |
9 | Picault Stephane |
10 | |
11 \------------------------------------------------------------*/
12
13 #include <stdio.h>
14 #include <Xm/Xm.h>
15 #include <Xm/PushBG.h>
16 #include <Xm/CascadeBG.h>
17
18 #include MUT_H
19 #include MLO_H
20 #include CGV_H
21 #include XSB_H
22 #include XTB_H
23 #include XYA_H
24 #include XMV_H
25 #include XME_H
26 #include XMX_H
27
28 #include "XME_menu.h"
29 #include "XMT_menu.h"
30 #include "XMT_panel.h"
31 #include "XME_edit.h"
32
33 int XyagDependencyMode = 0;
34
35 /*------------------------------------------------------------\
36 | EDIT menu definition |
37 \------------------------------------------------------------*/
38
39 XyagMenuItem XyagEditMenu[] =
40 {
41 {
42 "Select",
43 'S',
44 "Ctrl<Key>S",
45 "Ctrl+S",
46 &xmPushButtonGadgetClass,
47 False,
48 False,
49 False,
50 False,
51 CallbackEditSelect,
52 (XtPointer) NULL,
53 (Widget) NULL,
54 (Widget) NULL,
55 (XyagMenuItem *) NULL
56 }
57 ,
58 {"line",0,NULL,NULL,NULL,False,True,False,False,NULL,NULL,NULL,NULL,NULL}
59 ,
60 {
61 "Extract",
62 'E',
63 "Ctrl<Key>E",
64 "Ctrl+E",
65 &xmPushButtonGadgetClass,
66 False,
67 False,
68 False,
69 False,
70 CallbackExtract,
71 (XtPointer) NULL,
72 (Widget) NULL,
73 (Widget) NULL,
74 (XyagMenuItem *) NULL
75 }
76 ,
77 {
78 "Hilite",
79 'H',
80 "Ctrl<Key>H",
81 "Ctrl+H",
82 &xmPushButtonGadgetClass,
83 False,
84 False,
85 False,
86 False,
87 CallbackHilite,
88 (XtPointer) NULL,
89 (Widget) NULL,
90 (Widget) NULL,
91 (XyagMenuItem *) NULL
92 }
93 ,
94 {
95 "Go thru hierarchy",
96 'G',
97 "Ctrl<Key>G",
98 "Ctrl+G",
99 &xmPushButtonGadgetClass,
100 False,
101 False,
102 False,
103 False,
104 CallbackGoThru,
105 (XtPointer) NULL,
106 (Widget) NULL,
107 (Widget) NULL,
108 (XyagMenuItem *) NULL
109 }
110 ,
111 {"line",0,NULL,NULL,NULL,False,True,False,False,NULL,NULL,NULL,NULL,NULL}
112 ,
113 {
114 "Set Depth...",
115 'D',
116 NULL,
117 NULL,
118 &xmPushButtonGadgetClass,
119 False,
120 False,
121 False,
122 False,
123 CallbackSetDepth,
124 (XtPointer) NULL,
125 (Widget) NULL,
126 (Widget) NULL,
127 (XyagMenuItem *) NULL
128 }
129 ,
130 {"line",0,NULL,NULL,NULL,False,True,False,False,NULL,NULL,NULL,NULL,NULL}
131 ,
132 {
133 "Back",
134 'B',
135 "",
136 "Backspace",
137 &xmPushButtonGadgetClass,
138 False,
139 False,
140 False,
141 False,
142 CallbackPreviousExtract,
143 (XtPointer) NULL,
144 (Widget) NULL,
145 (Widget) NULL,
146 (XyagMenuItem *) NULL
147 }
148 ,
149 {
150 "Full Figure",
151 'u',
152 NULL,
153 NULL,
154 &xmPushButtonGadgetClass,
155 False,
156 False,
157 False,
158 False,
159 CallbackFullExtract,
160 (XtPointer) NULL,
161 (Widget) NULL,
162 (Widget) NULL,
163 (XyagMenuItem *) NULL
164 }
165 ,
166 {"line",0,NULL,NULL,NULL,False,True,False,False,NULL,NULL,NULL,NULL,NULL}
167 ,
168 {
169 "Find...",
170 'F',
171 "Ctrl<Key>F",
172 "Ctrl+F",
173 &xmPushButtonGadgetClass,
174 False,
175 False,
176 False,
177 False,
178 CallbackEditSearch,
179 (XtPointer) NULL,
180 (Widget) NULL,
181 (Widget) NULL,
182 (XyagMenuItem *) NULL
183 }
184 ,
185 {
186 NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL
187 }
188 };
189
190 /*------------------------------------------------------------\
191 | Callbacks for Hilite |
192 \------------------------------------------------------------*/
193
194 void
195 CallbackHilite(MyWidget, ClientData, CallData)
196 Widget MyWidget;
197 caddr_t ClientData;
198 caddr_t CallData;
199 {
200 switch (XyagDependencyMode) {
201 case XYAG_BACKWARD:
202 XyagChangeEditMode(XYAG_EDIT_BACKWARDHILITE);
203 break;
204 case XYAG_FORWARD:
205 XyagChangeEditMode(XYAG_EDIT_FORWARDHILITE);
206 break;
207 case XYAG_BOTH:
208 XyagChangeEditMode(XYAG_EDIT_BOTHHILITE);
209 break;
210 }
211 }
212
213 void
214 CallbackGoThru(MyWidget, ClientData, CallData)
215 Widget MyWidget;
216 caddr_t ClientData;
217 caddr_t CallData;
218 {
219 XyagChangeEditMode(XYAG_EDIT_TREE);
220 }
221
222 void
223 CallbackSetDepth(MyWidget, ClientData, CallData)
224 Widget MyWidget;
225 caddr_t ClientData;
226 caddr_t CallData;
227 {
228 XyagDepthSet();
229 }
230
231 /*------------------------------------------------------------\
232 | Callbacks for Extract |
233 \------------------------------------------------------------*/
234
235 void
236 CallbackExtract(MyWidget, ClientData, CallData)
237 Widget MyWidget;
238 caddr_t ClientData;
239 caddr_t CallData;
240 {
241 switch (XyagDependencyMode) {
242 case XYAG_BACKWARD:
243 XyagChangeEditMode(XYAG_EDIT_BACKWARDEXTRACT);
244 break;
245 case XYAG_FORWARD:
246 XyagChangeEditMode(XYAG_EDIT_FORWARDEXTRACT);
247 break;
248 case XYAG_BOTH:
249 XyagChangeEditMode(XYAG_EDIT_BOTHEXTRACT);
250 break;
251 }
252 }
253
254 void
255 CallbackFullExtract(MyWidget, ClientData, CallData)
256 Widget MyWidget;
257 caddr_t ClientData;
258 caddr_t CallData;
259 {
260 /* if (XyagCnsMode) {
261 if (XyagFigureCgv == NULL)
262 return;
263 if (XyagFigureCgv->NEXT == NULL)
264 return;
265
266 while (XyagFigureCgv->NEXT != NULL) {
267 XyagFigureCgv = rmvcgvfig(XyagFigureCgv);
268 }
269
270 XyagRecomputeBound = XYAG_TRUE;
271
272 if (XyagFigureCgv != (cgvfig_list *) NULL) {
273 XyagAddFigure();
274 }
275 XyagInitializeZoom();
276 XyagDisplayFigure(0, 0, XyagGraphicDx, XyagGraphicDy);
277
278 XyagRefreshGraphicWindow(0, 0, XyagGraphicDx, XyagGraphicDy);
279
280 XyagSetMouseCursor(XyagGraphicWindow, XYAG_NORMAL_CURSOR);
281 }
282 else {
283 XyagWarningMessage(XyagMainWindow, "Works only with CNS");
284 }
285 */
286 if (OPEN_STACK==NULL)
287 XyagWarningMessage(XyagMainWindow, "No First Figure !");
288 else if (OPEN_STACK->NEXT==NULL)
289 XyagWarningMessage(XyagMainWindow, "This is already the first Figure !");
290 else
291 {
292 chain_list *cl=OPEN_STACK, *prev=NULL;
293 while (cl->NEXT!=NULL) { prev=cl; cl=cl->NEXT;}
294
295 prev->NEXT=NULL;
296 freechain(prev);
297 OPEN_STACK=cl;
298 XyagRecomputeBound = XYAG_TRUE;
299
300 xyagSaveState();
301 XyagFigureCgv = (cgvfig_list *)OPEN_STACK->DATA;
302 xyagRetreiveState();
303 XyagChangeTopLevelTitle(XyagFigureCgv->NAME);
304 // XyagInitializeZoom();
305
306 XyagDisplayFigure(0, 0, XyagGraphicDx, XyagGraphicDy);
307
308 XyagRefreshGraphicWindow(0, 0, XyagGraphicDx, XyagGraphicDy);
309
310 XyagSetMouseCursor(XyagGraphicWindow, XYAG_NORMAL_CURSOR);
311 XyagZoomRefresh();
312 }
313 }
314
315 void
316 CallbackPreviousExtract(MyWidget, ClientData, CallData)
317 Widget MyWidget;
318 caddr_t ClientData;
319 caddr_t CallData;
320 {
321 /* if (XyagCnsMode) {
322 XyagRecomputeBound = XYAG_TRUE;
323
324 if (XyagFigureCgv != NULL && XyagFigureCgv->NEXT != NULL) {
325 XyagFigureCgv = rmvcgvfig(XyagFigureCgv);
326
327 if (XyagFigureCgv != NULL) {
328 XyagAddFigure();
329 }
330 XyagInitializeZoom();
331 XyagDisplayFigure(0, 0, XyagGraphicDx, XyagGraphicDy);
332
333 XyagRefreshGraphicWindow(0, 0, XyagGraphicDx, XyagGraphicDy);
334
335 XyagSetMouseCursor(XyagGraphicWindow, XYAG_NORMAL_CURSOR);
336 }
337 else {
338 XyagWarningMessage(XyagMainWindow, "No Previous Figure !");
339 }
340 }
341 else {
342 XyagWarningMessage(XyagMainWindow, "Works only with CNS");
343 }
344 */
345 if (OPEN_STACK==NULL || OPEN_STACK->NEXT==NULL)
346 XyagWarningMessage(XyagMainWindow, "No Previous Figure !");
347 else
348 {
349 chain_list *cl=OPEN_STACK;
350 XyagRecomputeBound = XYAG_TRUE;
351 OPEN_STACK=OPEN_STACK->NEXT;
352 cl->NEXT=NULL;
353 freechain(cl);
354 xyagSaveState();
355 XyagFigureCgv = (cgvfig_list *)OPEN_STACK->DATA;
356 xyagRetreiveState();
357 XyagChangeTopLevelTitle(XyagFigureCgv->NAME);
358 // XyagInitializeZoom();
359
360 XyagDisplayFigure(0, 0, XyagGraphicDx, XyagGraphicDy);
361
362 XyagRefreshGraphicWindow(0, 0, XyagGraphicDx, XyagGraphicDy);
363
364 XyagSetMouseCursor(XyagGraphicWindow, XYAG_NORMAL_CURSOR);
365 XyagZoomRefresh();
366 }
367 }
368
369 /*------------------------------------------------------------\
370 | CallbackEditIdentify |
371 \------------------------------------------------------------*/
372
373 void
374 CallbackEditIdentify(MyWidget, ClientData, CallData)
375 Widget MyWidget;
376 caddr_t ClientData;
377 caddr_t CallData;
378 {
379 XyagChangeEditMode(XYAG_EDIT_IDENTIFY);
380 }
381
382 /*------------------------------------------------------------\
383 | CallbackEditBehaviour |
384 \------------------------------------------------------------*/
385
386 void
387 CallbackEditBehaviour(MyWidget, ClientData, CallData)
388 Widget MyWidget;
389 caddr_t ClientData;
390 caddr_t CallData;
391 {
392 XyagChangeEditMode(XYAG_EDIT_BEHAVIOUR);
393 }
394
395 /*------------------------------------------------------------\
396 | CallbackEditSelect |
397 \------------------------------------------------------------*/
398
399 void
400 CallbackEditSelect(MyWidget, ClientData, CallData)
401 Widget MyWidget;
402 caddr_t ClientData;
403 caddr_t CallData;
404 {
405 XyagChangeEditMode(XYAG_EDIT_SELECT);
406 }
407
408 /*------------------------------------------------------------\
409 | CallbackEditSearch |
410 \------------------------------------------------------------*/
411
412 void
413 CallbackEditSearch(MyWidget, ClientData, CallData)
414 Widget MyWidget;
415 caddr_t ClientData;
416 caddr_t CallData;
417 {
418 XyagFind();
419 }