Changeset 1030 for branches/sandbox/disagledit.tcl
- Timestamp:
- Oct 18, 2010 10:22:17 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/sandbox/disagledit.tcl
r1023 r1030 1 1 proc DA_Initialize {} { 2 catch {unset ::da_ddrad}3 catch {unset ::da_darad}4 catch {unset ::da_drad}5 catch {unset ::da_arad}6 catch {unset ::da_acon}7 catch {unset ::da_dcon}2 catch {unset ::da_ddrad} 3 catch {unset ::da_darad} 4 catch {unset ::da_drad} 5 catch {unset ::da_arad} 6 catch {unset ::da_acon} 7 catch {unset ::da_dcon} 8 8 set ::da_quit 1 9 set ::da_phase $::expmap(phaselist)10 foreach j $::da_phase {9 set ::da_phase $::expmap(phaselist) 10 foreach j $::da_phase { 11 11 set ::da_dcon($j) [phaseinfo $j DistCalc] 12 12 set b [regexp -all {[0-9]} $::da_dcon($j)] 13 13 if {$b > 0} { 14 set ::da_dval($j) $::da_dcon($j)] 15 } else { 16 set ::da_dval$j "" 14 set ::da_dval($j) $::da_dcon($j)] 15 } else { 16 set ::da_dval$j "" 17 } 18 19 set ::da_acon($j) [phaseinfo $j AngCalc] 20 set c [regexp -all {[0-9]} $::da_acon($j)] 21 if {$c > 0} {set ::da_aval$j $::da_acon($j) 22 } else { 23 set ::da_aval$j ""} 24 25 } 26 27 } 28 29 proc DA_Read {} { 30 31 set ::da_list [AtmTypList] 32 set da_angrad [DefAtmTypInfo angrad] 33 set da_distrad [DefAtmTypInfo distrad] 34 35 #Build search arrays 36 #::da_darad array contains default angle search radii 37 #::da_ddrad array contains default distance search radii 38 #::da_arad array contains current angle search radii 39 #::da_drad array contains current distance search radii 40 41 foreach j $da_angrad { 42 set ::da_darad([lindex $j 0]) [lindex $j 1] 43 } 44 foreach k $da_distrad { 45 set ::da_ddrad([lindex $k 0]) [lindex $k 1] 46 } 47 foreach i $::da_list { 48 set ::da_drad($i) [AtmTypInfo distrad $i] 49 set ::da_arad($i) [AtmTypInfo angrad $i] 50 } 51 } 52 53 #**************** Build Disagl Control Panel **************************** 54 55 proc DA_Control_Panel {"launchdisagl 0"} { 56 DA_Initialize 57 DA_Read 58 destroy .disaglcon 59 set dcb .disaglcon 60 catch {toplevel $dcb} 61 eval destroy [winfo children $dcb] 62 63 #construct phase control box in phasecon frame 64 set phasecon $dcb.phasecon 65 frame $phasecon -bd 2 -relief groove 66 grid $phasecon -column 0 -row 0 67 68 label $phasecon.lbl1 -text "Bond Search \n Method" 69 label $phasecon.lbl2 -text "Angle Search \n Method" 70 grid $phasecon.lbl1 -column 1 -row 0 71 grid $phasecon.lbl2 -column 2 -row 0 72 73 74 foreach i $::da_phase { 75 label $phasecon.phase$i -text "Phase $i" -width 8 76 set tacon [regexp {[0-9]+.[0-9]+} $::da_acon($i)] 77 set tdcon [regexp {[0-9]+.[0-9]+} $::da_dcon($i)] 78 if {$tacon} {set alist {none radii $::da_acon($i)} 79 } else {set alist {none radii {fixed search range}}} 80 if {$tdcon} {set dlist {none radii $::da_dcon($i)} 81 } else {set dlist {none radii {fixed search range}}} 82 83 # set list {none radii {fixed search range}} 84 #if {[set ::da_dval$i] != ""} {lappend list [set ::da_dval$i]} 85 eval tk_optionMenu $phasecon.dist$i ::da_dcon($i) $dlist 86 $phasecon.dist$i config -width 10 87 eval tk_optionMenu $phasecon.ang$i ::da_acon($i) $alist 88 $phasecon.ang$i config -width 10 89 grid $phasecon.phase$i -row $i -column 0 -padx 10 90 grid $phasecon.dist$i -row $i -column 1 -padx 10 91 grid $phasecon.ang$i -row $i -column 2 -padx 10 92 } 93 94 trace var ::da_dcon w DA_Controls 95 trace var ::da_acon w DA_Controls 96 97 98 #save box 99 set dasave $dcb.dasave 100 frame $dasave -bd 2 -relief groove 101 grid $dasave -column 0 -row 2 102 103 if {$launchdisagl} { 104 wm title $dcb "DISAGL Control Panel" 105 grab release $dcb 106 checkbutton $dasave.option -text "DISAGL output in separate window" \ 107 -variable ::expgui(disaglSeparateBox) 108 grid $dasave.option -row 0 -column 0 109 button $dasave.sexit -text "Save and run DISAGL" -command DA_Save -bg LightGreen 110 grid $dasave.sexit -row 1 -column 0 111 } else { 112 wm title $dcb "Distance Search Parameters" 113 grab release $dcb 114 button $dasave.sexit -text "Save and Exit" -command DA_Save -bg LightGreen 115 grid $dasave.sexit -row 0 -column 0 116 } 117 button $dasave.quit -text "Cancel" -command "destroy $dcb" 118 grid $dasave.quit -row 2 -column 0 119 120 121 #construct control box 122 123 124 set dacon $dcb.dacon 125 frame $dacon -bd 2 -relief groove 126 grid $dacon -column 1 -row 2 127 128 button $dacon.default -text "Restore to Default Radii" -command { 129 foreach i $::da_list { 130 set ::da_drad($i) $::da_ddrad([lindex [split $i {+-}] 0]) 131 set ::da_arad($i) $::da_darad([lindex [split $i {+-}] 0]) 132 } 133 } 134 grid $dacon.default -row 3 -column 0 -columnspan 3 135 136 label $dacon.dradcon -text "Increment All Bond Search Radii (0.10 A)" 137 label $dacon.aradcon -text "Increment All Angle Search Radii (0.10 A)" 138 button $dacon.dradup -text "\u2191" -command DA_Inc_Drad 139 button $dacon.draddn -text "\u2193" -command DA_Dec_Drad 140 button $dacon.aradup -text "\u2191" -command DA_Inc_Arad 141 button $dacon.araddn -text "\u2193" -command DA_Dec_Arad 142 grid $dacon.dradcon -column 0 -row 0 -pady 5 143 grid $dacon.dradup -column 1 -row 0 -padx 5 144 grid $dacon.draddn -column 2 -row 0 -padx 5 145 grid $dacon.aradcon -column 0 -row 1 -pady 5 146 grid $dacon.aradup -column 1 -row 1 -padx 5 147 grid $dacon.araddn -column 2 -row 1 -padx 5 148 149 # button $dacon.radcon -text "Radii Editor" -command {DA_Radii_Box .disaglcon} 150 # grid $dacon.radcon -row 1 -column 0 151 152 DA_Radii_Box .disaglcon 153 putontop .disaglcon 154 tkwait window .disaglcon 155 afterputontop 156 return $::da_quit 157 158 } 159 160 proc DA_Controls {var phase junk } { 161 if {[set ${var}($phase)] == "none"} { 162 if {$var == "::da_acon"} { 163 set ::da_dcon($phase) "none" 164 #puts 1 165 } else { 166 set ::da_acon($phase) "none" 167 #puts 2 17 168 } 18 19 set ::da_acon($j) [phaseinfo $j AngCalc]20 set c [regexp -all {[0-9]} $::da_acon($j)]21 if {$c > 0} {set ::da_aval$j $::da_acon($j) 169 } 170 if {[set ${var}($phase)] != "none" && ($::da_dcon($phase) == "none" || $::da_acon($phase) == "none")} { 171 if {$var == "::da_acon"} { 172 set ::da_dcon($phase) "radii" 22 173 } else { 23 set ::da_aval$j ""} 24 25 } 26 27 } 28 29 proc DA_Read {} { 30 31 set ::da_list [AtmTypList] 32 set da_angrad [DefAtmTypInfo angrad] 33 set da_distrad [DefAtmTypInfo distrad] 34 35 #Build search arrays 36 #::da_darad array contains default angle search radii 37 #::da_ddrad array contains default distance search radii 38 #::da_arad array contains current angle search radii 39 #::da_drad array contains current distance search radii 40 41 foreach j $da_angrad { 42 set ::da_darad([lindex $j 0]) [lindex $j 1] 43 } 44 foreach k $da_distrad { 45 set ::da_ddrad([lindex $k 0]) [lindex $k 1] 46 } 47 foreach i $::da_list { 48 set ::da_drad($i) [AtmTypInfo distrad $i] 49 set ::da_arad($i) [AtmTypInfo angrad $i] 50 } 51 } 52 53 #**************** Build Disagl Control Panel **************************** 54 55 proc DA_Control_Panel {"launchdisagl 0"} { 56 DA_Initialize 57 DA_Read 58 destroy .disaglcon 59 set dcb .disaglcon 60 catch {toplevel $dcb} 61 eval destroy [winfo children $dcb] 62 63 #construct phase control box in phasecon frame 64 set phasecon $dcb.phasecon 65 frame $phasecon -bd 2 -relief groove 66 grid $phasecon -column 0 -row 0 67 68 label $phasecon.lbl1 -text "Bond Search \n Method" 69 label $phasecon.lbl2 -text "Angle Search \n Method" 70 grid $phasecon.lbl1 -column 1 -row 0 71 grid $phasecon.lbl2 -column 2 -row 0 72 73 74 foreach i $::da_phase { 75 label $phasecon.phase$i -text "Phase $i" -width 8 76 set tacon [regexp {[0-9]+.[0-9]+} $::da_acon($i)] 77 set tdcon [regexp {[0-9]+.[0-9]+} $::da_dcon($i)] 78 if {$tacon} {set alist {none radii $::da_acon($i)} 79 } else {set alist {none radii {fixed search range}}} 80 if {$tdcon} {set dlist {none radii $::da_dcon($i)} 81 } else {set dlist {none radii {fixed search range}}} 82 83 # set list {none radii {fixed search range}} 84 #if {[set ::da_dval$i] != ""} {lappend list [set ::da_dval$i]} 85 eval tk_optionMenu $phasecon.dist$i ::da_dcon($i) $dlist 86 $phasecon.dist$i config -width 10 87 eval tk_optionMenu $phasecon.ang$i ::da_acon($i) $alist 88 $phasecon.ang$i config -width 10 89 grid $phasecon.phase$i -row $i -column 0 -padx 10 90 grid $phasecon.dist$i -row $i -column 1 -padx 10 91 grid $phasecon.ang$i -row $i -column 2 -padx 10 92 } 93 94 trace var ::da_dcon w DA_Controls 95 trace var ::da_acon w DA_Controls 96 97 98 #save box 99 set dasave $dcb.dasave 100 frame $dasave -bd 2 -relief groove 101 grid $dasave -column 0 -row 2 102 103 if {$launchdisagl} { 104 wm title $dcb "DISAGL Control Panel" 105 grab release $dcb 106 checkbutton $dasave.option -text "DISAGL output in separate window" \ 107 -variable ::expgui(disaglSeparateBox) 108 grid $dasave.option -row 0 -column 0 109 button $dasave.sexit -text "Save and run DISAGL" -command DA_Save -bg LightGreen 110 grid $dasave.sexit -row 1 -column 0 111 } else { 112 wm title $dcb "Distance Search Parameters" 113 grab release $dcb 114 button $dasave.sexit -text "Save and Exit" -command DA_Save -bg LightGreen 115 grid $dasave.sexit -row 0 -column 0 116 } 117 button $dasave.quit -text "Cancel" -command "destroy $dcb" 118 grid $dasave.quit -row 2 -column 0 119 120 121 #construct control box 122 123 124 set dacon $dcb.dacon 125 frame $dacon -bd 2 -relief groove 126 grid $dacon -column 1 -row 2 127 128 button $dacon.default -text "Restore to Default Radii" -command { 129 foreach i $::da_list { 130 set ::da_drad($i) $::da_ddrad([lindex [split $i {+-}] 0]) 131 set ::da_arad($i) $::da_darad([lindex [split $i {+-}] 0]) 132 } 133 } 134 grid $dacon.default -row 3 -column 0 -columnspan 3 135 136 label $dacon.dradcon -text "Increment All Bond Search Radii (0.10 A)" 137 label $dacon.aradcon -text "Increment All Angle Search Radii (0.10 A)" 138 button $dacon.dradup -text "\u2191" -command DA_Inc_Drad 139 button $dacon.draddn -text "\u2193" -command DA_Dec_Drad 140 button $dacon.aradup -text "\u2191" -command DA_Inc_Arad 141 button $dacon.araddn -text "\u2193" -command DA_Dec_Arad 142 grid $dacon.dradcon -column 0 -row 0 -pady 5 143 grid $dacon.dradup -column 1 -row 0 -padx 5 144 grid $dacon.draddn -column 2 -row 0 -padx 5 145 grid $dacon.aradcon -column 0 -row 1 -pady 5 146 grid $dacon.aradup -column 1 -row 1 -padx 5 147 grid $dacon.araddn -column 2 -row 1 -padx 5 148 149 # button $dacon.radcon -text "Radii Editor" -command {DA_Radii_Box .disaglcon} 150 # grid $dacon.radcon -row 1 -column 0 151 152 DA_Radii_Box .disaglcon 153 putontop .disaglcon 154 tkwait window .disaglcon 155 afterputontop 156 return $::da_quit 157 158 } 159 160 proc DA_Controls {var phase junk } { 161 if {[set ${var}($phase)] == "none"} { 162 if {$var == "::da_acon"} { 163 set ::da_dcon($phase) "none" 164 puts 1 165 } else { 166 set ::da_acon($phase) "none" 167 puts 2 174 set ::da_acon($phase) "radii" 168 175 } 169 } 170 if {[set ${var}($phase)] != "none" && ($::da_dcon($phase) == "none" || $::da_acon($phase) == "none")} { 171 if {$var == "::da_acon"} { 172 set ::da_dcon($phase) "radii" 173 } else { 174 set ::da_acon($phase) "radii" 175 } 176 } 177 178 179 # if {[set ${var}($phase)] == "fixed search range"} {} 180 if {[set ${var}($phase)] != "none" && [set ${var}($phase)] != "radii" } { 181 catch {destroy .disaglcon.top} 182 set dedit .disaglcon.top 183 toplevel $dedit 184 bind $dedit <Return> "destroy $dedit" 185 # frame $dedit -bd 2 -relief groove 186 # pack $dedit -side top 187 set temp [regexp {[0-9]+.[0-9]+} [set ${var}($phase)]] 188 if {$temp == 0} {set ${var}($phase) 0.00} 189 if {$var == "::da_acon"} { 190 label $dedit.lbl1 -text "set angle fixed search range \n for phase $phase in angstroms" 191 # set ::da_acon($phase) 0 192 entry $dedit.entry1 -textvariable ::da_acon($phase) -takefocus 1 193 $dedit.entry1 selection range 0 end 194 grid $dedit.lbl1 -column 0 -row 0 195 grid $dedit.entry1 -column 0 -row 1 196 focus $dedit.entry1 197 } 198 if {$var == "::da_dcon"} { 199 # set ::da_dcon($phase) 0 200 label $dedit.lbl1 -text "set bond fixed search range \n for phase $phase in angstroms" 201 entry $dedit.entry1 -textvariable ::da_dcon($phase) -takefocus 1 202 $dedit.entry1 selection range 0 end 203 grid $dedit.lbl1 -column 0 -row 0 204 grid $dedit.entry1 -column 0 -row 1 205 focus $dedit.entry1 206 } 207 button $dedit.quit -text "Set" -command "destroy $dedit" 208 grid $dedit.quit -column 0 -row 2 209 putontop $dedit 210 tkwait window $dedit 211 afterputontop 212 } 213 214 215 216 217 # puts "phase = $phase" 218 # puts "var = $var" 219 # puts "new value = [set ${var}($phase)]" 176 } 177 178 179 # if {[set ${var}($phase)] == "fixed search range"} {} 180 if {[set ${var}($phase)] != "none" && [set ${var}($phase)] != "radii" } { 181 catch {destroy .disaglcon.top} 182 set dedit .disaglcon.top 183 toplevel $dedit 184 bind $dedit <Return> "destroy $dedit" 185 # frame $dedit -bd 2 -relief groove 186 # pack $dedit -side top 187 set temp [regexp {[0-9]+.[0-9]+} [set ${var}($phase)]] 188 if {$temp == 0} {set ${var}($phase) 0.00} 189 if {$var == "::da_acon"} { 190 label $dedit.lbl1 -text "set angle fixed search range \n for phase $phase in angstroms" 191 # set ::da_acon($phase) 0 192 entry $dedit.entry1 -textvariable ::da_acon($phase) -takefocus 1 193 $dedit.entry1 selection range 0 end 194 grid $dedit.lbl1 -column 0 -row 0 195 grid $dedit.entry1 -column 0 -row 1 196 focus $dedit.entry1 197 } 198 if {$var == "::da_dcon"} { 199 # set ::da_dcon($phase) 0 200 label $dedit.lbl1 -text "set bond fixed search range \n for phase $phase in angstroms" 201 entry $dedit.entry1 -textvariable ::da_dcon($phase) -takefocus 1 202 $dedit.entry1 selection range 0 end 203 grid $dedit.lbl1 -column 0 -row 0 204 grid $dedit.entry1 -column 0 -row 1 205 focus $dedit.entry1 206 } 207 button $dedit.quit -text "Set" -command "destroy $dedit" 208 grid $dedit.quit -column 0 -row 2 209 putontop $dedit 210 tkwait window $dedit 211 afterputontop 212 } 213 214 215 216 217 # puts "phase = $phase" 218 # puts "var = $var" 219 # puts "new value = [set ${var}($phase)]" 220 220 } 221 221 222 222 proc DA_Radii_Box {dcb args} { 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 223 #construct radii control box 224 catch {destory $dcb.radcon} 225 catch {destory $dcb.discon} 226 set radcon $dcb.radcon 227 frame $radcon -bd 2 -relief groove 228 grid $radcon -column 1 -row 0 -rowspan 2 229 230 label $radcon.lbl1 -text "Atom/Ion" 231 label $radcon.lbl2 -text "Bond \n Search Radii" 232 label $radcon.lbl3 -text "Angle \n Search Radii" 233 grid $radcon.lbl1 -row 0 -column 0 234 grid $radcon.lbl2 -row 0 -column 1 235 grid $radcon.lbl3 -row 0 -column 2 236 set count 1 237 foreach j [array names ::da_drad] { 238 label $radcon.atom$j -text "$j" -width 5 239 entry $radcon.drad$j -textvariable ::da_drad($j) -width 6 -takefocus 1 240 entry $radcon.arad$j -textvariable ::da_arad($j) -width 6 -takefocus 1 241 grid $radcon.atom$j -row $count -column 0 242 grid $radcon.drad$j -row $count -column 1 243 grid $radcon.arad$j -row $count -column 2 244 incr count 245 } 246 246 } 247 247 248 248 249 249 proc DA_Inc_Drad {args} { 250 251 252 250 foreach j [array names ::da_drad] { 251 set ::da_drad($j) [format %.1f [expr $::da_drad($j) + 0.1]] 252 } 253 253 } 254 254 255 255 proc DA_Dec_Drad {args} { 256 257 258 256 foreach j [array names ::da_drad] { 257 set ::da_drad($j) [format %.1f [expr $::da_drad($j) - 0.1]] 258 } 259 259 } 260 260 proc DA_Inc_Arad {args} { 261 262 263 261 foreach j [array names ::da_arad] { 262 set ::da_arad($j) [format %.1f [expr $::da_arad($j) + 0.1]] 263 } 264 264 } 265 265 proc DA_Dec_Arad {args} { 266 267 268 266 foreach j [array names ::da_drad] { 267 set ::da_arad($j) [format %.1f [expr $::da_arad($j) - 0.1]] 268 } 269 269 } 270 270 271 271 proc DA_Save {args} { 272 273 274 275 276 277 278 279 280 281 282 272 foreach i $::da_list { 273 if {$::da_drad($i) >= 0 && $::da_drad($i) <= 10000} { 274 AtmTypInfo distrad $i set $::da_drad($i) 275 } 276 puts 1 277 if {$::da_arad($i) >= 0 && $::da_arad($i) <= 10000} { 278 AtmTypInfo angrad $i set $::da_arad($i) 279 } 280 281 } 282 foreach j $::da_phase { 283 283 phaseinfo $j DistCalc set $::da_dcon($j) 284 284 phaseinfo $j AngCalc set $::da_acon($j) 285 286 287 288 289 290 } 285 } 286 # indicate a change to the .EXP file 287 incr ::expgui(changed) 288 set ::da_quit 0 289 destroy .disaglcon 290 }
Note: See TracChangeset
for help on using the changeset viewer.