From 43bd43cf0f8286239acfc4e5b124b22c388e3a45 Mon Sep 17 00:00:00 2001 From: William Joye Date: Thu, 27 Jun 2019 12:49:46 -0400 Subject: support multiple graph plots --- ds9/library/catplot.tcl | 2 +- ds9/library/markeranalysispanda.tcl | 2 +- ds9/library/plot.tcl | 286 ++++++++++++++++++++++++------------ ds9/library/plotbar.tcl | 9 +- ds9/library/plotdata.tcl | 144 ++---------------- ds9/library/plotdialog.tcl | 7 +- ds9/library/plotline.tcl | 9 +- ds9/library/plotprocess.tcl | 4 +- ds9/library/plotscatter.tcl | 13 +- ds9/library/plotstate.tcl | 48 +++--- ds9/parsers/plotsendparser.tac | 4 +- ds9/parsers/plotsendparser.tcl | 4 +- 12 files changed, 260 insertions(+), 272 deletions(-) diff --git a/ds9/library/catplot.tcl b/ds9/library/catplot.tcl index 1940f93..629e779 100644 --- a/ds9/library/catplot.tcl +++ b/ds9/library/catplot.tcl @@ -87,7 +87,7 @@ proc CATPlotGenerate {varname} { } PlotTitle $vvarname $var(title) $xtitle $ytitle - PlotDeleteAllDataSet $vvarname + PlotDeleteDataSetAll $vvarname PlotAddDataSet $vvarname $dim $rr PlotStats $vvarname PlotList $vvarname diff --git a/ds9/library/markeranalysispanda.tcl b/ds9/library/markeranalysispanda.tcl index 8ff80a9..89b29f1 100644 --- a/ds9/library/markeranalysispanda.tcl +++ b/ds9/library/markeranalysispanda.tcl @@ -103,7 +103,7 @@ proc MarkerAnalysisPandaCB {frame id} { MarkerAnalysisPandaAxisTitle $vvarname } - PlotDeleteAllDataSet $vvarname + PlotDeleteDataSetAll $vvarname PlotAddDataSet $vvarname 3 [$frame get marker $id analysis panda $sys] PlotStats $vvarname PlotList $vvarname diff --git a/ds9/library/plot.tcl b/ds9/library/plot.tcl index 8ed5dc0..5a42c97 100644 --- a/ds9/library/plot.tcl +++ b/ds9/library/plot.tcl @@ -19,6 +19,45 @@ proc PlotDef {} { PlotDefState } +# Canvas +proc PlotDestroy {varname} { + upvar #0 $varname var + global $varname + + global iap + + # see if it still is around + if {![PlotPing $varname]} { + return + } + + # delete all graphs + foreach cc $var(graphs) { + PlotDeleteGraph $varname $cc + } + + destroy $var(top) + destroy $var(mb) + + # stats window? + if {$var(stats)} { + SimpleTextDestroy "${varname}stats" + } + + # list window? + if {$var(list)} { + SimpleTextDestroy "${varname}list" + } + + # delete it from the xpa list + set ii [lsearch $iap(windows) $varname] + if {$ii>=0} { + set iap(windows) [lreplace $iap(windows) $ii $ii] + } + + unset $varname +} + # Graph proc PlotAddGraph {varname} { upvar #0 $varname var @@ -32,15 +71,16 @@ proc PlotAddGraph {varname} { lappend var(graphs) $cc set var(graph,current) $cc - set var($cc,data,total) 0 - set var($cc,data,current) 0 + # Init graph vars + PlotInitGraph $varname + # create graph $var(proc,addgraph) $varname - PlotInitGraph $varname - - $var(proc,updategraph) $varname - $var(proc,updatecanvas) $varname + # create menu item + $var(mb).canvas.select add radiobutton -label $var(graph,name) \ + -variable ${varname}(graph,current) -value $cc \ + -command [list PlotCurrentGraph $varname] # set up zoom stack, assuming mode is zoom global ds9 @@ -50,12 +90,10 @@ proc PlotAddGraph {varname} { aqua {Blt_ZoomStack $var(graph) -mode release -button "ButtonPress-2"} } - # update select graph menu - $var(mb).canvas.select add radiobutton -label "Graph $var(seq)" \ - -variable ${varname}(graph,current) -value $cc \ - -command [list PlotCurrentGraph $varname] + # set current graph + PlotSaveState $varname - # layout + # update layout foreach cc $var(graphs) { pack forget $var($cc) } @@ -63,9 +101,14 @@ proc PlotAddGraph {varname} { foreach cc $var(graphs) { pack $var($cc) -side top -expand yes -fill both } + + # update menus + $var(proc,updateelement) $varname + $var(proc,updategraph) $varname + $var(proc,updatecanvas) $varname } -proc PlotDeleteGraph {varname} { +proc PlotDeleteGraphCurrent {varname} { upvar #0 $varname var global $varname @@ -73,11 +116,49 @@ proc PlotDeleteGraph {varname} { return } + PlotDeleteGraph $varname $var(graph,current) +} + +proc PlotDeleteGraph {varname cc} { + upvar #0 $varname var + global $varname + + # remove menu item + $var(mb).canvas.select delete $var(graph,name) + + # delete all datasets + foreach nn $var($cc,dss) { + PlotDeleteDataSet $varname $nn + } + + # delete graph destroy $var(graph) - list replace ${varname}(graphs) $var(graph,current) {} + set ii [lsearch $var(graphs) $cc] + if {$ii>=0} { + set var(graphs) [lreplace $var(graphs) $ii $ii] + } + + # delete all graph vars + foreach vv [array names $varname] { + set gr [split $vv ,] + if {[lindex $gr 0] == $cc} { + unset ${varname}($vv) + } + } + + # if last graph, stop here + if {[llength $var(graphs)] == 0} { + return + } + # set current graph set var(graph,current) [lindex $var(graphs) 0] PlotRestoreState $varname + + # update menus + $var(proc,updateelement) $varname + $var(proc,updategraph) $varname + $var(proc,updatecanvas) $varname } # Data @@ -85,38 +166,107 @@ proc PlotAddElement {varname} { upvar #0 $varname var global $varname - set cc $var(graph,current) - set nn $var($cc,data,current) - - # delete current elements - foreach el [$var(graph) element names] { - set f [split $el -] - if {[lindex $f 1] == $nn} { - $var(graph) element delete $el - } - } - + # create graph elements + set nn $var(graph,ds,current) global $var(graph,ds,xdata) $var(graph,ds,ydata) - $var(graph) element create "d-${nn}" \ + $var(graph) element create ${nn} \ -xdata $var(graph,ds,xdata) -ydata $var(graph,ds,ydata) if {$var(graph,ds,xedata) != {}} { if {[$var(graph,ds,xedata) length] != 0} { - $var(graph) element configure "d-${nn}" \ + $var(graph) element configure ${nn} \ -xerror $var(graph,ds,xedata) } } if {$var(graph,ds,yedata) != {}} { if {[$var(graph,ds,yedata) length] != 0} { - $var(graph) element configure "d-${nn}" \ + $var(graph) element configure ${nn} \ -yerror $var(graph,ds,yedata) } } - # update select dataset menu + # create menu item $var(mb).graph.select add radiobutton -label "$var(graph,ds,name)" \ - -variable ${varname}($cc,data,current) -value $nn \ + -variable ${varname}(graph,ds,current) -value $nn \ -command [list PlotCurrentDataSet $varname] + # set current dataset + PlotSaveState $varname + + # update menus + $var(proc,updateelement) $varname +} + +proc PlotDeleteDataSetCurrent {varname} { + upvar #0 $varname var + global $varname + + if {[llength $var(graph,dss)] == 0} { + return + } + + PlotDeleteDataSet $varname $var(graph,ds,current) +} + +proc PlotDeleteDataSetAll {varname} { + upvar #0 $varname var + global $varname + + if {[llength $var(graph,dss)] == 0} { + return + } + + foreach nn $var(graph,dss) { + PlotDeleteDataSet $varname $nn + } +} + +proc PlotDeleteDataSet {varname nn} { + upvar #0 $varname var + global $varname + + set cc $var(graph,current) + + if {[llength $var($cc,dss)] == 0} { + return + } + + if {!$var($cc,$nn,manage)} { + return + } + + # remove menu item + $var(mb).graph.select delete $var($cc,$nn,name) + + # delete element + $var(graph) element delete $nn + + # destroy vectors + blt::vector destroy $var($cc,$nn,xdata) $var($cc,$nn,ydata) + switch $var($cc,$nn,dim) { + xy {} + xyex {blt::vector destroy $var($cc,$nn,xedata)} + xyey {blt::vector destroy $var($cc,$nn,yedata)} + xyexey {blt::vector destroy \ + $var($cc,$nn,xedata) $var($cc,$nn,yedata)} + } + set ii [lsearch $var($cc,dss) $nn] + if {$ii>=0} { + set var($cc,dss) [lreplace $var($cc,dss) $ii $ii] + } + + # delete all dataset vars + foreach vv [array names $varname] { + set gr [split $vv ,] + if {[lindex $gr 1] == $nn} { + unset ${varname}($vv) + } + } + + # set current dataset + set var($cc,ds,current) [lindex $var($cc,dss) 0] + PlotRestoreState $varname + + # update menus $var(proc,updateelement) $varname } @@ -125,7 +275,8 @@ proc PlotCurrentGraph {varname} { global $varname PlotRestoreState $varname - PlotCurrentDataSet $varname + PlotStats $varname + PlotList $varname } proc PlotCurrentDataSet {varname} { @@ -154,7 +305,7 @@ proc PlotChangeMode {varname} { blt::RemoveBindTag $var($cc) zoom-$var($cc) bind $var($cc) <1> [list PlotButton $varname %x %y] } - zoom { +p zoom { bind $var($cc) <1> {} blt::AddBindTag $var($cc) zoom-$var($cc) } @@ -162,53 +313,6 @@ proc PlotChangeMode {varname} { } } -proc PlotDestroy {varname} { - upvar #0 $varname var - global $varname - - global iap - - set cc $var(graph,current) - - # see if it still is around - if {![PlotPing $varname]} { - return - } - - for {set nn 1} {$nn<=$var($cc,data,total)} {incr nn} { - blt::vector destroy $var($cc,$nn,xdata) $var($cc,$nn,ydata) - switch $var($cc,$nn,dim) { - xy {} - xyex {blt::vector destroy $var($cc,$nn,xedata)} - xyey {blt::vector destroy $var($cc,$nn,yedata)} - xyexey { - blt::vector destroy $var($cc,$nn,xedata) $var($cc,$nn,yedata) - } - } - } - - destroy $var(top) - destroy $var(mb) - - # stats window? - if {$var(stats)} { - SimpleTextDestroy "${varname}stats" - } - - # list window? - if {$var(list)} { - SimpleTextDestroy "${varname}list" - } - - # delete it from the xpa list - set ii [lsearch $iap(windows) $varname] - if {$ii>=0} { - set iap(windows) [lreplace $iap(windows) $ii $ii] - } - - unset $varname -} - proc PlotExternal {varname} { upvar #0 $varname var global $varname @@ -216,9 +320,10 @@ proc PlotExternal {varname} { set cc $var(graph,current) # incr count - incr ${varname}($cc,data,total) - set nn $var($cc,data,total) - set var($cc,data,current) $nn + incr ${varname}($cc,seq) + set nn $var($cc,seq) + lappend var($cc,dss) $nn + set var($cc,ds,current) $nn set var(graph,ds,manage) 0 set var(graph,ds,name) "Dataset $nn" @@ -439,10 +544,8 @@ proc PlotUpdateGraph {varname} { # Menus if {$var(graph,ds,xdata) != {}} { $var(mb).file entryconfig "[msgcat::mc {Save Data}]..." -state normal - $var(mb).file entryconfig [msgcat::mc {Clear All Data}] -state normal } else { $var(mb).file entryconfig "[msgcat::mc {Save Data}]..." -state disabled - $var(mb).file entryconfig [msgcat::mc {Clear All Data}] -state disabled } # Graph @@ -537,20 +640,19 @@ proc PlotBackup {ch dir} { strip {puts $ch "PlotStripTool"} } - set save $var($cc,data,current) - for {set ii 1} {$ii<=$var($cc,data,total)} {incr ii} { - set ${varname}($cc,data,current) $ii + set save $var($cc,ds,current) + foreach nn $var($cc,dss) { + set ${varname}($cc,ds,current) $nn PlotCurrentDataSet $varname - PlotSaveDataFile $varname "$fdir/plot$ii.dat" - PlotSaveConfigFile $varname "$fdir/plot$ii.plt" + PlotSaveDataFile $varname "$fdir/plot$nn.dat" + PlotSaveConfigFile $varname "$fdir/plot$nn.plt" - puts $ch "PlotLoadDataFile $varname $fdir/plot$ii.dat $var($cc,$ii,dim)" - puts $ch "PlotLoadConfigFile $varname $fdir/plot$ii.plt" + puts $ch "PlotLoadDataFile $varname $fdir/plot$nn.dat $var($cc,$nn,dim)" + puts $ch "PlotLoadConfigFile $varname $fdir/plot$nn.plt" } - set ${varname}($cc,data,current) $save + set ${varname}($cc,ds,current) $save PlotCurrentDataSet $varname } } } - diff --git a/ds9/library/plotbar.tcl b/ds9/library/plotbar.tcl index d5826d4..38c65de 100644 --- a/ds9/library/plotbar.tcl +++ b/ds9/library/plotbar.tcl @@ -133,8 +133,7 @@ proc PlotBarAddGraph {varname} { set cc $var(graph,current) set var($cc,type) bar - set var($cc) [blt::barchart $var(canvas).$cc -width 600 -height 500 \ - -highlightthickness 0] + blt::barchart $var(graphe) -width 600 -height 500 -highlightthickness 0 $var($cc) xaxis configure -grid no -stepsize 0 $var($cc) yaxis configure -grid yes @@ -158,7 +157,7 @@ proc PlotBarUpdateElement {varname} { PlotSaveState $varname set cc $var(graph,current) - if {$var($cc,data,total) == 0} { + if {[llength $var($cc,dss)] == 0} { return } @@ -174,8 +173,8 @@ proc PlotBarUpdateElement {varname} { set cap 0 } - set nn $var($cc,data,current) - $var(graph) element configure "d-${nn}" \ + set nn $var($cc,ds,current) + $var(graph) element configure ${nn} \ -label $var(graph,ds,name) -hide [expr !$var(graph,ds,show)] \ -relief $var(graph,ds,bar,relief) -color $var(graph,ds,color) \ -showerrorbars $show -errorbarcolor $var(graph,ds,error,color) \ diff --git a/ds9/library/plotdata.tcl b/ds9/library/plotdata.tcl index 5a7bb07..0ee9040 100644 --- a/ds9/library/plotdata.tcl +++ b/ds9/library/plotdata.tcl @@ -44,9 +44,10 @@ proc PlotDataSetOne {varname dim data} { set ll [llength $data] # incr count - incr ${varname}($cc,data,total) - set nn $var($cc,data,total) - set var($cc,data,current) $nn + incr ${varname}(graph,seq) + set nn $var(graph,seq) + lappend ${varname}(graph,dss) $nn + set var(graph,ds,current) $nn # init new state global pap @@ -228,6 +229,7 @@ proc PlotDataSetOne {varname dim data} { } } + PlotSaveState $varname PlotAddElement $varname } @@ -236,14 +238,14 @@ proc PlotDupDataSet {varname mm} { global $varname set cc $var(graph,current) - - if {$var($cc,data,total) == 0} { + if {[llength $var($cc,dss)] == 0} { return } # incr count - incr ${varname}($cc,data,total) - set nn $var($cc,data,total) + incr ${varname}($cc,seq) + set nn $var($cc,seq) + lappend var($cc,dss) $nn set pp [expr $nn-1] # new vector names @@ -301,8 +303,8 @@ proc PlotDupDataSet {varname mm} { set var($cc,$nn,bar,relief) $var($cc,$mm,bar,relief) # make current - set var($cc,data,current) $nn - PlotRestoreState $varname + set var($cc,ds,current) $nn + PlotAddElement $varname PlotStats $varname @@ -398,129 +400,5 @@ proc PlotSaveDataFile {varname filename} { PlotRaise $varname } -proc PlotDeleteDataSet {varname} { - upvar #0 $varname var - global $varname - - global ds9 - - set cc $var(graph,current) - set nn $var(graph,data,current) - - if {$var($cc,data,total) == 0} { - return - } - - if {$var($cc,$nn,manage)} { - # delete elements - foreach el [$var(graph) element names] { - set f [split $el -] - if {[lindex $f 1] == $nn} { - $var(graph) element delete $el - } - } - - # destroy vectors - blt::vector destroy $var($cc,$nn,xdata) $var($cc,$nn,ydata) - switch $var($cc,$nn,dim) { - xy {} - xyex {blt::vector destroy $var($cc,$nn,xedata)} - xyey {blt::vector destroy $var($cc,$nn,yedata)} - xyexey {blt::vector destroy \ - $var($cc,$nn,xedata) $var($cc,$nn,yedata)} - } - - foreach vv [array names $varname] { - set ds [split $vv ,] - if {([lindex $ds 1] == $nn)} { - unset ${varname}($ds) - } - } - - incr ${varname}($cc,data,total) -1 - set ${varname}($cc,data,current) 0 - } -} - -proc PlotDeleteAllDataSet {varname} { - upvar #0 $varname var - global $varname - - global ds9 - - set cc $var(graph,current) - - if {$var($cc,data,total) == 0} { - return - } - - # first set can be external - set clear $var($cc,1,manage) - - for {set nn 1} {$nn<=$var($cc,data,total)} {incr nn} { - if {$var($cc,$nn,manage)} { - # delete elements - foreach el [$var(graph) element names] { - set f [split $el -] - if {[lindex $f 1] == $nn} { - $var(graph) element delete $el - } - } - - # destroy vectors - blt::vector destroy \ - $var($cc,$nn,xdata) $var($cc,$nn,ydata) - switch $var($cc,$nn,dim) { - xy {} - xyex {blt::vector destroy $var($cc,$nn,xedata)} - xyey {blt::vector destroy $var($cc,$nn,yedata)} - xyexey {blt::vector destroy \ - $var($cc,$nn,xedata) $var($cc,$nn,yedata)} - } - - foreach x [array names $varname] { - set f [split $x ,] - if {([lindex $f 0] == $nn)} { - unset ${varname}($x) - } - } - } - } - - if {$clear} { - set var($cc,data,total) 0 - set var($cc,data,current) 0 - - set var(graph,ds,name) {} - set var(graph,ds,xdata) {} - set var(graph,ds,ydata) {} - set var(graph,ds,xedata) {} - set var(graph,ds,yedata) {} - - # reset other variables - set var($cc,axis,x,auto) 1 - set var($cc,axis,x,min) {} - set var($cc,axis,x,max) {} - set var($cc,axis,x,format) {} - - set var($cc,axis,y,auto) 1 - set var($cc,axis,y,min) {} - set var($cc,axis,y,max) {} - set var($cc,axis,y,format) {} - - $var(mb).graph.select delete $ds9(menu,start) end - - $var(proc,updategraph) $varname - PlotStats $varname - PlotList $varname - } else { - set var($cc,data,total) 1 - set var($cc,data,current) 1 - - $var(mb).graph.select delete [expr $ds9(menu,start)+1] end - PlotCurrentDataSet $varname - $var(proc,updategraph) $varname - } -} diff --git a/ds9/library/plotdialog.tcl b/ds9/library/plotdialog.tcl index 3ef4dd9..ee5b6c5 100644 --- a/ds9/library/plotdialog.tcl +++ b/ds9/library/plotdialog.tcl @@ -50,9 +50,6 @@ proc PlotDialog {varname wtt title xaxis yaxis} { $var(mb).file add command -label "[msgcat::mc {Save Data}]..." \ -command [list PlotSaveData $varname] $var(mb).file add separator - $var(mb).file add command -label [msgcat::mc {Clear All Data}] \ - -command [list PlotDeleteAllData $varname] - $var(mb).file add separator $var(mb).file add cascade -label [msgcat::mc {Export}] \ -menu $var(mb).file.export $var(mb).file add separator @@ -119,7 +116,7 @@ proc PlotDialog {varname wtt title xaxis yaxis} { $var(mb).canvas add command -label [msgcat::mc {Add Graph}] \ -command [list PlotAddGraph $varname] $var(mb).canvas add command -label [msgcat::mc {Delete Graph}] \ - -command [list PlotDeleteGraph $varname] + -command [list PlotDeleteGraphCurrent $varname] $var(mb).canvas add separator menu $var(mb).canvas.select @@ -166,7 +163,7 @@ proc PlotDialog {varname wtt title xaxis yaxis} { -menu $var(mb).graph.select $var(mb).graph add separator $var(mb).graph add command -label [msgcat::mc {Delete Dataset}] \ - -command [list PlotDeleteDataSet $varname] + -command [list PlotDeleteDataSetCurrent $varname] $var(mb).graph add command -label [msgcat::mc {Duplicate Dataset}] \ -command [list PlotDupDataSet $varname 1] $var(mb).graph add separator diff --git a/ds9/library/plotline.tcl b/ds9/library/plotline.tcl index 11bfdf3..6ac8d3c 100644 --- a/ds9/library/plotline.tcl +++ b/ds9/library/plotline.tcl @@ -147,8 +147,7 @@ proc PlotLineAddGraph {varname} { set cc $var(graph,current) set var($cc,type) line - set var($cc) [blt::graph $var(canvas).$cc -width 600 -height 500 \ - -highlightthickness 0] + blt::graph $var(graph) -width 600 -height 500 -highlightthickness 0 } proc PlotLineUpdateElement {varname} { @@ -158,7 +157,7 @@ proc PlotLineUpdateElement {varname} { PlotSaveState $varname set cc $var(graph,current) - if {$var($cc,data,total) == 0} { + if {[llength $var($cc,dss)] == 0} { return } @@ -192,8 +191,8 @@ proc PlotLineUpdateElement {varname} { set cap 0 } - set nn $var($cc,data,current) - $var(graph) element configure "d-${nn}" \ + set nn $var($cc,ds,current) + $var(graph) element configure ${nn} \ -label $var(graph,ds,name) -hide [expr !$var(graph,ds,show)] \ -symbol $var(graph,ds,shape,symbol) -fill $clr -scalesymbols no \ -pixels 5 -outline $var(graph,ds,shape,color) \ diff --git a/ds9/library/plotprocess.tcl b/ds9/library/plotprocess.tcl index 85099c1..d4621fe 100644 --- a/ds9/library/plotprocess.tcl +++ b/ds9/library/plotprocess.tcl @@ -286,7 +286,7 @@ proc PlotCmdUpdateGraph {which value} { upvar #0 $cvarname cvar set cvar($which) $value - UpdateGraph $cvarname + $cvar(proc,updategraph) $cvarname } proc PlotCmdUpdateElement {which value} { @@ -340,7 +340,7 @@ proc PlotCmdSelectData {which} { upvar #0 $cvarname cvar set cc $cvar(graph,current) - set cvar($cc,data,current) $which + set cvar($cc,ds,current) $which PlotCurrentDataSet $cvarname } diff --git a/ds9/library/plotscatter.tcl b/ds9/library/plotscatter.tcl index a59269c..80e29e9 100644 --- a/ds9/library/plotscatter.tcl +++ b/ds9/library/plotscatter.tcl @@ -77,8 +77,7 @@ proc PlotScatterAddGraph {varname} { set cc $var(graph,current) set var($cc,type) scatter - set var($cc) [blt::graph $var(canvas).$cc -width 600 -height 500 \ - -highlightthickness 0] + blt::graph $var(graphe) -width 600 -height 500 -highlightthickness 0 } proc PlotScatterUpdateElement {varname} { @@ -88,7 +87,7 @@ proc PlotScatterUpdateElement {varname} { PlotSaveState $varname set cc $var(graph,current) - if {$var($cc,data,total) == 0} { + if {[llength $var($cc,dss)] == 0} { return } @@ -114,8 +113,8 @@ proc PlotScatterUpdateElement {varname} { set cap 0 } - set nn $var($cc,data,current) - $var(graph) element configure "d-${nn}" \ + set nn $var($cc,ds,current) + $var(graph) element configure ${nn} \ -label $var(graph,ds,name) -hide [expr !$var(graph,ds,show)] \ -symbol $var(graph,ds,shape,symbol) -fill $clr -scalesymbols no \ -outline $var(graph,ds,shape,color) \ @@ -136,7 +135,7 @@ proc PlotScatterButton {varname x y} { set cc $var(graph,current) - if {$var($cc,data,total) == 0} { + if {[llength $var($cc,dss)] == 0} { return } @@ -167,7 +166,7 @@ proc PlotScatterHighliteElement {varname rowlist} { set cc $var(graph,current) - if {$var($cc,data,total) == 0} { + if {[llength $var($cc,dss)] == 0} { return } diff --git a/ds9/library/plotstate.tcl b/ds9/library/plotstate.tcl index 95ce70d..827f451 100644 --- a/ds9/library/plotstate.tcl +++ b/ds9/library/plotstate.tcl @@ -60,7 +60,6 @@ proc PlotDefState {} { set pap(graph,axis,y,format) {} # per DataSet - set pap(graph,ds,name) {} set pap(graph,ds,show) 1 set pap(graph,ds,smooth) linear set pap(graph,ds,color) black @@ -87,14 +86,18 @@ proc PlotInitGraph {varname} { global pap + # per Graph set cc $var(graph,current) - set nn $var($cc,data,current) - set var(graph) $var($cc) - # per Graph + set var(graph) $var(canvas).$cc + set var(graph,name) "Graph $var(seq)" set var(graph,format) 1 set var(graph,title) {} + set var(graph,seq) 0 + set var(graph,dss) {} + set var(graph,ds,current) {} + set var(graph,legend) $pap(graph,legend) set var(graph,legend,title) $pap(graph,legend,title) set var(graph,legend,position) $pap(graph,legend,position) @@ -118,6 +121,7 @@ proc PlotInitGraph {varname} { set var(graph,axis,y,format) $pap(graph,axis,y,format) # per DataSet + set var(graph,ds,name) {} set var(graph,ds,dim) xy set var(graph,ds,manage) 1 @@ -126,7 +130,6 @@ proc PlotInitGraph {varname} { set var(graph,ds,xedata) {} set var(graph,ds,yedata) {} - set var(graph,ds,name) $pap(graph,ds,name) set var(graph,ds,show) $pap(graph,ds,show) set var(graph,ds,smooth) $pap(graph,ds,smooth) set var(graph,ds,color) $pap(graph,ds,color) @@ -151,16 +154,21 @@ proc PlotSaveState {varname} { upvar #0 $varname var global $varname + puts "***" + DumpCallStack + + # per Graph set cc $var(graph,current) - set nn $var($cc,data,current) - puts "PlotSaveState $cc" -# DumpCallStack - - # per Graph + set var($cc) $var(graph) + set var($cc,name) $var(graph,name) set var($cc,format) $var(graph,format) set var($cc,title) $var(graph,title) + set var($cc,seq) $var(graph,seq) + set var($cc,dss) $var(graph,dss) + set var($cc,ds,current) $var(graph,ds,current) + set var($cc,legend) $var(graph,legend) set var($cc,legend,title) $var(graph,legend,title) set var($cc,legend,position) $var(graph,legend,position) @@ -184,6 +192,9 @@ proc PlotSaveState {varname} { set var($cc,axis,y,format) $var(graph,axis,y,format) # per DataSet + set nn $var($cc,ds,current) + + set var($cc,$nn,name) $var(graph,ds,name) set var($cc,$nn,dim) $var(graph,ds,dim) set var($cc,$nn,manage) $var(graph,ds,manage) @@ -192,7 +203,6 @@ proc PlotSaveState {varname} { set var($cc,$nn,xedata) $var(graph,ds,xedata) set var($cc,$nn,yedata) $var(graph,ds,yedata) - set var($cc,$nn,name) $var(graph,ds,name) set var($cc,$nn,show) $var(graph,ds,show) set var($cc,$nn,smooth) $var(graph,ds,smooth) set var($cc,$nn,color) $var(graph,ds,color) @@ -217,16 +227,18 @@ proc PlotRestoreState {varname} { upvar #0 $varname var global $varname + # per Graph set cc $var(graph,current) - set nn $var($cc,data,current) - set var(graph) $var($cc) - puts "PlotRestoreState $cc" - - # per Graph + set var(graph) $var($cc) + set var(graph,name) $var($cc,name) set var(graph,format) $var($cc,format) set var(graph,title) $var($cc,title) + set var(graph,seq) $var($cc,seq) + set var(graph,dss) $var($cc,dss) + set var(graph,ds,current) $var($cc,ds,current) + set var(graph,legend) $var($cc,legend) set var(graph,legend,title) $var($cc,legend,title) set var(graph,legend,position) $var($cc,legend,position) @@ -250,6 +262,9 @@ proc PlotRestoreState {varname} { set var(graph,axis,y,format) $var($cc,axis,y,format) # per DataSet + set nn $var($cc,ds,current) + + set var(graph,ds,name) $var($cc,$nn,name) set var(graph,ds,dim) $var($cc,$nn,dim) set var(graph,ds,manage) $var($cc,$nn,manage) @@ -258,7 +273,6 @@ proc PlotRestoreState {varname} { set var(graph,ds,xedata) $var($cc,$nn,xedata) set var(graph,ds,yedata) $var($cc,$nn,yedata) - set var(graph,ds,name) $var($cc,$nn,name) set var(graph,ds,show) $var($cc,$nn,show) set var(graph,ds,smooth) $var($cc,$nn,smooth) set var(graph,ds,color) $var($cc,$nn,color) diff --git a/ds9/parsers/plotsendparser.tac b/ds9/parsers/plotsendparser.tac index ea794ec..e530286 100644 --- a/ds9/parsers/plotsendparser.tac +++ b/ds9/parsers/plotsendparser.tac @@ -94,9 +94,9 @@ plotCmd : STATS_ {ProcessSendCmdCVAR PlotStatsGenerate} | SMOOTH_ {ProcessSendCmdCVARGet graph,ds,smooth} | WIDTH_ {ProcessSendCmdCVARGet graph,ds,width} | DASH_ {ProcessSendCmdCVARYesNo graph,ds,dash} - | SELECT_ {PlotSendCmdCVARGet data,current} + | SELECT_ {PlotSendCmdCVARGet ds,current} # backward compatibility - | DATASET_ {PlotSendCmdCVARGet data,current} + | DATASET_ {PlotSendCmdCVARGet ds,current} ; axis : xy GRID_ {ProcessSendCmdCVARYesNo "graph,axis,$1,grid"} diff --git a/ds9/parsers/plotsendparser.tcl b/ds9/parsers/plotsendparser.tcl index 2d77e8e..0de53d0 100644 --- a/ds9/parsers/plotsendparser.tcl +++ b/ds9/parsers/plotsendparser.tcl @@ -1500,8 +1500,8 @@ proc plotsend::yyparse {} { 31 { ProcessSendCmdCVARGet graph,ds,smooth } 32 { ProcessSendCmdCVARGet graph,ds,width } 33 { ProcessSendCmdCVARYesNo graph,ds,dash } - 34 { PlotSendCmdCVARGet data,current } - 35 { PlotSendCmdCVARGet data,current } + 34 { PlotSendCmdCVARGet ds,current } + 35 { PlotSendCmdCVARGet ds,current } 36 { ProcessSendCmdCVARYesNo "graph,axis,$1,grid" } 37 { ProcessSendCmdCVARYesNo "graph,axis,$1,log" } 38 { ProcessSendCmdCVARYesNo "graph,axis,$1,flip" } -- cgit v0.12