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 <string.h>
47 # include <Xm/Xm.h>
48 # include <Xm/FileSB.h>
49 # include <Xm/SelectioB.h>
50 # include <Xm/PushBG.h>
51
52 # include "mut.h"
53 # include "mph.h"
54 # include "rds.h"
55 # include "rpr.h"
56 # include "rfm.h"
57 # include "GRM.h"
58 # include "GMX.h"
59 # include "GTB.h"
60 # include "GSB.h"
61 # include "GMF.h"
62
63 # include "GMF_menu.h"
64 # include "GMF_dialog.h"
65 # include "GMF_file.h"
66
67 /*------------------------------------------------------------\
68 | |
69 | Constants |
70 | |
71 \------------------------------------------------------------*/
72 /*------------------------------------------------------------\
73 | |
74 | Types |
75 | |
76 \------------------------------------------------------------*/
77 /*------------------------------------------------------------\
78 | |
79 | Variables |
80 | |
81 \------------------------------------------------------------*/
82 /*------------------------------------------------------------\
83 | |
84 | Menu |
85 | |
86 \------------------------------------------------------------*/
87
88 GraalMenuItem GraalFileMenu[] =
89
90 {
91 {
92 "New",
93 'N',
94 NULL,
95 NULL,
96 &xmPushButtonGadgetClass,
97 False,
98 False,
99 False,
100 CallbackFileNew,
101 (XtPointer)NULL,
102 (Widget)NULL,
103 (Widget)NULL,
104 (GraalMenuItem *)NULL
105 }
106 ,
107 {
108 "Open",
109 'O',
110 NULL,
111 NULL,
112 &xmPushButtonGadgetClass,
113 False,
114 False,
115 False,
116 CallbackFileOpen,
117 (XtPointer)NULL,
118 (Widget)NULL,
119 (Widget)NULL,
120 (GraalMenuItem *)NULL
121 }
122 ,
123 {
124 "Save ",
125 'S',
126 "Ctrl<Key>W",
127 "Ctrl W",
128 &xmPushButtonGadgetClass,
129 False,
130 False,
131 False,
132 CallbackFileSave,
133 (XtPointer)NULL,
134 (Widget)NULL,
135 (Widget)NULL,
136 (GraalMenuItem *)NULL
137 }
138 ,
139 {
140 "Save As",
141 'A',
142 NULL,
143 NULL,
144 &xmPushButtonGadgetClass,
145 False,
146 False,
147 False,
148 CallbackFileSaveAs,
149 (XtPointer)NULL,
150 (Widget)NULL,
151 (Widget)NULL,
152 (GraalMenuItem *)NULL
153 }
154 ,
155 {
156 "Quit ",
157 'Q',
158 "Ctrl<Key>Q",
159 "Ctrl Q",
160 &xmPushButtonGadgetClass,
161 False,
162 False,
163 False,
164 CallbackFileQuit,
165 (XtPointer)NULL,
166 (Widget)NULL,
167 (Widget)NULL,
168 (GraalMenuItem *)NULL
169 }
170 ,
171 {
172 NULL
173 }
174 };
175
176 /*------------------------------------------------------------\
177 | |
178 | Functions |
179 | |
180 \------------------------------------------------------------*/
181 /*------------------------------------------------------------\
182 | |
183 | CallbackFileNew |
184 | |
185 \------------------------------------------------------------*/
186
CallbackFileNew(MyWidget,ClientData,CallData)187 void CallbackFileNew( MyWidget, ClientData, CallData )
188
189 Widget MyWidget;
190 caddr_t ClientData;
191 caddr_t CallData;
192 {
193 rdsbegin();
194
195 if ( GraalHeadUndo != (graalundo *)NULL )
196 {
197 CallbackFileSaveAs( NULL, NULL, NULL );
198 }
199
200 GraalFileNew();
201
202 rdsend();
203 }
204
205 /*------------------------------------------------------------\
206 | |
207 | CallbackFileOpen |
208 | |
209 \------------------------------------------------------------*/
210
CallbackFileOpen(MyWidget,ClientData,CallData)211 void CallbackFileOpen( MyWidget, ClientData, CallData )
212
213 Widget MyWidget;
214 caddr_t ClientData;
215 caddr_t CallData;
216 {
217 XmString Filter;
218
219 rdsbegin();
220
221 if ( GraalFileFilter[2] == '\0' )
222 {
223 strcat( GraalFileFilter, IN_PH );
224 strcat( GraalFileExtention, IN_PH );
225
226 Filter = XmStringCreateSimple( GraalFileFilter );
227
228 XtVaSetValues( GraalFileOpenDialog.WIDGET,
229 XmNpattern, Filter, NULL);
230
231 XmStringFree( Filter );
232 }
233
234 GraalEnterDialog( &GraalFileOpenDialog );
235
236 rdsend();
237 }
238
239 /*------------------------------------------------------------\
240 | |
241 | CallbackFileSave |
242 | |
243 \------------------------------------------------------------*/
244
CallbackFileSave(MyWidget,ClientData,CallData)245 void CallbackFileSave( MyWidget, ClientData, CallData )
246
247 Widget MyWidget;
248 caddr_t ClientData;
249 caddr_t CallData;
250 {
251 rdsbegin();
252
253 if ( GraalFigureMbk != (phfig_list *)NULL )
254 {
255 if ( ( GraalFigureMbk->NAME == (char *)NULL ) ||
256 ( ! strcmp( GraalFigureMbk->NAME,
257 GRAAL_DEFAULT_FIGURE_NAME ) ) )
258
259 {
260 CallbackFileSaveAs( NULL, NULL, NULL );
261 }
262 else
263 {
264 GraalFileSave();
265 }
266 }
267 else
268 {
269 GraalErrorMessage( GraalMainWindow, "No current figure !" );
270 }
271
272 rdsend();
273 }
274
275 /*------------------------------------------------------------\
276 | |
277 | CallbackFileSaveAs |
278 | |
279 \------------------------------------------------------------*/
280
CallbackFileSaveAs(MyWidget,ClientData,CallData)281 void CallbackFileSaveAs( MyWidget, ClientData, CallData )
282
283 Widget MyWidget;
284 caddr_t ClientData;
285 caddr_t CallData;
286 {
287 XmString SaveAsString;
288
289 rdsbegin();
290
291 if ( GraalFigureMbk == (phfig_list *)NULL )
292 {
293 GraalErrorMessage( GraalMainWindow, "No current figure !" );
294 }
295 else
296 {
297 SaveAsString = XmStringCreateLtoR( GraalFigureMbk->NAME,
298 XmSTRING_DEFAULT_CHARSET );
299
300 XtVaSetValues( GraalFileSaveAsDialog.WIDGET,
301 XmNtextString, SaveAsString, NULL );
302
303 XmStringFree( SaveAsString );
304
305 GraalEnterDialog( &GraalFileSaveAsDialog );
306 }
307
308 rdsend();
309 }
310
311 /*------------------------------------------------------------\
312 | |
313 | CallbackFileQuit |
314 | |
315 \------------------------------------------------------------*/
316
CallbackFileQuit(MyWidget,ClientData,CallData)317 void CallbackFileQuit( MyWidget, ClientData, CallData )
318
319 Widget MyWidget;
320 caddr_t ClientData;
321 caddr_t CallData;
322 {
323 rdsbegin();
324
325 GraalEnterDialog( &GraalFileQuitDialog );
326
327 rdsend();
328 }
329