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