source: trunk/disagledit.tcl @ 1025

Last change on this file since 1025 was 1025, checked in by toby, 10 years ago

see https://subversion.xor.aps.anl.gov/trac/EXPGUI/wiki/News20101013

File size: 10.0 KB
Line 
1proc DA_Initialize {} {
2catch {unset ::da_ddrad}
3catch {unset ::da_darad}
4catch {unset ::da_drad}
5catch {unset ::da_arad}
6catch {unset ::da_acon}
7catch {unset ::da_dcon}
8    set ::da_quit 1
9set ::da_phase $::expmap(phaselist)
10foreach j $::da_phase {
11        set ::da_dcon($j) [phaseinfo $j DistCalc]
12        set b [regexp -all {[0-9]} $::da_dcon($j)]
13        if {$b > 0} {
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
29proc 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
55proc 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
152DA_Radii_Box .disaglcon
153             putontop  .disaglcon
154             tkwait window .disaglcon
155             afterputontop
156             return $::da_quit
157
158}
159
160proc 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
168        }
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)]"
220}
221
222proc DA_Radii_Box {dcb args} {
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}
247
248
249proc DA_Inc_Drad {args} {
250        foreach j [array names ::da_drad] {
251                set ::da_drad($j) [format %.1f [expr $::da_drad($j) + 0.1]]
252        }
253}
254
255proc DA_Dec_Drad {args} {
256        foreach j [array names ::da_drad] {
257                set ::da_drad($j) [format %.1f [expr $::da_drad($j) - 0.1]]
258        }
259}
260proc DA_Inc_Arad {args} {
261        foreach j [array names ::da_arad] {
262                set ::da_arad($j) [format %.1f [expr $::da_arad($j) + 0.1]]
263        }
264}
265proc DA_Dec_Arad {args} {
266        foreach j [array names ::da_drad] {
267                set ::da_arad($j) [format %.1f [expr $::da_arad($j) - 0.1]]
268        }
269}
270
271proc DA_Save {args} {
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        phaseinfo $j DistCalc set $::da_dcon($j)
284        phaseinfo $j AngCalc set $::da_acon($j)
285     }
286     # indicate a change to the .EXP file
287     incr ::expgui(changed)
288     set ::da_quit 0
289     destroy .disaglcon
290}
Note: See TracBrowser for help on using the repository browser.