summaryrefslogtreecommitdiffstats
path: root/ds9/library/cpanda.tcl
blob: 9118ffe98597ca58f2831edb20038522d53f83a4 (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
#  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 PandaDialog {varname} {
    upvar #0 $varname var
    global $varname

    # see if we already have a header window visible
    if {[winfo exists $var(top)]} {
	raise $var(top)
	return
    }

    # procs
    set var(which) panda
    set var(proc,apply) PandaApply
    set var(proc,close) PandaClose
    set var(proc,generate) PandaGenerate
    set var(proc,coordCB) PandaCoordCB
    set var(proc,editCB) PandaEditCB
    set var(proc,distCB) PandaDistCB

    # base panda dialog
    MarkerBasePandaDialog $varname

    set f $var(top).param

    # Radius
    ttk::label $f.tinner -text [msgcat::mc {Inner}]
    ttk::label $f.touter -text [msgcat::mc {Outer}]
    ttk::label $f.tradius -text [msgcat::mc {Radius}]
    ttk::entry $f.inner -textvariable ${varname}(inner) -width 13
    ttk::entry $f.outer -textvariable ${varname}(outer) -width 13
    DistMenuButton $f.uradius $varname dcoord 1 dformat \
	[list $var(proc,distCB) $varname]
    DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat

    # Annuli
    ttk::label $f.tannuli -text [msgcat::mc {Annuli}]
    ttk::entry $f.annuli -textvariable ${varname}(annuli) -width 13

    grid x $f.tinner $f.touter -padx 2 -pady 2 -sticky w
    grid $f.tradius $f.inner $f.outer $f.uradius -padx 2 -pady 2 -sticky w
    grid $f.tannuli $f.annuli -padx 2 -pady 2 -sticky w

    # init - do this last
    PandaDistCB $varname
}

# actions

proc PandaClose {varname} {
    upvar #0 $varname var
    global $varname

    MarkerBasePandaClose $varname
}

proc PandaApply {varname} {
    upvar #0 $varname var
    global $varname

    MarkerBasePandaApply $varname
}

proc PandaGenerate {varname} {
    upvar #0 $varname var
    global $varname

    MarkerBaseAnnulusGenerateCircle $varname
    MarkerBasePandaGenerateAngles $varname
}

# callbacks

proc PandaCoordCB {varname {dummy {}}} {
    upvar #0 $varname var
    global $varname

    global debug
    if {$debug(tcl,marker)} {
	puts stderr "PandaCoordCB"
    }

    MarkerBasePandaCoordCB $varname
}

proc PandaEditCB {varname {dummy {}}} {
    upvar #0 $varname var
    global $varname

    global debug
    if {$debug(tcl,marker)} {
	puts stderr "PandaEditCB"
    }

    set t [$var(frame) get marker $var(id) panda radius \
	       $var(dcoord) $var(dformat)]

    set last [expr [llength $t]-1]
    set var(inner) [lindex $t 0]
    set var(outer) [lindex $t $last]
    set var(annuli) $last

    $var(annulitxt) delete 1.0 end
    $var(annulitxt) insert end "$t"

    set a [$var(frame) get marker $var(id) panda angle $var(system) $var(sky)]

    set last [expr [llength $a]-1]
    set var(ang1) [lindex $a 0]
    set var(ang2) [lindex $a $last]
    set var(angnum) $last

    $var(angtxt) delete 1.0 end
    $var(angtxt) insert end "$a"
}

proc PandaDistCB {varname {dummy {}}} {
    upvar #0 $varname var
    global $varname

    global debug
    if {$debug(tcl,marker)} {
	puts stderr "PandaDistCB"
    }

    MarkerBasePandaDistCB $varname
}