aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/ximtool/gui/hdr.tcl
blob: 4dc7489a437681a2c36792797f0af3d52521f531 (plain) (blame)
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

################################################################################
#  Header Display Callbacks.
################################################################################

set hdrImage		""
set hdrImageId		""
set hdrKeywords		"*"


proc fitsHdrClose args \
{
    global hdr_up

    send hdr_panel unmap
    send imageHeader set on False
    set hdr_up 0
} ; send hdrClose addCallback fitsHdrClose

proc ptFitsHeader {widget type state args} \
{
    global hdr_up

    set hdr_up $state
    if {$hdr_up == 1} {
	send imageHeader set on True
	send hdr_panel map
    } else {
	send imageHeader set on False
	send hdr_panel unmap
    }
}; send imageHeader addCallback ptFitsHeader

proc getHeader { name id } \
{
    global hdrImage hdrImageId hdrKeywords

    set hdrImage $name
    set hdrImageId $id
    send hdrObjMenu set label $name
    send hdrText   setText ""
    send hdrIGText set string ""
    send hdrKGText set string ""

    catch { send wcspix objinfo $hdrImageId $hdrKeywords }
}

proc hdrKeywFilter args \
{
    global hdrImageId hdrKeywords

    set str [ send hFindEntry get string ]
    if {$str != ""} {
	set hdrKeywords $str
	send hdrText setText ""
	catch { send wcspix objinfo $hdrImageId $hdrKeywords }
    }
} ; send hdrFilter addCallback hdrKeywFilter


# Set the image menu in the header panel.
proc setHdrObjMenu { frame args } \
{
    global frameCache ism_enable

    if {! $ism_enable} \
	return

    # Create the menu of images for the header panel.
    set items { }
    foreach i [list $frameCache($frame)] {
        set l [lindex $i 0]
        set lid [lindex $i 1]
        regsub -all {[\[]} $l  "\\\[" l2
	catch {
            lappend items [format "%s f.exec \{getHeader %s %d\}" $l $l2 $lid]
	}
    }
    editMenu objMenu hdrObjMenu $items
}


# Search box for the header.
proc hdrFind args \
{
    set phrase  [send hFindEntry get string]

    if { $phrase != "" } {
        if {[send hdrText searchText $phrase start end forward caseless] > 0} {
            set elid [lindex [lindex $start 0] 0]
            set id   [max 1 [expr $elid - 10] ]
            send hdrText gotoId $id
            send hdrText setSelection $start $end
        } else {
            send warnText set label "Search string not found."
            send warning map
        }
    } else {
        send warnText set label "Warning: No search phrase entered."
        send warning map
    }
} ; foreach w { hFindEntry hdrFind } { send $w addCallback hdrFind }

send hdrClear addCallback { send hFindEntry set string "" }