From 86fa4a34b039a848b004b06a86258229d97b5c8d Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 21 Jul 2010 18:29:00 +0100 Subject: [PATCH] where-vessels: wip smashing adds UI box, proof of concept, need to think about what to smash --- yarrg/where-vessels | 47 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/yarrg/where-vessels b/yarrg/where-vessels index d729c99..a558c42 100755 --- a/yarrg/where-vessels +++ b/yarrg/where-vessels @@ -289,6 +289,7 @@ proc vesselclasses-init {} { global vsc_game2code set vsc_game2code(null) {} set vsc_code2report() Ordinary + set vsc_code2report(!) "Special/L.E." foreach {game code full} $subclassinfos { if {![regexp {^[A-Z]$} $code code]} { error "bad code" } set vsc_game2code($game) $code @@ -435,6 +436,21 @@ proc show-report-decode {code} { } } +#---------- smashing ---------- + +set smash_subclass 0 + +proc smash-code {code} { + manyset [split $code _] inport class subclass lockown xabbrev + + global smash_subclass + if {$smash_subclass && [string length $subclass]} { + set subclass ! + } + + return [join [list $inport $class $subclass $lockown $xabbrev] _] +} + #---------- filtering ---------- set filters {} @@ -794,7 +810,7 @@ proc redraw-needed {} { } proc draw {} { - global chart found isleloc canvas redraw_after islandnames + global chart found isleloc canvas redraw_after islandnames smfound catch { after cancel $redraw_after } catch { unset redraw_after } @@ -807,12 +823,21 @@ proc draw {} { eval chart-got/$proc [lrange $l 1 end] } - set islandnames {} - set lastislandname {} + catch { unset smfound } foreach key [lsort [array names found]] { - set c [llength $found($key)] -# debug "SHOWING $key $c" regexp {^(.*) (\S+)$} $key dummy islandname code + set smcode [smash-code $code] + debug "smashed $code => $smcode" + set smkey "$islandname $smcode" + foreach vessel $found($key) { lappend smfound($smkey) $vessel } + } + + set islandnames {} + set lastislandname {} + foreach smkey [lsort [array names smfound]] { + set c [llength $smfound($smkey)] +# debug "SHOWING $smkey $c" + regexp {^(.*) (\S+)$} $smkey dummy islandname code if {![filters-say-yes $code]} continue @@ -1023,9 +1048,17 @@ proc widgets-setup {} { #----- control panels and filter ----- frame .cp + frame .smash -relief groove -bd 2 -padx 1 frame .filter -relief groove -bd 2 -padx 1 frame .islands -pady 2 - pack .cp .filter .islands -side top + pack .cp .smash .filter .islands -side top + + label .smash.title -text Smash + pack .smash.title -side left + + checkbutton .smash.subclass -text Subclass \ + -variable smash_subclass -command redraw-needed + pack .smash.subclass -side left set filterstyle 1 trace add variable filterstyle write filterstyle-changed @@ -1125,7 +1158,7 @@ proc show-report {islandname code} { show-report-decode $code set kk "$islandname $code" - upvar #0 found($kk) k + upvar #0 smfound($kk) k .cp.report.list delete 0 end -- 2.30.2