summaryrefslogtreecommitdiffstats
path: root/ds9/library/projection.tcl
blob: 3291c6ea0613ceaf35e367dcee2a1a755d93d29e (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
#  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 ProjectionDialog {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
    }

    # variables
    set rr [$var(frame) get wcs]
    set var(tcoord) [lindex $rr 0]
    set var(tformat) degrees
    AdjustCoordSystem $varname tcoord

    # procs
    set var(which) projection
    set var(proc,apply) ProjectionApply
    set var(proc,coordCB) ProjectionCoordCB
    set var(proc,editCB) ProjectionEditCB
    set var(proc,distCB) ProjectionDistCB

    # base
    MarkerBaseLineDialog $varname 500 200

    # analysis
    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
    menu $var(mb).analysis

    # plot2d
    MarkerAnalysisPlot2dDialog $varname

    # init
    ProjectionThickCB $varname

    set f $var(top).param

    # Thick
    ttk::label $f.tthick -text [msgcat::mc {Thickness}]
    ttk::entry $f.thick -textvariable ${varname}(thick) -width 13
    DistMenuButton $f.uthick $varname tcoord 1 tformat \
	[list ProjectionThickCB $varname]
    DistMenuEnable $f.uthick.menu $varname tcoord 1 tformat

    grid $f.tthick $f.thick $f.uthick -padx 2 -pady 2 -sticky w
}

# actions

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

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

    $var(frame) marker $var(id) projection $var(system) $var(sky) \
	$var(x) $var(y) $var(x2) $var(y2) \
	$var(thick) $var(tcoord) $var(tformat)

    MarkerBaseLineApply $varname
}

# callbacks

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

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

    MarkerAnalysisPlot2dSystem $varname
    MarkerBaseCoordCB $varname
    ProjectionEditCB $varname
}

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

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

    MarkerBaseLineEditCB $varname

    set var(dist) [$var(frame) get marker $var(id) projection length \
		       $var(dcoord) $var(dformat)]
    set var(thick) [$var(frame) get marker $var(id) projection thick \
			$var(tcoord) $var(tformat)]
    set var(angle) [$var(frame) get marker $var(id) angle \
			$var(system) $var(sky)]
}

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

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

    set var(dist) [$var(frame) get marker $var(id) projection length \
		       $var(dcoord) $var(dformat)]
}

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

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

    set var(thick) [$var(frame) get marker $var(id) projection thick \
			$var(tcoord) $var(tformat)]
}