aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/ximtool/gui.bak/save.tcl
blob: 36706d31a8dce31212085c9209e305dbc0345936 (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
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156

################################################################################
# Save panel functions.
################################################################################

# Global variables needed for the save setup panel

set format	rasButton
set saveColor	svPseudoButton

set fileFmtButtons {
    rasButton gifButton jpegButton tiffButton 
    fitsButton x11Button epsButton rawButton 
}


# Format group procedures.
#---------------------------------

# Select a format.

proc set_format { widget func state args } \
{
    global format saveColor

    send $format set on false
    if {$widget == $format} {
	send $widget set on true
    } else {
	switch $widget  { 
	rasButton	{ send client setSaveOption format ras  } 
	gifButton	{ send client setSaveOption format gif  }
	jpegButton	{ send client setSaveOption format jpeg }
	tiffButton	{ send client setSaveOption format tiff }
	fitsButton	{ send client setSaveOption format fits }
	x11Button	{ send client setSaveOption format x11  }
	epsButton	{ send client setSaveOption format eps  }
	rawButton	{ send client setSaveOption format raw  }
	}
    }
} ; foreach fmt $fileFmtButtons { send $fmt addCallback set_format }

proc setSaveFile { widget cbtype args } \
{
	send client setSaveOption fname $args
	send saveStatus set label [format "output file set to %s" $args]
}; send saveFile addCallback setSaveFile


proc doSaveOptions { param old new } \
{
    global format saveColor
    global warnings

    send saveStatus set label {}
    set val [join [lrange $new 1 end] " "]

    #print [format "doSaveOptions %s = %s" [lindex $new 0] $val]
    switch [lindex $new 0] {
    format  {   
		# Now (de)sensitize the color options depending on the format,
		# force the color choice when needed.
    		send $format set on false
		switch [lindex $val 0] {
		ras       { #send svRGBButton setSensitive false
		            send svPseudoButton setSensitive true
			    set format rasButton
		          }
		gif       { send svRGBButton setSensitive false
		            send svPseudoButton setSensitive true
		            if {$saveColor == "svRGBButton"} {
		                send $saveColor set on false
		                send svPseudoButton set on true
		                set saveColor svPseudoButton
		            }
			    set format gifButton
		          }
		jpeg      { send svRGBButton setSensitive true
		            send svPseudoButton setSensitive true
			    set format jpegButton
		          }
		tiff      { send svRGBButton setSensitive false
		            send svPseudoButton setSensitive true
			    set format tiffButton
		          }
		fits      { send svRGBButton setSensitive false
		            send svPseudoButton setSensitive false
		            send $saveColor set on false
		            send svGrayButton set on true
		            set saveColor svGrayButton
			    set format fitsButton
		          }
		x11       { send svRGBButton setSensitive true
		            send svPseudoButton setSensitive true
			    set format x11Button
		          }
		eps       { send svRGBButton setSensitive true
		            send svPseudoButton setSensitive true
			    set format epsButton
		          }
		raw       { send svRGBButton setSensitive true
		       	    send svPseudoButton setSensitive true
			    set format rawButton
		          }
		}
    		send $format set on true
	    }
    color   { send $saveColor set on false
	      switch [lindex $val 0] {
	      grayscale   { send svGrayButton set on true
     			    set saveColor svGrayButton
			  }
	      pseudocolor { send svPseudoButton set on true
     			    set saveColor svPseudoButton
			  }
	      rgb	  { send svRGBButton set on true
     			    set saveColor svRGBButton
			  }
	      }
	    }
    fname   { send saveFile set string $val
	    }
    status  { send saveStatus set label $val
	      send server synchronize
	    }
    text    { send saveData set label $val
	    }
    warning { if {$warnings} { Wexec server $val }
	    }
    }
} ; send saveOptions addCallback doSaveOptions


# Color group procedures.
#---------------------------------
send svGrayButton   addCallback "send client setSaveOption color grayscale"
send svPseudoButton addCallback "send client setSaveOption color pseudocolor"
send svRGBButton    addCallback "send client setSaveOption color rgb"


proc Save args \
{
    global panel_up

    send imagewin setCursorType busy

    # Get the print command or file template if not previous reset.
    set val [ send saveFile get string ]
    send client setSaveOption fname $val
    send saveStatus set label [format "output file set to %s" $args]

    send client save
    send imagewin setCursorType idle
} ; send okaySave addCallback Save