1########################################################################
2#
3# generate the .tcl-file...
4#
5#  july 1998
6#
7# $Revision: 1.2 $, $Date: 1999/05/08 09:44:32 $
8########################################################################
9proc genGUI {outName} {
10    # global cbase debug D L Program cligVersion haveMandatory
11    global D L nameString usageString
12
13    #  set pname [file tail [file rootname $Program]]
14    #  set outBase [file tail [file rootname $outName]]
15    set out [open $outName w]
16
17    set pgr "
18source balloonHelp.tcl
19source util.tcl
20frame .$nameString
21pack .$nameString -fill x
22frame .$nameString.title
23label .$nameString.title.label -text $nameString -justify center
24pack .$nameString.title.label
25
26
27frame .$nameString.description
28label .$nameString.description.pg_description -text {$usageString}
29pack .$nameString.description.pg_description
30
31frame .$nameString.button
32button .$nameString.button.ok -text OK -command exit
33pack .$nameString.button.ok
34pack .$nameString.button -side bottom
35
36pack .$nameString.title -fill x
37pack .$nameString.description -side top
38  proc destroyentries {max} {
39	for {set i 1} {\$i <= \$max} {incr i} {
40	    if {\[winfo exists  .$nameString.field\$Option(\$i).string\$Option(\$i).choice\$k\]} then {
41		destroy .$nameString.field\$Option(\$i).string\$Option(\$i).choice\$k
42	    }
43	}
44    }
45proc string_number {i cmin cmax} \{
46   global Option
47   set NumberError \[test_with_dialog .$nameString.field\$Option(\$i).string\$Option(\$i).choice \$cmin \$cmax integer\]
48   if \{\$NumberError ==0\} \{
49      for \{set k 1\} \{\$k<=\$Option(StringNumber\$i)\} \{incr k 1\} \{
50          entry .$nameString.field\$Option(\$i).string\$Option(\$i).choice\$k
51          pack .$nameString.field\$Option(\$i).string\$Option(\$i).choice\$k \
52               -side bottom
53
54      \}
55   .$nameString.field\$Option(\$i) configure -relief groove -borderwidth 2
56\} else \{\}
57\}
58"
59
60   append pgr "set Lbis [list $L]
61"
62
63#### HP **************
64set Dlist ""
65foreach index [array names D] {
66    lappend  Dlist "$index $D($index)"
67}
68set Dlist [lsort -ascii $Dlist]
69set Dbis [list $Dlist]
70set Lbis [list $L]
71# on a Dbis et Lbis pour bosser (doublons).
72
73######## Scripte ############
74append pgr "set Dbis [list $Dlist]
75puts \$Dbis
76"
77
78append pgr "
79for \{set i 0\} \{\$i<\[llength $Lbis\]\} \{incr i 1\} \{
80        # Option contains  -<word>
81	set Option(\$i) \[lindex $Lbis \$i\]
82        # List_index contains the list with -<word>,typename as first part
83        set List_index_typename \[lindex $Dbis \[lsearch $Dbis \[lindex $Lbis \$i\],typename*\]\]
84        set List_index_name \[lindex $Dbis \[lsearch $Dbis \[lindex $Lbis \$i\],name*\]\]
85        # the List_index_usage contains the usages
86        set List_index_usage \[lindex $Dbis \[lsearch $Dbis \
87                                  \[lindex $Lbis \$i\],usage*\]\]
88        set usage {}
89        for \{set j 1\} \{\$j<\[llength \$List_index_usage\]\} \{incr j 1\} \{
90                append usage  \[lindex \$List_index_usage \$j \] { }
91        \}
92        # type contains flag , string , ....
93	set type \[lindex \$List_index_typename 1\]
94"
95
96append pgr "
97        # create a frame for each option
98        frame .$nameString.field\$Option(\$i)
99        frame .$nameString.field\$Option(\$i).left -width 10 \
100              -relief groove -borderwidth 2
101        balloonHelp .$nameString.field\$Option(\$i).left \$usage
102        pack .$nameString.field\$Option(\$i).left -side left
103        label .$nameString.field\$Option(\$i).nameLabel \
104                -text \[lindex \$List_index_name 1 \] -width 10 -anchor w
105"
106
107append pgr "
108	switch \$type \{
109	    flag \{
110		checkbutton .$nameString.field\$Option(\$i).left.button\$Option(\$i)
111                label .$nameString.field\$Option(\$i).left.label \
112                      -text \$Option(\$i) -anchor e -width 4
113		pack .$nameString.field\$Option(\$i).left.button\$Option(\$i) \
114                     .$nameString.field\$Option(\$i).left.label \
115                     .$nameString.field\$Option(\$i).nameLabel -side left
116	    \}
117	    string \{
118                label .$nameString.field\$Option(\$i).left.label \
119                       -text \$Option(\$i) -anchor e -width 8
120                set List_cmin \[lindex $Dbis \[lsearch $Dbis \
121                                  \[lindex $Lbis \$i\],cmin*\]\]
122                set cmin \[lindex \$List_cmin 1\]
123                set List_cmax \[lindex $Dbis \[lsearch $Dbis \
124                                  \[lindex $Lbis \$i\],cmax*\]\]
125                set cmax \[lindex \$List_cmax 1\]
126                frame .$nameString.field\$Option(\$i).string\$Option(\$i)
127                label .$nameString.field\$Option(\$i).string\$Option(\$i).choicelabel -text \"Number of string\"
128                entry .$nameString.field\$Option(\$i).string\$Option(\$i).choice -width 5 -textvariable Option(StringNumber\$i)
129                bind .$nameString.field\$Option(\$i).string\$Option(\$i).choice <Return> \"string_number \$i \$cmin \$cmax \"
130                pack  .$nameString.field\$Option(\$i).string\$Option(\$i).choicelabel .$nameString.field\$Option(\$i).string\$Option(\$i).choice -side left
131                label .$nameString.field\$Option(\$i).type \
132                      -text (\$type) -fg grey50
133                pack .$nameString.field\$Option(\$i).left.label \
134                     .$nameString.field\$Option(\$i).nameLabel \
135                     .$nameString.field\$Option(\$i).string\$Option(\$i) \
136                     .$nameString.field\$Option(\$i).type -side left
137            \}
138	    float \{
139               label .$nameString.field\$Option(\$i).left.label \
140                     -text \$Option(\$i) -anchor e -width 8
141               entry .$nameString.field\$Option(\$i).float\$Option(\$i)
142               label .$nameString.field\$Option(\$i).type \
143                     -text (\$type) -fg grey50
144               pack .$nameString.field\$Option(\$i).left.label  \
145                    .$nameString.field\$Option(\$i).nameLabel \
146                    .$nameString.field\$Option(\$i).float\$Option(\$i) \
147                    .$nameString.field\$Option(\$i).type -side left
148            \}
149	    integer \{
150               label .$nameString.field\$Option(\$i).left.label \
151                     -text \$Option(\$i) -anchor e -width 8
152               entry .$nameString.field\$Option(\$i).int\$Option(\$i)
153               label .$nameString.field\$Option(\$i).type \
154                     -text (\$type) -fg grey50
155               pack .$nameString.field\$Option(\$i).left.label  \
156                    .$nameString.field\$Option(\$i).nameLabel \
157                    .$nameString.field\$Option(\$i).int\$Option(\$i) \
158                    .$nameString.field\$Option(\$i).type -side left
159            \}
160	\}
161        pack .$nameString.field\$Option(\$i) -fill x
162
163        bind all <Control-c> exit
164   \}
165"
166
167    puts $out $pgr
168    flush $out
169}
170