source: branches/sandbox/distrest.tcl @ 1005

Last change on this file since 1005 was 1005, checked in by chlake, 12 years ago

Made SR_Sort generic and added sort routine to restraint list box.

Bug: when restraint editor box closes, it SR_Bond_List needs to be reset

File size: 26.5 KB
Line 
1
2
3
4
5# code for distance restraints (soft constraints)
6proc DisplayDistanceRestraints {} {
7    global expcons
8    eval destroy [winfo children $expcons(distmaster)]
9
10    set leftfr $expcons(distmaster).f1
11    set rightfr $expcons(distmaster).f2
12
13    grid [frame $leftfr -bd 2 -relief groove] -column 0 -row 0 \
14        -sticky nsew
15    grid [frame $rightfr -bd 2 -relief groove] -column 1 -row 0 \
16        -sticky nsew
17
18    grid rowconfigure $expcons(distmaster) 0 -weight 1
19    grid columnconfigure $expcons(distmaster) 1 -weight 1
20
21
22# Pick Phase to be Evaluated **********************************************
23    label $leftfr.phlabel -text Phase
24    set ::sr_phaselist $::expmap(phaselist)
25    eval tk_optionMenu $leftfr.phase sr_entryvar(softphase) $::sr_phaselist
26    grid $leftfr.phlabel -column 0 -row 0
27    grid $leftfr.phase  -column 1 -row 0
28#**************************************************************************
29
30# Run Disagl Commands *****************************************************
31    button $leftfr.disagl -text "Refresh Disagl"
32    grid $leftfr.disagl -column 1 -row 1
33#**************************************************************************
34
35    grid [label $leftfr.lweight -text "Restraint Weight"] -column 0 -row 2 -sticky sw
36    grid [entry $leftfr.weight -width 8 -textvariable entryvar(distrestweight)] -column 1 -row 2 -sticky sw
37    set ::entrycmd(distrestweight) "SoftConst weight"
38    set ::entrycmd(trace) 0
39    set ::entryvar(distrestweight) [SoftConst weight]
40    set ::entrycmd(trace) 1
41    grid [button $leftfr.edit -text "Edit Distance Restraints" -command SR_TEST] -column 0 -row 3 \
42        -sticky sw -columnspan 2
43
44
45        foreach {top main side lbl} [MakeScrollTable $rightfr] {}
46
47        set atom1_state  1
48        set atom2_state  1
49
50        button $top.alabel1 -text "Atom 1"    -width 6 -anchor center \
51               -command "SR_Sort atom1 $main $top.alabel1 $top.alabel2 {}"
52
53        button $top.alabel2 -text "Atom 2"   -width 6  -anchor center \
54               -command "SR_Sort atom2 $main $top.alabel1 $top.alabel2 {}"
55
56        label  $top.rlabel1 -text "Restraint" -width 9 -anchor center
57        label  $top.rlabel2 -text "esd"       -width 9 -anchor center
58
59        grid $top.alabel1 -column 1 -row 2 -padx 3
60        grid $top.alabel2 -column 2 -row 2 -padx 3
61        grid $top.rlabel1 -column 4 -row 2
62        grid $top.rlabel2 -column 5 -row 2
63
64        SR_Rest_Only
65        set ::sr_rb ""
66        SR_Fill_Display  $main
67        ResizeScrollTable $rightfr
68}
69
70
71
72#package require Tk
73#source c:/gsas/expgui/readexp.tcl
74#source c:/gsas/expgui/gsascmds.tcl
75
76
77
78
79
80#*********************************************************************************************
81#Read Disangle File and Create Bond List (sr_bond_list)**************************************************************************
82#*********************************************************************************************
83proc SR_Read_Distances {filename} {
84        # initialiaze
85        catch {unset ::sr_lookuplist1}
86        catch {unset ::sr_lookuplist2}
87        catch {unset ::sr_restraintdist}
88        catch {unset ::sr_restraintesd}
89        set ::sr_bond_list ""
90        set ::sr_key_list ""
91
92#::sr_bond_list       0       - Phase Number
93#                     1, 2    - Atom 1 number, Atom 2 number
94#                     3, 4    - symmetry information
95#                     5, 6, 7 - cell translations
96#                     8       - bond distance
97#                     9, 10   - atom types
98#                     11, 12  - atom labels
99#                     13      - bond id key
100
101
102        # switch to run disagl here someday
103        if {[file exists $filename]} {
104                puts "$filename from [pwd] is opened"
105                set fh [open $filename r]
106#               puts $fh
107                } else {
108                       puts "$filename not found in directory [pwd]"
109        }
110        # read in the file
111        set bond_totals -1
112        while {[gets $fh line] >= 0} {
113                if {[lindex $line 2] == 0} {
114                        incr bond_totals
115                        set bond_dist_array($bond_totals) $line
116                        #puts "$bond_dist_array($bond_totals)"
117                }
118        }
119        #puts "there are [phaseinfo 1 natoms] atoms in the file"
120        #puts "$bond_totals bond distances have been read from the file"
121        close $fh
122
123        #create initial parameter for implimentation of soft restraints
124        catch (unset initsoftpar)
125        set x 0
126
127        #set ::sr_bond_list ""
128        while {$x < $bond_totals} {
129
130              #phase number (0)
131              set initsoftpar($x) [lindex $bond_dist_array($x) 1]
132
133              #atom number 1 (1)
134              lappend initsoftpar($x) [lindex $bond_dist_array($x) 5]
135
136              #atom number 2 (2)
137              lappend initsoftpar($x) [lindex $bond_dist_array($x) 6]
138
139              #extract symmetry information (3, 4)
140              set temp [lindex $bond_dist_array($x) 7]
141              lappend initsoftpar($x) [expr abs($temp) % 100 * abs($temp) / $temp]
142              lappend initsoftpar($x) [expr abs($temp)/100]
143
144              #extract unit cell translations  (5, 6, 7)
145              lappend initsoftpar($x) [expr [string index [lindex $bond_dist_array($x) 8] 0] - 5]
146              lappend initsoftpar($x) [expr [string index [lindex $bond_dist_array($x) 8] 1] - 5]
147              lappend initsoftpar($x) [expr [string index [lindex $bond_dist_array($x) 8] 2] - 5]
148
149              #create bond ID code
150              set t2 [string map {" " ""} [set t1 $initsoftpar($x)]]
151              set ::sr_restraintdist($t2) ""
152              set ::sr_restraintesd($t2) ""
153
154              #extract bond distance
155              lappend initsoftpar($x) [lindex $bond_dist_array($x) 3]
156
157              #extract atom type and labels
158              set num1 [lindex $bond_dist_array($x) 5]
159              set num2 [lindex $bond_dist_array($x) 6]
160              set type1 [atominfo 1 [lindex $bond_dist_array($x) 5] type]
161              set type1 [lindex [split $type1 {+-}] 0]
162              set type2 [atominfo 1 [lindex $bond_dist_array($x) 6] type]
163              set type2 [lindex [split $type2 {+-}] 0]
164              lappend initsoftpar($x) $type1
165              lappend initsoftpar($x) $type2
166
167              lappend initsoftpar($x) [atominfo 1 [lindex $bond_dist_array($x) 5] label]
168              lappend initsoftpar($x) [atominfo 1 [lindex $bond_dist_array($x) 6] label]
169
170              #puts "$initsoftpar($x)"
171              #set atom types into array
172              lappend ::sr_lookuplist1($type1) $x
173              lappend ::sr_lookuplist2($type2) $x
174
175              #add bond code to list element and key list
176              lappend initsoftpar($x) $t2
177              lappend ::sr_key_list $t2
178
179              #create master list of bonds
180              lappend ::sr_bond_list $initsoftpar($x)
181
182              incr x
183              }
184}
185
186#**************************************************************************************
187# Procedure to sort soft restraints ---------------------------------------------
188#**************************************************************************************
189proc SR_Sort {whichbutton main alabel1 alabel2 dlabel1} {
190# reset all button labels
191       $alabel1 config -text "Atom 1"
192       $alabel2 config -text "Atom 2"
193       if {$dlabel1 != ""} {$dlabel1 config -text "Distance"}
194
195       if {$whichbutton == "atom1"} {
196          if {$::sr_atom1_button == 1} {
197             set sr_prsort [lsort -integer -decreasing -index 1 $::sr_bond_list]
198
199             $alabel1 config -text "Atom 1 \u2193"
200             } else {
201               set sr_prsort [lsort -integer -increasing -index 1 $::sr_bond_list]
202               $alabel1 config -text "Atom 1 \u2191"
203          }
204          set x [expr $::sr_atom1_button * -1]
205          set ::sr_atom1_button $x
206          #puts $::sr_atom1_button
207       } elseif {$whichbutton == "atom2"} {
208          if {$::sr_atom2_button == 1} {
209             set sr_prsort [lsort -integer -decreasing -index 2 $::sr_bond_list]
210             $alabel2 config -text "Atom 2 \u2193"
211             } else {
212               set sr_prsort [lsort -integer -increasing -index 2 $::sr_bond_list]
213               $alabel2 config -text "Atom 2 \u2191"
214          }
215          set x [expr $::sr_atom2_button * -1]
216          set ::sr_atom2_button $x
217       } else {
218         if {$::sr_distance_button == 1} {
219             puts "distance"
220             set sr_prsort [lsort -increasing -index 8 $::sr_bond_list]
221             $dlabel1 config -text "Distance \u2193"
222             } else {
223               set sr_prsort [lsort -decreasing -index 8 $::sr_bond_list]
224               $dlabel1 config -text "Distance \u2191"
225         }
226         set x [expr $::sr_distance_button * -1]
227         set ::sr_distance_button $x
228       }
229       set ::sr_bond_list $sr_prsort
230       SR_Fill_Display $main
231}
232#*********************************************************************************
233#Procedure to set up soft display ************************************************
234#*********************************************************************************
235
236proc SR_Display {args} {
237#global rprint
238destroy .mainrestraintbox.sr_rvaluebox
239set ::sr_rb .mainrestraintbox.sr_rvaluebox
240frame $::sr_rb
241pack $::sr_rb -side top -fill both -expand 1
242
243foreach {::sr_top main side lbl} [MakeScrollTable $::sr_rb] {}
244set     ::contraintmainbox $main
245
246button $::sr_top.alabel1 -text "Atom 1 "   \
247       -command "SR_Sort atom1 $main $::sr_top.alabel1 $::sr_top.alabel2 $::sr_top.dlabel1"
248button $::sr_top.alabel2 -text "Atom 2 " \
249       -command "SR_Sort atom2 $main $::sr_top.alabel1 $::sr_top.alabel2 $::sr_top.dlabel1"
250button $::sr_top.dlabel1 -text "Distance " \
251       -command "SR_Sort distance $main $::sr_top.alabel1 $::sr_top.alabel2 $::sr_top.dlabel1"
252
253grid $::sr_top.alabel1 -column 1 -row 2
254grid $::sr_top.alabel2 -column 2 -row 2
255grid $::sr_top.dlabel1 -column 3 -row 2
256
257label  $::sr_top.rlabel1 -text "Restraint"
258label  $::sr_top.rlabel2 -text "esd"
259grid $::sr_top.rlabel1 -column 4 -row 2 -padx 20
260grid $::sr_top.rlabel2 -column 5 -row 2 -padx 20
261
262
263button $::sr_top.rcon1   -text "Check All" -width 10 -command {
264                    set ::sr_checkall 1
265                    SR_Set_All_Check_Buttons
266                    grid forget $::sr_top.rcon1
267                    grid $::sr_top.rcon2 -column 6 -row 2 -padx 5
268                    }
269
270button $::sr_top.rcon2   -text "Clear All" -width 10 -command {
271                    set ::sr_checkall 0
272                    SR_Set_All_Check_Buttons
273                    grid forget $::sr_top.rcon2
274                    grid $::sr_top.rcon1 -column 6 -row 2 -padx 5
275                    }
276
277grid $::sr_top.rcon1   -column 6 -row 2 -padx 5
278
279#SR_Sort atom1 $main
280SR_Fill_Display  $main
281}
282
283#*****************************************************************************************
284#Procedure to fill in sorted Restraint and esd data **************************************
285#*****************************************************************************************
286proc SR_Fill_Display {main args} {
287eval destroy [winfo children $main]
288set choice   $::sr_entryvar(choicenum)
289set atomreq1 $::sr_entryvar(softatom1)
290set atomreq2 $::sr_entryvar(softatom2)
291set phasereq $::sr_entryvar(softphase)
292set mode [string match "edit" $::sr_display_mode]
293
294set len [llength $::sr_bond_list]
295set rownum 0
296for {set i 0} {$i <= $len} {incr i} {
297     set rprint  [lindex $::sr_bond_list $i]
298     set atomid1 [lindex $rprint 9]
299     set atomid2 [lindex $rprint 10]
300     if {$::sr_entryvar(softphase) == [lindex $rprint 0]} {
301        if {([lindex $rprint 8] >= $::sr_dminvalue || [lindex $rprint 8] == "?.???") && ([lindex $rprint 8] <= $::sr_dmaxvalue || [lindex $rprint 8] == "?.???")} {
302           if {$atomreq1 == "" || $atomreq1 == "all" || $atomreq1 == $atomid1} {
303              if {$atomreq2 == "" || $atomreq2 == "all" || $atomreq2 == $atomid2} {
304                 if {$choice == 0 || ($choice == 1 && [string trim $::sr_restraintdist([lindex $rprint 13])] != "") \
305                                  || ($choice == 2 && [string trim $::sr_restraintdist([lindex $rprint 13])] == "") } {
306                                          label $main.ratom1$i -text [lindex $rprint 11] -justify center -anchor center
307                                          label $main.ratom2$i -text [lindex $rprint 12] -justify center -anchor center
308                                          if {$mode} {
309                                          label $main.rdistance$i -text [lindex $rprint 8] -justify center -anchor center
310                                          entry $main.restraint$i -width 8 -textvariable ::sr_restraintdist([lindex $rprint 13]) -takefocus 1
311                                          bind  $main.restraint$i <KeyRelease> {SR_Validate_Soft %W distance}
312                                          entry $main.restesd$i -width 8 -textvariable ::sr_restraintesd([lindex $rprint 13]) -takefocus 1
313                                          bind  $main.restesd$i <KeyRelease> {SR_Validate_Soft %W esd}
314                                          checkbutton $main.sr_crestraint$i -variable ::sr_crestraint([lindex $rprint 13])
315                                          } else {
316                                          label $main.restraint$i -width 8 -textvariable ::sr_restraintdist([lindex $rprint 13]) -takefocus 1
317                                          label $main.restesd$i -width 8 -textvariable ::sr_restraintesd([lindex $rprint 13]) -takefocus 1
318                                          }
319                                          incr rownum
320                                          grid $main.ratom1$i -column 1 -row $rownum
321                                          grid $main.ratom2$i -column 2 -row $rownum
322                                          if {$mode} {
323                                          grid $main.rdistance$i -column 3 -row $rownum
324                                          grid $main.sr_crestraint$i -column 6 -row $rownum
325                                          $main.ratom1$i conf -width 8
326                                          $main.ratom2$i conf -width 8
327                                          $main.rdistance$i conf -width 8
328                                          bind $main.restraint$i <ButtonPress> {SR_Set_Rval %W}
329                                          }
330                                          grid $main.restraint$i -column 4 -row $rownum
331                                          grid $main.restesd$i -column 5 -row $rownum
332                                       }
333                               }
334                       }
335                  }
336             }
337        }
338
339     bind $::sr_rb <Configure> {ResizeScrollTable $::sr_rb}
340     }
341#****************************************************************************
342#Procedure for updating sr_rvalue and sr_resd Boxes *******************************
343#****************************************************************************
344proc SR_Set_Rval {window} {
345         set ::sr_rvalue [$window get]
346         set ::sr_resd [[regsub ".f.restraint" $window ".f.restesd"] get]
347         }
348
349#****************************************************************************
350#Error Checking Procedures for Entry Boxes **********************************
351#****************************************************************************
352
353proc SR_Validate_Num {val1} {
354     # is it a valid number?
355     if {[string trim $val1] != ""} {
356          expr $val1
357          if {$val1 < 0} {error}
358     }
359}
360
361proc SR_Validate_Soft {win type} {
362     set val [$win get]
363     if {[catch {
364        SR_Validate_Num $val
365     }]} {
366         # error on validation
367        $win config -fg red
368        $::srcb3.rbutton3 config -bg red -text "Invalid Restraints"
369        set ::sr_error 1
370     } else {
371         # valid value
372        $win config -fg black
373        $::srcb3.rbutton3 config -bg green -text "Save Restraints to EXP File"
374        set ::sr_error 0
375     }
376}
377
378#**************************************************************************************
379#Procedure to load current restraints, flag presetraints and build restraint only list
380#**************************************************************************************
381proc SR_Load_Restraints {args} {
382set temp_res [SoftConst restraintlist]
383set lenr [llength $temp_res]
384
385#for {set i 0} {$i < $lenr} {incr i} {
386#    set temp_res1 [lindex $temp_res $i]
387#}
388  foreach temp_res1 $temp_res {
389    set t1 "[lindex $temp_res1 0] [lindex $temp_res1 1] [lindex $temp_res1 2] \
390            [lindex $temp_res1 3] [lindex $temp_res1 4] [lindex $temp_res1 5] \
391            [lindex $temp_res1 6] [lindex $temp_res1 7]"
392    set t2 [string map {" " ""} $t1]
393
394    set test [lsearch -exact $::sr_key_list $t2]
395
396        if {$test == -1} {
397          set new_restraint ""
398          set type1 [atominfo 1 [lindex $temp_res1 1] type]
399          set type1 [lindex [split $type1 {+-}] 0]
400          set type2 [atominfo 1 [lindex $temp_res1 2] type]
401          set type2 [lindex [split $type2 {+-}] 0]
402
403          lappend new_restraint [lindex $temp_res1 0] [lindex $temp_res1 1] \
404                  [lindex $temp_res1 2] [lindex $temp_res1 3] [lindex $temp_res1 4] \
405                  [lindex $temp_res1 5] [lindex $temp_res1 6] [lindex $temp_res1 7] \
406                  "?.???" $type1 $type2 \
407                  [atominfo 1 [lindex $temp_res1 1] label] [atominfo 1 [lindex $temp_res1 2] label] \
408                  $t2
409          set x [llength $::sr_bond_list]
410          lappend ::sr_lookuplist1($type1) $x
411          lappend ::sr_lookuplist2($type2) $x
412          lappend ::sr_bond_list $new_restraint
413        }
414        set ::sr_restraintdist($t2) [lindex $temp_res1 8]
415        set ::sr_restraintesd($t2) [lindex $temp_res1 9]
416
417
418
419# if $t2 not in ::sr_bond_list need to add to sr_bond_list and ::sr_lookuplist1/2
420    }
421}
422
423
424#*************************************************************************
425#write soft restraints to file *******************************************
426#*************************************************************************
427proc SR_Write_Restraints { } {
428     if {$::sr_error == 0} {
429#          set ::sr_write ""
430          set len [llength $::sr_bond_list]
431          for {set i 0} {$i <= [expr $len-1]} {incr i} {
432                    set temp [lindex $::sr_bond_list $i]
433                    if {[string trim $::sr_restraintdist([lindex $temp 13])] != ""} {
434                                set softrest "[lindex $temp 0] [lindex $temp 1] \
435                                [lindex $temp 2] [lindex $temp 3] [lindex $temp 4] \
436                                [lindex $temp 5] [lindex $temp 6] [lindex $temp 7]\
437                                $::sr_restraintdist([lindex $temp 13])\
438                                $::sr_restraintesd([lindex $temp 13])"
439                                lappend sr_write $softrest
440                    }
441          }
442          puts $sr_write
443          # put the entire restraint list back into the .EXP file
444          SoftConst restraintlist set $sr_write
445          # indicate a change to the .EXP file
446          incr ::expgui(changed)
447          # close the window and return access to main window
448          destroy .mainrestraintbox
449          afterputontop
450     } else {
451            bell
452             #puts "invalid restaint / esd.  Save aborted"
453            }
454}
455
456#*********************************************************************************
457#Procedure to update restraints *************************************************
458#*********************************************************************************
459
460proc SR_Update_Restraints {args} {
461     foreach i [array names ::sr_crestraint] {
462             if {$::sr_crestraint($i) == 1} {
463                #puts "::sr_restraintdist($i) $::sr_rvalue"
464                set ::sr_restraintdist($i) $::sr_rvalue
465                set ::sr_restraintesd($i) $::sr_resd
466             }
467     }
468}
469
470#*******************************************************************************
471#Procedure to delete restraints ************************************************
472#*******************************************************************************
473
474proc SR_Delete_Restraints {args} {
475      foreach i [array names ::sr_crestraint] {
476              if {$::sr_crestraint($i) == 1} {
477                            set ::sr_restraintdist($i) ""
478                            set ::sr_restraintesd($i) ""
479              }
480      }
481}
482
483#*********************************************************************************
484#set flag for restraint update ***************************************************
485#*********************************************************************************
486proc SR_Set_All_Check_Buttons { } {
487     # loop over all widgets in main frame
488     foreach w [winfo children $::contraintmainbox] {
489             # pick out checkboxes which have crest
490             if {[string first crest $w] != -1} {
491                  $w deselect
492                  if {$::sr_checkall} {
493                    $w invoke
494                    }
495             }
496     }
497}
498
499#*********************************************************************************
500#Main Program Begin***************************************************************
501#*********************************************************************************
502proc SR_Main_Editor {args} {
503
504     catch {destroy .mainrestraintbox}
505     set mrb .mainrestraintbox
506     toplevel $mrb
507     #pack $mrb -side top
508     wm title $mrb "Soft Restraint Control Panel"
509     #wm geometry $mrb 415x500+10+10
510     #wm geometry $mrb {}
511     set srcb1 $mrb.srconbox1
512     set srcb2 $mrb.srconbox2
513     set ::srcb3 $mrb.srconbox3
514     frame $srcb1 -bd 2 -relief groove -pady 5
515     frame $srcb2 -bd 2 -relief groove -pady 5
516     frame $::srcb3 -bd 2 -relief groove -pady 5
517     pack $srcb1 -side top -anchor w -fill x
518     pack $srcb2 -side top -anchor w -fill x
519     pack $::srcb3 -side bottom -anchor w -fill x
520
521     label $srcb1.atomlabel1   -text "Atom Type 1"
522     label $srcb1.atomlabel2   -text "Atom Type 2"
523     label $srcb1.dminlabel    -text "Dmin"
524     label $srcb1.dmaxlabel    -text "Dmax"
525     label $srcb2.restlabel    -text "Restraint Value" -width 16 -anchor w
526     label $srcb2.restlabelesd -text "esd"
527     eval tk_optionMenu $srcb1.atom1 ::sr_entryvar(softatom1) "[lsort [array names ::sr_lookuplist1]] all"
528     eval tk_optionMenu $srcb1.atom2 ::sr_entryvar(softatom2) "[lsort [array names ::sr_lookuplist2]] all"
529
530
531     entry  $srcb1.sr_dminvalue -width 8 -textvariable ::sr_dminvalue        -takefocus 1
532     entry  $srcb1.sr_dmaxvalue -width 8 -textvariable ::sr_dmaxvalue        -takefocus 1
533     entry  $srcb2.sr_rvalue    -width 8 -textvariable ::sr_rvalue           -takefocus 1
534     entry  $srcb2.sr_resd      -width 8 -textvariable ::sr_resd             -takefocus 1
535
536     bind  $srcb1.sr_dminvalue <KeyRelease> {SR_Validate_Soft %W dmin}
537     bind  $srcb1.sr_dmaxvalue <KeyRelease> {SR_Validate_Soft %W dmax}
538     bind  $srcb2.sr_rvalue    <KeyRelease> {SR_Validate_Soft %W sr_rvalue}
539     bind  $srcb2.sr_resd      <KeyRelease> {SR_Validate_Soft %W sr_resd}
540
541     button $srcb1.recalc   -text "Filter" -bd 6 -command {SR_Display}
542     button $srcb2.rbutton1 -text "check update" -command {SR_Update_Restraints}
543     button $srcb2.rbutton2 -text "check remove" -command {SR_Delete_Restraints}
544     button $::srcb3.rbutton3 -text "Save Restraints to EXP File" -bd 6 -bg green -command {SR_Write_Restraints}
545     button $::srcb3.rbutton4 -text "Cancel" -command {destroy .mainrestraintbox; afterputontop}
546
547     grid $srcb1.atomlabel1   -column 1 -row 0
548     grid $srcb1.atom1        -column 2 -row 0
549          $srcb1.atom1 conf -width 2
550     grid $srcb1.atomlabel2   -column 1 -row 1
551     grid $srcb1.atom2        -column 2 -row 1
552          $srcb1.atom2 conf -width 2
553     grid $srcb1.recalc       -column 4 -row 2 -padx 5
554                    $srcb1.recalc conf -width 7
555
556grid $srcb1.dminlabel       -column 3 -row 0
557grid $srcb1.sr_dminvalue    -column 4 -row 0
558grid $srcb1.dmaxlabel       -column 3 -row 1
559grid $srcb1.sr_dmaxvalue    -column 4 -row 1
560
561
562set choice {"Show All Bonds" "Restrained Bonds" "Unrestrained Bonds"}
563set ::sr_entryvar(choice) "Show All Bonds"
564
565set m1 [eval tk_optionMenu $srcb1.rcon3 sr_entryvar(choice) $choice]
566# set up a variable to track menu choices by number. Do this by adding a command
567# to each item in the option menu
568  foreach i {0 1 2} {
569          $m1 entryconfig $i -command "set ::sr_entryvar(choicenum) $i"
570  }
571grid $srcb1.rcon3 -column 1 -row 2 -padx 5
572     $srcb1.rcon3 config -width 23
573grid configure $srcb1.rcon3 -columnspan 2
574
575grid $srcb2.restlabel    -column 0 -row 3 -sticky w
576grid $srcb2.sr_rvalue    -column 1 -row 3
577grid $srcb2.restlabelesd -column 2 -row 3
578grid $srcb2.sr_resd      -column 3 -row 3
579grid $srcb2.rbutton1     -column 4 -row 3 -padx 5
580grid $srcb2.rbutton2     -column 5 -row 3 -padx 5
581
582grid $::srcb3.rbutton3     -column 0 -row 0
583grid $::srcb3.rbutton4     -column 0 -row 1 -pady 5
584
585
586
587SR_Display
588
589foreach item [trace vinfo ::sr_entryvar(softatom1)] {
590        eval trace vdelete ::sr_entryvar(softatom1) $item
591}
592trace variable ::sr_entryvar(softatom1) w SR_Display
593
594foreach item [trace vinfo ::sr_entryvar(softatom2)] {
595        eval trace vdelete ::sr_entryvar(softatom2) $item
596}
597trace variable ::sr_entryvar(softatom2) w SR_Display
598
599foreach item [trace vinfo ::sr_entryvar(choicenum)] {
600        eval trace vdelete ::sr_entryvar(choicenum) $item
601}
602trace variable ::sr_entryvar(choicenum) w SR_Display
603
604foreach item [trace vinfo ::sr_entryvar(softphase)] {
605        eval trace vdelete ::sr_entryvar(softphase) $item
606}
607#trace variable ::sr_entryvar(softphase) w SR_Display
608putontop $mrb
609
610#list of global variables and procedures
611
612#::sr_lookuplist1
613#::sr_lookuplist2
614#::sr_rb
615#::sr_top
616#::sr_checkall
617#::sr_entryvar(choicenum)
618#::sr_entryvar(softatom1)
619#::sr_entryvar(softatom2)
620#::sr_entryvar(softphase)
621#::sr_dminvalue
622#::sr_dmaxvalue
623#::sr_restraintdist
624#::sr_restraintesd
625#::sr_rvalue
626#::sr_resd
627#::srcb4.rbutton3
628#::sr_crestraint
629#::sr_phaselist
630#::sr_bond_list
631
632#SR_Read_Distances
633#SR_Make_ScrollTable
634#SR_Resize_Scroll_Table
635#SR_Display
636#SR_Set_Rval
637#SR_Validate_Num
638#SR_Load_Restraints
639#SR_Write_Restraints
640#SR_Update_Restraints
641#SR_Delete_Restraints
642#SR_Set_All_Check_Buttons
643#SR_Build
644
645}
646#************************************************************************
647#Procedure to Initialize variables ***************************************
648#*************************************************************************
649proc SR_Initialize {} {
650set ::sr_atom1_button 1
651set ::sr_atom2_button 1
652set ::sr_distance_button 1
653set ::sr_entryvar(choicenum) 0
654set ::sr_entryvar(softphase) "1"
655set ::sr_entryvar(softatom1) "all"
656set ::sr_entryvar(softatom2) "all"
657set ::sr_phaselist $::expmap(phaselist)
658set ::sr_error 0
659set ::sr_bond_list ""
660set ::sr_dminvalue 0
661set ::sr_dmaxvalue 1000
662
663}
664
665proc SR_Rest_Only {} {
666     set ::sr_display_mode noedit
667        catch {unset ::sr_lookuplist1}
668        catch {unset ::sr_lookuplist2}
669        catch {unset ::sr_restraintdist}
670        catch {unset ::sr_restraintesd}
671        set ::sr_bond_list ""
672        set ::sr_key_list ""
673 SR_Load_Restraints
674}
675
676
677
678#expload TEST3.EXP
679#mapexp
680SR_Initialize
681#SR_Read_Distances test2.disagl
682#SR_Load_Restraints
683#SR_Main_Editor
684#SR_Load_Restraints
685
686proc SR_TEST {} {
687     set ::sr_display_mode edit
688     SR_Read_Distances test2.disagl
689SR_Load_Restraints
690SR_Main_Editor
691}
692
693
694
695
696
697
698
699
700
701
702
Note: See TracBrowser for help on using the repository browser.