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 : Dialog.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/Form.h>
49 # include <Xm/LabelG.h>
50 # include <Xm/Label.h>
51 # include <Xm/Frame.h>
52 # include <Xm/List.h>
53 # include <Xm/Text.h>
54 # include <Xm/PushB.h>
55 # include <Xm/FileSB.h>
56
57 # include "mut.h"
58 # include "mph.h"
59 # include "rds.h"
60 # include "rpr.h"
61 # include "rfm.h"
62 # include "GRM.h"
63 # include "GMX.h"
64 # include "GTB.h"
65 # include "GSB.h"
66 # include "GMF.h"
67
68 # include "GMF_dialog.h"
69 # include "GMF_file.h"
70 # include "GMF_menu.h"
71
72 /*------------------------------------------------------------\
73 | |
74 | Constants |
75 | |
76 \------------------------------------------------------------*/
77 /*------------------------------------------------------------\
78 | |
79 | Types |
80 | |
81 \------------------------------------------------------------*/
82 /*------------------------------------------------------------\
83 | |
84 | Variables |
85 | |
86 \------------------------------------------------------------*/
87 /*------------------------------------------------------------\
88 | |
89 | File Dialog |
90 | |
91 \------------------------------------------------------------*/
92
93 GraalDialogItem GraalFileOpenDialog =
94
95 {
96 "Open File",
97 GRAAL_DIALOG_FILE,
98 (Widget)NULL,
99 (void *)CallbackFileOpenOk,
100 (XtPointer)NULL,
101 (void *)CallbackFileOpenCancel,
102 (XtPointer)NULL
103 };
104
105 GraalDialogItem GraalFileQuitDialog =
106
107 {
108 "Do you really want to quit Graal ?",
109 GRAAL_DIALOG_WARNING,
110 (Widget)NULL,
111 (void *)CallbackFileQuitOk,
112 (XtPointer)NULL,
113 (void *)CallbackFileQuitCancel,
114 (XtPointer)NULL
115 };
116
117 GraalDialogItem GraalFileSaveAsDialog =
118
119 {
120 "Save As",
121 GRAAL_DIALOG_PROMPT,
122 (Widget)NULL,
123 (void *)CallbackFileSaveAsOk,
124 (XtPointer)NULL,
125 (void *)CallbackFileSaveAsCancel,
126 (XtPointer)NULL
127 };
128
129 /*------------------------------------------------------------\
130 | |
131 | Functions |
132 | |
133 \------------------------------------------------------------*/
134 /*------------------------------------------------------------\
135 | |
136 | GraalBuildFileDialog |
137 | |
138 \------------------------------------------------------------*/
139
GraalBuildFileDialog()140 void GraalBuildFileDialog()
141
142 {
143 rdsbegin();
144
145 GraalBuildDialog( GraalMainWindow, &GraalFileSaveAsDialog );
146 GraalBuildDialog( GraalMainWindow, &GraalFileOpenDialog );
147 GraalBuildDialog( GraalMainWindow, &GraalFileQuitDialog );
148
149 rdsend();
150 }
151
152 /*------------------------------------------------------------\
153 | |
154 | CallbackFileQuitOk |
155 | |
156 \------------------------------------------------------------*/
157
CallbackFileQuitOk(MyWidget,ClientData,CallData)158 void CallbackFileQuitOk( MyWidget, ClientData, CallData )
159
160 Widget MyWidget;
161 caddr_t ClientData;
162 caddr_t CallData;
163 {
164 rdsbegin();
165
166 GraalExitDialog();
167
168 if ( GraalHeadUndo != (graalundo *)NULL )
169 {
170 CallbackFileSaveAs( NULL, NULL, NULL );
171 GraalHeadUndo = (graalundo *)0;
172 }
173
174 XtCloseDisplay( XtDisplay( XtParent( MyWidget ) ) );
175 GraalExitErrorMessage( 0 );
176
177 rdsend();
178 }
179
180 /*------------------------------------------------------------\
181 | |
182 | CallbackFileQuitCancel |
183 | |
184 \------------------------------------------------------------*/
185
CallbackFileQuitCancel(MyWidget,ClientData,CallData)186 void CallbackFileQuitCancel( MyWidget, ClientData, CallData )
187
188 Widget MyWidget;
189 caddr_t ClientData;
190 caddr_t CallData;
191 {
192 rdsbegin();
193
194 GraalExitDialog();
195
196 rdsend();
197 }
198
199 /*------------------------------------------------------------\
200 | |
201 | CallbackFileSaveAsOk |
202 | |
203 \------------------------------------------------------------*/
204
CallbackFileSaveAsOk(MyWidget,ClientData,CallData)205 void CallbackFileSaveAsOk( MyWidget, ClientData, CallData )
206
207 Widget MyWidget;
208 caddr_t ClientData;
209 XmSelectionBoxCallbackStruct *CallData;
210 {
211 char *FileName;
212
213 rdsbegin();
214
215 XmStringGetLtoR( CallData->value,
216 XmSTRING_DEFAULT_CHARSET,
217 &FileName );
218
219 FileName = GraalPostTreatString( FileName );
220
221 XtUnmanageChild( GraalFileSaveAsDialog.WIDGET );
222
223 GraalExitDialog();
224
225 GraalFileSaveAs( FileName );
226
227 rdsend();
228 }
229
230 /*------------------------------------------------------------\
231 | |
232 | CallbackFileSaveAsCancel |
233 | |
234 \------------------------------------------------------------*/
235
CallbackFileSaveAsCancel(MyWidget,ClientData,CallData)236 void CallbackFileSaveAsCancel( MyWidget, ClientData, CallData )
237
238 Widget MyWidget;
239 caddr_t ClientData;
240 XmSelectionBoxCallbackStruct *CallData;
241 {
242 rdsbegin();
243
244 XtUnmanageChild( GraalFileSaveAsDialog.WIDGET );
245
246 GraalExitDialog();
247
248 rdsend();
249 }
250
251 /*------------------------------------------------------------\
252 | |
253 | CallbackFileOpenOk |
254 | |
255 \------------------------------------------------------------*/
256
CallbackFileOpenOk(MyWidget,ClientData,FileStruct)257 void CallbackFileOpenOk( MyWidget, ClientData, FileStruct )
258
259 Widget MyWidget;
260 caddr_t ClientData;
261 XmFileSelectionBoxCallbackStruct *FileStruct;
262 {
263 char *FileName;
264
265 rdsbegin();
266
267 XtUnmanageChild( GraalFileOpenDialog.WIDGET );
268
269 GraalExitDialog();
270
271 if ( FileStruct->value != NULL )
272 {
273 XmStringGetLtoR( FileStruct->value,
274 XmSTRING_DEFAULT_CHARSET,
275 &FileName
276 );
277
278 FileName = GraalPostTreatString( FileName );
279
280 if ( FileName != (char *)NULL )
281 {
282 if ( GraalHeadUndo != (graalundo *)NULL )
283 {
284 CallbackFileSaveAs( NULL, NULL, NULL );
285 }
286
287 GraalFileOpen( FileName, 1 );
288
289 GraalChangeEditMode( GRAAL_EDIT_MEASURE,
290 GraalPromptEditMeasure );
291 }
292 else
293 {
294 GraalErrorMessage( GraalMainWindow, "Unable to load this file !" );
295 }
296 }
297
298 rdsend();
299 }
300
301 /*------------------------------------------------------------\
302 | |
303 | CallbackFileOpenCancel |
304 | |
305 \------------------------------------------------------------*/
306
CallbackFileOpenCancel(MyWidget,ClientData,FileStruct)307 void CallbackFileOpenCancel( MyWidget, ClientData, FileStruct )
308
309 Widget MyWidget;
310 caddr_t ClientData;
311 XmFileSelectionBoxCallbackStruct *FileStruct;
312 {
313 rdsbegin();
314
315 XtUnmanageChild( GraalFileOpenDialog.WIDGET );
316
317 GraalExitDialog();
318
319 rdsend();
320 }
321