Changeset 1132 for branches/sandbox


Ignore:
Timestamp:
Apr 14, 2011 5:45:50 PM (10 years ago)
Author:
lake
Message:

improved sort routine in edit matrix window

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/sandbox/rigid.tcl

    r1131 r1132  
    807807     set em .viewmatrix
    808808     toplevel $em
    809      putontop $em
     809#     putontop $em
    810810     wm title $em "Edit Matrices for Rigid Body $bodnum"
    811811
    812812     set vm $em.entry
    813813     set um $em.update
    814      grid [frame $vm -bd 2 -relief groove] -row 0 -column 0
    815      grid [frame $um -bd 2 -relief groove] -row 1 -column 0
     814     set sm $em.sort
     815     grid [frame $vm -bd 2 -relief groove] -row 0 -column 0 -columnspan 2
     816     grid [frame $um -bd 2 -relief groove] -row 1 -column 1
     817     grid [frame $sm -bd 2 -relief groove] -row 1 -column 0
     818
     819     grid [label $sm.sort -text "Sort Atoms"] -row 1 -column 0 -columnspan 2
     820     grid [button $sm.inc -text "\u2191" -command "RB_Sort_Inc $bodnum inc"] -row 2 -column 0
     821     grid [button $sm.dec -text "\u2193" -command "RB_Sort_Inc $bodnum dec"] -row 2 -column 1
     822
    816823     grid [button $um.update -text "Update Matrix Info" -bg green -command "RB_Matrix_Update $bodnum"] -row 0 -column 0
    817824 #    grid [button $um.sort -text "Sort Matrix Info" -command "RB_Cart_Sort $bodnum"] -row 0 -column 1
     
    825832
    826833     for {set z 0} {$z < $::rb_coord_num($bodnum,$w)} {incr z} {
    827          grid [button $vm.inc$z -text "\u2191" -command "RB_Sort_Inc $bodnum inc $z"] -row [expr $z + 6] -column 0
    828          grid [button $vm.dec$z -text "\u2193" -command "RB_Sort_Inc $bodnum dec $z"] -row [expr $z + 6] -column 1
     834         grid [checkbutton $vm.sort$z -variable ::rb_sort($z)] -row [expr $z + 6] -column 1
    829835         grid [label $vm.lbls$z -text "Site [expr $z+ 1]"] -row [expr $z+6] -column 2
    830836     }
     
    856862
    857863
    858 proc RB_Sort_Inc {bodnum dir site2 args} {
     864proc RB_Sort_Inc {bodnum dir args} {
     865     set sortlist ""
     866     for {set count 0} {$count < $::rb_coord_num($bodnum,1)} {incr count} {
     867         if {$::rb_sort($count) == 1} {
     868            lappend sortlist $count
     869         }
     870     }
     871     puts $sortlist
     872
     873     foreach check $sortlist {
     874             set checkup [expr $check - 1]
     875             set checkdwn [expr $check + 1]
     876             if {$checkup < 0} {
     877                if {$dir == "inc"} {
     878                   bell
     879                   return
     880                }
     881             }
     882             if {$checkdwn >= $::rb_coord_num($bodnum,1)} {
     883                if {$dir == "dec"} {
     884                   bell
     885                   return
     886                }
     887             }
     888     }
     889
     890
    859891     for {set i 1} {$i <= $::rb_matrix_num($bodnum)} {incr i} {
    860          if {$dir == "inc"} {set site1 [expr $site2 - 1]}
    861          if {$dir == "dec"} {set site1 [expr $site2 + 1]}
    862          if {$site1 >= 0 && $site1 < $::rb_coord_num($bodnum,1)} {
    863             set x1dum $::x($i,$site1)
    864             set y1dum $::y($i,$site1)
    865             set z1dum $::z($i,$site1)
    866             set ::x($i,$site1) $::x($i,$site2)
    867             set ::y($i,$site1) $::y($i,$site2)
    868             set ::z($i,$site1) $::z($i,$site2)
    869             set ::x($i,$site2) $x1dum
    870             set ::y($i,$site2) $y1dum
    871             set ::z($i,$site2) $z1dum
    872          } else {bell}
    873 
    874 
     892         foreach sort $sortlist {
     893             if {$dir == "inc"} {set line1 [expr $sort - 1]}
     894             if {$dir == "dec"} {set line1 [expr $sort + 1]}
     895
     896
     897#                      if {$line1 >= 0 && $line1 < $::rb_coord_num($bodnum,1)} {
     898                         set x1dum $::x($i,$line1)
     899                         set y1dum $::y($i,$line1)
     900                         set z1dum $::z($i,$line1)
     901                         set ::x($i,$line1) $::x($i,$sort)
     902                         set ::y($i,$line1) $::y($i,$sort)
     903                         set ::z($i,$line1) $::z($i,$sort)
     904                         set ::x($i,$sort) $x1dum
     905                         set ::y($i,$sort) $y1dum
     906                         set ::z($i,$sort) $z1dum
     907#                      } else {bell}
     908             set ::rb_sort($sort) 0
     909             if {$dir == "inc"} {set ::rb_sort([expr $sort - 1]) 1}
     910             if {$dir == "dec"} {
     911                foreach relabel $sortlist {
     912                    set ::rb_sort([expr $relabel +1]) 1
     913                }
     914             }
     915
     916
     917          }
    875918     }
    876919}
Note: See TracChangeset for help on using the changeset viewer.