blob: f248c0289356c74ea6ad979d5968b61cc71aaf98 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
# 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 EllipseDialog {varname} {
upvar #0 $varname var
global $varname
global pmarker
# see if we already have a header window visible
if {[winfo exists $var(top)]} {
raise $var(top)
return
}
# variables
set rr [$var(frame) get wcs]
set var(dcoord) [lindex $rr 0]
set var(dformat) $pmarker(dformat)
AdjustCoordSystem $varname dcoord
set var(fill) [$var(frame) get marker $var(id) ellipse fill]
# procs
set var(proc,apply) EllipseApply
set var(proc,close) EllipseClose
set var(proc,coordCB) EllipseCoordCB
# base
MarkerBaseCenterDialog $varname
# menu
$var(mb).width add separator
$var(mb).width add checkbutton -label [msgcat::mc {Fill}] \
-variable ${varname}(fill) -command [list EllipseFill $varname]
# analysis
$var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
menu $var(mb).analysis
MarkerAnalysisStatsDialog $varname
MarkerAnalysisHistogramDialog $varname
MarkerAnalysisPlot3dDialog $varname
# init
EllipseEditCB $varname
MarkerBaseCenterRotateCB $varname
# callbacks
$var(frame) marker $var(id) callback edit EllipseEditCB $varname
$var(frame) marker $var(id) callback rotate \
MarkerBaseCenterRotateCB $varname
set f $var(top).param
# Radius
ttk::label $f.tradius -text Radius
ttk::entry $f.radius1 -textvariable ${varname}(radius1) -width 13
ttk::entry $f.radius2 -textvariable ${varname}(radius2) -width 13
DistMenuButton $f.uradius $varname dcoord 1 dformat \
[list EllipseEditCB $varname]
DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat
# Angle
ttk::label $f.tangle -text [msgcat::mc {Angle}]
ttk::entry $f.angle -textvariable ${varname}(angle) -width 13
ttk::label $f.uangle -text [msgcat::mc {Degrees}]
grid $f.tradius $f.radius1 $f.radius2 $f.uradius -padx 2 -pady 2 -sticky w
grid $f.tangle $f.angle $f.uangle -padx 2 -pady 2 -sticky w
}
# actions
proc EllipseClose {varname} {
upvar #0 $varname var
global $varname
$var(frame) marker $var(id) delete callback edit EllipseEditCB
$var(frame) marker $var(id) delete callback rotate MarkerBaseCenterRotateCB
MarkerBaseCenterClose $varname
}
proc EllipseApply {varname} {
upvar #0 $varname var
global $varname
if {$var(radius1) != {} &&
$var(radius2) !={}} {
$var(frame) marker $var(id) ellipse radius \
$var(radius1) $var(radius2) $var(dcoord) $var(dformat)
}
MarkerBaseCenterRotate $varname
MarkerBaseCenterApply $varname
}
# support
proc EllipseFill {varname} {
upvar #0 $varname var
global $varname
$var(frame) marker $var(id) ellipse fill $var(fill)
}
# callbacks
proc EllipseCoordCB {varname {dummy {}}} {
upvar #0 $varname var
global $varname
global debug
if {$debug(tcl,marker)} {
puts stderr "EllipseCoordCB"
}
MarkerAnalysisStatsSystem $varname
MarkerAnalysisPlot3dSystem $varname
MarkerBaseCoordCB $varname
MarkerBaseCenterMoveCB $varname
MarkerBaseCenterRotateCB $varname
}
proc EllipseEditCB {varname {dummy {}}} {
upvar #0 $varname var
global $varname
global debug
if {$debug(tcl,marker)} {
puts stderr "EllipseEditCB"
}
set r [$var(frame) get marker $var(id) ellipse radius \
$var(dcoord) $var(dformat)]
set var(radius1) [lindex $r 0]
set var(radius2) [lindex $r 1]
}
|