X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2Fwhere-vessels;h=f98b0c3e4b9bd95c2056e94a7423e86b353918b6;hb=6c9a152ce924835192b2877fbba36071b5e69032;hp=a558c42a2e068c316c1fbed96552ae6d8bb60169;hpb=86fa4a34b039a848b004b06a86258229d97b5c8d;p=ypp-sc-tools.db-test.git diff --git a/yarrg/where-vessels b/yarrg/where-vessels index a558c42..f98b0c3 100755 --- a/yarrg/where-vessels +++ b/yarrg/where-vessels @@ -439,18 +439,35 @@ proc show-report-decode {code} { #---------- smashing ---------- set smash_subclass 0 +set smash_owner 0 proc smash-code {code} { manyset [split $code _] inport class subclass lockown xabbrev global smash_subclass - if {$smash_subclass && [string length $subclass]} { + if {$smash_subclass > 1} { + set subclass {} + } elseif {$smash_subclass && [string length $subclass]} { set subclass ! } return [join [list $inport $class $subclass $lockown $xabbrev] _] } +proc make-smasher {sma label ekind} { + return [make-gridded-control .smash $sma $label $ekind] +} + +proc make-radio-smasher {sma label variable descs} { + set w [make-smasher $sma $label frame] + for {set i 0} {$i < [llength $descs]} {incr i} { + radiobutton $w.v$i \ + -variable $variable -value $i -command redraw-needed \ + -text [lindex $descs $i] + pack $w.v$i -side left + } +} + #---------- filtering ---------- set filters {} @@ -512,7 +529,7 @@ proc filter-tickbox-flip {fil} { proc make-tickbox-filter {fil label rows inrow} { upvar #0 filter_$fil vars - set fw [make-filter tickbox $fil $label frame] + set fw [make-filter $fil $label frame] set values [filter-values/$fil] set nvalues [llength $values] if {!$inrow} { @@ -564,7 +581,7 @@ proc make-entry-filter {fil label def} { global filterentered_$fil upvar #0 filter_$fil realvar set realvar $def - set fw [make-filter entry $fil $label frame] + set fw [make-filter $fil $label frame] entry $fw.entry -textvariable filterentered_$fil label $fw.error glset def_background [$fw.error cget -background] @@ -573,15 +590,21 @@ proc make-entry-filter {fil label def} { pack $fw.entry $fw.error -side top -anchor w } -proc make-filter {kind fil label ekind} { +proc make-gridded-control {parent name label ekind} { + debug "MAKE-GRIDDED-CONTROL [list $parent $name $label $ekind]" + label $parent.lab_$name -text $label -justify left + $ekind $parent.$name + manyset [grid size $parent] dummy row + incr row + grid configure $parent.lab_$name -row $row -column 0 -sticky nw -pady 4 + grid configure $parent.$name -row $row -column 1 -sticky w -pady 3 + return $parent.$name +} + +proc make-filter {fil label ekind} { global filters - label .filter.lab_$fil -text $label -justify left - $ekind .filter.$fil lappend filters $fil - set nfilters [llength $filters] - grid configure .filter.lab_$fil -row $nfilters -column 0 -sticky nw -pady 4 - grid configure .filter.$fil -row $nfilters -column 1 -sticky w -pady 3 - return .filter.$fil + return [make-gridded-control .filter $fil $label $ekind] } proc make-filters {} { @@ -1051,14 +1074,16 @@ proc widgets-setup {} { frame .smash -relief groove -bd 2 -padx 1 frame .filter -relief groove -bd 2 -padx 1 frame .islands -pady 2 - pack .cp .smash .filter .islands -side top + pack .cp .filter .islands .smash -side top label .smash.title -text Smash - pack .smash.title -side left + grid .smash.title -row 0 -column 0 -columnspan 2 + + make-radio-smasher subclass Subclass smash_subclass \ + {Show Normal/LE Hide} - checkbutton .smash.subclass -text Subclass \ - -variable smash_subclass -command redraw-needed - pack .smash.subclass -side left + make-radio-smasher owner Owner smash_owner \ + {Show Me Lock Hide} set filterstyle 1 trace add variable filterstyle write filterstyle-changed