From: Ian Jackson Date: Tue, 4 Jan 2011 01:31:31 +0000 (+0000) Subject: hostside/gui: allow positioning of 0 and 1 posns of point button separately, and... X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=40d10d2d7281c36bba000f31280fb9d19754dbe8;p=trains.git hostside/gui: allow positioning of 0 and 1 posns of point button separately, and set many settings --- diff --git a/hostside/gui b/hostside/gui index 790d168..6c4365c 100755 --- a/hostside/gui +++ b/hostside/gui @@ -225,23 +225,21 @@ register-event ?movpos_*_feat {seg feat posn_new} \ movpos-button-setdisplay $mid } -proc movpos-bindkey-1 {cpage key adjx adjy seg feat} { +proc movpos-bindkey-1 {cpage key seg feat adj0x adj0y adj1x adj1y} { global posdeviation picturepadx picturepady manyset [subseg-end-get-centroid $cpage $seg $feat {}] mx my set mid $seg/$feat - addexpr mx $adjx - addexpr my $adjy foreach posn {0 1} { manyset [subseg-end-get-centroid $cpage $seg $feat $posn] x y set dx [expr {$x-$mx}]; set dy [expr {$y-$my}] set d [expr {sqrt($dx*$dx + $dy*$dy)}] set mul [expr {$posdeviation / ($d + 1e-6)}] - set x [expr {$mx + $mul*$dx + $picturepadx}] - set y [expr {$my + $mul*$dy + $picturepady}] + set x [expr {$mx + $mul*$dx + $picturepadx + [set adj${posn}x]}] + set y [expr {$my + $mul*$dy + $picturepady + [set adj${posn}y]}] lappend poslocs [list $x $y] } - lappend poslocs [list [expr {$mx + $picturepadx}] \ - [expr {$my + $picturepady}]] + lappend poslocs [list [expr {$mx + $picturepadx + ($adj0x+$adj1x)*0.5}] \ + [expr {$my + $picturepady + ($adj0y+$adj1y)*0.5}]] upvar #0 mp_details($mid) details set details [list $cpage $key $seg $feat $poslocs] @@ -298,9 +296,12 @@ proc layout-data {} { return } foreach binding $bindings { - if {[regexp {^([A-Z])([-+]\d*)?([-+]\d+)?\=(\w+)/([A-Z]+)$} \ - $binding dummy key adjx adjy seg feat]} { - movpos-bindkey-1 $cpage $key $adjx.0 $adjy.0 $seg $feat + if {[regexp \ + {^([A-Z])([-+]\d*)?([-+]\d*)?([-+]\d*)?([-+]\d*)?\=(\w+)/([A-Z]+)$} \ + $binding dummy key adj0x adj0y adj1x adj1y seg feat]} { + if {![string length $adj1x]} { set adj1x $adj0x; set adj1y $adj0y } + movpos-bindkey-1 $cpage $key $seg $feat \ + $adj0x.0 $adj0y.0 $adj1x.0 $adj1y.0 } elseif {[regexp {^[A-Z]$} $binding] || [regexp {~} $binding]} { } else { error "incomprehensible binding $binding on page $cpage" diff --git a/hostside/gui-layout.config b/hostside/gui-layout.config index 921ab6a..54f9a7e 100644 --- a/hostside/gui-layout.config +++ b/hostside/gui-layout.config @@ -1,11 +1,11 @@ # -*- fundamental -*- set pages {bot} set movpos_bindings(bot) { - Z=C9/P A Q=C5/P - X++16=B9/P S W=B7/P - C=B9/J D E=B7/J - V+-20=A5/J F R++20=A6/J - B=A5/P ~G=A2/P T=A6/P + Z=C9/P A Q-2+20-3-0=C5/P + X++16=B9/P S W-5++7+=B7/P + C=B9/J D E+3+-5=B7/J + V+-20=A5/J F R++5+5+5=A6/J + B=A5/P ~G=A2/P T+6+++=A6/P N=X7/P ~H=X2/R Y=X8/P M=C0/P J=B0/P U K I