Viewing contents of file '../idllib/contrib/buie/cw_ipmgr.pro'
;+
; NAME:
; cw_ipmgr
; PURPOSE: (one line)
; Display and edit itool image parameters.
; DESCRIPTION:
;
; CATEGORY:
; Compound Widgets
; CALLING SEQUENCE:
; result = cw_ipmgr( parent )
; INPUTS:
;
; OPTIONAL INPUT PARAMETERS:
;
; KEYWORD PARAMETERS:
; UVALUE = Optional user value.
; OUTPUTS:
;
; COMMON BLOCKS:
;
; SIDE EFFECTS:
;
; RESTRICTIONS:
;
; PROCEDURE:
;
; MODIFICATION HISTORY:
; Written by Doug Loucks, Lowell Observatory.
; June 17, 1994, DWL, Converted to Compound Widget.
;-
; ------------------------------------------------------------------------------
; Procedure cw_ipmgr_svl
; Set the value of cw_ipmgr
; ------------------------------------------------------------------------------
PRO cw_ipmgr_svl, id, dummy
;Note: The 'value' is a dummy argument. The image parameters are stored in
;the parent uvalue (the TLB).
;I would like to change this to function more like a real compound widget,
;but there is no time.
;Retrieve the state.
stash = WIDGET_INFO( id, /CHILD )
WIDGET_CONTROL, stash, GET_UVALUE=state, /NO_COPY
WIDGET_CONTROL, state.topbase, GET_UVALUE=im_parms, /NO_COPY
;Refresh the text widgets.
f = '(G0.2)'
WIDGET_CONTROL, state.imfileid, SET_VALUE=im_parms.imfile
WIDGET_CONTROL, state.airmassid, $
SET_VALUE=STRING(im_parms.airmass, FORMAT=f )
WIDGET_CONTROL, state.exptimeid, $
SET_VALUE=STRING(im_parms.exptime, FORMAT=f )
WIDGET_CONTROL, state.expdeltaid, $
SET_VALUE=STRING(im_parms.expdelta,FORMAT=f)
WIDGET_CONTROL, state.filterid, SET_VALUE=im_parms.filter
WIDGET_CONTROL, state.objectid, SET_VALUE=im_parms.object
WIDGET_CONTROL, state.dateid, SET_VALUE=im_parms.date
WIDGET_CONTROL, state.utid, SET_VALUE=im_parms.ut
julian = STRTRIM( STRING( im_parms.jd, FORMAT='(D15.5)' ), 2 )
WIDGET_CONTROL, state.jdid, SET_VALUE=julian
WIDGET_CONTROL, state.topbase, SET_UVALUE=im_parms, /NO_COPY
WIDGET_CONTROL, stash, SET_UVALUE=state, /NO_COPY
END
; ------------------------------------------------------------------------------
; Function cw_ipeve
; Event handler.
; ------------------------------------------------------------------------------
FUNCTION cw_ipeve, event
;Retrieve the state.
stash = WIDGET_INFO( event.handler, /CHILD )
WIDGET_CONTROL, stash, GET_UVALUE=state, /NO_COPY
;Retrieve the parameters.
WIDGET_CONTROL, event.top, GET_UVALUE=im_parms, /NO_COPY
;Get the value of the widget that generated the event.
WIDGET_CONTROL, event.id, GET_VALUE=value
val = value[0]
;Initialize some local variables.
name = ''
out_event = 0
;Handle the event.
CASE event.id OF
state.dismissid : BEGIN
;Put the parameter and state structures away, Unmap the top level base,
;and destroy the rest of the hierarchy.
WIDGET_CONTROL, event.top, SET_UVALUE=im_parms, /NO_COPY
WIDGET_CONTROL, stash, SET_UVALUE=state, /NO_COPY
WIDGET_CONTROL, event.top, MAP=0
WIDGET_CONTROL, event.handler, /DESTROY
RETURN, 0
END
state.verifyid : BEGIN
PRINT, ' '
PRINT, 'Image file name _ _ _' + im_parms.imfile
PRINT, 'Airmass _ _ _ _ _ _ _' + STRING( im_parms.airmass )
PRINT, 'Exposure time _ _ _ _' + STRING( im_parms.exptime )
PRINT, 'Exposure delta _ _ __' + STRING( im_parms.expdelta )
PRINT, 'Filter code _ _ _ _ _' + im_parms.filter
PRINT, 'Object _ _ _ _ _ _ __' + im_parms.object
PRINT, 'Date of observation _' + im_parms.date
PRINT, 'Time (UT) _ _ _ _ _ _' + im_parms.ut
PRINT, 'Julian Date _ _ _ _ _' + STRING( im_parms.jd, FORMAT='(D15.5)' )
END
state.imfileid : BEGIN
im_parms.imfile = val
name = 'imfile'
END
state.airmassid : BEGIN
im_parms.airmass = val
name = 'airmass'
END
state.exptimeid : BEGIN
im_parms.exptime = val
name = 'exptime'
END
state.expdeltaid : BEGIN
im_parms.expdelta = val
name = 'expdelta'
END
state.filterid : BEGIN
im_parms.filter = val
name = 'filter'
END
state.objectid : BEGIN
im_parms.object = val
name = 'object'
END
state.dateid : BEGIN
im_parms.date = val
name = 'date'
END
state.utid : BEGIN
im_parms.ut = val
name = 'ut'
END
ELSE : BEGIN
MESSAGE, 'Unknown event:', /INFO
HELP, event, /STRUCTURE
END
ENDCASE
;Print a message indicating the parameter changed and its new value.
IF name NE '' THEN MESSAGE, name + ' set to ' + val, /INFO
;Restore the parameters and state.
WIDGET_CONTROL, event.top, SET_UVALUE=im_parms, /NO_COPY
WIDGET_CONTROL, stash, SET_UVALUE=state, /NO_COPY
RETURN, out_event
END
; ------------------------------------------------------------------------------
; Function cw_ipmgr
; ------------------------------------------------------------------------------
FUNCTION cw_ipmgr, parent, UVALUE=uvalue
;Note: This compound widget assumes that the image parameters structure is
;stored in the user value of the top level base. The idea is to 'hang' this
;widget on its own TLB.
;Define the main base.
IF KEYWORD_SET( uvalue ) THEN BEGIN
mainbase = WIDGET_BASE( parent, EVENT_FUNC='cw_ipeve', COLUMN=1, $
PRO_SET_VALUE='cw_ipmgr_svl', UVALUE=uvalue )
ENDIF ELSE BEGIN
mainbase = WIDGET_BASE( parent, EVENT_FUNC='cw_ipeve', COLUMN=1, $
PRO_SET_VALUE='cw_ipmgr_svl' )
ENDELSE
;Get the parameters.
WIDGET_CONTROL, parent, GET_UVALUE=im_parms, /NO_COPY
;Local state structure.
state = { imfileid:0L, airmassid:0L, dateid:0L, dismissid:0L, $
exptimeid:0L, expdeltaid:0L, $
filterid:0L, jdid:0L, objectid:0L, topbase:parent, utid:0L, verifyid:0L }
; Define the rest of the widgets and their bases.
;
wb = WIDGET_BASE( mainbase, /ROW )
state.dismissid = WIDGET_BUTTON( wb, VALUE='Dismiss' )
state.verifyid = WIDGET_BUTTON( wb, VALUE='Verify' )
wb = WIDGET_BASE( mainbase, /ROW )
state.imfileid = WIDGET_TEXT( wb, VALUE=im_parms.imfile, /EDITABLE, XSIZE=15 )
w1 = WIDGET_LABEL( wb, VALUE='Image file name' )
f = '(G0.2)'
wb = WIDGET_BASE( mainbase, /ROW )
state.airmassid = WIDGET_TEXT( wb, VALUE=STRING( im_parms.airmass, $
FORMAT=f ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Airmass' )
wb = WIDGET_BASE( mainbase, /ROW )
state.exptimeid = WIDGET_TEXT( wb, VALUE=STRING( im_parms.exptime, $
FORMAT=f ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Exposure time (seconds)' )
wb = WIDGET_BASE( mainbase, /ROW )
state.expdeltaid = WIDGET_TEXT( wb, VALUE=STRING( im_parms.expdelta, $
FORMAT=f ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Exposure delta (seconds)' )
wb = WIDGET_BASE( mainbase, /ROW )
state.filterid = WIDGET_TEXT( wb, VALUE=im_parms.filter, XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Filter code' )
wb = WIDGET_BASE( mainbase, /ROW )
state.objectid = WIDGET_TEXT( wb, VALUE=im_parms.object, XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Object' )
wb = WIDGET_BASE( mainbase, /ROW )
state.dateid = WIDGET_TEXT( wb, VALUE=im_parms.date, /EDITABLE, XSIZE=15 )
w1 = WIDGET_LABEL( wb, VALUE='Date of observation' )
wb = WIDGET_BASE( mainbase, /ROW )
state.utid = WIDGET_TEXT( wb, VALUE=im_parms.ut, /EDITABLE, XSIZE=15 )
w1 = WIDGET_LABEL( wb, VALUE='Start Time (UT)' )
wb = WIDGET_BASE( mainbase, /ROW )
julian = STRTRIM( STRING( im_parms.jd, FORMAT='(D15.5)' ), 2 )
state.jdid = WIDGET_TEXT( wb, VALUE=julian, XSIZE=15 )
w1 = WIDGET_LABEL( wb, VALUE='Julian Date (mid-time)' )
;Put the parameters back.
WIDGET_CONTROL, parent, SET_UVALUE=im_parms, /NO_COPY
;Restore the state.
stash = WIDGET_INFO( mainbase, /CHILD )
WIDGET_CONTROL, stash, SET_UVALUE=state, /NO_COPY
RETURN, mainbase
END