From: Ian Jackson Date: Sun, 2 Jan 2011 03:32:35 +0000 (+0000) Subject: gui, etc.: provide gui with sensible info about concrete vs. actual movfeat posns X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=7a057cec05b822bd19385b0c5b393ae02d141ed1;p=trains.git gui, etc.: provide gui with sensible info about concrete vs. actual movfeat posns --- diff --git a/hostside/gui b/hostside/gui index 66c4416..7944457 100755 --- a/hostside/gui +++ b/hostside/gui @@ -248,8 +248,20 @@ proc movpos-bindkey-1 {cpage key seg feat} { #---------- computation of movpos button locations +proc layout-subseg-featmap {seg concfeatpos args} { + global subsegfeatmap + set subsegfeatmap($concfeatpos) $args +} + proc layout-subseg-end {seg feat posn x y} { global cpage + upvar #0 subsegfeatmap($feat$posn) mapped + if {[info exists mapped]} { + foreach {feat posn} $mapped { + layout-subseg-end $seg $feat $posn $x $y + } + return + } upvar #0 ld_sse/${cpage}($seg/$feat$posn) sse if {![info exists sse]} { set sse {0 0 0} } manyset $sse n sx sy @@ -274,8 +286,8 @@ proc layout-data {} { global cpage upvar #0 ld_sse/$cpage sse catch { unset sse } - set f ../layout/ours.dgram-$cpage.overlay-info - source $f + source ../layout/ours.dgram.segmap-info + source ../layout/ours.dgram-$cpage.overlay-info upvar #0 movpos_bindings($cpage) bindings if {![info exists bindings]} { diff --git a/layout/.gitignore b/layout/.gitignore index df2fe79..79980fe 100644 --- a/layout/.gitignore +++ b/layout/.gitignore @@ -1,6 +1,7 @@ *.d4 ours-*.ps testphys-*.ps +*.dgram.segmap-info *.dgram-*.p*.segenco.ps *.dgram-*.p*.segenco.ppm *.dgram-*.plandata.c diff --git a/layout/data2safety b/layout/data2safety index e073149..22966c7 100755 --- a/layout/data2safety +++ b/layout/data2safety @@ -1032,9 +1032,29 @@ sub writeasm () { } o("\n end\n"); } + +sub writeforui () { + close STDOUT or die $!; + open STDOUT, ">$basename.dgram.segmap-info" or die $!; + o("# autogenerated - do not edit\n"); + foreach my $seg (keys %segs) { + my $segr= $segs{$seg}; + my $featmap= $segr->{FeatMap}; + next unless $featmap; + foreach my $mapent (@$featmap) { + o("layout-subseg-featmap $seg $mapent->{Abstract}"); + local ($_) = $mapent->{Concrete}; + s/([A-Z]+)(\d+)/ o(" $1 $2"); ""; /ge; + die "$seg $_ ?" if length; + o("\n"); + } + } +} + mainread(); redaction(); writeout(); writeasm(); +writeforui(); movfeatposmap_checks(); exit 1 if $mistakes;