Changeset 1166 for trunk/disagledit.tcl


Ignore:
Timestamp:
Aug 17, 2011 6:17:04 PM (9 years ago)
Author:
toby
Message:

bring sandbox changes over to main release

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/disagledit.tcl

    r1025 r1166  
    11proc 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}
    88    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 {
    1111        set ::da_dcon($j) [phaseinfo $j DistCalc]
    1212        set b [regexp -all {[0-9]} $::da_dcon($j)]
    1313        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
     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
     152    DA_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
    17168        }
    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"
    22173        } 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"
    168175        }
    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)]"
    220220}
    221221
    222222proc 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      }
     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    }
    246246}
    247247
    248248
    249249proc 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         }
     250    foreach j [array names ::da_drad] {
     251        set ::da_drad($j) [format %.1f [expr $::da_drad($j) + 0.1]]
     252    }
    253253}
    254254
    255255proc 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         }
     256    foreach j [array names ::da_drad] {
     257        set ::da_drad($j) [format %.1f [expr $::da_drad($j) - 0.1]]
     258    }
    259259}
    260260proc 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         }
     261    foreach j [array names ::da_arad] {
     262        set ::da_arad($j) [format %.1f [expr $::da_arad($j) + 0.1]]
     263    }
    264264}
    265265proc 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         }
     266    foreach j [array names ::da_drad] {
     267        set ::da_arad($j) [format %.1f [expr $::da_arad($j) - 0.1]]
     268    }
    269269}
    270270
    271271proc 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 {
     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 {
    283283        phaseinfo $j DistCalc set $::da_dcon($j)
    284284        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 }
     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.