chiark / gitweb /
where-vessels: smash sizes
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 8 Aug 2010 16:44:50 +0000 (17:44 +0100)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 8 Aug 2010 19:59:56 +0000 (20:59 +0100)
yarrg/where-vessels

index 3c85552d963b9afdc7b6da37f2bc79c84dc2a18e..40a50e4106a058567d63ef7a2f8898c0cae8cd50 100755 (executable)
@@ -505,7 +505,7 @@ proc control-tickbox-flip {varsvn values} {
     redraw-needed c.-tickbox-flip $varsvn $values
 }
 
     redraw-needed c.-tickbox-flip $varsvn $values
 }
 
-proc populate-control-grid-tickboxes {cw rows inrow varsvn values
+proc populate-control-grid-tickboxes {cw rows inrow varsvn values flipvalues
                                    label_kind valvn default_get label_get} {
     debug "POPULATE-CONTROL-GRID-TICKBOXES $cw $rows $inrow $varsvn\
              [list $values] $label_kind $valvn"
                                    label_kind valvn default_get label_get} {
     debug "POPULATE-CONTROL-GRID-TICKBOXES $cw $rows $inrow $varsvn\
              [list $values] $label_kind $valvn"
@@ -530,7 +530,7 @@ proc populate-control-grid-tickboxes {cw rows inrow varsvn values
     }
     [make-control-grid-entry $cw final invert button] \
        configure \
     }
     [make-control-grid-entry $cw final invert button] \
        configure \
-       -text flip -command [list control-tickbox-flip $varsvn $values] \
+       -text flip -command [list control-tickbox-flip $varsvn $flipvalues] \
        -padx 0 -pady 0
 }
 
        -padx 0 -pady 0
 }
 
@@ -542,6 +542,8 @@ set smash_owner 0
 proc smash-code {code} {
     manyset [split $code _] inport class subclass lockown xabbrev
 
 proc smash-code {code} {
     manyset [split $code _] inport class subclass lockown xabbrev
 
+    upvar #0 smash_sizemap($class) smclass
+
     global smash_subclass
     if {$smash_subclass > 1} {
        set subclass {}
     global smash_subclass
     if {$smash_subclass > 1} {
        set subclass {}
@@ -569,7 +571,16 @@ proc smash-code {code} {
        4 { set lockown 33 }
     }
 
        4 { set lockown 33 }
     }
 
-    return [join [list $inport $class $subclass $lockown $xabbrev] _]
+    return [join [list $inport $smclass $subclass $lockown $xabbrev] _]
+}
+
+proc smash-prepare {} {
+    global vc_codes smash_sizemap smash_size
+    set mapto {}
+    foreach size $vc_codes {
+       if {!$smash_size($size)} { set mapto $size }
+       set smash_sizemap($size) $mapto
+    }
 }
 
 proc make-smasher {sma label ekind} {
 }
 
 proc make-smasher {sma label ekind} {
@@ -588,17 +599,18 @@ proc make-radio-smasher {sma label variable descs rows inrow} {
 }
 
 proc make-smashers {} {
 }
 
 proc make-smashers {} {
+    global vc_codes vc_code2abbrev
+    set cw [make-smasher size "Size\n round\n down" frame]
+    populate-control-grid-tickboxes $cw 2 0 smash_size \
+       $vc_codes [lrange $vc_codes 1 end] \
+       image val { expr 0 } { expr {"icon/$vc_code2abbrev($val)"} }
+    $cw.0 configure -state disabled
+
     make-radio-smasher subclass Subclass smash_subclass \
        {Show Normal/LE Hide} 1 0
 
     make-radio-smasher owner Owner smash_owner \
        {Show Yours? {For you} Lock Hide} 2 3
     make-radio-smasher subclass Subclass smash_subclass \
        {Show Normal/LE Hide} 1 0
 
     make-radio-smasher owner Owner smash_owner \
        {Show Yours? {For you} Lock Hide} 2 3
-
-    global vc_codes vc_code2abbrev
-
-    set cw [make-smasher size "Size\nround down" frame]
-    populate-control-grid-tickboxes $cw 2 0 smash_size $vc_codes \
-       image val { expr 0 } { expr {"icon/$vc_code2abbrev($val)"} }
 }
 
 #---------- filtering ----------
 }
 
 #---------- filtering ----------
@@ -665,8 +677,9 @@ proc make-tickbox-filter {fil label rows inrow} {
 
     set fw [make-filter $fil $label frame]
 
 
     set fw [make-filter $fil $label frame]
 
-    populate-control-grid-tickboxes $fw $rows $inrow filter_$fil $values \
-        $label_kind val { filter-default/$fil $val } $label_get
+    populate-control-grid-tickboxes $fw $rows $inrow filter_$fil \
+       $values $values \
+       $label_kind val { filter-default/$fil $val } $label_get
 }
 
 proc entry-filter-changed {fw fil n1 n2 op} {
 }
 
 proc entry-filter-changed {fw fil n1 n2 op} {
@@ -967,6 +980,8 @@ proc draw {} {
        eval chart-got/$proc [lrange $l 1 end]
     }
 
        eval chart-got/$proc [lrange $l 1 end]
     }
 
+    smash-prepare
+
     catch { unset smfound }
     foreach key [lsort [array names found]] {
        regexp {^(.*) (\S+)$} $key dummy islandname code
     catch { unset smfound }
     foreach key [lsort [array names found]] {
        regexp {^(.*) (\S+)$} $key dummy islandname code