source: branches/sandbox/disagledit.tcl @ 1022

Last change on this file since 1022 was 1022, checked in by chlake, 11 years ago

Raised window for geo viewer and added Grab release commands to disagledit

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
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
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.