chiark / gitweb /
where-vessels: complain if ocean or pirate are empty string
[ypp-sc-tools.db-live.git] / yarrg / where-vessels
index f9f6879e37f42760aef411a9b5efc283b0fb6e5c..272a11432b37f6c6d7169f773b89a621790e7326 100755 (executable)
@@ -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
 }
@@ -625,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"
 }
@@ -805,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
@@ -813,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] \
@@ -836,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} {
@@ -1073,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"
+       }
     }
 }