# Copyright (C) 1999-2017 # Smithsonian Astrophysical Observatory, Cambridge, MA, USA # For conditions of distribution and use, see copyright notice in "copyright" package provide DS9 1.0 proc IExamDef {} { global iexam set iexam(button) 0 set iexam(key) 0 set iexam(any) 0 set iexam(frame) {} set iexam(x) {} set iexam(y) {} set iexam(event) {} set iexam(mode) {} } proc IExamButton {which xx yy} { global iexam global imarker if {$iexam(button) || $iexam(any)} { # we need this cause MarkerMotion maybe called, # and we don't want it set imarker(motion) none set imarker(handle) -1 set iexam(frame) $which set iexam(x) $xx set iexam(y) $yy if {$iexam(any)} { set iexam(event) {<1>} } set iexam(button) 0 set iexam(any) 0 } } proc IExamKey {which K xx yy} { global iexam if {$iexam(key) || $iexam(any)} { set iexam(frame) $which set iexam(x) $xx set iexam(y) $yy set iexam(event) $K set iexam(key) 0 set iexam(any) 0 } } proc ProcessSendIExamCmd {proc id param} { global iexam global icursor global current set iexam(frame) {} set iexam(x) {} set iexam(y) {} set iexam(event) {} set iexam(mode) $current(mode) set current(mode) iexam set iexam(button) 0 set iexam(key) 0 set iexam(any) 0 # turn on blinking cursor set icursor(timer) 1 CursorTimer switch -- [string tolower [lindex $param 0]] { button { set iexam(button) 1 set varname {iexam(button)} set param [join [lreplace $param 0 0]] } key { set iexam(key) 1 set varname {iexam(key)} set param [join [lreplace $param 0 0]] } any { set iexam(any) 1 set varname {iexam(any)} set param [join [lreplace $param 0 0]] } default { set iexam(button) 1 set varname {iexam(button)} } } switch -- [string tolower [lindex $param 0]] { value - data { vwait $varname set w [lindex $param 1] set h [lindex $param 2] if {$w == {}} { set w 1 } if {$h == {}} { set h 1 } $proc $id "$iexam(event) [$iexam(frame) get data canvas $iexam(x) $iexam(y) $w $h]\n" } coordinate { set sys [lindex $param 1] set sky [lindex $param 2] set skyformat [lindex $param 3] switch -- $skyformat { {} {set skyformat degrees} } switch -- $sky { {} {set sky fk5} } switch -- $sys { {} {set sys physical} fk4 - fk5 - icrs - galactic - ecliptic {set sky $sys; set sys wcs} } vwait $varname $proc $id "$iexam(event) [$iexam(frame) get coordinates $iexam(x) $iexam(y) $sys $sky $skyformat]\n" } {} { vwait $varname $proc $id "$iexam(event) [$iexam(frame) get coordinates $iexam(x) $iexam(y) image fk5 degrees]\n" } default { vwait $varname set cmd $param # $width,$height,$depth,$bitpix ParseXYBitpixMacro cmd $iexam(frame) # $filename[$regions] ParseFilenameRegionMacro cmd $iexam(frame) # $filename ParseFilenameMacro cmd $iexam(frame) # $regions ParseRegionMacro cmd $iexam(frame) # $env ParseEnvMacro cmd # $pan ParsePanMacro cmd $iexam(frame) # $value ParseValueMacro cmd $iexam(frame) $iexam(x) $iexam(y) # $x,$y ParseXYMacro cmd $iexam(frame) $iexam(x) $iexam(y) # $z ParseZMacro cmd $iexam(frame) $proc $id "$iexam(event) $cmd\n" } } # turn off blinking cursor set icursor(timer) 0 set current(mode) $iexam(mode) set iexam(button) 0 set iexam(key) 0 set iexam(frame) {} set iexam(x) {} set iexam(y) {} set iexam(event) {} set iexam(mode) {} }