From 8cc618eb28ea86eb10d6febd94a0d07ea1807c46 Mon Sep 17 00:00:00 2001 From: William Joye Date: Mon, 27 May 2019 15:07:13 -0400 Subject: add strip plot support --- ds9/library/ime.tcl | 611 ----------------------------------- ds9/library/markeranalysishist.tcl | 7 +- ds9/library/markeranalysisplot2d.tcl | 7 +- ds9/library/markeranalysisplot3d.tcl | 7 +- ds9/library/markeranalysisradial.tcl | 7 +- ds9/library/plot.tcl | 64 ++-- 6 files changed, 55 insertions(+), 648 deletions(-) delete mode 100644 ds9/library/ime.tcl 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..1fb1970 100644 --- a/ds9/library/markeranalysishist.tcl +++ b/ds9/library/markeranalysishist.tcl @@ -80,8 +80,11 @@ proc MarkerAnalysisHistogramCB {frame id} { } PlotLineDialog $vvarname $tt Histogram $bunit Counts - set vvar(manage) 0 - set vvar(dim) xy + set tt $vvar(graph,total) + set cc $vvar(graph,current) + + set vvar(graph$cc,manage) 0 + set vvar(graph$cc,dim) xy set vvar(xdata) $xdata set vvar(ydata) $ydata blt::vector create $xdata $ydata diff --git a/ds9/library/markeranalysisplot2d.tcl b/ds9/library/markeranalysisplot2d.tcl index a8fdf1d..e257601 100644 --- a/ds9/library/markeranalysisplot2d.tcl +++ b/ds9/library/markeranalysisplot2d.tcl @@ -169,8 +169,11 @@ proc MarkerAnalysisPlot2dCB {frame id} { $vvar(graph) xaxis configure \ -command "MarkerAnalysisPlot2dXAxis $vvarname" - set vvar(manage) 0 - set vvar(dim) xy + set tt $vvar(graph,total) + set cc $vvar(graph,current) + + set vvar(graph$cc,manage) 0 + set vvar(graph$cc,dim) xy set vvar(xdata) $xdata set vvar(ydata) $ydata blt::vector create $xdata $ydata $xcdata $ycdata diff --git a/ds9/library/markeranalysisplot3d.tcl b/ds9/library/markeranalysisplot3d.tcl index 2b93cbc..272d1ed 100644 --- a/ds9/library/markeranalysisplot3d.tcl +++ b/ds9/library/markeranalysisplot3d.tcl @@ -174,8 +174,11 @@ proc MarkerAnalysisPlot3dCB {frame id} { set vvar(mode) pointer PlotChangeMode $vvarname - set vvar(manage) 0 - set vvar(dim) xy + set tt $vvar(graph,total) + set cc $vvar(graph,current) + + set vvar(graph$cc,manage) 0 + set vvar(graph$cc,dim) xy set vvar(xdata) $xdata set vvar(ydata) $ydata blt::vector create $xdata $ydata diff --git a/ds9/library/markeranalysisradial.tcl b/ds9/library/markeranalysisradial.tcl index 45a552d..56df594 100644 --- a/ds9/library/markeranalysisradial.tcl +++ b/ds9/library/markeranalysisradial.tcl @@ -107,8 +107,11 @@ proc MarkerAnalysisRadialCB {frame id} { PlotLineDialog $vvarname $tt "Radial Profile" $sys {} MarkerAnalysisRadialAxisTitle $vvarname - set vvar(manage) 0 - set vvar(dim) xyey + set tt $vvar(graph,total) + set cc $vvar(graph,current) + + set vvar(graph$cc,manage) 0 + set vvar(graph$cc,dim) xyey set vvar(xdata) $xdata set vvar(ydata) $ydata set vvar(yedata) $yedata diff --git a/ds9/library/plot.tcl b/ds9/library/plot.tcl index 445a970..74ff7af 100644 --- a/ds9/library/plot.tcl +++ b/ds9/library/plot.tcl @@ -222,10 +222,10 @@ proc PlotDeleteData {varname} { } # first set can be external - set clear $var(1,manage) + set clear $var(graph$cc,1,manage) for {set nn 1} {$nn<=$var(graph$cc,data,total)} {incr nn} { - if {$var($nn,manage)} { + if {$var(graph$cc,$nn,manage)} { # delete elements foreach el [$var(graph$cc) element names] { set f [split $el -] @@ -236,7 +236,7 @@ proc PlotDeleteData {varname} { # destroy vectors blt::vector destroy $var($nn,xdata) $var($nn,ydata) - switch $var($nn,dim) { + switch $var(graph$cc,$nn,dim) { xy {} xyex {blt::vector destroy $var($nn,xedata)} xyey {blt::vector destroy $var($nn,yedata)} @@ -298,8 +298,8 @@ proc PlotCurrentData {varname} { if {$var(graph$cc,data,total) > 0} { set nn $var(graph$cc,data,current) - set var(manage) $var($nn,manage) - set var(dim) $var($nn,dim) + set var(graph$cc,manage) $var(graph$cc,$nn,manage) + set var(graph$cc,dim) $var(graph$cc,$nn,dim) set var(xdata) $var($nn,xdata) set var(ydata) $var($nn,ydata) @@ -373,7 +373,7 @@ proc PlotDataSetOne {varname dim data} { set yedata ap${varname}ye${nn} # basics xy - set var(manage) 1 + set var(graph$cc,manage) 1 set var(name) "Dataset $nn" set var(xdata) $xdata set var(ydata) $ydata @@ -392,7 +392,7 @@ proc PlotDataSetOne {varname dim data} { switch -- $dim { 2 - xy { - set var(dim) xy + set var(graph$cc,dim) xy set var(xedata) {} set var(yedata) {} @@ -405,7 +405,7 @@ proc PlotDataSetOne {varname dim data} { } xyex { - set var(dim) xyex + set var(graph$cc,dim) xyex set var(xedata) $xedata set var(yedata) {} @@ -424,7 +424,7 @@ proc PlotDataSetOne {varname dim data} { 3 - xyey { - set var(dim) xyey + set var(graph$cc,dim) xyey set var(xedata) {} set var(yedata) $yedata @@ -442,7 +442,7 @@ proc PlotDataSetOne {varname dim data} { } xyexey { - set var(dim) xyexey + set var(graph$cc,dim) xyexey set var(xedata) $xedata set var(yedata) $yedata @@ -462,7 +462,7 @@ proc PlotDataSetOne {varname dim data} { } 4.1 { - set var(dim) xyey + set var(graph$cc,dim) xyey set var(xedata) {} set var(yedata) $yedata @@ -480,7 +480,7 @@ proc PlotDataSetOne {varname dim data} { } 4.2 { - set var(dim) xy + set var(graph$cc,dim) xy set var(xedata) {} set var(yedata) {} @@ -493,7 +493,7 @@ proc PlotDataSetOne {varname dim data} { } 5.1 { - set var(dim) xyey + set var(graph$cc,dim) xyey set var(xedata) {} set var(yedata) $yedata @@ -511,7 +511,7 @@ proc PlotDataSetOne {varname dim data} { } 5.2 { - set var(dim) xyey + set var(graph$cc,dim) xyey set var(xedata) {} set var(yedata) $yedata @@ -529,8 +529,8 @@ proc PlotDataSetOne {varname dim data} { } } - set var($nn,manage) 1 - set var($nn,dim) $var(dim) + set var(graph$cc,$nn,manage) 1 + set var(graph$cc,$nn,dim) $var(graph$cc,dim) set var($nn,xdata) $var(xdata) set var($nn,ydata) $var(ydata) @@ -586,8 +586,8 @@ proc PlotDupData {varname mm} { set var($nn,yedata) {} } - set var($nn,manage) 1 - set var($nn,dim) $var($mm,dim) + set var(graph$cc,$nn,manage) 1 + set var(graph$cc,$nn,dim) $var(graph$cc,$mm,dim) set var($nn,show) $var($mm,show) set var($nn,shape,symbol) $var($mm,shape,symbol) @@ -613,8 +613,8 @@ proc PlotDupData {varname mm} { # make current set var(graph$cc,data,current) $nn - set var(manage) $var($nn,manage) - set var(dim) $var($nn,dim) + set var(graph$cc,manage) $var(graph$cc,$nn,manage) + set var(graph$cc,dim) $var(graph$cc,$nn,dim) set var(xdata) $var($nn,xdata) set var(ydata) $var($nn,ydata) @@ -645,7 +645,7 @@ proc PlotDestroy {varname} { } for {set nn 1} {$nn<=$var(graph$cc,data,total)} {incr nn} { - switch $var($nn,dim) { + switch $var(graph$cc,$nn,dim) { xy { blt::vector destroy $var($nn,xdata) $var($nn,ydata) } @@ -700,8 +700,8 @@ proc PlotExternal {varname} { set var(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) @@ -736,6 +736,9 @@ proc PlotListGenerate {varname} { upvar #0 $varname var global $varname + set tt $var(graph,total) + set cc $var(graph,current) + set rr {} if {$var(xdata) != {}} { global $var(xdata) $var(ydata) $var(xedata) $var(yedata) @@ -743,7 +746,7 @@ proc PlotListGenerate {varname} { set xx [$var(xdata) range] set yy [$var(ydata) range] - switch $var(dim) { + switch $var(graph$cc,dim) { xy { for {set ii 0} {$ii<$ll} {incr ii} { append rr "[lindex $xx $ii] [lindex $yy $ii]\n" @@ -1065,6 +1068,9 @@ proc PlotSaveDataFile {varname filename} { upvar #0 $varname var global $varname + set tt $var(graph,total) + set cc $var(graph,current) + if {$var(xdata) == {}} { return } @@ -1079,7 +1085,7 @@ proc PlotSaveDataFile {varname filename} { set yy [$var(ydata) range] set ch [open $filename w] - switch $var(dim) { + switch $var(graph$cc,dim) { xy { for {set ii 0} {$ii<$ll} {incr ii} { puts $ch "[lindex $xx $ii] [lindex $yy $ii]" @@ -1223,12 +1229,12 @@ proc PlotUpdateGraph {varname} { $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 @@ -1375,7 +1381,7 @@ proc PlotBackup {ch dir} { 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}(graph$cc,data,current) $save -- cgit v0.12