summaryrefslogtreecommitdiffstats
path: root/ds9/library
diff options
context:
space:
mode:
Diffstat (limited to 'ds9/library')
-rw-r--r--ds9/library/catplot.tcl2
-rw-r--r--ds9/library/ime.tcl611
-rw-r--r--ds9/library/markeranalysishist.tcl11
-rw-r--r--ds9/library/markeranalysispanda.tcl2
-rw-r--r--ds9/library/markeranalysisplot2d.tcl11
-rw-r--r--ds9/library/markeranalysisplot3d.tcl11
-rw-r--r--ds9/library/markeranalysisradial.tcl13
-rw-r--r--ds9/library/plot.tcl1123
-rw-r--r--ds9/library/plotbar.tcl161
-rw-r--r--ds9/library/plotconfig.tcl287
-rw-r--r--ds9/library/plotdata.tcl428
-rw-r--r--ds9/library/plotdialog.tcl241
-rw-r--r--ds9/library/plotline.tcl272
-rw-r--r--ds9/library/plotprint.tcl163
-rw-r--r--ds9/library/plotprocess.tcl58
-rw-r--r--ds9/library/plotscatter.tcl209
16 files changed, 1647 insertions, 1956 deletions
diff --git a/ds9/library/catplot.tcl b/ds9/library/catplot.tcl
index 9072745..567da52 100644
--- a/ds9/library/catplot.tcl
+++ b/ds9/library/catplot.tcl
@@ -86,7 +86,7 @@ proc CATPlotGenerate {varname} {
set var(plot,var) $vvarname
}
- PlotClearData $vvarname
+ PlotDeleteData $vvarname
PlotDataSet $vvarname $dim $rr
PlotTitle $vvarname $var(title) $xtitle $ytitle
$vvar(proc,updategraph) $vvarname
diff --git a/ds9/library/ime.tcl b/ds9/library/ime.tcl
deleted file mode 100644
index 9cf3493..0000000
--- a/ds9/library/ime.tcl
+++ /dev/null
@@ -1,611 +0,0 @@
-# Copyright (C) 1999-2018
-# Smithsonian Astrophysical Observatory, Cambridge, MA, USA
-# For conditions of distribution and use, see copyright notice in "copyright"
-
-package provide DS9 1.0
-
-proc IMEDef {} {
- global iime
- global ime
- global pime
-
- set ime(task) stats
- set ime(shape) circle
-
- array set pime [array get ime]
-}
-
-proc IMEChangeTask {} {
- global current
-
- if {$current(frame) == {}} {
- return
- }
-
- if {$current(mode) != {analysis}} {
- return
- }
-
- UpdateTaskMenu
- IMEChangeShape
-}
-
-proc IMEChangeShape {} {
- global ime
- global ds9
- global current
-
- switch $ime(task) {
- stats -
- hist {
- switch $ime(shape) {
- circle -
- ellipse -
- box -
- polygon {}
- default {set ime(shape) circle}
- }
- }
- radial {
- switch $ime(shape) {
- annulus -
- ellipseannulus -
- boxannulus {}
- default {set ime(shape) annulus}
- }
- }
- plot2d {}
- plot3d {
- switch $ime(shape) {
- circle -
- ellipse -
- box -
- polygon -
- point {}
- default {set ime(shape) point}
- }
- }
- }
-
- foreach ff $ds9(frames) {
- $ff marker analysis unselect all
- set coord [$ff get crosshair canvas]
- set XX [lindex $coord 0]
- set YY [lindex $coord 1]
-
- $ff analysis shape $ime(shape) $XX $YY
-
- if {$current(frame) == $ff} {
- IMEDoTask $current(frame)
- }
- }
-}
-
-proc IMEDoTask {which} {
- global ime
-
- if {![$which has fits]} {
- return
- }
-
- switch $ime(task) {
- stats {IMEStatsTask $which}
- hist {IMEHistTask $which}
- radial {IMERadialTask $which}
- plot2d {IMEPlot2DTask $which}
- plot3d {IMEPlot3DTask $which}
- }
-}
-
-proc IMEKey {which K xx yy} {
- global ime
-
- # always available
- switch $K {
- question {
- IMEHelp
- return
- }
- }
-
- if {![$which has fits]} {
- return
- }
-
- switch $K {
- a {
- # FWHM (Aperture Sum)
- }
- b {
- # Box Coords?
- }
- c {
- # Column Cut
- }
- d {
- # remap (Load Display)
- set ime(task) plot3d
- IMEKeyTask $which $xx $yy
- }
- e {
- # remap (Contour)
- }
- f {
- # remap (Redraw)
- }
- g {
- # remap (Graphics Cursor)
- }
- h {
- set ime(task) hist
- IMEKeyTask $which $xx $yy
- }
- i {
- # remap (Image Cursor)
- }
- j {
- # Line Guassian Fit
- }
- k {
- # Col Gaussian Fit
- }
- l {
- # Line Cut
- }
- m {
- set ime(task) stats
- IMEKeyTask $which $xx $yy
- }
- n {
- # remap (Next Frame)
- }
- o {
- # remap (Overplot)
- }
- p {
- # remap (Prev Frame)
- }
- q {
- # remap (Quit)
- }
- r {
- set ime(task) radial
- IMEKeyTask $which $xx $yy
- }
- s {
- # Surface Plot
- }
- t {
- # remap (Output Image)
- }
- u {
- # Vector Plot
- }
- v {
- set ime(task) plot2d
- IMEKeyTask $which $xx $yy
- }
- w {
- # remap (Toggle Logfile)
- }
- x {
- # Print coords/values
- }
- y {
- # remap (Set Origin)
- }
- z {
- # Print value grid
- }
- , {
- # Quick Profile Photometry
- }
- . {
- # Quick Radial Profile Plot and Fit
- }
- }
-}
-
-proc IMEKeyTask {which xx yy} {
- global ime
-
- $which crosshair canvas $xx $yy
-
- $which analysis shape $ime(shape) $xx $yy
- IMEDoTask $which
-
- UpdateColormapLevelMosaic $which $xx $yy canvas
- UpdateInfoBox $which $xx $yy canvas
- UpdatePixelTableDialog $which $xx $yy canvas
- UpdateGraphLayout $which
- UpdateGraphAxis $which
- UpdateGraphData $which $xx $yy canvas
-}
-
-proc IMEButton {which xx yy} {
- global ime
- global imarker
-
- global debug
- if {$debug(tcl,ime)} {
- puts stderr "IMEButton $which $xx $yy"
- }
-
- # see if we are on a handle
- set hh [$which get marker analysis handle $xx $yy]
- set id [lindex $hh 0]
- set imarker(handle) [lindex $hh 1]
-
- if {$imarker(handle)} {
- $which marker analysis $id edit begin $imarker(handle)
- set imarker(motion) beginEdit
- return
- }
-
- # else, see if we are on a segment of a polygon
- set hh [$which get marker analysis polygon segment $xx $yy]
- set id [lindex $hh 0]
- set segment [lindex $hh 1]
- if {$segment} {
- $which marker analysis $id create polygon vertex $segment $xx $yy
- $which marker analysis $id edit begin $imarker(handle)
- set imarker(handle) [expr 4+$segment+1]
- set imarker(motion) beginEdit
- return
- }
-
- # see if any markers are selected
- if {[$which get marker analysis select number]>0} {
- # else, see if we are on a marker
- if {[$which get marker analysis id $xx $yy]} {
- $which marker analysis $id move begin
- set imarker(motion) beginMove
- return
- } else {
- $which marker analysis unselect all
- set imarker(motion) none
- return
- }
- }
-
- $which marker analysis $id move begin
- set imarker(motion) beginMove
-
- $which crosshair canvas $xx $yy
- $which analysis shape $ime(shape) $xx $yy
- IMEDoTask $which
-}
-
-proc IMEShift {which xx yy} {
- global ime
- global imarker
-
- global debug
- if {$debug(tcl,ime)} {
- puts stderr "IMEShift $which $xx $yy"
- }
-
- # see if we are on a handle
- set hh [$which get marker analysis handle $xx $yy]
- set id [lindex $hh 0]
- set imarker(handle) [lindex $hh 1]
-
- if {$imarker(handle)} {
- $which marker analysis $id rotate begin
- set imarker(motion) beginRotate
- }
-}
-
-proc IMEDouble {which xx yy} {
- global ime
- global imarker
-
- global debug
- if {$debug(tcl,ime)} {
- puts stderr "IMEDouble $which $xx $yy"
- }
-
- if {[$which get marker analysis id $xx $yy]} {
- $which marker analysis select only $xx $yy
- }
-}
-
-proc IMEMotion {which xx yy} {
- global ime
- global imarker
-
- global debug
- if {$debug(tcl,ime)} {
- puts stderr "IMEMotion $which $xx $yy"
- }
-
- switch -- $imarker(motion) {
- none {}
- beginMove -
- move {
- $which marker analysis move motion $x $y
- set imarker(motion) move
- $which crosshair canvas $xx $yy
- $which analysis shape $ime(shape) $xx $yy
- IMEDoTask $which
- }
- beginEdit -
- edit {
- set imarker(motion) edit
- $which marker analysis edit motion $xx $yy $imarker(handle)
- IMEDoTask $which
- }
- beginRotate -
- rotate {
- set imarker(motion) rotate
- $which marker analysis rotate motion $xx $yy $imarker(handle)
- IMEDoTask $which
- }
- region -
- shiftregion {}
- }
-}
-
-proc IMERelease {which xx yy} {
- global ime
- global imarker
-
- global debug
- if {$debug(tcl,ime)} {
- puts stderr "IMERelease $which $xx $yy"
- }
-
- switch -- $imarker(motion) {
- none {}
- beginMove -
- beginRotate {}
- beginEdit {}
- move {
- $which marker analysis move end
- IMEDoTask $which
- }
- edit {
- $which marker analysis edit end
- IMEDoTask $which
- }
- rotate {
- $which marker analysis rotate end
- IMEDoTask $which
- }
- region -
- shiftregion {}
- }
-
- set imarker(motion) none
- set imarker(handle) -1
-}
-
-proc IMEArrowKey {which xx yy} {
- global ime
- global ds9
-
- global debug
- if {$debug(tcl,ime)} {
- puts stderr "IMEArrow $which $xx $yy"
- }
-
- $which crosshair warp $xx $yy
-
- set coord [$which get crosshair canvas]
- set XX [lindex $coord 0]
- set YY [lindex $coord 1]
-
- $which analysis shape $ime(shape) $XX $YY
- IMEDoTask $which
-
- UpdateColormapLevelMosaic $which $XX $YY canvas
- UpdateInfoBox $which $XX $YY canvas
- UpdatePixelTableDialog $which $XX $YY canvas
- UpdateGraphData $which $XX $YY canvas
-}
-
-proc IMEHelp {} {
- global ime
-
- set rr "\tAnalysis Help\n\n?\tPrint Help\nd\tPlot 3D\nm\tStatistics\nv\tPlot 2D\n"
-
- SimpleTextDialog imehlp "Analysis Help" 80 20 insert top $rr
-}
-
-proc IMEStatsTask {which} {
- global ime
-
- set rr [$which get marker analysis hide analysis stats physical fk5]
-
- SimpleTextDialog "imestat" "Statistics" 80 20 insert top $rr
-}
-
-proc IMEHistTask {which} {
- global iime
- global ime
-
- set id 0
-
- set varname imehist
- global $varname
- upvar #0 $varname var
-
- set vvarname analysishist
- upvar #0 $vvarname vvar
- global $vvarname
-
- set xdata ${vvarname}x
- set ydata ${vvarname}y
- global $xdata $ydata
-
- set ping [PlotPing $vvarname]
-
- if {!$ping} {
- PlotLineDialog $vvarname Histogram {} Values Counts
-
- set vvar(manage) 0
- set vvar(dim) xy
- set vvar(xdata) $xdata
- set vvar(ydata) $ydata
- blt::vector create $xdata $ydata
- }
-
- $which get marker analysis hide analysis histogram $xdata $ydata 512
-
- if {!$ping} {
- PlotExternal $vvarname
- set vvar(smooth) step
- set vvar(fill) 1
- $vvar(proc,updateelement) $vvarname
- $vvar(proc,updategraph) $vvarname
- }
-
- PlotStats $vvarname
- PlotList $vvarname
-}
-
-proc IMERadialTask {which} {
- global iime
- global ime
-
- set varname imerad
- global $varname
- upvar #0 $varname var
-
- set vvarname analysisrad
- upvar #0 $vvarname vvar
- global $vvarname
-
- set vvar(system) physical
-
- set xdata ${vvarname}x
- set ydata ${vvarname}y
- set yedata ${vvarname}ye
- global $xdata $ydata $yedata
-
- set ping [PlotPing $vvarname]
-
- if {!$ping} {
- PlotLineDialog $vvarname "Radial Profile" {} physical {}
- MarkerAnalysisRadialAxisTitle $vvarname
-
- set vvar(manage) 0
- set vvar(dim) xyey
- set vvar(xdata) $xdata
- set vvar(ydata) $ydata
- set vvar(yedata) $yedata
- blt::vector create $xdata $ydata $yedata
- }
-
- $which get marker analysis hide analysis radial $xdata $ydata $yedata physical
-
- if {!$ping} {
- PlotExternal $vvarname
- $vvar(proc,updateelement) $vvarname
- $vvar(proc,updategraph) $vvarname
- }
-
- PlotStats $vvarname
- PlotList $vvarname
-}
-
-proc IMEPlot2DTask {which} {
- global iime
- global ime
-
- set varname imeplot2d
- global $varname
- upvar #0 $varname var
-
- set vvarname analysisplot2d
- upvar #0 $vvarname vvar
- global $vvarname
-
- set vvar(system) physical
- set vvar(sky) fk5
- set vvar(method) average
-
- set xdata ${vvarname}x
- set ydata ${vvarname}y
- set xcdata ${vvarname}xc
- set ycdata ${vvarname}yc
- global $xdata $ydata $xcdata $ycdata
-
- set ping [PlotPing $vvarname]
-
- if {!$ping} {
- PlotLineDialog $vvarname Plot2D {} physical Counts
- MarkerAnalysisPlot2dXAxisTitle $vvarname
- MarkerAnalysisPlot2dYAxisTitle $vvarname
-
- # setup our own formatting
- set vvar(graph,format) 0
- set vvar(xcdata) $xcdata
- set vvar(ycdata) $ycdata
- $vvar(graph) xaxis configure \
- -command "MarkerAnalysisPlot2dXAxis $vvarname"
-
- set vvar(manage) 0
- set vvar(dim) xy
- set vvar(xdata) $xdata
- set vvar(ydata) $ydata
- blt::vector create $xdata $ydata $xcdata $ycdata
- }
-
- $which get marker analysis hide analysis plot2d $xdata $ydata $xcdata $ycdata physical fk5 average
-
- if {!$ping} {
- PlotExternal $vvarname
- $vvar(proc,updateelement) $vvarname
- $vvar(proc,updategraph) $vvarname
- }
-
- PlotStats $vvarname
- PlotList $vvarname
-}
-
-proc IMEPlot3DTask {which} {
- global iime
- global ime
-
- set varname imeplot3d
- global $varname
- upvar #0 $varname var
-
- set vvarname analysisplot3d
- upvar #0 $vvarname vvar
- global $vvarname
-
- set vvar(system) image
- set vvar(method) average
-
- set xdata ${vvarname}x
- set ydata ${vvarname}y
- global $xdata $ydata
-
- set ping [PlotPing $vvarname]
-
- if {!$ping} {
- PlotLineDialog $vvarname Plot3D {} image Counts
- MarkerAnalysisPlot3dXAxisTitle $vvarname
- MarkerAnalysisPlot3dYAxisTitle $vvarname
-
- set vvar(manage) 0
- set vvar(dim) xy
- set vvar(xdata) $xdata
- set vvar(ydata) $ydata
- blt::vector create $xdata $ydata
- }
-
- $which get marker analysis hide analysis plot3d $xdata $ydata physical fk5 average
-
- if {!$ping} {
- PlotExternal $vvarname
- $vvar(proc,updateelement) $vvarname
- $vvar(proc,updategraph) $vvarname
- }
-
- PlotStats $vvarname
- PlotList $vvarname
-}
-
diff --git a/ds9/library/markeranalysishist.tcl b/ds9/library/markeranalysishist.tcl
index 83d57a9..a3f7f2a 100644
--- a/ds9/library/markeranalysishist.tcl
+++ b/ds9/library/markeranalysishist.tcl
@@ -80,10 +80,13 @@ proc MarkerAnalysisHistogramCB {frame id} {
}
PlotLineDialog $vvarname $tt Histogram $bunit Counts
- set vvar(manage) 0
- set vvar(dim) xy
- set vvar(xdata) $xdata
- set vvar(ydata) $ydata
+ set tt $vvar(graph,total)
+ set cc $vvar(graph,current)
+
+ set vvar(graph$cc,manage) 0
+ set vvar(graph$cc,dim) xy
+ set vvar(graph$cc,xdata) $xdata
+ set vvar(graph$cc,ydata) $ydata
blt::vector create $xdata $ydata
}
diff --git a/ds9/library/markeranalysispanda.tcl b/ds9/library/markeranalysispanda.tcl
index ec8f36e..d60b158 100644
--- a/ds9/library/markeranalysispanda.tcl
+++ b/ds9/library/markeranalysispanda.tcl
@@ -103,7 +103,7 @@ proc MarkerAnalysisPandaCB {frame id} {
MarkerAnalysisPandaAxisTitle $vvarname
}
- PlotClearData $vvarname
+ PlotDeleteData $vvarname
PlotDataSet $vvarname 3 [$frame get marker $id analysis panda $sys]
$vvar(proc,updategraph) $vvarname
PlotStats $vvarname
diff --git a/ds9/library/markeranalysisplot2d.tcl b/ds9/library/markeranalysisplot2d.tcl
index a8fdf1d..87b02f3 100644
--- a/ds9/library/markeranalysisplot2d.tcl
+++ b/ds9/library/markeranalysisplot2d.tcl
@@ -169,10 +169,13 @@ proc MarkerAnalysisPlot2dCB {frame id} {
$vvar(graph) xaxis configure \
-command "MarkerAnalysisPlot2dXAxis $vvarname"
- set vvar(manage) 0
- set vvar(dim) xy
- set vvar(xdata) $xdata
- set vvar(ydata) $ydata
+ set tt $vvar(graph,total)
+ set cc $vvar(graph,current)
+
+ set vvar(graph$cc,manage) 0
+ set vvar(graph$cc,dim) xy
+ set vvar(graph$cc,xdata) $xdata
+ set vvar(graph$cc,ydata) $ydata
blt::vector create $xdata $ydata $xcdata $ycdata
}
diff --git a/ds9/library/markeranalysisplot3d.tcl b/ds9/library/markeranalysisplot3d.tcl
index 2b93cbc..4591d22 100644
--- a/ds9/library/markeranalysisplot3d.tcl
+++ b/ds9/library/markeranalysisplot3d.tcl
@@ -174,10 +174,13 @@ proc MarkerAnalysisPlot3dCB {frame id} {
set vvar(mode) pointer
PlotChangeMode $vvarname
- set vvar(manage) 0
- set vvar(dim) xy
- set vvar(xdata) $xdata
- set vvar(ydata) $ydata
+ set tt $vvar(graph,total)
+ set cc $vvar(graph,current)
+
+ set vvar(graph$cc,manage) 0
+ set vvar(graph$cc,dim) xy
+ set vvar(graph$cc,xdata) $xdata
+ set vvar(graph$cc,ydata) $ydata
blt::vector create $xdata $ydata
}
diff --git a/ds9/library/markeranalysisradial.tcl b/ds9/library/markeranalysisradial.tcl
index 45a552d..81f9db9 100644
--- a/ds9/library/markeranalysisradial.tcl
+++ b/ds9/library/markeranalysisradial.tcl
@@ -107,11 +107,14 @@ proc MarkerAnalysisRadialCB {frame id} {
PlotLineDialog $vvarname $tt "Radial Profile" $sys {}
MarkerAnalysisRadialAxisTitle $vvarname
- set vvar(manage) 0
- set vvar(dim) xyey
- set vvar(xdata) $xdata
- set vvar(ydata) $ydata
- set vvar(yedata) $yedata
+ set tt $vvar(graph,total)
+ set cc $vvar(graph,current)
+
+ set vvar(graph$cc,manage) 0
+ set vvar(graph$cc,dim) xyey
+ set vvar(graph$cc,xdata) $xdata
+ set vvar(graph$cc,ydata) $ydata
+ set vvar(graph$cc,yedata) $yedata
blt::vector create $xdata $ydata $yedata
}
diff --git a/ds9/library/plot.tcl b/ds9/library/plot.tcl
index 98cf932..8c512c9 100644
--- a/ds9/library/plot.tcl
+++ b/ds9/library/plot.tcl
@@ -16,16 +16,13 @@ proc PlotDef {} {
set iap(tiff,compress) none
set iap(error) [msgcat::mc {An error has occurred while creating the image. Please be sure that the plot window is in the upper left corner of the default screen and the entire window is visible.}]
+ # per Canvas
set pap(graph,bg) white
- set pap(graph,title) {}
set pap(graph,title,family) helvetica
set pap(graph,title,size) 12
set pap(graph,title,weight) normal
set pap(graph,title,slant) roman
- set pap(legend) 0
- set pap(legend,title) Legend
- set pap(legend,position) right
set pap(legend,title,family) helvetica
set pap(legend,title,size) 10
set pap(legend,title,weight) normal
@@ -35,6 +32,23 @@ proc PlotDef {} {
set pap(legend,font,weight) normal
set pap(legend,font,slant) roman
+ set pap(axis,title,family) helvetica
+ set pap(axis,title,size) 9
+ set pap(axis,title,weight) normal
+ set pap(axis,title,slant) roman
+
+ set pap(axis,font,family) helvetica
+ set pap(axis,font,size) 9
+ set pap(axis,font,weight) normal
+ set pap(axis,font,slant) roman
+
+ # per Graph
+ set pap(graph,title) {}
+
+ set pap(legend) 0
+ set pap(legend,title) Legend
+ set pap(legend,position) right
+
set pap(axis,x,title) {}
set pap(axis,x,grid) 1
set pap(axis,x,log) 0
@@ -53,20 +67,10 @@ proc PlotDef {} {
set pap(axis,y,max) {}
set pap(axis,y,format) {}
- set pap(axis,title,family) helvetica
- set pap(axis,title,size) 9
- set pap(axis,title,weight) normal
- set pap(axis,title,slant) roman
-
- set pap(axis,font,family) helvetica
- set pap(axis,font,size) 9
- set pap(axis,font,weight) normal
- set pap(axis,font,slant) roman
+ set pap(bar,mode) normal
+ # per DataSet
set pap(show) 1
- set pap(shape,symbol) none
- set pap(shape,fill) 1
- set pap(shape,color) red
set pap(smooth) linear
set pap(color) black
set pap(fill) 0
@@ -74,52 +78,184 @@ proc PlotDef {} {
set pap(width) 1
set pap(dash) 0
+ set pap(shape,symbol) none
+ set pap(shape,fill) 1
+ set pap(shape,color) red
+
set pap(error) 1
set pap(error,cap) 0
set pap(error,color) red
set pap(error,width) 1
set pap(bar,relief) raised
- set pap(bar,mode) normal
}
-proc PlotAxisFormat {varname axis w nn} {
+# Canvas
+proc PlotLayoutCanvas {varname} {
upvar #0 $varname var
global $varname
- return [format $var(axis,$axis,format) $nn]
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ for {set ii 1} {$ii<=$tt} {incr ii} {
+ pack forget $var(graph$ii)
+ }
+
+ for {set ii 1} {$ii<=$tt} {incr ii} {
+ pack $var(graph$ii) -side top -expand yes -fill both
+ }
}
-proc PlotClearData {varname} {
+# Graph
+proc PlotAddGraph {varname} {
upvar #0 $varname var
global $varname
global ds9
+ global pap
+
+ incr ${varname}(graph,total)
+ incr ${varname}(graph,current)
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ set var(graph$cc,data,total) 0
+ set var(graph$cc,data,current) 0
+
+ set var(graph$cc,name) {}
+ set var(graph$cc,xdata) {}
+ set var(graph$cc,ydata) {}
+ set var(graph$cc,xedata) {}
+ set var(graph$cc,yedata) {}
+
+ array set $varname [array get pap]
+
+ # per Canvas
+ # per Graph
+ set var(graph$cc,bar,mode) $pap(bar,mode)
+
+ # per DataSet
+ set var(graph$cc,show) $pap(show)
+ set var(graph$cc,shape,symbol) $pap(shape,symbol)
+ set var(graph$cc,shape,fill) $pap(shape,fill)
+ set var(graph$cc,shape,color) $pap(shape,color)
+ set var(graph$cc,smooth) $pap(smooth)
+ set var(graph$cc,color) $pap(color)
+ set var(graph$cc,fill) $pap(fill)
+ set var(graph$cc,fill,color) $pap(fill,color)
+ set var(graph$cc,width) $pap(width)
+ set var(graph$cc,dash) $pap(dash)
+
+ set var(graph$cc,error) $pap(error)
+ set var(graph$cc,error,cap) $pap(error,cap)
+ set var(graph$cc,error,color) $pap(error,color)
+ set var(graph$cc,error,width) $pap(error,width)
+
+ set var(graph$cc,bar,relief) $pap(bar,relief)
+
+ $var(proc,addgraph) $varname
+
+ # set up zoom stack, assuming mode is zoom
+ global ds9
+ switch $ds9(wm) {
+ x11 -
+ win32 {Blt_ZoomStack $var(graph$cc) -mode release}
+ aqua {Blt_ZoomStack $var(graph$cc) -mode release \
+ -button "ButtonPress-2"}
+ }
- if {$var(data,total) == 0} {
+ PlotLayoutCanvas $varname
+}
+
+proc PlotDeleteGraph {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set cc $var(graph,current)
+ if {$cc>1} {
+ destroy $var(graph$cc)
+
+ incr ${varname}(graph,total) -1
+ incr ${varname}(graph,current) -1
+ }
+}
+
+# Data
+proc PlotAddData {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ # warning: uses current vars
+ if {$var(graph$cc,data,total) == 0} {
+ return
+ }
+
+ # delete current elements
+ set nn $var(graph$cc,data,current)
+ foreach el [$var(graph$cc) element names] {
+ set f [split $el -]
+ if {[lindex $f 1] == $nn} {
+ $var(graph$cc) element delete $el
+ }
+ }
+
+ global $var(graph$cc,xdata) $var(graph$cc,ydata)
+ $var(graph$cc) element create "d-${nn}" \
+ -xdata $var(graph$cc,xdata) -ydata $var(graph$cc,ydata)
+ if {$var(graph$cc,xedata) != {}} {
+ if {[$var(graph$cc,xedata) length] != 0} {
+ $var(graph$cc) element configure "d-${nn}" \
+ -xerror $var(graph$cc,xedata)
+ }
+ }
+ if {$var(graph$cc,yedata) != {}} {
+ if {[$var(graph$cc,yedata) length] != 0} {
+ $var(graph$cc) element configure "d-${nn}" \
+ -yerror $var(graph$cc,yedata)
+ }
+ }
+}
+
+proc PlotDeleteData {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ global ds9
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ if {$var(graph$cc,data,total) == 0} {
return
}
# first set can be external
- set clear $var(1,manage)
+ set clear $var(graph$cc,1,manage)
- for {set nn 1} {$nn<=$var(data,total)} {incr nn} {
- if {$var($nn,manage)} {
+ for {set nn 1} {$nn<=$var(graph$cc,data,total)} {incr nn} {
+ if {$var(graph$cc,$nn,manage)} {
# delete elements
- foreach el [$var(graph) element names] {
+ foreach el [$var(graph$cc) element names] {
set f [split $el -]
if {[lindex $f 1] == $nn} {
- $var(graph) element delete $el
+ $var(graph$cc) element delete $el
}
}
# destroy vectors
- blt::vector destroy $var($nn,xdata) $var($nn,ydata)
- switch $var($nn,dim) {
+ blt::vector destroy \
+ $var(graph$cc,$nn,xdata) $var(graph$cc,$nn,ydata)
+ switch $var(graph$cc,$nn,dim) {
xy {}
- xyex {blt::vector destroy $var($nn,xedata)}
- xyey {blt::vector destroy $var($nn,yedata)}
- xyexey {blt::vector destroy $var($nn,xedata) $var($nn,yedata)}
+ xyex {blt::vector destroy $var(graph$cc,$nn,xedata)}
+ xyey {blt::vector destroy $var(graph$cc,$nn,yedata)}
+ xyexey {blt::vector destroy \
+ $var(graph$cc,$nn,xedata) $var(graph$cc,$nn,yedata)}
}
foreach x [array names $varname] {
@@ -132,14 +268,14 @@ proc PlotClearData {varname} {
}
if {$clear} {
- set var(data,total) 0
- set var(data,current) 0
+ set var(graph$cc,data,total) 0
+ set var(graph$cc,data,current) 0
- set var(name) {}
- set var(xdata) {}
- set var(ydata) {}
- set var(xedata) {}
- set var(yedata) {}
+ set var(graph$cc,name) {}
+ set var(graph$cc,xdata) {}
+ set var(graph$cc,ydata) {}
+ set var(graph$cc,xedata) {}
+ set var(graph$cc,yedata) {}
# reset other variables
set var(axis,x,auto) 1
@@ -152,352 +288,84 @@ proc PlotClearData {varname} {
set var(axis,y,max) {}
set var(axis,y,format) {}
- $var(mb).select delete $ds9(menu,start) end
+ $var(mb).graph.select delete $ds9(menu,start) end
$var(proc,updategraph) $varname
PlotStats $varname
PlotList $varname
} else {
- set var(data,total) 1
- set var(data,current) 1
+ set var(graph$cc,data,total) 1
+ set var(graph$cc,data,current) 1
- $var(mb).select delete [expr $ds9(menu,start)+1] end
+ $var(mb).graph.select delete [expr $ds9(menu,start)+1] end
PlotCurrentData $varname
$var(proc,updategraph) $varname
}
}
-proc PlotCurrentData {varname} {
+proc PlotCurrentGraph {varname} {
upvar #0 $varname var
global $varname
- if {$var(data,total) > 0} {
- set nn $var(data,current)
-
- set var(manage) $var($nn,manage)
- set var(dim) $var($nn,dim)
-
- set var(xdata) $var($nn,xdata)
- set var(ydata) $var($nn,ydata)
- set var(xedata) $var($nn,xedata)
- set var(yedata) $var($nn,yedata)
+ set tt $var(graph,total)
+ set cc $var(graph,current)
- PlotSetVar $varname $nn
+ if {$tt > 0} {
+ PlotCurrentData $varname
}
-
- PlotStats $varname
- PlotList $varname
}
-proc PlotDataSet {varname dim data} {
+proc PlotCurrentData {varname} {
upvar #0 $varname var
global $varname
- switch -- $dim {
- 4 {
- # first data set
- PlotDataSetOne $varname "4.1" $data
+ set tt $var(graph,total)
+ set cc $var(graph,current)
- # set color
- set cc $var(color)
- set var(color) [PlotNextColor $var(color)]
+ if {$var(graph$cc,data,total) > 0} {
+ set nn $var(graph$cc,data,current)
- # second data set
- PlotDataSetOne $varname "4.2" $data
- set var(color) $cc
- }
- 5 {
- # first data set
- PlotDataSetOne $varname "5.1" $data
+ set var(graph$cc,manage) $var(graph$cc,$nn,manage)
+ set var(graph$cc,dim) $var(graph$cc,$nn,dim)
- # set color
- set cc $var(color)
- set var(color) [PlotNextColor $var(color)]
+ set var(graph$cc,xdata) $var(graph$cc,$nn,xdata)
+ set var(graph$cc,ydata) $var(graph$cc,$nn,ydata)
+ set var(graph$cc,xedata) $var(graph$cc,$nn,xedata)
+ set var(graph$cc,yedata) $var(graph$cc,$nn,yedata)
- # second data set
- PlotDataSetOne $varname "5.2" $data
- set var(color) $cc
- }
- default {PlotDataSetOne $varname $dim $data}
+ PlotSetVar $varname $nn
}
+
+ PlotStats $varname
+ PlotList $varname
}
-proc PlotDataSetOne {varname dim data} {
+proc PlotAxisFormat {varname axis w nn} {
upvar #0 $varname var
global $varname
- # look for no data
- if {[string length $data] == 0} {
- return
- }
-
- # total length
- set ll [llength $data]
-
- # incr count
- incr ${varname}(data,total)
- set nn $var(data,total)
- set var(data,current) $nn
-
- # new vector names
- set xdata ap${varname}xx${nn}
- set ydata ap${varname}yy${nn}
- set xedata ap${varname}xe${nn}
- set yedata ap${varname}ye${nn}
-
- # basics xy
- set var(manage) 1
- set var(name) "Dataset $nn"
- set var(xdata) $xdata
- set var(ydata) $ydata
- global $var(xdata) $var(ydata)
- blt::vector create $var(xdata) $var(ydata)
-
- # substitute all separtors
- regsub -all {[\n\r\t, ]+} $data { } data
- # remove all non-numeric data
- regsub -all {[^0-9.e\- ]+} $data {} data
-
- set x {}
- set y {}
- set xe {}
- set ye {}
- switch -- $dim {
- 2 -
- xy {
- set var(dim) xy
- set var(xedata) {}
- set var(yedata) {}
-
- for {set ii 0} {$ii<$ll} {incr ii 2} {
- lappend x [lindex $data $ii]
- lappend y [lindex $data [expr $ii+1]]
- }
- $var(xdata) set $x
- $var(ydata) set $y
- }
-
- xyex {
- set var(dim) xyex
- set var(xedata) $xedata
- set var(yedata) {}
-
- global $var(xedata)
- blt::vector create $var(xedata)
-
- for {set ii 0} {$ii<$ll} {incr ii 3} {
- lappend x [lindex $data $ii]
- lappend y [lindex $data [expr $ii+1]]
- lappend xe [lindex $data [expr $ii+2]]
- }
- $var(xdata) set $x
- $var(ydata) set $y
- $var(xedata) set $xe
- }
-
- 3 -
- xyey {
- set var(dim) xyey
- set var(xedata) {}
- set var(yedata) $yedata
-
- global $var(yedata)
- blt::vector create $var(yedata)
-
- for {set ii 0} {$ii<$ll} {incr ii 3} {
- lappend x [lindex $data $ii]
- lappend y [lindex $data [expr $ii+1]]
- lappend ye [lindex $data [expr $ii+2]]
- }
- $var(xdata) set $x
- $var(ydata) set $y
- $var(yedata) set $ye
- }
-
- xyexey {
- set var(dim) xyexey
- set var(xedata) $xedata
- set var(yedata) $yedata
-
- global $var(xedata) $var(yedata)
- blt::vector create $var(xedata) $var(yedata)
-
- for {set ii 0} {$ii<$ll} {incr ii 4} {
- lappend x [lindex $data $ii]
- lappend y [lindex $data [expr $ii+1]]
- lappend xe [lindex $data [expr $ii+2]]
- lappend ye [lindex $data [expr $ii+3]]
- }
- $var(xdata) set $x
- $var(ydata) set $y
- $var(xedata) set $xe
- $var(yedata) set $ye
- }
-
- 4.1 {
- set var(dim) xyey
- set var(xedata) {}
- set var(yedata) $yedata
-
- global $var(yedata)
- blt::vector create $var(yedata)
-
- for {set ii 0} {$ii<$ll} {incr ii 4} {
- lappend x [lindex $data $ii]
- lappend y [lindex $data [expr $ii+1]]
- lappend ye [lindex $data [expr $ii+2]]
- }
- $var(xdata) set $x
- $var(ydata) set $y
- $var(yedata) set $ye
- }
-
- 4.2 {
- set var(dim) xy
- set var(xedata) {}
- set var(yedata) {}
-
- for {set ii 0} {$ii<$ll} {incr ii 4} {
- lappend x [lindex $data $ii]
- lappend y [lindex $data [expr $ii+3]]
- }
- $var(xdata) set $x
- $var(ydata) set $y
- }
-
- 5.1 {
- set var(dim) xyey
- set var(xedata) {}
- set var(yedata) $yedata
-
- global $var(yedata)
- blt::vector create $var(yedata)
-
- for {set ii 0} {$ii<$ll} {incr ii 5} {
- lappend x [lindex $data $ii]
- lappend y [lindex $data [expr $ii+1]]
- lappend ye [lindex $data [expr $ii+2]]
- }
- $var(xdata) set $x
- $var(ydata) set $y
- $var(yedata) set $ye
- }
-
- 5.2 {
- set var(dim) xyey
- set var(xedata) {}
- set var(yedata) $yedata
-
- global $var(yedata)
- blt::vector create $var(yedata)
-
- for {set ii 0} {$ii<$ll} {incr ii 5} {
- lappend x [lindex $data $ii]
- lappend y [lindex $data [expr $ii+3]]
- lappend ye [lindex $data [expr $ii+4]]
- }
- $var(xdata) set $x
- $var(ydata) set $y
- $var(yedata) set $ye
- }
- }
-
- set var($nn,manage) 1
- set var($nn,dim) $var(dim)
-
- set var($nn,xdata) $var(xdata)
- set var($nn,ydata) $var(ydata)
- set var($nn,xedata) $var(xedata)
- set var($nn,yedata) $var(yedata)
-
- PlotGetVar $varname $nn
-
- # update data set menu
- $var(mb).select add radiobutton -label "$var(name)" \
- -variable ${varname}(data,current) -value $nn \
- -command [list PlotCurrentData $varname]
-
- PlotCreateElement $varname
- $var(proc,updateelement) $varname
+ return [format $var(axis,$axis,format) $nn]
}
-proc PlotDupData {varname mm} {
+proc PlotChangeMode {varname} {
upvar #0 $varname var
global $varname
- if {$var(data,total) == 0} {
- return
- }
+ set tt $var(graph,total)
+ set cc $var(graph,current)
- # incr count
- incr ${varname}(data,total)
- set nn $var(data,total)
- set pp [expr $nn-1]
-
- # new vector names
- set var($nn,name) "Dataset $nn"
- set var($nn,xdata) ap${varname}xx${nn}
- set var($nn,ydata) ap${varname}yy${nn}
- set var($nn,xedata) ap${varname}xe${nn}
- set var($nn,yedata) ap${varname}ye${nn}
- global $var($mm,xdata) $var($mm,ydata) $var($mm,xedata) $var($mm,yedata)
- global $var($nn,xdata) $var($nn,ydata) $var($nn,xedata) $var($nn,yedata)
-
- $var($mm,xdata) dup $var($nn,xdata)
- $var($mm,ydata) dup $var($nn,ydata)
- if {$var($mm,xedata) != {}} {
- $var($mm,xedata) dup $var($nn,xedata)
- } else {
- set var($nn,xedata) {}
- }
- if {$var($mm,yedata) != {}} {
- $var($mm,yedata) dup $var($nn,yedata)
- } else {
- set var($nn,yedata) {}
+ for {set ii 1} {$ii<=$tt} {incr ii} {
+ switch $var(mode) {
+ pointer {
+ blt::RemoveBindTag $var(graph$ii) zoom-$var(graph$ii)
+ bind $var(graph$ii) <1> [list PlotButton $varname %x %y]
+ }
+ zoom {
+ bind $var(graph$ii) <1> {}
+ blt::AddBindTag $var(graph$ii) zoom-$var(graph$ii)
+ }
+ }
}
-
- set var($nn,manage) 1
- set var($nn,dim) $var($mm,dim)
-
- set var($nn,show) $var($mm,show)
- set var($nn,shape,symbol) $var($mm,shape,symbol)
- set var($nn,shape,fill) $var($mm,shape,fill)
- set var($nn,shape,color) $var($mm,shape,color)
- set var($nn,smooth) $var($mm,smooth)
- set var($nn,color) [PlotNextColor $var($mm,color)]
- set var($nn,fill) $var($mm,fill)
- set var($nn,fill,color) [PlotNextColor $var($mm,fill,color)]
- set var($nn,width) $var($mm,width)
- set var($nn,dash) $var($mm,dash)
- set var($nn,error) $var($mm,error)
- set var($nn,error,cap) $var($mm,error,cap)
- set var($nn,error,color) $var($mm,error,color)
- set var($nn,error,width) $var($mm,error,width)
- set var($nn,bar,relief) $var($mm,bar,relief)
-
- # update data set menu
- $var(mb).select add radiobutton -label "$var($nn,name)" \
- -variable ${varname}(data,current) -value $nn \
- -command [list PlotCurrentData $varname]
-
- # make current
- set var(data,current) $nn
-
- set var(manage) $var($nn,manage)
- set var(dim) $var($nn,dim)
-
- set var(xdata) $var($nn,xdata)
- set var(ydata) $var($nn,ydata)
- set var(xedata) $var($nn,xedata)
- set var(yedata) $var($nn,yedata)
-
- PlotSetVar $varname $nn
-
- PlotCreateElement $varname
- $var(proc,updateelement) $varname
- $var(proc,updategraph) $varname
- PlotStats $varname
- PlotList $varname
}
proc PlotDestroy {varname} {
@@ -506,27 +374,34 @@ proc PlotDestroy {varname} {
global iap
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
# see if it still is around
if {![PlotPing $varname]} {
return
}
- for {set nn 1} {$nn<=$var(data,total)} {incr nn} {
- switch $var($nn,dim) {
+ for {set nn 1} {$nn<=$var(graph$cc,data,total)} {incr nn} {
+ switch $var(graph$cc,$nn,dim) {
xy {
- blt::vector destroy $var($nn,xdata) $var($nn,ydata)
+ blt::vector destroy \
+ $var(graph$cc,$nn,xdata) $var(graph$cc,$nn,ydata)
}
xyex {
- blt::vector destroy $var($nn,xdata) $var($nn,ydata) \
- $var($nn,xedata)
+ blt::vector destroy \
+ $var(graph$cc,$nn,xdata) $var(graph$cc,$nn,ydata) \
+ $var(graph$cc,$nn,xedata)
}
xyey {
- blt::vector destroy $var($nn,xdata) $var($nn,ydata) \
- $var($nn,yedata)
+ blt::vector destroy \
+ $var(graph$cc,$nn,xdata) $var(graph$cc,$nn,ydata) \
+ $var(graph$cc,$nn,yedata)
}
xyexey {
- blt::vector destroy $var($nn,xdata) $var($nn,ydata) \
- $var($nn,xedata) $var($nn,yedata)
+ blt::vector destroy \
+ $var(graph$cc,$nn,xdata) $var(graph$cc,$nn,ydata) \
+ $var(graph$cc,$nn,xedata) $var(graph$cc,$nn,yedata)
}
}
}
@@ -557,29 +432,33 @@ proc PlotExternal {varname} {
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
# incr count
- incr ${varname}(data,total)
- set nn $var(data,total)
- set var(data,current) $nn
+ incr ${varname}(graph$cc,data,total)
+ set nn $var(graph$cc,data,total)
+ set var(graph$cc,data,current) $nn
- set var(name) "Dataset $nn"
+ set var(graph$cc,name) "Dataset $nn"
- set var($nn,manage) $var(manage)
- set var($nn,dim) $var(dim)
+ set var(graph$cc,$nn,manage) $var(graph$cc,manage)
+ set var(graph$cc,$nn,dim) $var(graph$cc,dim)
- set var($nn,xdata) $var(xdata)
- set var($nn,ydata) $var(ydata)
- set var($nn,xedata) $var(xedata)
- set var($nn,yedata) $var(yedata)
+ set var(graph$cc,$nn,xdata) $var(graph$cc,xdata)
+ set var(graph$cc,$nn,ydata) $var(graph$cc,ydata)
+ set var(graph$cc,$nn,xedata) $var(graph$cc,xedata)
+ set var(graph$cc,$nn,yedata) $var(graph$cc,yedata)
PlotGetVar $varname $nn
# update data set menu
- $var(mb).select add radiobutton -label "[msgcat::mc {Dataset}] $nn" \
- -variable ${varname}(data,current) -value $nn \
+ $var(mb).graph.select add radiobutton \
+ -label "[msgcat::mc {Dataset}] $nn" \
+ -variable ${varname}(graph$cc,data,current) -value $nn \
-command "PlotCurrentData $varname"
- PlotCreateElement $varname
+ PlotAddData $varname
}
proc PlotList {varname} {
@@ -599,34 +478,38 @@ proc PlotListGenerate {varname} {
upvar #0 $varname var
global $varname
- set rr {}
- if {$var(xdata) != {}} {
- global $var(xdata) $var(ydata) $var(xedata) $var(yedata)
- set ll [$var(xdata) length]
- set xx [$var(xdata) range]
- set yy [$var(ydata) range]
+ set tt $var(graph,total)
+ set cc $var(graph,current)
- switch $var(dim) {
+ set rr {}
+ if {$var(graph$cc,xdata) != {}} {
+ global $var(graph$cc,xdata) $var(graph$cc,ydata) \
+ $var(graph$cc,xedata) $var(graph$cc,yedata)
+ set ll [$var(graph$cc,xdata) length]
+ set xx [$var(graph$cc,xdata) range]
+ set yy [$var(graph$cc,ydata) range]
+
+ switch $var(graph$cc,dim) {
xy {
for {set ii 0} {$ii<$ll} {incr ii} {
append rr "[lindex $xx $ii] [lindex $yy $ii]\n"
}
}
xyex {
- set xe [$var(xedata) range]
+ set xe [$var(graph$cc,xedata) range]
for {set ii 0} {$ii<$ll} {incr ii} {
append rr "[lindex $xx $ii] [lindex $yy $ii] [lindex $xe $ii]\n"
}
}
xyey {
- set ye [$var(yedata) range]
+ set ye [$var(graph$cc,yedata) range]
for {set ii 0} {$ii<$ll} {incr ii} {
append rr "[lindex $xx $ii] [lindex $yy $ii] [lindex $ye $ii]\n"
}
}
xyexey {
- set xe [$var(xedata) range]
- set ye [$var(yedata) range]
+ set xe [$var(graph$cc,xedata) range]
+ set ye [$var(graph$cc,yedata) range]
for {set ii 0} {$ii<$ll} {incr ii} {
append rr "[lindex $xx $ii] [lindex $yy $ii] [lindex $xe $ii] [lindex $ye $ii]\n"
}
@@ -644,150 +527,6 @@ proc PlotListDestroyCB {varname} {
set var(list) 0
}
-proc PlotLoadConfig {varname} {
- upvar #0 $varname var
- global $varname
-
- PlotLoadConfigFile $varname [OpenFileDialog apconfigfbox]
-}
-
-# used by backup
-proc PlotLoadConfigFile {varname filename} {
- upvar #0 $varname var
- global $varname
-
- if {$filename != {}} {
- source $filename
- array set $varname [array get analysisplot]
- unset analysisplot
-
- # backward compatibility
- FixVar ${varname}(axis,x,grid) ${varname}(graph,x,grid)
- FixVar ${varname}(axis,x,log) ${varname}(graph,x,log)
- FixVar ${varname}(axis,x,flip) ${varname}(graph,x,flip)
- FixVar ${varname}(axis,y,grid) ${varname}(graph,y,grid)
- FixVar ${varname}(axis,y,log) ${varname}(graph,y,log)
- FixVar ${varname}(axis,y,flip) ${varname}(graph,y,flip)
-
- FixVar ${varname}(graph,title,family) ${varname}(titleFont)
- FixVar ${varname}(graph,title,size) ${varname}(titleSize)
- FixVar ${varname}(graph,title,weight) ${varname}(titleWeight)
- FixVar ${varname}(graph,title,slant) ${varname}(titleSlant)
-
- FixVar ${varname}(axis,title,family) ${varname}(textlabFont)
- FixVar ${varname}(axis,title,size) ${varname}(textlabSize)
- FixVar ${varname}(axis,title,weight) ${varname}(textlabWeight)
- FixVar ${varname}(axis,title,slant) ${varname}(textlabSlant)
-
- FixVar ${varname}(axis,font,family) ${varname}(numlabFont)
- FixVar ${varname}(axis,font,size) ${varname}(numlabSize)
- FixVar ${varname}(axis,font,weight) ${varname}(numlabWeight)
- FixVar ${varname}(axis,font,slant) ${varname}(numlabSlant)
-
- FixVar ${varname}(show) ${varname}(linear)
- FixVar ${varname}(shape,color) ${varname}(discrete,color)
- FixVar ${varname}(shape,fill) ${varname}(discrete,fill)
- FixVar ${varname}(width) ${varname}(linear,width)
- FixVar ${varname}(color) ${varname}(linear,color)
- if {[info exists ${varname}(linear,dash)]} {
- set var(linear,dash) [FromYesNo $var(linear,dash)]
- }
- FixVar ${varname}(dash) ${varname}(linear,dash)
-
- if {[info exists ${varname}(discrete)]} {
- if {$var(discrete)} {
- FixVar ${varname}(shape,symbol) ${varname}(discrete,symbol)
- } else {
- FixVarRm ${varname}(discrete,symbol)
- }
- }
-
- FixVarRm ${varname}(bar)
- FixVarRm ${varname}(bar,color)
-
- FixVarRm ${varname}(discrete)
-
- FixVarRm ${varname}(quadratic)
- FixVarRm ${varname}(quadratic,width)
- FixVarRm ${varname}(quadratic,color)
- FixVarRm ${varname}(quadratic,dash)
-
- FixVarRm ${varname}(step)
- FixVarRm ${varname}(step,color)
- FixVarRm ${varname}(step,dash)
- FixVarRm ${varname}(step,width)
-
- if {[info exists var(grid)]} {
- set var(axis,x,grid) $var(grid)
- set var(axis,y,grid) $var(grid)
- unset var(grid)
- }
- if {[info exists var(format)]} {
- set var(graph,format) $var(format)
- set var(axis,x,format) $var(format,x)
- set var(axis,y,format) $var(format,y)
- unset var(format)
- unset var(format,x)
- unset var(format,y)
- }
-
- if {[info exists var(grid,log)]} {
- switch $var(grid,log) {
- linearlinear {
- set var(axis,x,log) 0
- set var(axis,y,log) 0
- }
- linearlog {
- set var(axis,x,log) 0
- set var(axis,y,log) 1
- }
- loglinear {
- set var(axis,x,log) 1
- set var(axis,y,log) 0
- }
- loglog {
- set var(axis,x,log) 1
- set var(axis,y,log) 1
- }
- }
- unset var(grid,log)
- }
-
- $var(proc,updategraph) $varname
- $var(proc,updateelement) $varname
- }
-}
-
-proc PlotLoadData {varname} {
- upvar #0 $varname var
- global $varname
-
- set filename [OpenFileDialog apdatafbox]
- if {$filename != {}} {
- set dim xy
- if {[PlotDataFormatDialog dim]} {
- PlotLoadDataFile $varname $filename $dim
- }
- }
-}
-
-# used by backup
-proc PlotLoadDataFile {varname filename dim} {
- upvar #0 $varname var
- global $varname
-
- set ch [open $filename]
- set data [read $ch]
- close $ch
-
- PlotRaise $varname
-
- PlotDataSet $varname $dim $data
- $var(proc,updategraph) $varname
- PlotStats $varname
- PlotList $varname
-}
-
proc PlotNextColor {which} {
switch -- $which {
black {return red}
@@ -825,154 +564,6 @@ proc PlotRaise {varname} {
return 0
}
-proc PlotSaveConfig {varname} {
- upvar #0 $varname var
- global $varname
-
- PlotSaveConfigFile $varname [SaveFileDialog apconfigfbox]
-}
-
-proc PlotSaveConfigFile {varname filename} {
- upvar #0 $varname var
- global $varname
-
- if {$filename == {}} {
- return
- }
-
- set ch [open $filename w]
-
- set analysisplot(graph,bg) $var(graph,bg)
-
- set analysisplot(graph,title) $var(graph,title)
- set analysisplot(graph,title,family) $var(graph,title,family)
- set analysisplot(graph,title,size) $var(graph,title,size)
- set analysisplot(graph,title,weight) $var(graph,title,weight)
- set analysisplot(graph,title,slant) $var(graph,title,slant)
-
- set analysisplot(legend) $var(legend)
- set analysisplot(legend,title) $var(legend,title)
- set analysisplot(legend,position) $var(legend,position)
- set analysisplot(legend,title,family) $var(legend,title,family)
- set analysisplot(legend,title,size) $var(legend,title,size)
- set analysisplot(legend,title,weight) $var(legend,title,weight)
- set analysisplot(legend,title,slant) $var(legend,title,slant)
- set analysisplot(legend,font,family) $var(legend,font,family)
- set analysisplot(legend,font,size) $var(legend,font,size)
- set analysisplot(legend,font,weight) $var(legend,font,weight)
- set analysisplot(legend,font,slant) $var(legend,font,slant)
-
- set analysisplot(axis,x,title) $var(axis,x,title)
- set analysisplot(axis,x,grid) $var(axis,x,grid)
- set analysisplot(axis,x,log) $var(axis,x,log)
- set analysisplot(axis,x,flip) $var(axis,x,flip)
- set analysisplot(axis,x,auto) $var(axis,x,auto)
- set analysisplot(axis,x,min) $var(axis,x,min)
- set analysisplot(axis,x,max) $var(axis,x,max)
- set analysisplot(axis,x,format) $var(axis,x,format)
-
- set analysisplot(axis,y,title) $var(axis,y,title)
- set analysisplot(axis,y,grid) $var(axis,y,grid)
- set analysisplot(axis,y,log) $var(axis,y,log)
- set analysisplot(axis,y,flip) $var(axis,y,flip)
- set analysisplot(axis,y,auto) $var(axis,y,auto)
- set analysisplot(axis,y,min) $var(axis,y,min)
- set analysisplot(axis,y,max) $var(axis,y,max)
- set analysisplot(axis,y,format) $var(axis,y,format)
-
- set analysisplot(axis,title,family) $var(axis,title,family)
- set analysisplot(axis,title,size) $var(axis,title,size)
- set analysisplot(axis,title,weight) $var(axis,title,weight)
- set analysisplot(axis,title,slant) $var(axis,title,slant)
-
- set analysisplot(axis,font,family) $var(axis,font,family)
- set analysisplot(axis,font,size) $var(axis,font,size)
- set analysisplot(axis,font,weight) $var(axis,font,weight)
- set analysisplot(axis,font,slant) $var(axis,font,slant)
-
- set analysisplot(show) $var(show)
- set analysisplot(shape,symbol) $var(shape,symbol)
- set analysisplot(shape,fill) $var(shape,fill)
- set analysisplot(shape,color) $var(shape,color)
- set analysisplot(smooth) $var(smooth)
- set analysisplot(color) $var(color)
- set analysisplot(fill) $var(fill)
- set analysisplot(fill,color) $var(fill,color)
- set analysisplot(width) $var(width)
- set analysisplot(dash) $var(dash)
-
- set analysisplot(error) $var(error)
- set analysisplot(error,cap) $var(error,cap)
- set analysisplot(error,color) $var(error,color)
- set analysisplot(error,width) $var(error,width)
-
- set analysisplot(bar,relief) $var(bar,relief)
- set analysisplot(bar,mode) $var(bar,mode)
-
- puts $ch "array set analysisplot \{ [array get analysisplot] \}"
- close $ch
-}
-
-proc PlotSaveData {varname} {
- upvar #0 $varname var
- global $varname
-
- if {$var(xdata) == {}} {
- return
- }
-
- PlotSaveDataFile $varname [SaveFileDialog apdatafbox]
-}
-
-proc PlotSaveDataFile {varname filename} {
- upvar #0 $varname var
- global $varname
-
- if {$var(xdata) == {}} {
- return
- }
-
- if {$filename == {}} {
- return
- }
-
- global $var(xdata) $var(ydata) $var(xedata) $var(yedata)
- set ll [$var(xdata) length]
- set xx [$var(xdata) range]
- set yy [$var(ydata) range]
-
- set ch [open $filename w]
- switch $var(dim) {
- xy {
- for {set ii 0} {$ii<$ll} {incr ii} {
- puts $ch "[lindex $xx $ii] [lindex $yy $ii]"
- }
- }
- xyex {
- set xe [$var(xedata) range]
- for {set ii 0} {$ii<$ll} {incr ii} {
- puts $ch "[lindex $xx $ii] [lindex $yy $ii] [lindex $xe $ii]"
- }
- }
- xyey {
- set ye [$var(yedata) range]
- for {set ii 0} {$ii<$ll} {incr ii} {
- puts $ch "[lindex $xx $ii] [lindex $yy $ii] [lindex $ye $ii]"
- }
- }
- xyexey {
- set xe [$var(xedata) range]
- set ye [$var(yedata) range]
- for {set ii 0} {$ii<$ll} {incr ii} {
- puts $ch "[lindex $xx $ii] [lindex $yy $ii] [lindex $xe $ii] [lindex $ye $ii]"
- }
- }
- }
- close $ch
-
- PlotRaise $varname
-}
-
proc PlotStats {varname} {
upvar #0 $varname var
global $varname
@@ -990,6 +581,9 @@ proc PlotStatsGenerate {varname} {
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
set min {}
set max {}
set mean {}
@@ -997,14 +591,14 @@ proc PlotStatsGenerate {varname} {
set varr {}
set sdev {}
- if {$var(ydata) != {}} {
- if {[$var(ydata) length] > 0} {
- set min [format "%6.3f" [blt::vector expr min($var(ydata))]]
- set max [format "%6.3f" [blt::vector expr max($var(ydata))]]
- set mean [format "%6.3f" [blt::vector expr mean($var(ydata))]]
- set median [format "%6.3f" [blt::vector expr median($var(ydata))]]
- set varr [format "%6.3f" [expr [blt::vector expr var($var(ydata))]]]
- set sdev [format "%6.3f" [expr [blt::vector expr sdev($var(ydata))]]]
+ if {$var(graph$cc,ydata) != {}} {
+ if {[$var(graph$cc,ydata) length] > 0} {
+ set min [format "%6.3f" [blt::vector expr min($var(graph$cc,ydata))]]
+ set max [format "%6.3f" [blt::vector expr max($var(graph$cc,ydata))]]
+ set mean [format "%6.3f" [blt::vector expr mean($var(graph$cc,ydata))]]
+ set median [format "%6.3f" [blt::vector expr median($var(graph$cc,ydata))]]
+ set varr [format "%6.3f" [expr [blt::vector expr var($var(graph$cc,ydata))]]]
+ set sdev [format "%6.3f" [expr [blt::vector expr sdev($var(graph$cc,ydata))]]]
}
}
@@ -1029,6 +623,9 @@ proc PlotTitle {varname title xaxis yaxis} {
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
set var(graph,title) "$title"
set var(axis,x,title) "$xaxis"
set var(axis,y,title) "$yaxis"
@@ -1038,6 +635,9 @@ proc PlotUpdateGraph {varname} {
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
global ds9
if {$var(axis,x,auto)} {
@@ -1056,39 +656,39 @@ proc PlotUpdateGraph {varname} {
set ymax $var(axis,y,max)
}
- $var(graph) xaxis configure -min $xmin -max $xmax \
+ $var(graph$cc) xaxis configure -min $xmin -max $xmax \
-descending $var(axis,x,flip)
- $var(graph) yaxis configure -min $ymin -max $ymax \
+ $var(graph$cc) yaxis configure -min $ymin -max $ymax \
-descending $var(axis,y,flip)
if {$var(graph,format)} {
if {$var(axis,x,format) != {}} {
- $var(graph) xaxis configure \
+ $var(graph$cc) xaxis configure \
-command [list PlotAxisFormat $varname x]
} else {
- $var(graph) xaxis configure -command {}
+ $var(graph$cc) xaxis configure -command {}
}
if {$var(axis,y,format) != {}} {
- $var(graph) yaxis configure \
+ $var(graph$cc) yaxis configure \
-command [list PlotAxisFormat $varname y]
} else {
- $var(graph) yaxis configure -command {}
+ $var(graph$cc) yaxis configure -command {}
}
}
# Menus
- if {$var(xdata) != {}} {
+ if {$var(graph$cc,xdata) != {}} {
$var(mb).file entryconfig "[msgcat::mc {Save Data}]..." -state normal
$var(mb).file entryconfig [msgcat::mc {Clear Data}] -state normal
$var(mb).file entryconfig [msgcat::mc {Statistics}] -state normal
$var(mb).file entryconfig [msgcat::mc {List Data}] -state normal
- if {$var(1,manage)} {
+ if {$var(graph$cc,1,manage)} {
$var(mb).file entryconfig [msgcat::mc {Duplicate Data}] \
- -state disabled
+ -state normal
} else {
$var(mb).file entryconfig [msgcat::mc {Duplicate Data}] \
- -state normal
+ -state disable
}
} else {
$var(mb).file entryconfig "[msgcat::mc {Save Data}]..." -state disabled
@@ -1099,68 +699,39 @@ proc PlotUpdateGraph {varname} {
}
# Graph
- $var(graph) configure -plotpadx 0 -plotpady 0 \
+ $var(graph$cc) configure -plotpadx 0 -plotpady 0 \
-title $var(graph,title) \
-font "{$ds9($var(graph,title,family))} $var(graph,title,size) $var(graph,title,weight) $var(graph,title,slant)" \
-bg $var(graph,bg) -plotbackground $var(graph,bg)
- $var(graph) xaxis configure \
+ $var(graph$cc) xaxis configure \
-bg $var(graph,bg) \
-grid $var(axis,x,grid) -logscale $var(axis,x,log) \
-title $var(axis,x,title) \
-tickfont "{$ds9($var(axis,font,family))} $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
-titlefont "{$ds9($var(axis,title,family))} $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
- $var(graph) yaxis configure \
+ $var(graph$cc) yaxis configure \
-bg $var(graph,bg) \
-grid $var(axis,y,grid) -logscale $var(axis,y,log) \
-title $var(axis,y,title) \
-tickfont "{$ds9($var(axis,font,family))} $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
-titlefont "{$ds9($var(axis,title,family))} $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
- $var(graph) legend configure -hide [expr !$var(legend)] \
+ $var(graph$cc) legend configure -hide [expr !$var(legend)] \
-bg $var(graph,bg) \
-position $var(legend,position) -title $var(legend,title) \
-font "{$ds9($var(legend,font,family))} $var(legend,font,size) $var(legend,font,weight) $var(legend,font,slant)" \
-titlefont "{$ds9($var(legend,title,family))} $var(legend,title,size) $var(legend,title,weight) $var(legend,title,slant)"
}
-proc PlotCreateElement {varname} {
- upvar #0 $varname var
- global $varname
-
- # warning: uses current vars
- if {$var(data,total) == 0} {
- return
- }
-
- # delete current elements
- set nn $var(data,current)
- foreach el [$var(graph) element names] {
- set f [split $el -]
- if {[lindex $f 1] == $nn} {
- $var(graph) element delete $el
- }
- }
-
- global $var(xdata) $var(ydata)
- $var(graph) element create "d-${nn}" -xdata $var(xdata) -ydata $var(ydata)
- if {$var(xedata) != {}} {
- if {[$var(xedata) length] != 0} {
- $var(graph) element configure "d-${nn}" -xerror $var(xedata)
- }
- }
- if {$var(yedata) != {}} {
- if {[$var(yedata) length] != 0} {
- $var(graph) element configure "d-${nn}" -yerror $var(yedata)
- }
- }
-}
-
proc PlotColorMenu {w varname color cmd} {
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
menu $w
$w add radiobutton -label [msgcat::mc {Black}] \
-variable ${varname}($color) -value black -command $cmd
@@ -1187,44 +758,58 @@ proc PlotSetVar {varname nn} {
upvar #0 $varname var
global $varname
- set var(name) $var($nn,name)
- set var(show) $var($nn,show)
- set var(shape,symbol) $var($nn,shape,symbol)
- set var(shape,fill) $var($nn,shape,fill)
- set var(shape,color) $var($nn,shape,color)
- set var(smooth) $var($nn,smooth)
- set var(color) $var($nn,color)
- set var(fill) $var($nn,fill)
- set var(fill,color) $var($nn,fill,color)
- set var(width) $var($nn,width)
- set var(dash) $var($nn,dash)
- set var(error) $var($nn,error)
- set var(error,cap) $var($nn,error,cap)
- set var(error,color) $var($nn,error,color)
- set var(error,width) $var($nn,error,width)
- set var(bar,relief) $var($nn,bar,relief)
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ # per DataSet
+ set var(graph$cc,name) $var(graph$cc,$nn,name)
+ set var(graph$cc,show) $var(graph$cc,$nn,show)
+ set var(graph$cc,smooth) $var(graph$cc,$nn,smooth)
+ set var(graph$cc,color) $var(graph$cc,$nn,color)
+ set var(graph$cc,fill) $var(graph$cc,$nn,fill)
+ set var(graph$cc,fill,color) $var(graph$cc,$nn,fill,color)
+ set var(graph$cc,width) $var(graph$cc,$nn,width)
+ set var(graph$cc,dash) $var(graph$cc,$nn,dash)
+
+ set var(graph$cc,shape,symbol) $var(graph$cc,$nn,shape,symbol)
+ set var(graph$cc,shape,fill) $var(graph$cc,$nn,shape,fill)
+ set var(graph$cc,shape,color) $var(graph$cc,$nn,shape,color)
+
+ set var(graph$cc,error) $var(graph$cc,$nn,error)
+ set var(graph$cc,error,cap) $var(graph$cc,$nn,error,cap)
+ set var(graph$cc,error,color) $var(graph$cc,$nn,error,color)
+ set var(graph$cc,error,width) $var(graph$cc,$nn,error,width)
+
+ set var(graph$cc,bar,relief) $var(graph$cc,$nn,bar,relief)
}
proc PlotGetVar {varname nn} {
upvar #0 $varname var
global $varname
- set var($nn,name) $var(name)
- set var($nn,show) $var(show)
- set var($nn,shape,symbol) $var(shape,symbol)
- set var($nn,shape,fill) $var(shape,fill)
- set var($nn,shape,color) $var(shape,color)
- set var($nn,smooth) $var(smooth)
- set var($nn,color) $var(color)
- set var($nn,fill) $var(fill)
- set var($nn,fill,color) $var(fill,color)
- set var($nn,width) $var(width)
- set var($nn,dash) $var(dash)
- set var($nn,error) $var(error)
- set var($nn,error,cap) $var(error,cap)
- set var($nn,error,color) $var(error,color)
- set var($nn,error,width) $var(error,width)
- set var($nn,bar,relief) $var(bar,relief)
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ # per DataSet
+ set var(graph$cc,$nn,name) $var(graph$cc,name)
+ set var(graph$cc,$nn,show) $var(graph$cc,show)
+ set var(graph$cc,$nn,smooth) $var(graph$cc,smooth)
+ set var(graph$cc,$nn,color) $var(graph$cc,color)
+ set var(graph$cc,$nn,fill) $var(graph$cc,fill)
+ set var(graph$cc,$nn,fill,color) $var(graph$cc,fill,color)
+ set var(graph$cc,$nn,width) $var(graph$cc,width)
+ set var(graph$cc,$nn,dash) $var(graph$cc,dash)
+
+ set var(graph$cc,$nn,shape,symbol) $var(graph$cc,shape,symbol)
+ set var(graph$cc,$nn,shape,fill) $var(graph$cc,shape,fill)
+ set var(graph$cc,$nn,shape,color) $var(graph$cc,shape,color)
+
+ set var(graph$cc,$nn,error) $var(graph$cc,error)
+ set var(graph$cc,$nn,error,cap) $var(graph$cc,error,cap)
+ set var(graph$cc,$nn,error,color) $var(graph$cc,error,color)
+ set var(graph$cc,$nn,error,width) $var(graph$cc,error,width)
+
+ set var(graph$cc,$nn,bar,relief) $var(graph$cc,bar,relief)
}
proc PlotBackup {ch dir} {
@@ -1233,14 +818,17 @@ proc PlotBackup {ch dir} {
set rdir "./[lindex [file split $dir] end]"
# only save ap plots
- foreach tt $iap(windows) {
- if {[string range $tt 0 1] == {ap}} {
- set fdir [file join $dir $tt]
+ foreach ww $iap(windows) {
+ if {[string range $ww 0 1] == {ap}} {
+ set fdir [file join $dir $ww]
- set varname $tt
+ set varname $ww
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
# create dir if needed
if {![file isdirectory $fdir]} {
if {[catch {file mkdir $fdir}]} {
@@ -1249,24 +837,25 @@ proc PlotBackup {ch dir} {
}
}
- switch $var(type) {
+ switch $var(graph$cc,type) {
line {puts $ch "PlotLineTool"}
bar {puts $ch "PlotBarTool"}
scatter {puts $ch "PlotScatterTool"}
+ strip {puts $ch "PlotStripTool"}
}
- set save $var(data,current)
- for {set ii 1} {$ii<=$var(data,total)} {incr ii} {
- set ${varname}(data,current) $ii
+ set save $var(graph$cc,data,current)
+ for {set ii 1} {$ii<=$var(graph$cc,data,total)} {incr ii} {
+ set ${varname}(graph$cc,data,current) $ii
PlotCurrentData $varname
PlotSaveDataFile $varname "$fdir/plot$ii.dat"
PlotSaveConfigFile $varname "$fdir/plot$ii.plt"
- puts $ch "PlotLoadDataFile $varname $fdir/plot$ii.dat $var(dim)"
+ puts $ch "PlotLoadDataFile $varname $fdir/plot$ii.dat $var(graph$cc,dim)"
puts $ch "PlotLoadConfigFile $varname $fdir/plot$ii.plt"
}
- set ${varname}(data,current) $save
+ set ${varname}(graph$cc,data,current) $save
PlotCurrentData $varname
}
}
diff --git a/ds9/library/plotbar.tcl b/ds9/library/plotbar.tcl
index 3a1a75c..d9d12ae 100644
--- a/ds9/library/plotbar.tcl
+++ b/ds9/library/plotbar.tcl
@@ -7,6 +7,7 @@ package provide DS9 1.0
# used by backup
proc PlotBarTool {} {
global iap
+
PlotBar $iap(tt) [msgcat::mc {Bar Plot Tool}] {} {} {} 2 {}
}
@@ -29,10 +30,8 @@ proc PlotBar {tt wtt title xaxis yaxis dim data} {
upvar #0 $varname var
global $varname
- PlotBarProc $varname
- PlotDialog $varname $wtt $title $xaxis $yaxis
- PlotDialogBar $varname
-
+ PlotBarDialog $varname $wtt $title $xaxis $yaxis
+
PlotDataSet $varname $dim $data
$var(proc,updategraph) $varname
PlotStats $varname
@@ -43,26 +42,17 @@ proc PlotBarDialog {varname wtt title xaxis yaxis} {
upvar #0 $varname var
global $varname
- PlotBarProc $varname
- PlotDialog $varname $wtt $title $xaxis $yaxis
- PlotDialogBar $varname
-}
-
-proc PlotBarProc {varname} {
- upvar #0 $varname var
- global $varname
-
+ set var(proc,addgraph) PlotBarAddGraph
set var(proc,updategraph) PlotBarUpdateGraph
set var(proc,updateelement) PlotBarUpdateElement
set var(proc,highlite) PlotBarHighliteElement
set var(proc,button) PlotBarButton
-}
-proc PlotDialogBar {varname} {
- upvar #0 $varname var
- global $varname
+ PlotDialog $varname $wtt $title $xaxis $yaxis
+ PlotAddGraph $varname
- global ds9
+ set tt $var(graph,total)
+ set cc $var(graph,current)
# Graph
$var(mb).graph add separator
@@ -84,80 +74,77 @@ proc PlotDialogBar {varname} {
-variable ${varname}(bar,mode) -value overlap \
-command [list $var(proc,updategraph) $varname]
- # Dataset
- $var(mb).dataset add checkbutton -label [msgcat::mc {Show}] \
- -variable ${varname}(show) \
+ # Data
+ $var(mb).data add checkbutton -label [msgcat::mc {Show}] \
+ -variable ${varname}(graph$cc,show) \
-command [list PlotBarUpdateElement $varname]
- $var(mb).dataset add separator
- $var(mb).dataset add cascade -label [msgcat::mc {Color}] \
- -menu $var(mb).dataset.color
- $var(mb).dataset add cascade -label [msgcat::mc {Relief}] \
- -menu $var(mb).dataset.relief
- $var(mb).dataset add cascade -label [msgcat::mc {Error}] \
- -menu $var(mb).dataset.error
- $var(mb).dataset add separator
- $var(mb).dataset add command -label "[msgcat::mc {Name}]..." \
+ $var(mb).data add separator
+ $var(mb).data add cascade -label [msgcat::mc {Color}] \
+ -menu $var(mb).data.color
+ $var(mb).data add cascade -label [msgcat::mc {Relief}] \
+ -menu $var(mb).data.relief
+ $var(mb).data add cascade -label [msgcat::mc {Error}] \
+ -menu $var(mb).data.error
+ $var(mb).data add separator
+ $var(mb).data add command -label "[msgcat::mc {Name}]..." \
-command [list DatasetNameDialog $varname]
- PlotColorMenu $var(mb).dataset.color $varname color \
+ PlotColorMenu $var(mb).data.color $varname graph$cc,color \
[list PlotBarUpdateElement $varname]
# Relief
- menu $var(mb).dataset.relief
- $var(mb).dataset.relief add radiobutton -label [msgcat::mc {Flat}] \
- -variable ${varname}(bar,relief) -value flat \
+ menu $var(mb).data.relief
+ $var(mb).data.relief add radiobutton -label [msgcat::mc {Flat}] \
+ -variable ${varname}(graph$cc,bar,relief) -value flat \
-command [list PlotBarUpdateElement $varname]
- $var(mb).dataset.relief add radiobutton -label [msgcat::mc {Sunken}] \
- -variable ${varname}(bar,relief) -value sunken \
+ $var(mb).data.relief add radiobutton -label [msgcat::mc {Sunken}] \
+ -variable ${varname}(graph$cc,bar,relief) -value sunken \
-command [list PlotBarUpdateElement $varname]
- $var(mb).dataset.relief add radiobutton -label [msgcat::mc {Raised}] \
- -variable ${varname}(bar,relief) -value raised \
+ $var(mb).data.relief add radiobutton -label [msgcat::mc {Raised}] \
+ -variable ${varname}(graph$cc,bar,relief) -value raised \
-command [list PlotBarUpdateElement $varname]
- $var(mb).dataset.relief add radiobutton -label [msgcat::mc {Solid}] \
- -variable ${varname}(bar,relief) -value solid \
+ $var(mb).data.relief add radiobutton -label [msgcat::mc {Solid}] \
+ -variable ${varname}(graph$cc,bar,relief) -value solid \
-command [list PlotBarUpdateElement $varname]
- $var(mb).dataset.relief add radiobutton -label [msgcat::mc {Groove}] \
- -variable ${varname}(bar,relief) -value groove \
+ $var(mb).data.relief add radiobutton -label [msgcat::mc {Groove}] \
+ -variable ${varname}(graph$cc,bar,relief) -value groove \
-command [list PlotBarUpdateElement $varname]
# Error
- menu $var(mb).dataset.error
- $var(mb).dataset.error add checkbutton -label [msgcat::mc {Show}] \
- -variable ${varname}(error) \
+ menu $var(mb).data.error
+ $var(mb).data.error add checkbutton -label [msgcat::mc {Show}] \
+ -variable ${varname}(graph$cc,error) \
-command [list PlotBarUpdateElement $varname]
- $var(mb).dataset.error add checkbutton -label [msgcat::mc {Cap}] \
- -variable ${varname}(error,cap) \
+ $var(mb).data.error add checkbutton -label [msgcat::mc {Cap}] \
+ -variable ${varname}(graph$cc,error,cap) \
-command [list PlotBarUpdateElement $varname]
- $var(mb).dataset.error add separator
- $var(mb).dataset.error add cascade -label [msgcat::mc {Color}] \
- -menu $var(mb).dataset.error.color
- $var(mb).dataset.error add cascade -label [msgcat::mc {Width}] \
- -menu $var(mb).dataset.error.width
+ $var(mb).data.error add separator
+ $var(mb).data.error add cascade -label [msgcat::mc {Color}] \
+ -menu $var(mb).data.error.color
+ $var(mb).data.error add cascade -label [msgcat::mc {Width}] \
+ -menu $var(mb).data.error.width
- PlotColorMenu $var(mb).dataset.error.color $varname error,color \
+ PlotColorMenu $var(mb).data.error.color $varname graph$cc,error,color \
[list PlotBarUpdateElement $varname]
- WidthDashMenu $var(mb).dataset.error.width $varname error,width {} \
+ WidthDashMenu $var(mb).data.error.width $varname graph$cc,error,width {} \
[list PlotBarUpdateElement $varname] {}
+}
- # graph
- set var(type) bar
- set var(graph) [blt::barchart $var(top).bar \
- -width 600 \
- -height 500 \
- -highlightthickness 0 \
- ]
+proc PlotBarAddGraph {varname} {
+ upvar #0 $varname var
+ global $varname
- $var(graph) xaxis configure -grid no -stepsize 0
- $var(graph) yaxis configure -grid yes
+ set cc $var(graph,current)
- pack $var(graph) -expand yes -fill both
+ set var(type$cc) bar
+ set var(graph$cc) [blt::barchart $var(canvas).gr$cc \
+ -width 600 \
+ -height 500 \
+ -highlightthickness 0 \
+ ]
- # set up zoom stack, assuming mode is zoom
- switch $ds9(wm) {
- x11 -
- win32 {Blt_ZoomStack $var(graph) -mode release}
- aqua {Blt_ZoomStack $var(graph) -mode release -button "ButtonPress-2"}
- }
+ $var(graph$cc) xaxis configure -grid no -stepsize 0
+ $var(graph$cc) yaxis configure -grid yes
}
proc PlotBarUpdateGraph {varname} {
@@ -165,33 +152,47 @@ proc PlotBarUpdateGraph {varname} {
global $varname
PlotUpdateGraph $varname
- $var(graph) configure -barmode $var(bar,mode)
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ for {set ii 1} {$ii<=$tt} {incr ii} {
+ $var(graph$ii) configure -barmode $var(bar,mode)
+ }
}
proc PlotBarUpdateElement {varname} {
upvar #0 $varname var
global $varname
- set nn $var(data,current)
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ # warning: uses current vars
+ if {$var(graph$cc,data,total) == 0} {
+ return
+ }
+
+ set nn $var(graph$cc,data,current)
PlotGetVar $varname $nn
- if {$var(error)} {
+ if {$var(graph$cc,error)} {
set show both
} else {
set show none
}
- if {$var(error,cap)} {
- set cap [expr $var(error,width)+3]
+ if {$var(graph$cc,error,cap)} {
+ set cap [expr $var(graph$cc,error,width)+3]
} else {
set cap 0
}
- $var(graph) element configure "d-${nn}" \
- -label $var(name) -hide [expr !$var(show)] \
- -relief $var(bar,relief) -color $var(color) \
- -showerrorbars $show -errorbarcolor $var(error,color) \
- -errorbarwidth $var(error,width) -errorbarcap $cap
+ $var(graph$cc) element configure "d-${nn}" \
+ -label $var(graph$cc,name) -hide [expr !$var(graph$cc,show)] \
+ -relief $var(graph$cc,bar,relief) -color $var(graph$cc,color) \
+ -showerrorbars $show -errorbarcolor $var(graph$cc,error,color) \
+ -errorbarwidth $var(graph$cc,error,width) -errorbarcap $cap
}
proc PlotBarButton {varname x y} {
diff --git a/ds9/library/plotconfig.tcl b/ds9/library/plotconfig.tcl
new file mode 100644
index 0000000..085faaa
--- /dev/null
+++ b/ds9/library/plotconfig.tcl
@@ -0,0 +1,287 @@
+# Copyright (C) 1999-2018
+# Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+# For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc PlotLoadConfig {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ PlotLoadConfigFile $varname [OpenFileDialog apconfigfbox]
+}
+
+# used by backup
+proc PlotLoadConfigFile {varname filename} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ if {$filename == {}} {
+ return
+ }
+
+ source $filename
+ # array set $varname [array get analysisplot]
+
+ set var(graph,bg) $analysisplot(graph,bg)
+
+ set var(graph,title) $analysisplot(graph,title)
+ set var(graph,title,family) $analysisplot(graph,title,family)
+ set var(graph,title,size) $analysisplot(graph,title,size)
+ set var(graph,title,weight) $analysisplot(graph,title,weight)
+ set var(graph,title,slant) $analysisplot(graph,title,slant)
+
+ set var(legend) $analysisplot(legend)
+ set var(legend,title) $analysisplot(legend,title)
+ set var(legend,position) $analysisplot(legend,position)
+ set var(legend,title,family) $analysisplot(legend,title,family)
+ set var(legend,title,size) $analysisplot(legend,title,size)
+ set var(legend,title,weight) $analysisplot(legend,title,weight)
+ set var(legend,title,slant) $analysisplot(legend,title,slant)
+ set var(legend,font,family) $analysisplot(legend,font,family)
+ set var(legend,font,size) $analysisplot(legend,font,size)
+ set var(legend,font,weight) $analysisplot(legend,font,weight)
+ set var(legend,font,slant) $analysisplot(legend,font,slant)
+
+ set var(axis,x,title) $analysisplot(axis,x,title)
+ set var(axis,x,grid) $analysisplot(axis,x,grid)
+ set var(axis,x,log) $analysisplot(axis,x,log)
+ set var(axis,x,flip) $analysisplot(axis,x,flip)
+ set var(axis,x,auto) $analysisplot(axis,x,auto)
+ set var(axis,x,min) $analysisplot(axis,x,min)
+ set var(axis,x,max) $analysisplot(axis,x,max)
+ set var(axis,x,format) $analysisplot(axis,x,format)
+
+ set var(axis,y,title) $analysisplot(axis,y,title)
+ set var(axis,y,grid) $analysisplot(axis,y,grid)
+ set var(axis,y,log) $analysisplot(axis,y,log)
+ set var(axis,y,flip) $analysisplot(axis,y,flip)
+ set var(axis,y,auto) $analysisplot(axis,y,auto)
+ set var(axis,y,min) $analysisplot(axis,y,min)
+ set var(axis,y,max) $analysisplot(axis,y,max)
+ set var(axis,y,format) $analysisplot(axis,y,format)
+
+ set var(axis,title,family) $analysisplot(axis,title,family)
+ set var(axis,title,size) $analysisplot(axis,title,size)
+ set var(axis,title,weight) $analysisplot(axis,title,weight)
+ set var(axis,title,slant) $analysisplot(axis,title,slant)
+
+ set var(axis,font,family) $analysisplot(axis,font,family)
+ set var(axis,font,size) $analysisplot(axis,font,size)
+ set var(axis,font,weight) $analysisplot(axis,font,weight)
+ set var(axis,font,slant) $analysisplot(axis,font,slant)
+
+ set var(graph$cc,show) $analysisplot(show)
+ set var(graph$cc,smooth) $analysisplot(smooth)
+ set var(graph$cc,color) $analysisplot(color)
+ set var(graph$cc,fill) $analysisplot(fill)
+ set var(graph$cc,fill,color) $analysisplot(fill,color)
+ set var(graph$cc,width) $analysisplot(width)
+ set var(graph$cc,dash) $analysisplot(dash)
+
+ set var(graph$cc,shape,symbol) $analysisplot(shape,symbol)
+ set var(graph$cc,shape,fill) $analysisplot(shape,fill)
+ set var(graph$cc,shape,color) $analysisplot(shape,color)
+
+ set var(graph$cc,error) $analysisplot(error)
+ set var(graph$cc,error,cap) $analysisplot(error,cap)
+ set var(graph$cc,error,color) $analysisplot(error,color)
+ set var(graph$cc,error,width) $analysisplot(error,width)
+
+ set var(graph$cc,bar,relief) $analysisplot(bar,relief)
+ set var(graph$cc,bar,mode) $analysisplot(bar,mode)
+
+ unset analysisplot
+
+ # backward compatibility
+ FixVar ${varname}(axis,x,grid) ${varname}(graph,x,grid)
+ FixVar ${varname}(axis,x,log) ${varname}(graph,x,log)
+ FixVar ${varname}(axis,x,flip) ${varname}(graph,x,flip)
+ FixVar ${varname}(axis,y,grid) ${varname}(graph,y,grid)
+ FixVar ${varname}(axis,y,log) ${varname}(graph,y,log)
+ FixVar ${varname}(axis,y,flip) ${varname}(graph,y,flip)
+
+ FixVar ${varname}(graph,title,family) ${varname}(titleFont)
+ FixVar ${varname}(graph,title,size) ${varname}(titleSize)
+ FixVar ${varname}(graph,title,weight) ${varname}(titleWeight)
+ FixVar ${varname}(graph,title,slant) ${varname}(titleSlant)
+
+ FixVar ${varname}(axis,title,family) ${varname}(textlabFont)
+ FixVar ${varname}(axis,title,size) ${varname}(textlabSize)
+ FixVar ${varname}(axis,title,weight) ${varname}(textlabWeight)
+ FixVar ${varname}(axis,title,slant) ${varname}(textlabSlant)
+
+ FixVar ${varname}(axis,font,family) ${varname}(numlabFont)
+ FixVar ${varname}(axis,font,size) ${varname}(numlabSize)
+ FixVar ${varname}(axis,font,weight) ${varname}(numlabWeight)
+ FixVar ${varname}(axis,font,slant) ${varname}(numlabSlant)
+
+ FixVar ${varname}(graph$cc,show) ${varname}(linear)
+ FixVar ${varname}(graph$cc,shape,color) ${varname}(discrete,color)
+ FixVar ${varname}(graph$cc,shape,fill) ${varname}(discrete,fill)
+ FixVar ${varname}(graph$cc,width) ${varname}(linear,width)
+ FixVar ${varname}(graph$cc,color) ${varname}(linear,color)
+ if {[info exists ${varname}(linear,dash)]} {
+ set var(linear,dash) [FromYesNo $var(linear,dash)]
+ }
+ FixVar ${varname}(graph$cc,dash) ${varname}(linear,dash)
+
+ if {[info exists ${varname}(discrete)]} {
+ if {$var(discrete)} {
+ FixVar ${varname}(graph$cc,shape,symbol) \
+ ${varname}(discrete,symbol)
+ } else {
+ FixVarRm ${varname}(discrete,symbol)
+ }
+ }
+
+ FixVarRm ${varname}(bar)
+ FixVarRm ${varname}(bar,color)
+
+ FixVarRm ${varname}(discrete)
+
+ FixVarRm ${varname}(quadratic)
+ FixVarRm ${varname}(quadratic,width)
+ FixVarRm ${varname}(quadratic,color)
+ FixVarRm ${varname}(quadratic,dash)
+
+ FixVarRm ${varname}(step)
+ FixVarRm ${varname}(step,color)
+ FixVarRm ${varname}(step,dash)
+ FixVarRm ${varname}(step,width)
+
+ if {[info exists var(grid)]} {
+ set var(axis,x,grid) $var(grid)
+ set var(axis,y,grid) $var(grid)
+ unset var(grid)
+ }
+ if {[info exists var(format)]} {
+ set var(graph,format) $var(format)
+ set var(axis,x,format) $var(format,x)
+ set var(axis,y,format) $var(format,y)
+ unset var(format)
+ unset var(format,x)
+ unset var(format,y)
+ }
+
+ if {[info exists var(grid,log)]} {
+ switch $var(grid,log) {
+ linearlinear {
+ set var(axis,x,log) 0
+ set var(axis,y,log) 0
+ }
+ linearlog {
+ set var(axis,x,log) 0
+ set var(axis,y,log) 1
+ }
+ loglinear {
+ set var(axis,x,log) 1
+ set var(axis,y,log) 0
+ }
+ loglog {
+ set var(axis,x,log) 1
+ set var(axis,y,log) 1
+ }
+ }
+ unset var(grid,log)
+ }
+
+ $var(proc,updategraph) $varname
+ $var(proc,updateelement) $varname
+}
+
+proc PlotSaveConfig {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ PlotSaveConfigFile $varname [SaveFileDialog apconfigfbox]
+}
+
+proc PlotSaveConfigFile {varname filename} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ if {$filename == {}} {
+ return
+ }
+
+ set ch [open $filename w]
+
+ set analysisplot(graph,bg) $var(graph,bg)
+
+ set analysisplot(graph,title) $var(graph,title)
+ set analysisplot(graph,title,family) $var(graph,title,family)
+ set analysisplot(graph,title,size) $var(graph,title,size)
+ set analysisplot(graph,title,weight) $var(graph,title,weight)
+ set analysisplot(graph,title,slant) $var(graph,title,slant)
+
+ set analysisplot(legend) $var(legend)
+ set analysisplot(legend,title) $var(legend,title)
+ set analysisplot(legend,position) $var(legend,position)
+ set analysisplot(legend,title,family) $var(legend,title,family)
+ set analysisplot(legend,title,size) $var(legend,title,size)
+ set analysisplot(legend,title,weight) $var(legend,title,weight)
+ set analysisplot(legend,title,slant) $var(legend,title,slant)
+ set analysisplot(legend,font,family) $var(legend,font,family)
+ set analysisplot(legend,font,size) $var(legend,font,size)
+ set analysisplot(legend,font,weight) $var(legend,font,weight)
+ set analysisplot(legend,font,slant) $var(legend,font,slant)
+
+ set analysisplot(axis,x,title) $var(axis,x,title)
+ set analysisplot(axis,x,grid) $var(axis,x,grid)
+ set analysisplot(axis,x,log) $var(axis,x,log)
+ set analysisplot(axis,x,flip) $var(axis,x,flip)
+ set analysisplot(axis,x,auto) $var(axis,x,auto)
+ set analysisplot(axis,x,min) $var(axis,x,min)
+ set analysisplot(axis,x,max) $var(axis,x,max)
+ set analysisplot(axis,x,format) $var(axis,x,format)
+
+ set analysisplot(axis,y,title) $var(axis,y,title)
+ set analysisplot(axis,y,grid) $var(axis,y,grid)
+ set analysisplot(axis,y,log) $var(axis,y,log)
+ set analysisplot(axis,y,flip) $var(axis,y,flip)
+ set analysisplot(axis,y,auto) $var(axis,y,auto)
+ set analysisplot(axis,y,min) $var(axis,y,min)
+ set analysisplot(axis,y,max) $var(axis,y,max)
+ set analysisplot(axis,y,format) $var(axis,y,format)
+
+ set analysisplot(axis,title,family) $var(axis,title,family)
+ set analysisplot(axis,title,size) $var(axis,title,size)
+ set analysisplot(axis,title,weight) $var(axis,title,weight)
+ set analysisplot(axis,title,slant) $var(axis,title,slant)
+
+ set analysisplot(axis,font,family) $var(axis,font,family)
+ set analysisplot(axis,font,size) $var(axis,font,size)
+ set analysisplot(axis,font,weight) $var(axis,font,weight)
+ set analysisplot(axis,font,slant) $var(axis,font,slant)
+
+ set analysisplot(show) $var(graph$cc,show)
+ set analysisplot(smooth) $var(graph$cc,smooth)
+ set analysisplot(color) $var(graph$cc,color)
+ set analysisplot(fill) $var(graph$cc,fill)
+ set analysisplot(fill,color) $var(graph$cc,fill,color)
+ set analysisplot(width) $var(graph$cc,width)
+ set analysisplot(dash) $var(graph$cc,dash)
+
+ set analysisplot(shape,symbol) $var(graph$cc,shape,symbol)
+ set analysisplot(shape,fill) $var(graph$cc,shape,fill)
+ set analysisplot(shape,color) $var(graph$cc,shape,color)
+
+ set analysisplot(error) $var(graph$cc,error)
+ set analysisplot(error,cap) $var(graph$cc,error,cap)
+ set analysisplot(error,color) $var(graph$cc,error,color)
+ set analysisplot(error,width) $var(graph$cc,error,width)
+
+ set analysisplot(bar,relief) $var(graph$cc,bar,relief)
+ set analysisplot(bar,mode) $var(graph$cc,bar,mode)
+
+ puts $ch "array set analysisplot \{ [array get analysisplot] \}"
+ close $ch
+}
+
diff --git a/ds9/library/plotdata.tcl b/ds9/library/plotdata.tcl
new file mode 100644
index 0000000..025447e
--- /dev/null
+++ b/ds9/library/plotdata.tcl
@@ -0,0 +1,428 @@
+# Copyright (C) 1999-2018
+# Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+# For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc PlotLoadData {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set filename [OpenFileDialog apdatafbox]
+ if {$filename != {}} {
+ set dim xy
+ if {[PlotDataFormatDialog dim]} {
+ PlotLoadDataFile $varname $filename $dim
+ }
+ }
+}
+
+# used by backup
+proc PlotLoadDataFile {varname filename dim} {
+ upvar #0 $varname var
+ global $varname
+
+ set ch [open $filename]
+ set data [read $ch]
+ close $ch
+
+ PlotRaise $varname
+
+ PlotDataSet $varname $dim $data
+ $var(proc,updategraph) $varname
+ PlotStats $varname
+ PlotList $varname
+}
+
+proc PlotSaveData {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ if {$var(graph$cc,xdata) == {}} {
+ return
+ }
+
+ PlotSaveDataFile $varname [SaveFileDialog apdatafbox]
+}
+
+proc PlotSaveDataFile {varname filename} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ if {$var(graph$cc,xdata) == {}} {
+ return
+ }
+
+ if {$filename == {}} {
+ return
+ }
+
+ global $var(graph$cc,xdata) $var(graph$cc,ydata) \
+ $var(graph$cc,xedata) $var(graph$cc,yedata)
+ set ll [$var(graph$cc,xdata) length]
+ set xx [$var(graph$cc,xdata) range]
+ set yy [$var(graph$cc,ydata) range]
+
+ set ch [open $filename w]
+ switch $var(graph$cc,dim) {
+ xy {
+ for {set ii 0} {$ii<$ll} {incr ii} {
+ puts $ch "[lindex $xx $ii] [lindex $yy $ii]"
+ }
+ }
+ xyex {
+ set xe [$var(graph$cc,xedata) range]
+ for {set ii 0} {$ii<$ll} {incr ii} {
+ puts $ch "[lindex $xx $ii] [lindex $yy $ii] [lindex $xe $ii]"
+ }
+ }
+ xyey {
+ set ye [$var(graph$cc,yedata) range]
+ for {set ii 0} {$ii<$ll} {incr ii} {
+ puts $ch "[lindex $xx $ii] [lindex $yy $ii] [lindex $ye $ii]"
+ }
+ }
+ xyexey {
+ set xe [$var(graph$cc,xedata) range]
+ set ye [$var(graph$cc,yedata) range]
+ for {set ii 0} {$ii<$ll} {incr ii} {
+ puts $ch "[lindex $xx $ii] [lindex $yy $ii] [lindex $xe $ii] [lindex $ye $ii]"
+ }
+ }
+ }
+ close $ch
+
+ PlotRaise $varname
+}
+
+proc PlotDataSet {varname dim data} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ switch -- $dim {
+ 4 {
+ # first data set
+ PlotDataSetOne $varname "4.1" $data
+
+ # set color
+ set col $var(graph$cc,color)
+ set var(graph$cc,color) [PlotNextColor $var(graph$cc,color)]
+
+ # second data set
+ PlotDataSetOne $varname "4.2" $data
+ set var(graph$cc,color) $col
+ }
+ 5 {
+ # first data set
+ PlotDataSetOne $varname "5.1" $data
+
+ # set color
+ set col $var(graph$cc,color)
+ set var(graph$cc,color) [PlotNextColor $var(graph$cc,color)]
+
+ # second data set
+ PlotDataSetOne $varname "5.2" $data
+ set var(graph$cc,color) $col
+ }
+ default {PlotDataSetOne $varname $dim $data}
+ }
+}
+
+proc PlotDataSetOne {varname dim data} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ # look for no data
+ if {[string length $data] == 0} {
+ return
+ }
+
+ # total length
+ set ll [llength $data]
+
+ # incr count
+ incr ${varname}(graph$cc,data,total)
+ set nn $var(graph$cc,data,total)
+ set var(graph$cc,data,current) $nn
+
+ # new vector names
+ set xdata ap${varname}xx${nn}
+ set ydata ap${varname}yy${nn}
+ set xedata ap${varname}xe${nn}
+ set yedata ap${varname}ye${nn}
+
+ # basics xy
+ set var(graph$cc,manage) 1
+ set var(graph$cc,name) "Dataset $nn"
+ set var(graph$cc,xdata) $xdata
+ set var(graph$cc,ydata) $ydata
+ global $var(graph$cc,xdata) $var(graph$cc,ydata)
+ blt::vector create $var(graph$cc,xdata) $var(graph$cc,ydata)
+
+ # substitute all separtors
+ regsub -all {[\n\r\t, ]+} $data { } data
+ # remove all non-numeric data
+ regsub -all {[^0-9.e\- ]+} $data {} data
+
+ set x {}
+ set y {}
+ set xe {}
+ set ye {}
+ switch -- $dim {
+ 2 -
+ xy {
+ set var(graph$cc,dim) xy
+ set var(graph$cc,xedata) {}
+ set var(graph$cc,yedata) {}
+
+ for {set ii 0} {$ii<$ll} {incr ii 2} {
+ lappend x [lindex $data $ii]
+ lappend y [lindex $data [expr $ii+1]]
+ }
+ $var(graph$cc,xdata) set $x
+ $var(graph$cc,ydata) set $y
+ }
+
+ xyex {
+ set var(graph$cc,dim) xyex
+ set var(graph$cc,xedata) $xedata
+ set var(graph$cc,yedata) {}
+
+ global $var(graph$cc,xedata)
+ blt::vector create $var(graph$cc,xedata)
+
+ for {set ii 0} {$ii<$ll} {incr ii 3} {
+ lappend x [lindex $data $ii]
+ lappend y [lindex $data [expr $ii+1]]
+ lappend xe [lindex $data [expr $ii+2]]
+ }
+ $var(graph$cc,xdata) set $x
+ $var(graph$cc,ydata) set $y
+ $var(graph$cc,xedata) set $xe
+ }
+
+ 3 -
+ xyey {
+ set var(graph$cc,dim) xyey
+ set var(graph$cc,xedata) {}
+ set var(graph$cc,yedata) $yedata
+
+ global $var(graph$cc,yedata)
+ blt::vector create $var(graph$cc,yedata)
+
+ for {set ii 0} {$ii<$ll} {incr ii 3} {
+ lappend x [lindex $data $ii]
+ lappend y [lindex $data [expr $ii+1]]
+ lappend ye [lindex $data [expr $ii+2]]
+ }
+ $var(graph$cc,xdata) set $x
+ $var(graph$cc,ydata) set $y
+ $var(graph$cc,yedata) set $ye
+ }
+
+ xyexey {
+ set var(graph$cc,dim) xyexey
+ set var(graph$cc,xedata) $xedata
+ set var(graph$cc,yedata) $yedata
+
+ global $var(graph$cc,xedata) $var(graph$cc,yedata)
+ blt::vector create $var(graph$cc,xedata) $var(graph$cc,yedata)
+
+ for {set ii 0} {$ii<$ll} {incr ii 4} {
+ lappend x [lindex $data $ii]
+ lappend y [lindex $data [expr $ii+1]]
+ lappend xe [lindex $data [expr $ii+2]]
+ lappend ye [lindex $data [expr $ii+3]]
+ }
+ $var(graph$cc,xdata) set $x
+ $var(graph$cc,ydata) set $y
+ $var(graph$cc,xedata) set $xe
+ $var(graph$cc,yedata) set $ye
+ }
+
+ 4.1 {
+ set var(graph$cc,dim) xyey
+ set var(graph$cc,xedata) {}
+ set var(graph$cc,yedata) $yedata
+
+ global $var(graph$cc,yedata)
+ blt::vector create $var(graph$cc,yedata)
+
+ for {set ii 0} {$ii<$ll} {incr ii 4} {
+ lappend x [lindex $data $ii]
+ lappend y [lindex $data [expr $ii+1]]
+ lappend ye [lindex $data [expr $ii+2]]
+ }
+ $var(graph$cc,xdata) set $x
+ $var(graph$cc,ydata) set $y
+ $var(graph$cc,yedata) set $ye
+ }
+
+ 4.2 {
+ set var(graph$cc,dim) xy
+ set var(graph$cc,xedata) {}
+ set var(graph$cc,yedata) {}
+
+ for {set ii 0} {$ii<$ll} {incr ii 4} {
+ lappend x [lindex $data $ii]
+ lappend y [lindex $data [expr $ii+3]]
+ }
+ $var(graph$cc,xdata) set $x
+ $var(graph$cc,ydata) set $y
+ }
+
+ 5.1 {
+ set var(graph$cc,dim) xyey
+ set var(graph$cc,xedata) {}
+ set var(graph$cc,yedata) $yedata
+
+ global $var(graph$cc,yedata)
+ blt::vector create $var(graph$cc,yedata)
+
+ for {set ii 0} {$ii<$ll} {incr ii 5} {
+ lappend x [lindex $data $ii]
+ lappend y [lindex $data [expr $ii+1]]
+ lappend ye [lindex $data [expr $ii+2]]
+ }
+ $var(graph$cc,xdata) set $x
+ $var(graph$cc,ydata) set $y
+ $var(graph$cc,yedata) set $ye
+ }
+
+ 5.2 {
+ set var(graph$cc,dim) xyey
+ set var(graph$cc,xedata) {}
+ set var(graph$cc,yedata) $yedata
+
+ global $var(graph$cc,yedata)
+ blt::vector create $var(graph$cc,yedata)
+
+ for {set ii 0} {$ii<$ll} {incr ii 5} {
+ lappend x [lindex $data $ii]
+ lappend y [lindex $data [expr $ii+3]]
+ lappend ye [lindex $data [expr $ii+4]]
+ }
+ $var(graph$cc,xdata) set $x
+ $var(graph$cc,ydata) set $y
+ $var(graph$cc,yedata) set $ye
+ }
+ }
+
+ set var(graph$cc,$nn,manage) 1
+ set var(graph$cc,$nn,dim) $var(graph$cc,dim)
+
+ set var(graph$cc,$nn,xdata) $var(graph$cc,xdata)
+ set var(graph$cc,$nn,ydata) $var(graph$cc,ydata)
+ set var(graph$cc,$nn,xedata) $var(graph$cc,xedata)
+ set var(graph$cc,$nn,yedata) $var(graph$cc,yedata)
+
+ PlotGetVar $varname $nn
+
+ # update data set menu
+ $var(mb).graph.select add radiobutton -label "$var(graph$cc,name)" \
+ -variable ${varname}(graph$cc,data,current) -value $nn \
+ -command [list PlotCurrentData $varname]
+
+ PlotAddData $varname
+ $var(proc,updateelement) $varname
+}
+
+proc PlotDupData {varname mm} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ if {$var(graph$cc,data,total) == 0} {
+ return
+ }
+
+ # incr count
+ incr ${varname}(graph$cc,data,total)
+ set nn $var(graph$cc,data,total)
+ set pp [expr $nn-1]
+
+ # new vector names
+ set var(graph$cc,$nn,name) "Dataset $nn"
+ set var(graph$cc,$nn,xdata) ap${varname}xx${nn}
+ set var(graph$cc,$nn,ydata) ap${varname}yy${nn}
+ set var(graph$cc,$nn,xedata) ap${varname}xe${nn}
+ set var(graph$cc,$nn,yedata) ap${varname}ye${nn}
+ global $var(graph$cc,$mm,xdata) $var(graph$cc,$mm,ydata) \
+ $var(graph$cc,$mm,xedata) $var(graph$cc,$mm,yedata)
+ global $var(graph$cc,$nn,xdata) $var(graph$cc,$nn,ydata) \
+ $var(graph$cc,$nn,xedata) $var(graph$cc,$nn,yedata)
+
+ $var(graph$cc,$mm,xdata) dup $var(graph$cc,$nn,xdata)
+ $var(graph$cc,$mm,ydata) dup $var(graph$cc,$nn,ydata)
+ if {$var(graph$cc,$mm,xedata) != {}} {
+ $var(graph$cc,$mm,xedata) dup $var(graph$cc,$nn,xedata)
+ } else {
+ set var(graph$cc,$nn,xedata) {}
+ }
+ if {$var(graph$cc,$mm,yedata) != {}} {
+ $var(graph$cc,$mm,yedata) dup $var(graph$cc,$nn,yedata)
+ } else {
+ set var(graph$cc,$nn,yedata) {}
+ }
+
+ set var(graph$cc,$nn,manage) 1
+ set var(graph$cc,$nn,dim) $var(graph$cc,$mm,dim)
+
+ set var(graph$cc,$nn,show) $var(graph$cc,$mm,show)
+ set var(graph$cc,$nn,shape,symbol) $var(graph$cc,$mm,shape,symbol)
+ set var(graph$cc,$nn,shape,fill) $var(graph$cc,$mm,shape,fill)
+ set var(graph$cc,$nn,shape,color) $var(graph$cc,$mm,shape,color)
+ set var(graph$cc,$nn,smooth) $var(graph$cc,$mm,smooth)
+ set var(graph$cc,$nn,color) [PlotNextColor $var(graph$cc,$mm,color)]
+ set var(graph$cc,$nn,fill) $var(graph$cc,$mm,fill)
+ set var(graph$cc,$nn,fill,color) \
+ [PlotNextColor $var(graph$cc,$mm,fill,color)]
+ set var(graph$cc,$nn,width) $var(graph$cc,$mm,width)
+ set var(graph$cc,$nn,dash) $var(graph$cc,$mm,dash)
+
+ set var(graph$cc,$nn,error) $var(graph$cc,$mm,error)
+ set var(graph$cc,$nn,error,cap) $var(graph$cc,$mm,error,cap)
+ set var(graph$cc,$nn,error,color) $var(graph$cc,$mm,error,color)
+ set var(graph$cc,$nn,error,width) $var(graph$cc,$mm,error,width)
+
+ set var(graph$cc,$nn,bar,relief) $var(graph$cc,$mm,bar,relief)
+
+ # update data set menu
+ $var(mb).graph.select add radiobutton -label "$var(graph$cc,$nn,name)" \
+ -variable ${varname}(graph$cc,data,current) -value $nn \
+ -command [list PlotCurrentData $varname]
+
+ # make current
+ set var(graph$cc,data,current) $nn
+
+ set var(graph$cc,manage) $var(graph$cc,$nn,manage)
+ set var(graph$cc,dim) $var(graph$cc,$nn,dim)
+
+ set var(graph$cc,xdata) $var(graph$cc,$nn,xdata)
+ set var(graph$cc,ydata) $var(graph$cc,$nn,ydata)
+ set var(graph$cc,xedata) $var(graph$cc,$nn,xedata)
+ set var(graph$cc,yedata) $var(graph$cc,$nn,yedata)
+
+ PlotSetVar $varname $nn
+
+ PlotAddData $varname
+ $var(proc,updateelement) $varname
+ $var(proc,updategraph) $varname
+ PlotStats $varname
+ PlotList $varname
+}
+
diff --git a/ds9/library/plotdialog.tcl b/ds9/library/plotdialog.tcl
index 1054014..c4383e6 100644
--- a/ds9/library/plotdialog.tcl
+++ b/ds9/library/plotdialog.tcl
@@ -27,20 +27,10 @@ proc PlotDialog {varname wtt title xaxis yaxis} {
set var(mode) zoom
set var(callback) {}
- set var(data,total) 0
- set var(data,current) 0
+ set var(graph,total) 0
+ set var(graph,current) 0
- set var(name) {}
- set var(xdata) {}
- set var(ydata) {}
- set var(xedata) {}
- set var(yedata) {}
-
- array set $varname [array get pap]
-
- set var(graph,title) "$title"
- set var(axis,x,title) "$xaxis"
- set var(axis,y,title) "$yaxis"
+ PlotTitle $varname $title $xaxis $yaxis
# can be turned off for external line plots
set var(graph,format) 1
@@ -50,17 +40,18 @@ proc PlotDialog {varname wtt title xaxis yaxis} {
$var(mb) add cascade -label [msgcat::mc {File}] -menu $var(mb).file
$var(mb) add cascade -label [msgcat::mc {Edit}] -menu $var(mb).edit
+ $var(mb) add cascade -label [msgcat::mc {Canvas}] -menu $var(mb).canvas
$var(mb) add cascade -label [msgcat::mc {Graph}] -menu $var(mb).graph
- $var(mb) add cascade -label [msgcat::mc {Dataset}] -menu $var(mb).dataset
- $var(mb) add cascade -label [msgcat::mc {Select}] -menu $var(mb).select
+ $var(mb) add cascade -label [msgcat::mc {Data}] -menu $var(mb).data
+ # File
menu $var(mb).file
$var(mb).file add command -label "[msgcat::mc {Load Data}]..." \
-command [list PlotLoadData $varname]
$var(mb).file add command -label "[msgcat::mc {Save Data}]..." \
-command [list PlotSaveData $varname]
$var(mb).file add command -label [msgcat::mc {Clear Data}] \
- -command [list PlotClearData $varname]
+ -command [list PlotDeleteData $varname]
$var(mb).file add command -label [msgcat::mc {Duplicate Data}] \
-command [list PlotDupData $varname 1]
$var(mb).file add separator
@@ -99,7 +90,6 @@ proc PlotDialog {varname wtt title xaxis yaxis} {
$var(mb).file add command -label [msgcat::mc {Close}] \
-command [list PlotDestroy $varname]
- # Export Menu
menu $var(mb).file.export
$var(mb).file.export add command -label {GIF...} \
-command [list PlotExportDialog $varname gif]
@@ -127,19 +117,60 @@ proc PlotDialog {varname wtt title xaxis yaxis} {
-variable ${varname}(mode) -value zoom \
-command [list PlotChangeMode $varname]
+ # Canvas
+ menu $var(mb).canvas
+
+ $var(mb).canvas add cascade -label [msgcat::mc {Select Graph}] \
+ -menu $var(mb).canvas.select
+ $var(mb).canvas add separator
+ $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]
+ $var(mb).canvas add separator
+ menu $var(mb).canvas.select
+
+ $var(mb).canvas add cascade -label [msgcat::mc {Font}] \
+ -menu $var(mb).canvas.font
+ $var(mb).canvas add cascade -label [msgcat::mc {Background}] \
+ -menu $var(mb).canvas.bg
+
+ menu $var(mb).canvas.font
+ $var(mb).canvas.font add cascade -label [msgcat::mc {Title}] \
+ -menu $var(mb).canvas.font.title
+ $var(mb).canvas.font add cascade -label [msgcat::mc {Axes Title}] \
+ -menu $var(mb).canvas.font.textlab
+ $var(mb).canvas.font add cascade -label [msgcat::mc {Axes Number}] \
+ -menu $var(mb).canvas.font.numlab
+ $var(mb).canvas.font add cascade -label [msgcat::mc {Legend Title}] \
+ -menu $var(mb).canvas.font.legendtitle
+ $var(mb).canvas.font add cascade -label [msgcat::mc {Legend}] \
+ -menu $var(mb).canvas.font.legend
+
+ FontMenu $var(mb).canvas.font.title $varname graph,title,family graph,title,size graph,title,weight graph,title,slant [list $var(proc,updategraph) $varname]
+ FontMenu $var(mb).canvas.font.textlab $varname axis,title,family axis,title,size axis,title,weight axis,title,slant [list $var(proc,updategraph) $varname]
+ FontMenu $var(mb).canvas.font.numlab $varname axis,font,family axis,font,size axis,font,weight axis,font,slant [list $var(proc,updategraph) $varname]
+ FontMenu $var(mb).canvas.font.legendtitle $varname legend,title,family legend,title,size legend,title,weight legend,title,slant [list $var(proc,updategraph) $varname]
+ FontMenu $var(mb).canvas.font.legend $varname legend,font,family legend,font,size legend,font,weight legend,font,slant [list $var(proc,updategraph) $varname]
+
+ PlotColorMenu $var(mb).canvas.bg $varname graph,bg \
+ [list $var(proc,updategraph) $varname]
+
# Graph
menu $var(mb).graph
+
+ $var(mb).graph add cascade -label [msgcat::mc {Select Dataset}] \
+ -menu $var(mb).graph.select
+ $var(mb).graph add separator
+ menu $var(mb).graph.select
+
$var(mb).graph add cascade -label [msgcat::mc {Axes}] \
-menu $var(mb).graph.axes
$var(mb).graph add cascade -label [msgcat::mc {Legend}] \
-menu $var(mb).graph.legend
- $var(mb).graph add cascade -label [msgcat::mc {Font}] \
- -menu $var(mb).graph.font
- $var(mb).graph add cascade -label [msgcat::mc {Background}] \
- -menu $var(mb).graph.bg
$var(mb).graph add separator
- $var(mb).graph add command -label "[msgcat::mc {Title}]..." \
- -command [list PlotTitleDialog $varname]
+ $var(mb).graph add command -label "[msgcat::mc {Titles}]..." \
+ -command [list PlotGraphTitleDialog $varname]
menu $var(mb).graph.axes
$var(mb).graph.axes add checkbutton -label [msgcat::mc {X Grid}] \
@@ -183,49 +214,11 @@ proc PlotDialog {varname wtt title xaxis yaxis} {
-variable ${varname}(legend,position) -value bottom \
-command [list $var(proc,updategraph) $varname]
- menu $var(mb).graph.font
- $var(mb).graph.font add cascade -label [msgcat::mc {Title}] \
- -menu $var(mb).graph.font.title
- $var(mb).graph.font add cascade -label [msgcat::mc {Axes Title}] \
- -menu $var(mb).graph.font.textlab
- $var(mb).graph.font add cascade -label [msgcat::mc {Axes Number}] \
- -menu $var(mb).graph.font.numlab
- $var(mb).graph.font add cascade -label [msgcat::mc {Legend Title}] \
- -menu $var(mb).graph.font.legendtitle
- $var(mb).graph.font add cascade -label [msgcat::mc {Legend}] \
- -menu $var(mb).graph.font.legend
-
- FontMenu $var(mb).graph.font.title $varname graph,title,family graph,title,size graph,title,weight graph,title,slant [list $var(proc,updategraph) $varname]
- FontMenu $var(mb).graph.font.textlab $varname axis,title,family axis,title,size axis,title,weight axis,title,slant [list $var(proc,updategraph) $varname]
- FontMenu $var(mb).graph.font.numlab $varname axis,font,family axis,font,size axis,font,weight axis,font,slant [list $var(proc,updategraph) $varname]
- FontMenu $var(mb).graph.font.legendtitle $varname legend,title,family legend,title,size legend,title,weight legend,title,slant [list $var(proc,updategraph) $varname]
- FontMenu $var(mb).graph.font.legend $varname legend,font,family legend,font,size legend,font,weight legend,font,slant [list $var(proc,updategraph) $varname]
-
- PlotColorMenu $var(mb).graph.bg $varname graph,bg [list $var(proc,updategraph) $varname]
-
# dataset
- menu $var(mb).dataset
+ menu $var(mb).data
- # select
- menu $var(mb).select
-}
-
-proc PlotChangeMode {varname} {
- upvar #0 $varname var
- global $varname
-
- global ds9
-
- switch $var(mode) {
- pointer {
- blt::RemoveBindTag $var(graph) zoom-$var(graph)
- bind $var(graph) <1> [list PlotButton $varname %x %y]
- }
- zoom {
- bind $var(graph) <1> {}
- blt::AddBindTag $var(graph) zoom-$var(graph)
- }
- }
+ set var(canvas) [ttk::frame $var(top).fr]
+ pack $var(canvas) -expand yes -fill both
}
proc PlotDataFormatDialog {xarname} {
@@ -365,12 +358,12 @@ proc PlotRangeDialog {varname} {
return $rr
}
-proc PlotTitleDialog {varname} {
+proc PlotGraphTitleDialog {varname} {
upvar #0 $varname var
global $varname
global ed
- set w {.aptitle}
+ set w {.applottitle}
set ed(ok) 0
set ed(graph,title) $var(graph,title)
@@ -382,7 +375,7 @@ proc PlotTitleDialog {varname} {
# Param
set f [ttk::frame $w.param]
- ttk::label $f.label -text [msgcat::mc {Plot Title}]
+ ttk::label $f.label -text [msgcat::mc {Title}]
ttk::entry $f.title -textvariable ed(graph,title) -width 30
ttk::label $f.xlabel -text [msgcat::mc {X Axis Title}]
ttk::entry $f.xtitle -textvariable ed(axis,x,title) -width 30
@@ -434,12 +427,15 @@ proc DatasetNameDialog {varname} {
global $varname
global ed
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
set w {.aptitle}
set ed(ok) 0
- set ed(name) $var(name)
+ set ed(name) $var(graph$cc,name)
- DialogCreate $w [msgcat::mc {Dataset}] ed(ok)
+ DialogCreate $w [msgcat::mc {Data}] ed(ok)
# Param
set f [ttk::frame $w.param]
@@ -468,8 +464,9 @@ proc DatasetNameDialog {varname} {
DialogDismiss $w
if {$ed(ok)} {
- $var(mb).select entryconfig "$var(name)" -label "$ed(name)"
- set var(name) $ed(name)
+ $var(mb).graph.select entryconfig "$var(graph$cc,name)" \
+ -label "$ed(name)"
+ set var(graph$cc,name) $ed(name)
$var(proc,updateelement) $varname
}
@@ -509,21 +506,97 @@ proc PlotLineShapeMenu {which var} {
-variable $var -value arrow
}
-proc PlotLineSmoothMenu {which var} {
- menu $which
- $which add radiobutton -label [msgcat::mc {Step}] \
- -variable $var -value step
- $which add radiobutton -label [msgcat::mc {Linear}] \
- -variable $var -value linear
- $which add radiobutton -label [msgcat::mc {Cubic}] \
- -variable $var -value cubic
- $which add radiobutton -label [msgcat::mc {Quadratic}] \
- -variable $var -value quadratic
- $which add radiobutton -label [msgcat::mc {Catrom}] \
- -variable $var -value catrom
+proc PlotShapeMenu {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ # Shape
+ menu $var(mb).data.shape
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {None}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value none \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Circle}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value circle \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Square}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value square \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Diamond}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value diamond \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Plus}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value plus \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Cross}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value cross \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Simple Plus}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value splus \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Simple Cross}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value scross \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Triangle}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value triangle \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add radiobutton \
+ -label [msgcat::mc {Arrow}] \
+ -variable ${varname}(graph$cc,shape,symbol) -value arrow \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add separator
+ $var(mb).data.shape add checkbutton \
+ -label [msgcat::mc {Fill}] \
+ -variable ${varname}(graph$cc,shape,fill) \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.shape add cascade -label [msgcat::mc {Color}] \
+ -menu $var(mb).data.shape.color
+
+ PlotColorMenu $var(mb).data.shape.color $varname graph$cc,shape,color \
+ [list $var(proc,updateelement) $varname]
+}
+
+proc PlotErrorMenu {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ menu $var(mb).data.error
+ $var(mb).data.error add checkbutton -label [msgcat::mc {Show}] \
+ -variable ${varname}(graph$cc,error) \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.error add checkbutton -label [msgcat::mc {Cap}] \
+ -variable ${varname}(graph$cc,error,cap) \
+ -command [list $var(proc,updateelement) $varname]
+ $var(mb).data.error add separator
+ $var(mb).data.error add cascade -label [msgcat::mc {Color}] \
+ -menu $var(mb).data.error.color
+ $var(mb).data.error add cascade -label [msgcat::mc {Width}] \
+ -menu $var(mb).data.error.width
+
+ PlotColorMenu $var(mb).data.error.color $varname graph$cc,error,color \
+ [list $var(proc,updateelement) $varname]
+ WidthDashMenu $var(mb).data.error.width $varname graph$cc,error,width {} \
+ [list $var(proc,updateelement) $varname] {}
}
proc PlotExportDialog {varname format} {
+ upvar #0 $varname var
+ global $varname
+
global giffbox
global jpegfbox
global tifffbox
@@ -566,7 +639,7 @@ proc PlotExport {varname fn format} {
# besure we are on top
raise $var(top)
- set rr [catch {image create photo -format window -data $var(graph)} ph]
+ set rr [catch {image create photo -format window -data $var(canvas)} ph]
if {$rr} {
Error $iap(error)
return
diff --git a/ds9/library/plotline.tcl b/ds9/library/plotline.tcl
index 7ad08cc..5f21f07 100644
--- a/ds9/library/plotline.tcl
+++ b/ds9/library/plotline.tcl
@@ -7,6 +7,7 @@ package provide DS9 1.0
# used by backup
proc PlotLineTool {} {
global iap
+
PlotLine $iap(tt) [msgcat::mc {Line Plot Tool}] {} {} {} 2 {}
}
@@ -29,9 +30,7 @@ proc PlotLine {tt wtt title xaxis yaxis dim data} {
upvar #0 $varname var
global $varname
- PlotLineProc $varname
- PlotDialog $varname $wtt $title $xaxis $yaxis
- PlotDialogLine $varname
+ PlotLineDialog $varname $wtt $title $xaxis $yaxis
PlotDataSet $varname $dim $data
$var(proc,updategraph) $varname
@@ -43,251 +42,176 @@ proc PlotLineDialog {varname wtt title xaxis yaxis} {
upvar #0 $varname var
global $varname
- PlotLineProc $varname
- PlotDialog $varname $wtt $title $xaxis $yaxis
- PlotDialogLine $varname
-}
-
-proc PlotLineProc {varname} {
- upvar #0 $varname var
- global $varname
-
+ set var(proc,addgraph) PlotLineAddGraph
set var(proc,updategraph) PlotUpdateGraph
set var(proc,updateelement) PlotLineUpdateElement
set var(proc,highlite) PlotLineHighliteElement
set var(proc,button) PlotLineButton
-}
-proc PlotDialogLine {varname} {
- upvar #0 $varname var
- global $varname
-
- global ds9
-
- # Dataset
- $var(mb).dataset add checkbutton -label [msgcat::mc {Show}] \
- -variable ${varname}(show) \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset add separator
- $var(mb).dataset add cascade -label [msgcat::mc {Shape}] \
- -menu $var(mb).dataset.shape
- $var(mb).dataset add cascade -label [msgcat::mc {Smooth}] \
- -menu $var(mb).dataset.smooth
- $var(mb).dataset add cascade -label [msgcat::mc {Color}] \
- -menu $var(mb).dataset.color
- $var(mb).dataset add cascade -label [msgcat::mc {Width}] \
- -menu $var(mb).dataset.width
- $var(mb).dataset add cascade -label [msgcat::mc {Fill}] \
- -menu $var(mb).dataset.fill
- $var(mb).dataset add cascade -label [msgcat::mc {Error}] \
- -menu $var(mb).dataset.error
- $var(mb).dataset add separator
- $var(mb).dataset add command -label "[msgcat::mc {Name}]..." \
+ PlotDialog $varname $wtt $title $xaxis $yaxis
+ PlotAddGraph $varname
+
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ # Data
+ $var(mb).data add checkbutton -label [msgcat::mc {Show}] \
+ -variable ${varname}(graph$cc,show) \
+ -command [list PlotLineUpdateElement $varname]
+ $var(mb).data add separator
+ $var(mb).data add cascade -label [msgcat::mc {Shape}] \
+ -menu $var(mb).data.shape
+ $var(mb).data add cascade -label [msgcat::mc {Smooth}] \
+ -menu $var(mb).data.smooth
+ $var(mb).data add cascade -label [msgcat::mc {Color}] \
+ -menu $var(mb).data.color
+ $var(mb).data add cascade -label [msgcat::mc {Width}] \
+ -menu $var(mb).data.width
+ $var(mb).data add cascade -label [msgcat::mc {Fill}] \
+ -menu $var(mb).data.fill
+ $var(mb).data add cascade -label [msgcat::mc {Error}] \
+ -menu $var(mb).data.error
+ $var(mb).data add separator
+ $var(mb).data add command -label "[msgcat::mc {Name}]..." \
-command [list DatasetNameDialog $varname]
# Shape
- menu $var(mb).dataset.shape
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {None}] \
- -variable ${varname}(shape,symbol) -value none \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Circle}] \
- -variable ${varname}(shape,symbol) -value circle \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Square}] \
- -variable ${varname}(shape,symbol) -value square \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Diamond}] \
- -variable ${varname}(shape,symbol) -value diamond \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Plus}] \
- -variable ${varname}(shape,symbol) -value plus \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Cross}] \
- -variable ${varname}(shape,symbol) -value cross \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Simple Plus}] \
- -variable ${varname}(shape,symbol) -value splus \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Simple Cross}] \
- -variable ${varname}(shape,symbol) -value scross \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Triangle}] \
- -variable ${varname}(shape,symbol) -value triangle \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Arrow}] \
- -variable ${varname}(shape,symbol) -value arrow \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add separator
- $var(mb).dataset.shape add checkbutton \
- -label [msgcat::mc {Fill}] \
- -variable ${varname}(shape,fill) \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.shape add cascade -label [msgcat::mc {Color}] \
- -menu $var(mb).dataset.shape.color
-
- PlotColorMenu $var(mb).dataset.shape.color $varname shape,color \
- [list PlotLineUpdateElement $varname]
+ PlotShapeMenu $varname
# Smooth
- menu $var(mb).dataset.smooth
- $var(mb).dataset.smooth add radiobutton \
+ menu $var(mb).data.smooth
+ $var(mb).data.smooth add radiobutton \
-label [msgcat::mc {Step}] \
- -variable ${varname}(smooth) -value step \
+ -variable ${varname}(graph$cc,smooth) -value step \
-command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.smooth add radiobutton \
+ $var(mb).data.smooth add radiobutton \
-label [msgcat::mc {Linear}] \
- -variable ${varname}(smooth) -value linear \
+ -variable ${varname}(graph$cc,smooth) -value linear \
-command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.smooth add radiobutton \
+ $var(mb).data.smooth add radiobutton \
-label [msgcat::mc {Cubic}] \
- -variable ${varname}(smooth) -value cubic \
+ -variable ${varname}(graph$cc,smooth) -value cubic \
-command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.smooth add radiobutton \
+ $var(mb).data.smooth add radiobutton \
-label [msgcat::mc {Quadratic}] \
- -variable ${varname}(smooth) -value quadratic \
+ -variable ${varname}(graph$cc,smooth) -value quadratic \
-command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.smooth add radiobutton \
+ $var(mb).data.smooth add radiobutton \
-label [msgcat::mc {Catrom}] \
- -variable ${varname}(smooth) -value catrom \
+ -variable ${varname}(graph$cc,smooth) -value catrom \
-command [list PlotLineUpdateElement $varname]
# Color
- PlotColorMenu $var(mb).dataset.color $varname color \
+ PlotColorMenu $var(mb).data.color $varname graph$cc,color \
[list PlotLineUpdateElement $varname]
# Width
- menu $var(mb).dataset.width
- $var(mb).dataset.width add radiobutton \
- -label {0} -variable ${varname}(width) \
+ menu $var(mb).data.width
+ $var(mb).data.width add radiobutton \
+ -label {0} -variable ${varname}(graph$cc,width) \
-value 0 -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.width add radiobutton \
- -label {1} -variable ${varname}(width) \
+ $var(mb).data.width add radiobutton \
+ -label {1} -variable ${varname}(graph$cc,width) \
-value 1 -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.width add radiobutton \
- -label {2} -variable ${varname}(width) \
+ $var(mb).data.width add radiobutton \
+ -label {2} -variable ${varname}(graph$cc,width) \
-value 2 -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.width add radiobutton \
- -label {3} -variable ${varname}(width) \
+ $var(mb).data.width add radiobutton \
+ -label {3} -variable ${varname}(graph$cc,width) \
-value 3 -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.width add radiobutton \
- -label {4} -variable ${varname}(width) \
+ $var(mb).data.width add radiobutton \
+ -label {4} -variable ${varname}(graph$cc,width) \
-value 4 -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.width add separator
- $var(mb).dataset.width add checkbutton \
- -label [msgcat::mc {Dash}] -variable ${varname}(dash) \
+ $var(mb).data.width add separator
+ $var(mb).data.width add checkbutton \
+ -label [msgcat::mc {Dash}] -variable ${varname}(graph$cc,dash) \
-command [list PlotLineUpdateElement $varname]
# Fill
- menu $var(mb).dataset.fill
- $var(mb).dataset.fill add checkbutton \
+ menu $var(mb).data.fill
+ $var(mb).data.fill add checkbutton \
-label [msgcat::mc {Show}] \
- -variable ${varname}(fill) \
+ -variable ${varname}(graph$cc,fill) \
-command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.fill add separator
- $var(mb).dataset.fill add cascade -label [msgcat::mc {Color}] \
- -menu $var(mb).dataset.fill.color
+ $var(mb).data.fill add separator
+ $var(mb).data.fill add cascade -label [msgcat::mc {Color}] \
+ -menu $var(mb).data.fill.color
- PlotColorMenu $var(mb).dataset.fill.color $varname fill,color \
+ PlotColorMenu $var(mb).data.fill.color $varname graph$cc,fill,color \
[list PlotLineUpdateElement $varname]
# Error
- menu $var(mb).dataset.error
- $var(mb).dataset.error add checkbutton -label [msgcat::mc {Show}] \
- -variable ${varname}(error) \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.error add checkbutton -label [msgcat::mc {Cap}] \
- -variable ${varname}(error,cap) \
- -command [list PlotLineUpdateElement $varname]
- $var(mb).dataset.error add separator
- $var(mb).dataset.error add cascade -label [msgcat::mc {Color}] \
- -menu $var(mb).dataset.error.color
- $var(mb).dataset.error add cascade -label [msgcat::mc {Width}] \
- -menu $var(mb).dataset.error.width
+ PlotErrorMenu $varname
+}
- PlotColorMenu $var(mb).dataset.error.color $varname error,color \
- [list PlotLineUpdateElement $varname]
- WidthDashMenu $var(mb).dataset.error.width $varname error,width {} \
- [list PlotLineUpdateElement $varname] {}
-
- # graph
- set var(type) line
- set var(graph) [blt::graph $var(top).line \
- -width 600 \
- -height 500 \
- -highlightthickness 0 \
- ]
-
- pack $var(graph) -expand yes -fill both
-
- # set up zoom stack, assuming mode is zoom
- switch $ds9(wm) {
- x11 -
- win32 {Blt_ZoomStack $var(graph) -mode release}
- aqua {Blt_ZoomStack $var(graph) -mode release -button "ButtonPress-2"}
- }
+proc PlotLineAddGraph {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set cc $var(graph,current)
+
+ set var(type$cc) line
+ set var(graph$cc) [blt::graph $var(canvas).gr$cc \
+ -width 600 \
+ -height 500 \
+ -highlightthickness 0 \
+ ]
}
proc PlotLineUpdateElement {varname} {
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
# warning: uses current vars
- if {$var(data,total) == 0} {
+ if {$var(graph$cc,data,total) == 0} {
return
}
- set nn $var(data,current)
+ set nn $var(graph$cc,data,current)
PlotGetVar $varname $nn
- if {$var(fill)} {
- set fillClr $var(fill,color)
+ if {$var(graph$cc,fill)} {
+ set fillClr $var(graph$cc,fill,color)
} else {
set fillClr {}
}
- if {$var(shape,fill)} {
- set clr $var(shape,color)
+ if {$var(graph$cc,shape,fill)} {
+ set clr $var(graph$cc,shape,color)
} else {
set clr {}
}
- if {$var(dash)} {
+ if {$var(graph$cc,dash)} {
set dash {8 3}
} else {
set dash { }
}
- if {$var(error)} {
+ if {$var(graph$cc,error)} {
set show both
} else {
set show none
}
- if {$var(error,cap)} {
- set cap [expr $var(error,width)+3]
+ if {$var(graph$cc,error,cap)} {
+ set cap [expr $var(graph$cc,error,width)+3]
} else {
set cap 0
}
- $var(graph) element configure "d-${nn}" \
- -label $var(name) -hide [expr !$var(show)] \
- -symbol $var(shape,symbol) -fill $clr -scalesymbols no \
- -pixels 5 -outline $var(shape,color) \
- -smooth $var(smooth) \
- -color $var(color) -areabackground $fillClr \
- -linewidth $var(width) -dashes $dash \
- -showerrorbars $show -errorbarcolor $var(error,color) \
- -errorbarwidth $var(error,width) -errorbarcap $cap
+ $var(graph$cc) element configure "d-${nn}" \
+ -label $var(graph$cc,name) -hide [expr !$var(graph$cc,show)] \
+ -symbol $var(graph$cc,shape,symbol) -fill $clr -scalesymbols no \
+ -pixels 5 -outline $var(graph$cc,shape,color) \
+ -smooth $var(graph$cc,smooth) \
+ -color $var(graph$cc,color) -areabackground $fillClr \
+ -linewidth $var(graph$cc,width) -dashes $dash \
+ -showerrorbars $show -errorbarcolor $var(graph$cc,error,color) \
+ -errorbarwidth $var(graph$cc,error,width) -errorbarcap $cap
}
proc PlotLineButton {varname x y} {
diff --git a/ds9/library/plotprint.tcl b/ds9/library/plotprint.tcl
index 8d6c98c..1407c6a 100644
--- a/ds9/library/plotprint.tcl
+++ b/ds9/library/plotprint.tcl
@@ -19,101 +19,106 @@ proc PlotPostScript {varname} {
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
global ps
global ds9
- # set postscript fonts
- $var(graph) configure \
- -font "$var(graph,title,family) $var(graph,title,size) $var(graph,title,weight) $var(graph,title,slant)"
+ for {set ii 1} {$ii<=$tt} {incr ii} {
+ # set postscript fonts
+ $var(graph$ii) configure \
+ -font "$var(graph,title,family) $var(graph,title,size) $var(graph,title,weight) $var(graph,title,slant)"
- $var(graph) xaxis configure \
- -tickfont "$var(axis,font,family) $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
- -titlefont "$var(axis,title,family) $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
+ $var(graph$ii) xaxis configure \
+ -tickfont "$var(axis,font,family) $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
+ -titlefont "$var(axis,title,family) $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
- $var(graph) yaxis configure \
- -tickfont "$var(axis,font,family) $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
- -titlefont "$var(axis,title,family) $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
+ $var(graph$ii) yaxis configure \
+ -tickfont "$var(axis,font,family) $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
+ -titlefont "$var(axis,title,family) $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
- $var(graph) legend configure \
- -font "$var(legend,font,family) $var(legend,font,size) $var(legend,font,weight) $var(legend,font,slant)" \
- -titlefont "$var(legend,title,family) $var(legend,title,size) $var(legend,title,weight) $var(legend,title,slant)"
+ $var(graph$ii) legend configure \
+ -font "$var(legend,font,family) $var(legend,font,size) $var(legend,font,weight) $var(legend,font,slant)" \
+ -titlefont "$var(legend,title,family) $var(legend,title,size) $var(legend,title,weight) $var(legend,title,slant)"
- set options "-decorations false"
+ set options "-decorations false"
- # Color
- switch -- $ps(color) {
- rgb -
- cmyk {append options " -greyscale no"}
- gray {append options " -greyscale yes"}
- }
+ # Color
+ switch -- $ps(color) {
+ rgb -
+ cmyk {append options " -greyscale no"}
+ gray {append options " -greyscale yes"}
+ }
- # can't trust 'tk scaling'
- switch $ds9(wm) {
- x11 -
- win32 {
- set scaling [tk scaling]
- if {$scaling == Inf} {
- set scaling 1.334
+ # can't trust 'tk scaling'
+ switch $ds9(wm) {
+ x11 -
+ win32 {
+ set scaling [tk scaling]
+ if {$scaling == Inf} {
+ set scaling 1.334
+ }
}
+ aqua {set scaling 1.4}
}
- aqua {set scaling 1.4}
- }
- # Size
- set ww [expr [winfo width $var(top)]*$ps(scale)/100./$scaling]
- set hh [expr [winfo height $var(top)]*$ps(scale)/100./$scaling]
- append options " -width $ww -height $hh"
-
- # Page size
- switch -- $ps(size) {
- letter {append options " -paperwidth 8.5i -paperheight 11.i"}
- legal {append options " -paperwidth 8.5i -paperheight 14.i"}
- tabloid {append options " -paperwidth 11i -paperheight 17.i"}
- poster {append options " -paperwidth 36.i -paperheight 48.i"}
- a4 {append options " -paperwidth 195m -paperheight 282m"}
- other {
- if {$ps(width) != {} && $ps(height) != {}} {
- set pgww "[append ps(width) i]"
- set pghh "[append ps(height) i]"
- append options " -paperwidth $pgww -paperheight pghh"
- }
- }
- othermm {
- if {$ps(width) != {} && $ps(height) != {}} {
- set pgww "[append ps(width) m]"
- set pghh "[append ps(height) m]"
- append options " -paperwidth $pgww -paperheight pghh"
- }
- }
- }
+ # Size
+ set ww [expr [winfo width $var(top)]*$ps(scale)/100./$scaling]
+ set hh [expr [winfo height $var(top)]*$ps(scale)/100./$scaling]
+ append options " -width $ww -height $hh"
+
+ # Page size
+ switch -- $ps(size) {
+ letter {append options " -paperwidth 8.5i -paperheight 11.i"}
+ legal {append options " -paperwidth 8.5i -paperheight 14.i"}
+ tabloid {append options " -paperwidth 11i -paperheight 17.i"}
+ poster {append options " -paperwidth 36.i -paperheight 48.i"}
+ a4 {append options " -paperwidth 195m -paperheight 282m"}
+ other {
+ if {$ps(width) != {} && $ps(height) != {}} {
+ set pgww "[append ps(width) i]"
+ set pghh "[append ps(height) i]"
+ append options " -paperwidth $pgww -paperheight pghh"
+ }
+ }
+ othermm {
+ if {$ps(width) != {} && $ps(height) != {}} {
+ set pgww "[append ps(width) m]"
+ set pghh "[append ps(height) m]"
+ append options " -paperwidth $pgww -paperheight pghh"
+ }
+ }
+ }
- # Orientation
- switch -- $ps(orient) {
- portrait {append options " -landscape false"}
- landscape {append options " -landscape true"}
- }
+ # Orientation
+ switch -- $ps(orient) {
+ portrait {append options " -landscape false"}
+ landscape {append options " -landscape true"}
+ }
- if {$ps(dest) == "file" && $ps(filename) != {}} {
- eval $var(graph) postscript output $ps(filename) $options
- } else {
- set ch [open "| $ps(cmd)" w]
- puts $ch [eval $var(graph) postscript output $options]
- close $ch
- }
+ if {$ps(dest) == "file" && $ps(filename) != {}} {
+ eval $var(graph$ii) postscript output $ps(filename) $options
+ } else {
+ set ch [open "| $ps(cmd)" w]
+ puts $ch [eval $var(graph$ii) postscript output $options]
+ close $ch
+ }
- # reset fonts
- $var(graph) configure \
- -font "{$ds9($var(graph,title,family))} $var(graph,title,size) $var(graph,title,weight) $var(graph,title,slant)"
+ # reset fonts
+ $var(graph$ii) configure \
+ -font "{$ds9($var(graph,title,family))} $var(graph,title,size) $var(graph,title,weight) $var(graph,title,slant)"
- $var(graph) xaxis configure \
- -tickfont "{$ds9($var(axis,font,family))} $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
- -titlefont "{$ds9($var(axis,title,family))} $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
+ $var(graph$ii) xaxis configure \
+ -tickfont "{$ds9($var(axis,font,family))} $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
+ -titlefont "{$ds9($var(axis,title,family))} $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
- $var(graph) yaxis configure \
- -tickfont "{$ds9($var(axis,font,family))} $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
- -titlefont "{$ds9($var(axis,title,family))} $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
+ $var(graph$ii) yaxis configure \
+ -tickfont "{$ds9($var(axis,font,family))} $var(axis,font,size) $var(axis,font,weight) $var(axis,font,slant)" \
+ -titlefont "{$ds9($var(axis,title,family))} $var(axis,title,size) $var(axis,title,weight) $var(axis,title,slant)"
- $var(graph) legend configure \
- -font "{$ds9($var(legend,font,family))} $var(legend,font,size) $var(legend,font,weight) $var(legend,font,slant)" \
- -titlefont "{$ds9($var(legend,title,family))} $var(legend,title,size) $var(legend,title,weight) $var(legend,title,slant)"
+ $var(graph$ii) legend configure \
+ -font "{$ds9($var(legend,font,family))} $var(legend,font,size) $var(legend,font,weight) $var(legend,font,slant)" \
+ -titlefont "{$ds9($var(legend,title,family))} $var(legend,title,size) $var(legend,title,weight) $var(legend,title,slant)"
+ }
}
diff --git a/ds9/library/plotprocess.tcl b/ds9/library/plotprocess.tcl
index f21ccc3..ba9044b 100644
--- a/ds9/library/plotprocess.tcl
+++ b/ds9/library/plotprocess.tcl
@@ -53,8 +53,8 @@ proc PrefsDialogPlot {} {
grid $f.ttextlab $f.textlab -padx 2 -pady 2 -sticky w
grid $f.tnumlab $f.numlab -padx 2 -pady 2 -sticky w
- # Dataset
- set f [ttk::labelframe $w.plot.dataset -text [msgcat::mc {Dataset}]]
+ # Data
+ set f [ttk::labelframe $w.plot.data -text [msgcat::mc {Dataset}]]
# Show
ttk::checkbutton $f.show -text [msgcat::mc {Show}] -variable pap(show)
@@ -75,7 +75,17 @@ proc PrefsDialogPlot {} {
ttk::label $f.smoothtitle -text [msgcat::mc {Smooth}]
ttk::menubutton $f.smooth -textvariable pap(smooth) \
-menu $f.smooth.menu
- PlotLineSmoothMenu $f.smooth.menu pap(smooth)
+ menu $f.smooth.menu
+ $f.smooth.menu add radiobutton -label [msgcat::mc {Step}] \
+ -variable pap(smooth) -value step
+ $f.smooth.menu add radiobutton -label [msgcat::mc {Linear}] \
+ -variable pap(smooth) -value linear
+ $f.smooth.menu add radiobutton -label [msgcat::mc {Cubic}] \
+ -variable pap(smooth) -value cubic
+ $f.smooth.menu add radiobutton -label [msgcat::mc {Quadratic}] \
+ -variable pap(smooth) -value quadratic
+ $f.smooth.menu add radiobutton -label [msgcat::mc {Catrom}] \
+ -variable pap(smooth) -value catrom
grid $f.smoothtitle $f.smooth -padx 2 -pady 2 -sticky w
# Color
@@ -102,7 +112,7 @@ proc PrefsDialogPlot {} {
grid $f.errortitle $f.error $f.errorcap $f.errorcolor $f.errorwidth \
-padx 2 -pady 2 -sticky w
- pack $w.plot.graph $w.plot.grid $w.plot.axis $w.plot.dataset \
+ pack $w.plot.graph $w.plot.grid $w.plot.axis $w.plot.data \
-side top -fill both -expand true
}
@@ -190,6 +200,11 @@ proc PlotCmdScatter {title xaxis yaxis dim} {
PlotScatter $parse(tt) {} $title $xaxis $yaxis $dim $parse(buf)
}
+proc PlotCmdStrip {title xaxis yaxis dim} {
+ global parse
+ PlotStrip $parse(tt) {} $title $xaxis $yaxis $dim $parse(buf)
+}
+
proc PlotCmdAnalysisPlotStdin {which} {
global parse
AnalysisPlotStdin $which $parse(tt) {} $parse(buf)
@@ -311,6 +326,18 @@ proc PlotCmdExport {format fn} {
PlotExport $cvarname $fn $format
}
+proc PlotCmdSelectData {which} {
+ global cvarname
+ upvar #0 $cvarname cvar
+
+ set tt $cvar(graph,total)
+ set cc $cvar(graph,current)
+
+ set cvar(graph$cc,data,current) $which
+
+ PlotCurrentData $cvarname
+}
+
proc ProcessSendPlotCmd {proc id param {sock {}} {fn {}}} {
global iap
global parse
@@ -326,3 +353,26 @@ proc ProcessSendPlotCmd {proc id param {sock {}} {fn {}}} {
plotsend::yy_scan_string $param
plotsend::yyparse
}
+
+proc PlotSendCmdCVARGet {key} {
+ global cvarname
+ upvar #0 $cvarname cvar
+
+ set tt $cvar(graph,total)
+ set cc $cvar(graph,current)
+
+ global parse
+ $parse(proc) $parse(id) "$cvar(graph$cc,$key)\n"
+}
+
+proc PlotSendCmdCVARYesNo {key} {
+ global cvarname
+ upvar #0 $cvarname cvar
+
+ set tt $cvar(graph,total)
+ set cc $cvar(graph,current)
+
+ global parse
+ $parse(proc) $parse(id) [ToYesNo $cvar(graph$cc,$key)]
+}
+
diff --git a/ds9/library/plotscatter.tcl b/ds9/library/plotscatter.tcl
index a9b7fc5..342a04e 100644
--- a/ds9/library/plotscatter.tcl
+++ b/ds9/library/plotscatter.tcl
@@ -7,6 +7,7 @@ package provide DS9 1.0
# used by backup
proc PlotScatterTool {} {
global iap
+
PlotScatter $iap(tt) [msgcat::mc {Scatter Plot Tool}] {} {} {} 2 {}
}
@@ -29,10 +30,8 @@ proc PlotScatter {tt wtt title xaxis yaxis dim data} {
upvar #0 $varname var
global $varname
- PlotScatterProc $varname
- PlotDialog $varname $wtt $title $xaxis $yaxis
- PlotDialogScatter $varname
-
+ PlotScatterDialog $varname $wtt $title $xaxis $yaxis
+
PlotDataSet $varname $dim $data
$var(proc,updategraph) $varname
PlotStats $varname
@@ -43,181 +42,112 @@ proc PlotScatterDialog {varname wtt title xaxis yaxis} {
upvar #0 $varname var
global $varname
- PlotScatterProc $varname
- PlotDialog $varname $wtt $title $xaxis $yaxis
- PlotDialogScatter $varname
-}
-
-proc PlotScatterProc {varname} {
- upvar #0 $varname var
- global $varname
-
+ set var(proc,addgraph) PlotScatterAddGraph
set var(proc,updategraph) PlotUpdateGraph
set var(proc,updateelement) PlotScatterUpdateElement
set var(proc,highlite) PlotScatterHighliteElement
set var(proc,button) PlotScatterButton
-}
-proc PlotDialogScatter {varname} {
- upvar #0 $varname var
- global $varname
+ PlotDialog $varname $wtt $title $xaxis $yaxis
+ PlotAddGraph $varname
- global ds9
+ set tt $var(graph,total)
+ set cc $var(graph,current)
- # Dataset
- $var(mb).dataset add checkbutton -label [msgcat::mc {Show}] \
- -variable ${varname}(show) \
+ # Data
+ $var(mb).data add checkbutton -label [msgcat::mc {Show}] \
+ -variable ${varname}(graph$cc,show) \
-command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset add separator
- $var(mb).dataset add cascade -label [msgcat::mc {Shape}] \
- -menu $var(mb).dataset.shape
- $var(mb).dataset add cascade -label [msgcat::mc {Error}] \
- -menu $var(mb).dataset.error
- $var(mb).dataset add separator
- $var(mb).dataset add command -label "[msgcat::mc {Name}]..." \
+ $var(mb).data add separator
+ $var(mb).data add cascade -label [msgcat::mc {Shape}] \
+ -menu $var(mb).data.shape
+ $var(mb).data add cascade -label [msgcat::mc {Error}] \
+ -menu $var(mb).data.error
+ $var(mb).data add separator
+ $var(mb).data add command -label "[msgcat::mc {Name}]..." \
-command [list DatasetNameDialog $varname]
# Shape
- menu $var(mb).dataset.shape
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Circle}] \
- -variable ${varname}(shape,symbol) -value circle \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Square}] \
- -variable ${varname}(shape,symbol) -value square \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Diamond}] \
- -variable ${varname}(shape,symbol) -value diamond \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Plus}] \
- -variable ${varname}(shape,symbol) -value plus \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Cross}] \
- -variable ${varname}(shape,symbol) -value cross \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Simple Plus}] \
- -variable ${varname}(shape,symbol) -value splus \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Simple Cross}] \
- -variable ${varname}(shape,symbol) -value scross \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Triangle}] \
- -variable ${varname}(shape,symbol) -value triangle \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add radiobutton \
- -label [msgcat::mc {Arrow}] \
- -variable ${varname}(shape,symbol) -value arrow \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add separator
- $var(mb).dataset.shape add checkbutton \
- -label [msgcat::mc {Fill}] \
- -variable ${varname}(shape,fill) \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.shape add cascade -label [msgcat::mc {Color}] \
- -menu $var(mb).dataset.shape.color
-
- # Color
- PlotColorMenu $var(mb).dataset.shape.color $varname shape,color \
- [list PlotScatterUpdateElement $varname]
+ PlotShapeMenu $varname
# Error
- menu $var(mb).dataset.error
- $var(mb).dataset.error add checkbutton -label [msgcat::mc {Show}] \
- -variable ${varname}(error) \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.error add checkbutton -label [msgcat::mc {Cap}] \
- -variable ${varname}(error,cap) \
- -command [list PlotScatterUpdateElement $varname]
- $var(mb).dataset.error add separator
- $var(mb).dataset.error add cascade -label [msgcat::mc {Color}] \
- -menu $var(mb).dataset.error.color
- $var(mb).dataset.error add cascade -label [msgcat::mc {Width}] \
- -menu $var(mb).dataset.error.width
-
- PlotColorMenu $var(mb).dataset.error.color $varname error,color \
- [list PlotScatterUpdateElement $varname]
- WidthDashMenu $var(mb).dataset.error.width $varname error,width {} \
- [list PlotScatterUpdateElement $varname] {}
-
- # graph
- set var(type) scatter
- set var(graph) [blt::graph $var(top).scatter \
- -width 600 \
- -height 500 \
- -highlightthickness 0 \
- ]
-
- pack $var(graph) -expand yes -fill both
-
- # set up zoom stack, assuming mode is zoom
- switch $ds9(wm) {
- x11 -
- win32 {Blt_ZoomStack $var(graph) -mode release}
- aqua {Blt_ZoomStack $var(graph) -mode release -button "ButtonPress-2"}
- }
+ PlotErrorMenu $varname
+}
+
+proc PlotScatterAddGraph {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set cc $var(graph,current)
+
+ set var(type$cc) scatter
+ set var(graph$cc) [blt::graph $var(canvas).gr$cc \
+ -width 600 \
+ -height 500 \
+ -highlightthickness 0 \
+ ]
}
proc PlotScatterUpdateElement {varname} {
upvar #0 $varname var
global $varname
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
# warning: uses current vars
- if {$var(data,total) == 0} {
+ if {$var(graph$cc,data,total) == 0} {
return
}
- set nn $var(data,current)
+ set nn $var(graph$cc,data,current)
PlotGetVar $varname $nn
- if {$var(shape,symbol) == "none"} {
- set var(shape,symbol) circle
+ if {$var(graph$cc,shape,symbol) == "none"} {
+ set var(graph$cc,shape,symbol) circle
}
- if {$var(shape,fill)} {
- set clr $var(shape,color)
+ if {$var(graph$cc,shape,fill)} {
+ set clr $var(graph$cc,shape,color)
} else {
set clr {}
}
- if {$var(error)} {
+ if {$var(graph$cc,error)} {
set show both
} else {
set show none
}
- if {$var(error,cap)} {
- set cap [expr $var(error,width)+3]
+ if {$var(graph$cc,error,cap)} {
+ set cap [expr $var(graph$cc,error,width)+3]
} else {
set cap 0
}
- $var(graph) element configure "d-${nn}" \
- -label $var(name) -hide [expr !$var(show)] \
- -symbol $var(shape,symbol) -fill $clr -scalesymbols no \
- -outline $var(shape,color) \
+ $var(graph$cc) element configure "d-${nn}" \
+ -label $var(graph$cc,name) -hide [expr !$var(graph$cc,show)] \
+ -symbol $var(graph$cc,shape,symbol) -fill $clr -scalesymbols no \
+ -outline $var(graph$cc,shape,color) \
-linewidth 0 -pixels 5 \
- -showerrorbars $show -errorbarcolor $var(error,color) \
- -errorbarwidth $var(error,width) -errorbarcap $cap
+ -showerrorbars $show -errorbarcolor $var(graph$cc,error,color) \
+ -errorbarwidth $var(graph$cc,error,width) -errorbarcap $cap
- $var(graph) pen configure active -color blue \
- -symbol $var(shape,symbol) \
+ $var(graph$cc) pen configure active -color blue \
+ -symbol $var(graph$cc,shape,symbol) \
-linewidth 0 -pixels 5 \
- -showerrorbars $show -errorbarcolor $var(error,color) \
- -errorbarwidth $var(error,width) -errorbarcap $cap
+ -showerrorbars $show -errorbarcolor $var(graph$cc,error,color) \
+ -errorbarwidth $var(graph$cc,error,width) -errorbarcap $cap
}
proc PlotScatterButton {varname x y} {
upvar #0 $varname var
global $varname
- if {$var(data,total) == 0} {
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ if {$var(graph$cc,data,total) == 0} {
return
}
@@ -225,18 +155,18 @@ proc PlotScatterButton {varname x y} {
return
}
- set rr [$var(graph) element closest $x $y]
+ set rr [$var(graph$cc) element closest $x $y]
set elem [lindex $rr 1]
set row [lindex $rr 3]
if {$elem != {}} {
if {$row != {}} {
- $var(graph) element deactivate $elem
- $var(graph) element activate $elem $row
+ $var(graph$cc) element deactivate $elem
+ $var(graph$cc) element activate $elem $row
# rows start at 1
eval "$var(callback) [expr $row+1]"
} else {
- $var(graph) element deactivate $elem
+ $var(graph$cc) element deactivate $elem
eval "$var(callback) {}"
}
}
@@ -246,15 +176,18 @@ proc PlotScatterHighliteElement {varname rowlist} {
upvar #0 $varname var
global $varname
- if {$var(data,total) == 0} {
+ set tt $var(graph,total)
+ set cc $var(graph,current)
+
+ if {$var(graph$cc,data,total) == 0} {
return
}
- if {$var(show)} {
- $var(graph) element deactivate d-1
+ if {$var(graph$cc,show)} {
+ $var(graph$cc) element deactivate d-1
if {$rowlist != {}} {
# can have multiple rows
- eval "$var(graph) element activate d-1 $rowlist"
+ eval "$var(graph$cc) element activate d-1 $rowlist"
}
}
}