X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=blobdiff_plain;f=yarrg%2Fwhere-vessels;h=272a11432b37f6c6d7169f773b89a621790e7326;hp=47cd6ed1119fb63aedea28561d8a8a00abdae5c3;hb=faba831bf482467efd38e779aada81746a90996f;hpb=26b072b5c12ff3f3d2f1a1e068ebbce1dc8ca5ce diff --git a/yarrg/where-vessels b/yarrg/where-vessels index 47cd6ed..272a114 100755 --- a/yarrg/where-vessels +++ b/yarrg/where-vessels @@ -133,6 +133,9 @@ proc argdefaults {} { if {[info exists ocean]} { lappend cmd --ocean $ocean } if {[info exists pirate]} { lappend cmd --pirate $pirate } manyset [split [eval exec $cmd] " "] ocean pirate + if {![llength $ocean] || ![llength $pirate]} { + error "$ocean $pirate ?" + } } lappend scraper $ocean } @@ -537,11 +540,27 @@ proc make-filters {} { make-entry-filter xabbre "Flags\n regexp" {} } +proc filterstyle-changed {n1 n2 op} { + global filterstyle + debug "filterstyle-changed $filterstyle" + redraw-needed +} + proc filters-say-yes {code} { - global filters + global filters filterstyle debug "filters-say-yes $code" + set codel [split $code _] + set lockown [lindex $codel 3] + switch -exact $filterstyle { + 0 { return 1 } + 1 { return [filter-default/lockown $lockown] } + 2 { return [regexp {^.0} $lockown] } + 3 { } + default { error $filterstyle } + } + foreach fil $filters { - if {![filter-says-yes/$fil [split $code _]]} { return 0 } + if {![filter-says-yes/$fil $codel]} { return 0 } } return 1 } @@ -609,7 +628,7 @@ proc vessel {vin} { lappend newnotes [list $vid $realname $owner $xabbrev] set kk "$island [join $codel _]" upvar #0 found($kk) k - lappend k [list $vid $realname] + lappend k [list $vid $realname $owner] debug "CODED $kk $vid $realname" } @@ -789,6 +808,7 @@ proc parser-control-create {w base invokebuttontext etl_title} { toplevel $eb wm withdraw $eb wm title $eb "where-vessels - $etl_title" + wm protocol $eb WM_DELETE_WINDOW [list wm withdraw $eb] label $eb.title -text $etl_title pack $eb.title -side top @@ -797,17 +817,17 @@ proc parser-control-create {w base invokebuttontext etl_title} { pack $eb.close -side bottom frame $eb.emsg -bd 2 -relief groove - label $eb.emsg.lab -text "Error:" + label $eb.emsg.lab -anchor nw -text "Error:" text $eb.emsg.text -height 1 - pack $eb.emsg.text -side bottom + pack $eb.emsg.text -side bottom -fill x pack $eb.emsg.lab -side left - pack $eb.emsg -side top -pady 2 + pack $eb.emsg -side top -pady 2 -fill x frame $eb.text -bd 2 -relief groove - pack $eb.text -side bottom -pady 2 + pack $eb.text -side bottom -pady 2 -fill both -expand y - label $eb.text.lab + label $eb.text.lab -anchor nw text $eb.text.text -width 85 \ -xscrollcommand [list $eb.text.xscroll set] \ @@ -820,10 +840,15 @@ proc parser-control-create {w base invokebuttontext etl_title} { scrollbar $eb.text.yscroll -orient vertical \ -command [list $eb.text.text yview] - grid configure $eb.text.lab -row 0 -column 0 -sticky w - grid configure $eb.text.text -row 1 -column 0 + grid configure $eb.text.lab -row 0 -column 0 -sticky w -columnspan 2 + grid configure $eb.text.text -row 1 -column 0 -sticky news grid configure $eb.text.yscroll -sticky ns -row 1 -column 1 grid configure $eb.text.xscroll -sticky ew -row 2 -column 0 + grid rowconfigure $eb.text 0 -weight 0 + grid rowconfigure $eb.text 1 -weight 1 + grid rowconfigure $eb.text 2 -weight 0 + grid columnconfigure $eb.text 0 -weight 1 + grid columnconfigure $eb.text 1 -weight 0 } proc parser-control-ok-core {w base background show} { @@ -934,9 +959,9 @@ proc islandnames-handler {offset maxchars} { #---------- main user interface ---------- proc widgets-setup {} { - global canvas debug pirate ocean + global canvas debug pirate ocean filterstyle - wm geometry . 1024x480 + wm geometry . 1024x600 wm title . "where-vessels - $pirate on the $ocean ocean" #----- map ----- @@ -954,7 +979,19 @@ proc widgets-setup {} { frame .islands -pady 2 pack .cp .filter .islands -side top - label .filter.title -text Filter + set filterstyle 1 + trace add variable filterstyle write filterstyle-changed + + frame .filter.title + label .filter.title.title -text Show + pack .filter.title.title -side left + for {set fing 0} {$fing < 4} {incr fing} { + radiobutton .filter.title.f$fing \ + -variable filterstyle -value $fing \ + -text [lindex {All Useable Mine These:} $fing] + pack .filter.title.f$fing -side left + } + grid configure .filter.title -row 0 -column 0 -columnspan 2 #----- control panel ----- @@ -1045,8 +1082,20 @@ proc show-report {islandname code} { .cp.report.list delete 0 end foreach entry $k { - manyset $entry vid name - .cp.report.list insert end $name + manyset $entry vid name owner + lappend owned($owner) $name + } + + foreach owner [lsort [array names owned]] { + if {[string length $owner]} { + set owndesc "$owner's" + } else { + set owndesc "Owner unknown" + } + .cp.report.list insert end "$owndesc:" + foreach name $owned($owner) { + .cp.report.list insert end " $name" + } } }