Viewing contents of file '../idllib/contrib/tappin/graffer/gr_img_menus.pro'
;+
; GR_IMG_MENUS
; Menu for setting options for "IMAGE" format display.
;
; Usage:
; gr_img_menus, pdefs, data
;
; Arguments:
; pdefs struct input The Graffer data & control structure.
; data struct in/out The data structure extracted from pdefs
; History:
; Original: 9/12/96; SJT
; Warn if inadequate colours: 8/5/97; SJT
;-
function Img_event, event
widget_control, event.id, get_uvalue = but
widget_control, event.handler, get_uvalue = uv, /no_copy
iexit = 0
case but of
'DO': begin
widget_control, uv.r1, get_value = r1
widget_control, uv.r2, get_value = r2
uv.zopts.range = [r1, r2]
widget_control, uv.px, get_value = px
uv.zopts.pxsize = px
widget_control, uv.gma, get_value = g
uv.gamma = g
iexit = 1
end
'CANCEL': iexit = -1
'TAB': uv.table = event.index
'POP': begin
widget_control, event.top, /show
widget_control, event.id, timer = 2
end
endcase
widget_control, event.handler, set_uvalue = uv, /no_copy
return, { $
Id:event.id, $
Top:event.top, $
Handler:0l, $
Exited:iexit $
}
end
pro Gr_img_menus, pdefs, data
i = pdefs.cset
widget_control, pdefs.ids.graffer, sensitive = 0
tlb = widget_base(title = 'Graffer Image Options', group_leader = $
pdefs.ids.graffer, resource = 'Graffer')
base = widget_base(tlb, /column, xpad = 1, ypad = 1, space = 1)
if (pdefs.short_colour) then begin
msg = [" * * * W A R N I N G * * * ", $
"Extended colour table cannot be loaded", $
"Image format displays will be skipped"]
junk = widget_text(base, value = msg, xsize = max(strlen(msg)), $
ysize = n_elements(msg), /align_center)
endif
obase = widget_base(base, /row, xpad = 1, ypad = 1, space = 1)
jb = widget_base(obase, /column, xpad = 1, ypad = 1, space = 1)
junk = widget_label(jb, value = 'Range')
r1 = graff_enter(jb, /float, value = data(i).zopts.range(0), format $
= "(g12.4)", xsize = 14, uvalue = 'R1', label = $
'Min:', /no_event, /capture)
r2 = graff_enter(jb, /float, value = data(i).zopts.range(1), format $
= "(g12.4)", xsize = 14, uvalue = 'R2', label = $
'Max:', /no_event, /capture)
junk = widget_label(jb, value = ' ')
px = graff_enter(jb, /float, value = data(i).zopts.pxsize, format = $
"(f8.5)", xsize = 9, uvalue = 'PX', label = 'Pixel ' + $
'Size:', /no_event, /capture)
jb = widget_base(obase, /column, xpad = 1, ypad = 1, space = 1)
itl = 1
loadct, get_names = itl
junk = widget_label(jb, value = 'Colour Table')
junk = widget_list(jb, value = itl, uvalue = 'TAB', ysize = 5)
widget_control, junk, set_list_select = pdefs.ctable
gma = graff_enter(jb, /float, value = pdefs.gamma, format $
= "(f7.3)", xsize = 9, uvalue = 'GAM', label = $
'Gamma:', /no_event, /capture)
obase = widget_base(base, /row, xpad = 1, ypad = 1, space = 1, uvalue = 'POP')
junk = widget_button(obase, value = ' Cancel ', uvalue = $
'CANCEL')
junk = widget_button(obase, value = ' Do it ', uvalue = 'DO')
uv = { $
R1:r1, $
R2:r2, $
Px:px, $
Gma:gma, $
Zopts:data(i).zopts, $
Table:pdefs.ctable, $
gamma:pdefs.gamma $
}
widget_control, tlb, /real
widget_control, base, set_uvalue = uv, /no_copy, event_func = $
'img_event'
if (pdefs.popflag) then widget_control, obase, timer = 2.
; RYO widget management to allow us to get the values back from
; the event handler without using a common block, even after the
; hierarchy has been destroyed.
repeat begin
ev = widget_event(base)
endrep until (ev.exited ne 0)
widget_control, base, get_uvalue = uv, /no_copy
widget_control, tlb, /destroy
if (ev.exited eq 1) then begin
data(i).zopts = uv.zopts
pdefs.ctable = uv.table
pdefs.gamma = uv.gamma
graff_colours, pdefs
endif
widget_control, pdefs.ids.graffer, sensitive = 1
end