From a2368f803f45f33f403e122428b9b493ca458986 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 8 Aug 2010 18:44:50 +0100 Subject: [PATCH] where-vessels: more fine-grained scale-selection --- yarrg/where-vessels | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/yarrg/where-vessels b/yarrg/where-vessels index f4fee80..4e6a225 100755 --- a/yarrg/where-vessels +++ b/yarrg/where-vessels @@ -952,8 +952,18 @@ proc load-chart {} { }]] } - -set scale 16 +proc init-scales {} { + global scales scaleix scale + set defscale 16 + set scales {1 2 3 4 5 6 8} + set e12 {10 12 15 18 22 27 33 39 47 56 68 82} + foreach t $e12 { + if {$t < $defscale} { set scaleix [llength $scales] } + lappend scales $t + } + foreach t [lrange $e12 0 6] { lappend scales [expr {$t * 10}] } + set scale [lindex $scales $scaleix] +} proc coord {c} { global scale @@ -1289,9 +1299,11 @@ proc widgets-setup {} { frame .cp.ctrl.zoom pack .cp.ctrl.zoom -side top - button .cp.ctrl.zoom.out -text - -font {Courier 16} -command {zoom /2} -pady 0 - button .cp.ctrl.zoom.in -text + -font {Courier 16} -command {zoom *2} -pady 0 - pack .cp.ctrl.zoom.out .cp.ctrl.zoom.in -side left + foreach inout {out in} minplus {- +} { + button .cp.ctrl.zoom.$inout -text $minplus -font {Courier 16} \ + -command "zoom ${minplus}1" -pady 0 + pack .cp.ctrl.zoom.$inout -side left + } parser-control-create .cp.ctrl.acquire \ acquire Acquire \ @@ -1380,12 +1392,14 @@ proc show-report {islandname code} { } } -proc zoom {extail} { - global scale canvas - set nscale [expr "\$scale $extail"] - debug "ZOOM $scale $nscale" - if {$nscale < 1 || $nscale > 200} return - set scale $nscale +proc zoom {amt} { + global scaleix scales scale canvas + incr scaleix $amt + if {$scaleix < 0} { set scaleix 0 } + set nscales [llength $scales] + if {$scaleix >= $nscales} { set scaleix [expr {$nscales-1}] } + set scale [lindex $scales $scaleix] + debug "ZOOM $amt $scaleix $scale" draw } @@ -1434,6 +1448,7 @@ proc invoke_notes {} { #---------- main program ---------- +init-scales parseargs argdefaults httpclientsetup where-vessels -- 2.30.2