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 <stdlib.h>
47 # include <string.h>
48 # include <Xm/Xm.h>
49 
50 # include "mut.h"
51 # include "mph.h"
52 # include "rds.h"
53 # include "rpr.h"
54 # include "rfm.h"
55 # include "GRM.h"
56 # include "GMX.h"
57 # include "GTB.h"
58 # include "GSB.h"
59 # include "GMC.h"
60 # include "GMF.h"
61 
62 # include "GMC_dialog.h"
63 # include "GMC_create.h"
64 # include "GMC_message.h"
65 
66 /*------------------------------------------------------------\
67 |                                                             |
68 |                           Constants                         |
69 |                                                             |
70 \------------------------------------------------------------*/
71 /*------------------------------------------------------------\
72 |                                                             |
73 |                            Types                            |
74 |                                                             |
75 \------------------------------------------------------------*/
76 /*------------------------------------------------------------\
77 |                                                             |
78 |                          Variables                          |
79 |                                                             |
80 \------------------------------------------------------------*/
81 
82   char GraalCreateDialogCancel = 1;
83 
84   char GraalModelFilter[ 10 ]    = "*.";
85   char GraalModelExtention[ 10 ] = ".";
86 
87   char GraalModelBuffer[ 128 ];
88   char GraalModelDirectoryBuffer[ 512 ];
89 
90 /*------------------------------------------------------------\
91 |                                                             |
92 |                        Create Dialog                        |
93 |                                                             |
94 \------------------------------------------------------------*/
95 /*------------------------------------------------------------\
96 |                                                             |
97 |                         Segment Dialog                      |
98 |                                                             |
99 \------------------------------------------------------------*/
100 
101   GraalDialogItem GraalChangeSegmentWidthDialog =
102 
103   {
104     "Segment width",
105     GRAAL_DIALOG_PROMPT,
106     (Widget)NULL,
107     (void *)CallbackChangeSegmentWidthOk,
108     (XtPointer)NULL,
109     (void *)CallbackChangeSegmentWidthCancel,
110     (XtPointer)NULL
111   };
112 
113   GraalDialogItem GraalChangeSegmentNameDialog =
114 
115   {
116     "Segment name",
117     GRAAL_DIALOG_PROMPT,
118     (Widget)NULL,
119     (void *)CallbackChangeSegmentNameOk,
120     (XtPointer)NULL,
121     (void *)CallbackChangeSegmentNameCancel,
122     (XtPointer)NULL
123   };
124 
125 /*------------------------------------------------------------\
126 |                                                             |
127 |                         Via Dialog                          |
128 |                                                             |
129 \------------------------------------------------------------*/
130 
131   GraalDialogItem GraalChangeViaNameDialog =
132 
133   {
134     "Via name",
135     GRAAL_DIALOG_PROMPT,
136     (Widget)NULL,
137     (void *)CallbackChangeViaNameOk,
138     (XtPointer)NULL,
139     (void *)CallbackChangeViaNameCancel,
140     (XtPointer)NULL
141   };
142 
143   GraalDialogItem GraalChangeBigViaNameDialog =
144 
145   {
146     "BigVia name",
147     GRAAL_DIALOG_PROMPT,
148     (Widget)NULL,
149     (void *)CallbackChangeBigViaNameOk,
150     (XtPointer)NULL,
151     (void *)CallbackChangeBigViaNameCancel,
152     (XtPointer)NULL
153   };
154 
155 /*------------------------------------------------------------\
156 |                                                             |
157 |                       Transistor Dialog                     |
158 |                                                             |
159 \------------------------------------------------------------*/
160 
161   GraalDialogItem GraalChangeTransistorWidthDialog =
162 
163   {
164     "Transistor length",
165     GRAAL_DIALOG_PROMPT,
166     (Widget)NULL,
167     (void *)CallbackChangeTransistorWidthOk,
168     (XtPointer)NULL,
169     (void *)CallbackChangeTransistorWidthCancel,
170     (XtPointer)NULL
171   };
172 
173   GraalDialogItem GraalChangeTransistorNameDialog =
174 
175   {
176     "Transistor name",
177     GRAAL_DIALOG_PROMPT,
178     (Widget)NULL,
179     (void *)CallbackChangeTransistorNameOk,
180     (XtPointer)NULL,
181     (void *)CallbackChangeTransistorNameCancel,
182     (XtPointer)NULL
183   };
184 
185 /*------------------------------------------------------------\
186 |                                                             |
187 |                        Connector Dialog                     |
188 |                                                             |
189 \------------------------------------------------------------*/
190 
191   GraalDialogItem GraalChangeConnectorWidthDialog =
192 
193   {
194     "Connector width",
195     GRAAL_DIALOG_PROMPT,
196     (Widget)NULL,
197     (void *)CallbackChangeConnectorWidthOk,
198     (XtPointer)NULL,
199     (void *)CallbackChangeConnectorWidthCancel,
200     (XtPointer)NULL
201   };
202 
203   GraalDialogItem GraalChangeConnectorNameDialog =
204 
205   {
206     "Connector name",
207     GRAAL_DIALOG_PROMPT,
208     (Widget)NULL,
209     (void *)CallbackChangeConnectorNameOk,
210     (XtPointer)NULL,
211     (void *)CallbackChangeConnectorNameCancel,
212     (XtPointer)NULL
213   };
214 
215 /*------------------------------------------------------------\
216 |                                                             |
217 |                        Reference Dialog                     |
218 |                                                             |
219 \------------------------------------------------------------*/
220 
221   GraalDialogItem GraalChangeReferenceNameDialog =
222 
223   {
224     "Reference name",
225     GRAAL_DIALOG_PROMPT,
226     (Widget)NULL,
227     (void *)CallbackChangeReferenceNameOk,
228     (XtPointer)NULL,
229     (void *)CallbackChangeReferenceNameCancel,
230     (XtPointer)NULL
231   };
232 
233 /*------------------------------------------------------------\
234 |                                                             |
235 |                         Instance Dialog                     |
236 |                                                             |
237 \------------------------------------------------------------*/
238 
239   GraalDialogItem GraalChangeInstanceNameDialog =
240 
241   {
242     "Instance name",
243     GRAAL_DIALOG_PROMPT,
244     (Widget)NULL,
245     (void *)CallbackChangeInstanceNameOk,
246     (XtPointer)NULL,
247     (void *)CallbackChangeInstanceNameCancel,
248     (XtPointer)NULL
249   };
250 
251   GraalDialogItem GraalChangeInstanceModelDialog =
252 
253   {
254     "Instance model name",
255     GRAAL_DIALOG_FILE,
256     (Widget)NULL,
257     (void *)CallbackChangeInstanceModelOk,
258     (XtPointer)NULL,
259     (void *)CallbackChangeInstanceModelCancel,
260     (XtPointer)NULL
261   };
262 
263 /*------------------------------------------------------------\
264 |                                                             |
265 |                          Functions                          |
266 |                                                             |
267 \------------------------------------------------------------*/
268 /*------------------------------------------------------------\
269 |                                                             |
270 |                    GraalBuildCreateDialog                   |
271 |                                                             |
272 \------------------------------------------------------------*/
273 
GraalBuildCreateDialog()274 void GraalBuildCreateDialog()
275 
276 {
277   rdsbegin();
278 
279   GraalBuildDialog( GraalMainWindow, &GraalChangeSegmentWidthDialog    );
280   GraalBuildDialog( GraalMainWindow, &GraalChangeSegmentNameDialog     );
281   GraalBuildDialog( GraalMainWindow, &GraalChangeTransistorWidthDialog );
282   GraalBuildDialog( GraalMainWindow, &GraalChangeTransistorNameDialog  );
283   GraalBuildDialog( GraalMainWindow, &GraalChangeViaNameDialog         );
284   GraalBuildDialog( GraalMainWindow, &GraalChangeBigViaNameDialog      );
285   GraalBuildDialog( GraalMainWindow, &GraalChangeConnectorWidthDialog  );
286   GraalBuildDialog( GraalMainWindow, &GraalChangeConnectorNameDialog   );
287   GraalBuildDialog( GraalMainWindow, &GraalChangeReferenceNameDialog   );
288   GraalBuildDialog( GraalMainWindow, &GraalChangeInstanceNameDialog    );
289   GraalBuildDialog( GraalMainWindow, &GraalChangeInstanceModelDialog   );
290 
291   rdsend();
292 }
293 
294 /*------------------------------------------------------------\
295 |                                                             |
296 |                      Callback For Dialog                    |
297 |                                                             |
298 \------------------------------------------------------------*/
299 /*------------------------------------------------------------\
300 |                                                             |
301 |                  CallbackChangeSegmentWidthOk               |
302 |                                                             |
303 \------------------------------------------------------------*/
304 
CallbackChangeSegmentWidthOk(MyWidget,ClientData,CallData)305 void CallbackChangeSegmentWidthOk( MyWidget, ClientData, CallData )
306 
307     Widget                        MyWidget;
308     caddr_t                       ClientData;
309     XmSelectionBoxCallbackStruct *CallData;
310 {
311   char     *WidthSet;
312   float     NewWidth;
313   float     Factor;
314 
315   rdsbegin();
316 
317   XmStringGetLtoR(  CallData->value,
318                     XmSTRING_DEFAULT_CHARSET,
319                    &WidthSet );
320 
321   XtUnmanageChild( GraalChangeSegmentWidthDialog.WIDGET );
322 
323   GraalExitDialog();
324 
325   GraalCreateDialogCancel = 0;
326 
327   if ( WidthSet != (char *)NULL )
328   {
329     Factor   = RDS_LAMBDA / RDS_PHYSICAL_GRID;
330     NewWidth = atof( WidthSet );
331     NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
332 
333     if ( NewWidth >= GRAAL_SEGMENT_VALUE_TABLE[ (int)GraalSegmentLayer ][0] )
334     {
335       GraalSegmentWidth = NewWidth;
336     }
337     else
338     {
339       GraalErrorMessage( GraalMainWindow, "Incorrect segment width !" );
340     }
341 
342     if ( GraalSegmentWire == GRAAL_FALSE )
343     {
344       GraalChangeEditMode( GRAAL_CREATE_SEGMENT,
345                            GraalPromptCreateSegment );
346     }
347     else
348     {
349       GraalChangeEditMode( GRAAL_CREATE_SEGMENT_WIRE,
350                            GraalPromptCreateSegment );
351     }
352   }
353 
354   rdsend();
355 }
356 
357 /*------------------------------------------------------------\
358 |                                                             |
359 |                CallbackChangeSegmentWidthCancel             |
360 |                                                             |
361 \------------------------------------------------------------*/
362 
CallbackChangeSegmentWidthCancel(MyWidget,ClientData,CallData)363 void CallbackChangeSegmentWidthCancel( MyWidget, ClientData, CallData )
364 
365     Widget                        MyWidget;
366     caddr_t                       ClientData;
367     XmSelectionBoxCallbackStruct *CallData;
368 {
369   rdsbegin();
370 
371   XtUnmanageChild( GraalChangeSegmentWidthDialog.WIDGET );
372 
373   GraalExitDialog();
374 
375   GraalCreateDialogCancel = 1;
376 
377   rdsend();
378 }
379 
380 /*------------------------------------------------------------\
381 |                                                             |
382 |                   CallbackChangeSegmentNameOk               |
383 |                                                             |
384 \------------------------------------------------------------*/
385 
CallbackChangeSegmentNameOk(MyWidget,ClientData,CallData)386 void CallbackChangeSegmentNameOk( MyWidget, ClientData, CallData )
387 
388     Widget                        MyWidget;
389     caddr_t                       ClientData;
390     XmSelectionBoxCallbackStruct *CallData;
391 {
392   char *NameSet;
393 
394   rdsbegin();
395 
396   XmStringGetLtoR(  CallData->value,
397                     XmSTRING_DEFAULT_CHARSET,
398                    &NameSet );
399 
400   XtUnmanageChild( GraalChangeSegmentNameDialog.WIDGET );
401 
402   GraalExitDialog();
403 
404   GraalCreateDialogCancel = 0;
405 
406   NameSet = GraalPostTreatString( NameSet );
407 
408   if ( NameSet != (char *)NULL )
409   {
410     NameSet = namealloc( NameSet );
411   }
412 
413   GraalSegmentName = NameSet;
414 
415   if ( GraalSegmentWire == GRAAL_FALSE )
416   {
417     GraalChangeEditMode( GRAAL_CREATE_SEGMENT,
418                          GraalPromptCreateSegment );
419   }
420   else
421   {
422     GraalChangeEditMode( GRAAL_CREATE_SEGMENT_WIRE,
423                          GraalPromptCreateSegment );
424   }
425 
426   rdsend();
427 }
428 
429 /*------------------------------------------------------------\
430 |                                                             |
431 |                 CallbackChangeSegmentNameCancel             |
432 |                                                             |
433 \------------------------------------------------------------*/
434 
CallbackChangeSegmentNameCancel(MyWidget,ClientData,CallData)435 void CallbackChangeSegmentNameCancel( MyWidget, ClientData, CallData )
436 
437     Widget                        MyWidget;
438     caddr_t                       ClientData;
439     XmSelectionBoxCallbackStruct *CallData;
440 {
441   rdsbegin();
442 
443   XtUnmanageChild( GraalChangeSegmentNameDialog.WIDGET );
444 
445   GraalExitDialog();
446 
447   GraalCreateDialogCancel = 1;
448 
449   rdsend();
450 }
451 
452 /*------------------------------------------------------------\
453 |                                                             |
454 |                    Callback For Transistor                  |
455 |                                                             |
456 \------------------------------------------------------------*/
457 /*------------------------------------------------------------\
458 |                                                             |
459 |                 CallbackChangeTransistorWidthOk             |
460 |                                                             |
461 \------------------------------------------------------------*/
462 
CallbackChangeTransistorWidthOk(MyWidget,ClientData,CallData)463 void CallbackChangeTransistorWidthOk( MyWidget, ClientData, CallData )
464 
465     Widget                        MyWidget;
466     caddr_t                       ClientData;
467     XmSelectionBoxCallbackStruct *CallData;
468 {
469   char *WidthSet;
470   float NewWidth;
471   float Factor;
472 
473   rdsbegin();
474 
475   XmStringGetLtoR(  CallData->value,
476                     XmSTRING_DEFAULT_CHARSET,
477                    &WidthSet );
478 
479   XtUnmanageChild( GraalChangeTransistorWidthDialog.WIDGET );
480 
481   GraalExitDialog();
482 
483   GraalCreateDialogCancel = 0;
484 
485   if ( WidthSet != (char *)NULL )
486   {
487     Factor   = RDS_LAMBDA / RDS_PHYSICAL_GRID;
488     NewWidth = atof( WidthSet );
489     NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
490 
491     if ( NewWidth >=  GRAAL_SEGMENT_VALUE_TABLE[ (int)GraalTransistorType ][0] )
492     {
493       GraalTransistorWidth = NewWidth;
494     }
495     else
496     {
497       GraalErrorMessage( GraalMainWindow, "Incorrect transistor length!" );
498     }
499 
500     if ( GraalTransistorWire == GRAAL_FALSE )
501     {
502       GraalChangeEditMode( GRAAL_CREATE_TRANSISTOR,
503                            GraalPromptCreateTransistor );
504     }
505     else
506     {
507       GraalChangeEditMode( GRAAL_CREATE_TRANSISTOR_WIRE,
508                            GraalPromptCreateTransistor );
509     }
510   }
511 
512   rdsend();
513 }
514 
515 /*------------------------------------------------------------\
516 |                                                             |
517 |               CallbackChangeTransistorWidthCancel           |
518 |                                                             |
519 \------------------------------------------------------------*/
520 
CallbackChangeTransistorWidthCancel(MyWidget,ClientData,CallData)521 void CallbackChangeTransistorWidthCancel( MyWidget, ClientData, CallData )
522 
523     Widget                        MyWidget;
524     caddr_t                       ClientData;
525     XmSelectionBoxCallbackStruct *CallData;
526 {
527   rdsbegin();
528 
529   XtUnmanageChild( GraalChangeTransistorWidthDialog.WIDGET );
530 
531   GraalExitDialog();
532 
533   GraalCreateDialogCancel = 1;
534 
535   rdsend();
536 }
537 
538 /*------------------------------------------------------------\
539 |                                                             |
540 |                   CallbackChangeTransistorNameOk            |
541 |                                                             |
542 \------------------------------------------------------------*/
543 
CallbackChangeTransistorNameOk(MyWidget,ClientData,CallData)544 void CallbackChangeTransistorNameOk( MyWidget, ClientData, CallData )
545 
546     Widget                        MyWidget;
547     caddr_t                       ClientData;
548     XmSelectionBoxCallbackStruct *CallData;
549 {
550   char *NameSet;
551 
552   rdsbegin();
553 
554   XmStringGetLtoR(  CallData->value,
555                     XmSTRING_DEFAULT_CHARSET,
556                    &NameSet );
557 
558   XtUnmanageChild( GraalChangeTransistorNameDialog.WIDGET );
559 
560   GraalExitDialog();
561 
562   GraalCreateDialogCancel = 0;
563 
564   NameSet = GraalPostTreatString( NameSet );
565 
566   if ( NameSet != (char *)NULL )
567   {
568     NameSet = namealloc( NameSet );
569   }
570 
571   GraalTransistorName = NameSet;
572 
573   if ( GraalTransistorWire == GRAAL_FALSE )
574   {
575     GraalChangeEditMode( GRAAL_CREATE_TRANSISTOR,
576                          GraalPromptCreateTransistor );
577   }
578   else
579   {
580     GraalChangeEditMode( GRAAL_CREATE_TRANSISTOR_WIRE,
581                          GraalPromptCreateTransistor );
582   }
583 
584   rdsend();
585 }
586 
587 /*------------------------------------------------------------\
588 |                                                             |
589 |                 CallbackChangeTransistorNameCancel          |
590 |                                                             |
591 \------------------------------------------------------------*/
592 
CallbackChangeTransistorNameCancel(MyWidget,ClientData,CallData)593 void CallbackChangeTransistorNameCancel( MyWidget, ClientData, CallData )
594 
595     Widget                        MyWidget;
596     caddr_t                       ClientData;
597     XmSelectionBoxCallbackStruct *CallData;
598 {
599   rdsbegin();
600 
601   XtUnmanageChild( GraalChangeTransistorNameDialog.WIDGET );
602 
603   GraalExitDialog();
604 
605   GraalCreateDialogCancel = 1;
606 
607   rdsend();
608 }
609 
610 /*------------------------------------------------------------\
611 |                                                             |
612 |                     Callback For Connector                  |
613 |                                                             |
614 \------------------------------------------------------------*/
615 /*------------------------------------------------------------\
616 |                                                             |
617 |                 CallbackChangeConnectorWidthOk              |
618 |                                                             |
619 \------------------------------------------------------------*/
620 
CallbackChangeConnectorWidthOk(MyWidget,ClientData,CallData)621 void CallbackChangeConnectorWidthOk( MyWidget, ClientData, CallData )
622 
623     Widget                        MyWidget;
624     caddr_t                       ClientData;
625     XmSelectionBoxCallbackStruct *CallData;
626 {
627   char *WidthSet;
628   float NewWidth;
629   float Factor;
630 
631   rdsbegin();
632 
633   XmStringGetLtoR(  CallData->value,
634                     XmSTRING_DEFAULT_CHARSET,
635                    &WidthSet );
636 
637   XtUnmanageChild( GraalChangeConnectorWidthDialog.WIDGET );
638 
639   GraalExitDialog();
640 
641   GraalCreateDialogCancel = 0;
642 
643   if ( WidthSet != (char *)NULL )
644   {
645     Factor   = RDS_LAMBDA / RDS_PHYSICAL_GRID;
646     NewWidth = atof( WidthSet );
647     NewWidth = (float)( (long)( NewWidth * Factor / 2.0 ) * 2 / Factor );
648 
649     if ( NewWidth >=  GRAAL_SEGMENT_VALUE_TABLE[ (int)GraalConnectorLayer ][0] )
650     {
651       GraalConnectorWidth = NewWidth;
652     }
653     else
654     {
655       GraalErrorMessage( GraalMainWindow, "Incorrect connector width !" );
656     }
657 
658     GraalChangeEditMode( GRAAL_CREATE_CONNECTOR,
659                          GraalPromptCreateConnector );
660   }
661 
662   rdsend();
663 }
664 
665 /*------------------------------------------------------------\
666 |                                                             |
667 |               CallbackChangeConnectorWidthCancel            |
668 |                                                             |
669 \------------------------------------------------------------*/
670 
CallbackChangeConnectorWidthCancel(MyWidget,ClientData,CallData)671 void CallbackChangeConnectorWidthCancel( MyWidget, ClientData, CallData )
672 
673     Widget                        MyWidget;
674     caddr_t                       ClientData;
675     XmSelectionBoxCallbackStruct *CallData;
676 {
677   rdsbegin();
678 
679   XtUnmanageChild( GraalChangeConnectorWidthDialog.WIDGET );
680 
681   GraalExitDialog();
682 
683   GraalCreateDialogCancel = 1;
684 
685   rdsend();
686 }
687 
688 /*------------------------------------------------------------\
689 |                                                             |
690 |                  CallbackChangeConnectorNameOk              |
691 |                                                             |
692 \------------------------------------------------------------*/
693 
CallbackChangeConnectorNameOk(MyWidget,ClientData,CallData)694 void CallbackChangeConnectorNameOk( MyWidget, ClientData, CallData )
695 
696     Widget                        MyWidget;
697     caddr_t                       ClientData;
698     XmSelectionBoxCallbackStruct *CallData;
699 {
700   char *NameSet;
701 
702   rdsbegin();
703 
704   XmStringGetLtoR(  CallData->value,
705                     XmSTRING_DEFAULT_CHARSET,
706                    &NameSet );
707 
708   XtUnmanageChild( GraalChangeConnectorNameDialog.WIDGET );
709 
710   GraalExitDialog();
711 
712   GraalCreateDialogCancel = 0;
713 
714   NameSet = GraalPostTreatString( NameSet );
715 
716   if ( NameSet != (char *)NULL )
717   {
718     NameSet = namealloc( NameSet );
719   }
720 
721   GraalConnectorName = NameSet;
722 
723   GraalChangeEditMode( GRAAL_CREATE_CONNECTOR,
724                        GraalPromptCreateConnector );
725 
726   rdsend();
727 }
728 
729 /*------------------------------------------------------------\
730 |                                                             |
731 |                CallbackChangeConnectorNameCancel            |
732 |                                                             |
733 \------------------------------------------------------------*/
734 
CallbackChangeConnectorNameCancel(MyWidget,ClientData,CallData)735 void CallbackChangeConnectorNameCancel( MyWidget, ClientData, CallData )
736 
737     Widget                        MyWidget;
738     caddr_t                       ClientData;
739     XmSelectionBoxCallbackStruct *CallData;
740 {
741   rdsbegin();
742 
743   XtUnmanageChild( GraalChangeConnectorNameDialog.WIDGET );
744 
745   GraalExitDialog();
746 
747   GraalCreateDialogCancel = 1;
748 
749   rdsend();
750 }
751 
752 /*------------------------------------------------------------\
753 |                                                             |
754 |                     Callback For Reference                  |
755 |                                                             |
756 \------------------------------------------------------------*/
757 /*------------------------------------------------------------\
758 |                                                             |
759 |                  CallbackChangeReferenceNameOk              |
760 |                                                             |
761 \------------------------------------------------------------*/
762 
CallbackChangeReferenceNameOk(MyWidget,ClientData,CallData)763 void CallbackChangeReferenceNameOk( MyWidget, ClientData, CallData )
764 
765     Widget                        MyWidget;
766     caddr_t                       ClientData;
767     XmSelectionBoxCallbackStruct *CallData;
768 {
769   char *NameSet;
770 
771   rdsbegin();
772 
773   XmStringGetLtoR(  CallData->value,
774                     XmSTRING_DEFAULT_CHARSET,
775                    &NameSet );
776 
777   XtUnmanageChild( GraalChangeReferenceNameDialog.WIDGET );
778 
779   GraalExitDialog();
780 
781   GraalCreateDialogCancel = 0;
782 
783   NameSet = GraalPostTreatString( NameSet );
784 
785   if ( NameSet != (char *)NULL )
786   {
787     NameSet = namealloc( NameSet );
788   }
789 
790   GraalReferenceName = NameSet;
791 
792   GraalChangeEditMode( GRAAL_CREATE_REFERENCE,
793                        GraalPromptCreateReference );
794 
795   rdsend();
796 }
797 
798 /*------------------------------------------------------------\
799 |                                                             |
800 |                CallbackChangeReferenceNameCancel            |
801 |                                                             |
802 \------------------------------------------------------------*/
803 
CallbackChangeReferenceNameCancel(MyWidget,ClientData,CallData)804 void CallbackChangeReferenceNameCancel( MyWidget, ClientData, CallData )
805 
806     Widget                        MyWidget;
807     caddr_t                       ClientData;
808     XmSelectionBoxCallbackStruct *CallData;
809 {
810   rdsbegin();
811 
812   XtUnmanageChild( GraalChangeReferenceNameDialog.WIDGET );
813 
814   GraalExitDialog();
815 
816   GraalCreateDialogCancel = 1;
817 
818   rdsend();
819 }
820 
821 /*------------------------------------------------------------\
822 |                                                             |
823 |                     Callback For Instance                   |
824 |                                                             |
825 \------------------------------------------------------------*/
826 /*------------------------------------------------------------\
827 |                                                             |
828 |                   CallbackChangeInstanceNameOk              |
829 |                                                             |
830 \------------------------------------------------------------*/
831 
CallbackChangeInstanceNameOk(MyWidget,ClientData,CallData)832 void CallbackChangeInstanceNameOk( MyWidget, ClientData, CallData )
833 
834     Widget                        MyWidget;
835     caddr_t                       ClientData;
836     XmSelectionBoxCallbackStruct *CallData;
837 {
838   char *NameSet;
839 
840   rdsbegin();
841 
842   XmStringGetLtoR(  CallData->value,
843                     XmSTRING_DEFAULT_CHARSET,
844                    &NameSet );
845 
846   XtUnmanageChild( GraalChangeInstanceNameDialog.WIDGET );
847 
848   GraalExitDialog();
849 
850   GraalCreateDialogCancel = 0;
851 
852   NameSet = GraalPostTreatString( NameSet );
853 
854   if ( NameSet != (char *)NULL )
855   {
856     NameSet = namealloc( NameSet );
857 
858     GraalInstanceName = NameSet;
859   }
860 
861   rdsend();
862 }
863 
864 /*------------------------------------------------------------\
865 |                                                             |
866 |                 CallbackChangeInstanceNameCancel            |
867 |                                                             |
868 \------------------------------------------------------------*/
869 
CallbackChangeInstanceNameCancel(MyWidget,ClientData,CallData)870 void CallbackChangeInstanceNameCancel( MyWidget, ClientData, CallData )
871 
872     Widget                        MyWidget;
873     caddr_t                       ClientData;
874     XmSelectionBoxCallbackStruct *CallData;
875 {
876   rdsbegin();
877 
878   XtUnmanageChild( GraalChangeInstanceNameDialog.WIDGET );
879 
880   GraalExitDialog();
881 
882   GraalCreateDialogCancel = 1;
883 
884   rdsend();
885 }
886 
887 /*------------------------------------------------------------\
888 |                                                             |
889 |                   CallbackChangeInstanceModelOk             |
890 |                                                             |
891 \------------------------------------------------------------*/
892 
CallbackChangeInstanceModelOk(MyWidget,ClientData,FileStruct)893 void CallbackChangeInstanceModelOk( MyWidget, ClientData, FileStruct )
894 
895     Widget                            MyWidget;
896     caddr_t                           ClientData;
897     XmFileSelectionBoxCallbackStruct *FileStruct;
898 {
899   char *Directory;
900   char *FileName;
901   int   Index;
902 
903   rdsbegin();
904 
905   FileName  = (char *)0;
906   Directory = (char *)0;
907 
908   XtUnmanageChild( GraalChangeInstanceModelDialog.WIDGET );
909 
910   GraalExitDialog();
911 
912   if ( FileStruct->value != NULL )
913   {
914     XmStringGetLtoR( FileStruct->value,
915                      XmSTRING_DEFAULT_CHARSET,
916                      &FileName
917                    );
918 
919     FileName = GraalPostTreatString( FileName );
920   }
921 
922   if ( FileName != (char *)NULL )
923   {
924     GraalCreateDialogCancel = 0;
925 
926     if ( GRAAL_WORK_LIB == (char *)NULL )
927     {
928       GRAAL_WORK_LIB = WORK_LIB;
929     }
930 
931     for ( Index = strlen( FileName ); Index >= 0; Index-- )
932     {
933       if ( FileName[ Index ] == '/' ) break;
934     }
935 
936     if ( Index >= 0 )
937     {
938       strcpy( GraalModelDirectoryBuffer, FileName );
939       strcpy( GraalModelBuffer, FileName + Index + 1);
940 
941       GraalModelDirectoryBuffer[ Index + 1 ] = '\0';
942       Directory = GraalModelDirectoryBuffer;
943     }
944     else
945     {
946       strcpy( GraalModelBuffer, FileName );
947       Directory = GRAAL_WORK_LIB;
948     }
949 
950     Index = strlen( GraalModelBuffer ) - strlen( GraalModelExtention );
951 
952     if ( Index >= 0 )
953     {
954       if ( ! strcmp( GraalModelBuffer + Index, GraalModelExtention ) )
955       {
956         GraalModelBuffer[ Index ] = '\0';
957       }
958     }
959 
960     GraalInstanceModel = namealloc( GraalModelBuffer );
961 
962     GraalChangeEditMode( GRAAL_CREATE_INSTANCE,
963                          GraalPromptCreateInstance );
964 
965     if ( Directory != GRAAL_WORK_LIB )
966     {
967       GraalAddDirectoryToCataLibrary( Directory );
968     }
969   }
970   else
971   {
972     GraalCreateDialogCancel = 1;
973 
974     GraalErrorMessage( GraalMainWindow, "Unable to load this model !" );
975   }
976 
977   rdsend();
978 }
979 
980 /*------------------------------------------------------------\
981 |                                                             |
982 |                 CallbackChangeInstanceModelCancel           |
983 |                                                             |
984 \------------------------------------------------------------*/
985 
CallbackChangeInstanceModelCancel(MyWidget,ClientData,FileStruct)986 void CallbackChangeInstanceModelCancel( MyWidget, ClientData, FileStruct )
987 
988     Widget                            MyWidget;
989     caddr_t                           ClientData;
990     XmFileSelectionBoxCallbackStruct *FileStruct;
991 {
992   rdsbegin();
993 
994   XtUnmanageChild( GraalChangeInstanceModelDialog.WIDGET );
995 
996   GraalExitDialog();
997 
998   GraalCreateDialogCancel = 1;
999 
1000   rdsend();
1001 }
1002 
1003 /*------------------------------------------------------------\
1004 |                                                             |
1005 |                 GraalEnterChangeInstanceModelDialog         |
1006 |                                                             |
1007 \------------------------------------------------------------*/
1008 
GraalEnterChangeInstanceModelDialog()1009 void GraalEnterChangeInstanceModelDialog()
1010 {
1011   XmString Filter;
1012 
1013   if ( GraalModelFilter[2] == '\0' )
1014   {
1015     strcat( GraalModelFilter, IN_PH );
1016     strcat( GraalModelExtention, IN_PH );
1017 
1018     Filter = XmStringCreateSimple( GraalModelFilter );
1019 
1020     XtVaSetValues( GraalChangeInstanceModelDialog.WIDGET,
1021                    XmNpattern, Filter, NULL);
1022 
1023     XmStringFree( Filter );
1024   }
1025 
1026   GraalEnterDialog( &GraalChangeInstanceModelDialog );
1027 }
1028 
1029 /*------------------------------------------------------------\
1030 |                                                             |
1031 |                   CallbackChangeViaNameOk                   |
1032 |                                                             |
1033 \------------------------------------------------------------*/
1034 
CallbackChangeViaNameOk(MyWidget,ClientData,CallData)1035 void CallbackChangeViaNameOk( MyWidget, ClientData, CallData )
1036 
1037     Widget                        MyWidget;
1038     caddr_t                       ClientData;
1039     XmSelectionBoxCallbackStruct *CallData;
1040 {
1041   char *NameSet;
1042 
1043   rdsbegin();
1044 
1045   XmStringGetLtoR(  CallData->value,
1046                     XmSTRING_DEFAULT_CHARSET,
1047                    &NameSet );
1048 
1049   XtUnmanageChild( GraalChangeViaNameDialog.WIDGET );
1050 
1051   GraalExitDialog();
1052 
1053   GraalCreateDialogCancel = 0;
1054 
1055   NameSet = GraalPostTreatString( NameSet );
1056 
1057   if ( NameSet != (char *)NULL )
1058   {
1059     NameSet = namealloc( NameSet );
1060   }
1061 
1062   GraalViaName = NameSet;
1063 
1064   GraalChangeEditMode( GRAAL_CREATE_VIA, GraalPromptCreateVia );
1065 
1066   rdsend();
1067 }
1068 
1069 /*------------------------------------------------------------\
1070 |                                                             |
1071 |                     CallbackChangeViaNameCancel             |
1072 |                                                             |
1073 \------------------------------------------------------------*/
1074 
CallbackChangeViaNameCancel(MyWidget,ClientData,CallData)1075 void CallbackChangeViaNameCancel( MyWidget, ClientData, CallData )
1076 
1077     Widget                        MyWidget;
1078     caddr_t                       ClientData;
1079     XmSelectionBoxCallbackStruct *CallData;
1080 {
1081   rdsbegin();
1082 
1083   XtUnmanageChild( GraalChangeViaNameDialog.WIDGET );
1084 
1085   GraalExitDialog();
1086 
1087   GraalCreateDialogCancel = 1;
1088 
1089   rdsend();
1090 }
1091 
1092 /*------------------------------------------------------------\
1093 |                                                             |
1094 |                   CallbackChangeBigViaNameOk                |
1095 |                                                             |
1096 \------------------------------------------------------------*/
1097 
CallbackChangeBigViaNameOk(MyWidget,ClientData,CallData)1098 void CallbackChangeBigViaNameOk( MyWidget, ClientData, CallData )
1099 
1100     Widget                        MyWidget;
1101     caddr_t                       ClientData;
1102     XmSelectionBoxCallbackStruct *CallData;
1103 {
1104   char *NameSet;
1105 
1106   rdsbegin();
1107 
1108   XmStringGetLtoR(  CallData->value,
1109                     XmSTRING_DEFAULT_CHARSET,
1110                    &NameSet );
1111 
1112   XtUnmanageChild( GraalChangeBigViaNameDialog.WIDGET );
1113 
1114   GraalExitDialog();
1115 
1116   GraalCreateDialogCancel = 0;
1117 
1118   NameSet = GraalPostTreatString( NameSet );
1119 
1120   if ( NameSet != (char *)NULL )
1121   {
1122     NameSet = namealloc( NameSet );
1123   }
1124 
1125   GraalBigViaName = NameSet;
1126 
1127   GraalChangeEditMode( GRAAL_CREATE_BIGVIA, GraalPromptCreateBigVia );
1128 
1129   rdsend();
1130 }
1131 
1132 /*------------------------------------------------------------\
1133 |                                                             |
1134 |                     CallbackChangeBigViaNameCancel          |
1135 |                                                             |
1136 \------------------------------------------------------------*/
1137 
CallbackChangeBigViaNameCancel(MyWidget,ClientData,CallData)1138 void CallbackChangeBigViaNameCancel( MyWidget, ClientData, CallData )
1139 
1140     Widget                        MyWidget;
1141     caddr_t                       ClientData;
1142     XmSelectionBoxCallbackStruct *CallData;
1143 {
1144   rdsbegin();
1145 
1146   XtUnmanageChild( GraalChangeBigViaNameDialog.WIDGET );
1147 
1148   GraalExitDialog();
1149 
1150   GraalCreateDialogCancel = 1;
1151 
1152   rdsend();
1153 }
1154 
1155