From 6fa87fd9727fd1df8e1e294936a06daeaa68486e Mon Sep 17 00:00:00 2001 From: William Joye Date: Sun, 21 Jul 2019 15:45:28 -0400 Subject: support multiple graphs per plot --- ds9/library/plotbar.tcl | 2 +- ds9/library/plotdialog.tcl | 81 --------------------------------------------- ds9/library/plotline.tcl | 70 +++++++++++++++++++++++++++++++++++++-- ds9/library/plotscatter.tcl | 70 +++++++++++++++++++++++++++++++++++++-- ds9/library/util.tcl | 5 +++ ds9/parsers/plotparser.tac | 2 +- ds9/parsers/plotparser.tcl | 2 +- 7 files changed, 144 insertions(+), 88 deletions(-) diff --git a/ds9/library/plotbar.tcl b/ds9/library/plotbar.tcl index aa7ac5c..4c05ec3 100644 --- a/ds9/library/plotbar.tcl +++ b/ds9/library/plotbar.tcl @@ -76,7 +76,7 @@ proc PlotBarMenus {varname} { $var(mb).databar add command -label "[msgcat::mc {Name}]..." \ -command [list DatasetNameDialog $varname] - PlotColorMenu $var(mb).databar.color $varname graph,color \ + PlotColorMenu $var(mb).databar.color $varname graph,ds,color \ [list PlotBarUpdateElement $varname] # Relief diff --git a/ds9/library/plotdialog.tcl b/ds9/library/plotdialog.tcl index 0b4897a..878adfc 100644 --- a/ds9/library/plotdialog.tcl +++ b/ds9/library/plotdialog.tcl @@ -543,87 +543,6 @@ proc PlotLineShapeMenu {which var} { -variable $var -value arrow } -proc PlotShapeMenu {varname which} { - upvar #0 $varname var - global $varname - - # Shape - menu $var(mb).$which.shape - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {None}] \ - -variable ${varname}(graph,ds,shape,symbol) -value none \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Circle}] \ - -variable ${varname}(graph,ds,shape,symbol) -value circle \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Square}] \ - -variable ${varname}(graph,ds,shape,symbol) -value square \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Diamond}] \ - -variable ${varname}(graph,ds,shape,symbol) -value diamond \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Plus}] \ - -variable ${varname}(graph,ds,shape,symbol) -value plus \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Cross}] \ - -variable ${varname}(graph,ds,shape,symbol) -value cross \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Simple Plus}] \ - -variable ${varname}(graph,ds,shape,symbol) -value splus \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Simple Cross}] \ - -variable ${varname}(graph,ds,shape,symbol) -value scross \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Triangle}] \ - -variable ${varname}(graph,ds,shape,symbol) -value triangle \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add radiobutton \ - -label [msgcat::mc {Arrow}] \ - -variable ${varname}(graph,ds,shape,symbol) -value arrow \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add separator - $var(mb).$which.shape add checkbutton \ - -label [msgcat::mc {Fill}] \ - -variable ${varname}(graph,ds,shape,fill) \ - -command [list $var(graph,proc,updateelement) $varname] - $var(mb).$which.shape add cascade -label [msgcat::mc {Color}] \ - -menu $var(mb).$which.shape.color - - PlotColorMenu $var(mb).$which.shape.color $varname graph,ds,shape,color \ - [list $var(graph,proc,updateelement) $varname] -} - -proc PlotErrorMenu {varname which} { - upvar #0 $varname var - global $varname - - menu $var(mb).$which.error - $var(mb).$which.error add checkbutton -label [msgcat::mc {Show}] \ - -variable ${varname}(graph,ds,error) \ - -command [list $var(proc,updateelement) $varname] - $var(mb).$which.error add checkbutton -label [msgcat::mc {Cap}] \ - -variable ${varname}(graph,ds,error,cap) \ - -command [list $var(proc,updateelement) $varname] - $var(mb).$which.error add separator - $var(mb).$which.error add cascade -label [msgcat::mc {Color}] \ - -menu $var(mb).$which.error.color - $var(mb).$which.error add cascade -label [msgcat::mc {Width}] \ - -menu $var(mb).$which.error.width - - PlotColorMenu $var(mb).$which.error.color $varname graph,ds,error,color \ - [list $var(proc,updateelement) $varname] - WidthDashMenu $var(mb).$which.error.width $varname graph,ds,error,width {} \ - [list $var(proc,updateelement) $varname] {} -} - proc PlotExportDialog {varname format} { upvar #0 $varname var global $varname diff --git a/ds9/library/plotline.tcl b/ds9/library/plotline.tcl index d8bc422..e275332 100644 --- a/ds9/library/plotline.tcl +++ b/ds9/library/plotline.tcl @@ -83,7 +83,57 @@ proc PlotLineMenus {varname} { -command [list DatasetNameDialog $varname] # Shape - PlotShapeMenu $varname dataline + menu $var(mb).dataline.shape + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {None}] \ + -variable ${varname}(graph,ds,shape,symbol) -value none \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Circle}] \ + -variable ${varname}(graph,ds,shape,symbol) -value circle \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Square}] \ + -variable ${varname}(graph,ds,shape,symbol) -value square \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Diamond}] \ + -variable ${varname}(graph,ds,shape,symbol) -value diamond \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Plus}] \ + -variable ${varname}(graph,ds,shape,symbol) -value plus \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Cross}] \ + -variable ${varname}(graph,ds,shape,symbol) -value cross \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Simple Plus}] \ + -variable ${varname}(graph,ds,shape,symbol) -value splus \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Simple Cross}] \ + -variable ${varname}(graph,ds,shape,symbol) -value scross \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Triangle}] \ + -variable ${varname}(graph,ds,shape,symbol) -value triangle \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add radiobutton \ + -label [msgcat::mc {Arrow}] \ + -variable ${varname}(graph,ds,shape,symbol) -value arrow \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add separator + $var(mb).dataline.shape add checkbutton \ + -label [msgcat::mc {Fill}] \ + -variable ${varname}(graph,ds,shape,fill) \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.shape add cascade -label [msgcat::mc {Color}] \ + -menu $var(mb).dataline.shape.color + + PlotColorMenu $var(mb).dataline.shape.color $varname graph,ds,shape,color \ + [list PlotLineUpdateElement $varname] # Smooth menu $var(mb).dataline.smooth @@ -148,7 +198,23 @@ proc PlotLineMenus {varname} { [list PlotLineUpdateElement $varname] # Error - PlotErrorMenu $varname dataline + menu $var(mb).dataline.error + $var(mb).dataline.error add checkbutton -label [msgcat::mc {Show}] \ + -variable ${varname}(graph,ds,error) \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.error add checkbutton -label [msgcat::mc {Cap}] \ + -variable ${varname}(graph,ds,error,cap) \ + -command [list PlotLineUpdateElement $varname] + $var(mb).dataline.error add separator + $var(mb).dataline.error add cascade -label [msgcat::mc {Color}] \ + -menu $var(mb).dataline.error.color + $var(mb).dataline.error add cascade -label [msgcat::mc {Width}] \ + -menu $var(mb).dataline.error.width + + PlotColorMenu $var(mb).dataline.error.color $varname graph,ds,error,color \ + [list PlotLineUpdateElement $varname] + WidthDashMenu $var(mb).dataline.error.width $varname \ + graph,ds,error,width {} [list PlotLineUpdateElement $varname] {} } proc PlotLineAddGraph {varname} { diff --git a/ds9/library/plotscatter.tcl b/ds9/library/plotscatter.tcl index 0aca541..1b48f6f 100644 --- a/ds9/library/plotscatter.tcl +++ b/ds9/library/plotscatter.tcl @@ -76,10 +76,76 @@ proc PlotScatterMenus {varname} { -command [list DatasetNameDialog $varname] # Shape - PlotShapeMenu $varname datascatter + menu $var(mb).datascatter.shape + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {None}] \ + -variable ${varname}(graph,ds,shape,symbol) -value none \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Circle}] \ + -variable ${varname}(graph,ds,shape,symbol) -value circle \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Square}] \ + -variable ${varname}(graph,ds,shape,symbol) -value square \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Diamond}] \ + -variable ${varname}(graph,ds,shape,symbol) -value diamond \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Plus}] \ + -variable ${varname}(graph,ds,shape,symbol) -value plus \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Cross}] \ + -variable ${varname}(graph,ds,shape,symbol) -value cross \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Simple Plus}] \ + -variable ${varname}(graph,ds,shape,symbol) -value splus \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Simple Cross}] \ + -variable ${varname}(graph,ds,shape,symbol) -value scross \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Triangle}] \ + -variable ${varname}(graph,ds,shape,symbol) -value triangle \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add radiobutton \ + -label [msgcat::mc {Arrow}] \ + -variable ${varname}(graph,ds,shape,symbol) -value arrow \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add separator + $var(mb).datascatter.shape add checkbutton \ + -label [msgcat::mc {Fill}] \ + -variable ${varname}(graph,ds,shape,fill) \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.shape add cascade -label [msgcat::mc {Color}] \ + -menu $var(mb).datascatter.shape.color + + PlotColorMenu $var(mb).datascatter.shape.color $varname \ + graph,ds,shape,color [list PlotScatterUpdateElement $varname] # Error - PlotErrorMenu $varname datascatter + menu $var(mb).datascatter.error + $var(mb).datascatter.error add checkbutton -label [msgcat::mc {Show}] \ + -variable ${varname}(graph,ds,error) \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.error add checkbutton -label [msgcat::mc {Cap}] \ + -variable ${varname}(graph,ds,error,cap) \ + -command [list PlotScatterUpdateElement $varname] + $var(mb).datascatter.error add separator + $var(mb).datascatter.error add cascade -label [msgcat::mc {Color}] \ + -menu $var(mb).datascatter.error.color + $var(mb).datascatter.error add cascade -label [msgcat::mc {Width}] \ + -menu $var(mb).datascatter.error.width + + PlotColorMenu $var(mb).datascatter.error.color $varname \ + graph,ds,error,color [list PlotScatterUpdateElement $varname] + WidthDashMenu $var(mb).datascatter.error.width $varname \ + graph,ds,error,width {} [list PlotScatterUpdateElement $varname] {} } diff --git a/ds9/library/util.tcl b/ds9/library/util.tcl index 919c26a..fea19f3 100644 --- a/ds9/library/util.tcl +++ b/ds9/library/util.tcl @@ -252,6 +252,11 @@ proc ProcessCmdCVAR0 {cmd} { eval $cmd $cvarname } +proc ProcessCmdCVAROpt {cmd opt} { + global cvarname + eval $cmd $cvarname $opt +} + proc ProcessCmdCVAR {key value {cmd {}}} { global cvarname upvar #0 $cvarname cvar diff --git a/ds9/parsers/plotparser.tac b/ds9/parsers/plotparser.tac index 28a80d5..6ff34d0 100644 --- a/ds9/parsers/plotparser.tac +++ b/ds9/parsers/plotparser.tac @@ -233,7 +233,7 @@ dim : XY_ {set _ xy} plotCmd : LOAD_ load | SAVE_ STRING_ {PlotCmdSave $2} - | ADD_ GRAPH_ graph {ProcessCmdCVAR0 PlotAddGraph $3} + | ADD_ GRAPH_ graph {ProcessCmdCVAROpt PlotAddGraph $3} | DELETE_ delete # xpa/samp only | DATA_ dim {PlotCmdData $2} diff --git a/ds9/parsers/plotparser.tcl b/ds9/parsers/plotparser.tcl index 07a69c6..0eda27c 100644 --- a/ds9/parsers/plotparser.tcl +++ b/ds9/parsers/plotparser.tcl @@ -5658,7 +5658,7 @@ proc plot::yyparse {} { 61 { set _ xyey } 62 { set _ xyexey } 64 { PlotCmdSave $2 } - 65 { ProcessCmdCVAR0 PlotAddGraph $3 } + 65 { ProcessCmdCVAROpt PlotAddGraph $3 } 67 { PlotCmdData $2 } 68 { ProcessCmdCVAR0 PlotDeleteDataSetAll } 72 { ProcessCmdCVAR stats $2 PlotStats } -- cgit v0.12