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