Viewing contents of file '../idllib/contrib/buie/cw_ppmgr.pro'
;+
; NAME:
; cw_ppmgr
; PURPOSE: (one line)
; Display and edit itool photometry parameters.
; DESCRIPTION:
;
; CATEGORY:
; Compound Widgets
; CALLING SEQUENCE:
; result = cw_ppmgr( 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.
;-
; ------------------------------------------------------------------------------
; Function cw_ppeve
; Event Handler
; ------------------------------------------------------------------------------
FUNCTION cw_ppeve, 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=ph_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=ph_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.logfileid : BEGIN
ph_parms.logfile = val
name = 'logfile'
ph_parms.edtflg = 1
END
state.pfileid : BEGIN
ph_parms.parmfile = STRTRIM( val, 2 )
name = 'Photometry parameters file'
END
state.radiusid : BEGIN
ph_parms.radius = val
name = 'radius'
ph_parms.edtflg = 1
END
state.sky1id : BEGIN
ph_parms.sky1 = val
name = 'sky1'
ph_parms.edtflg = 1
END
state.sky2id : BEGIN
ph_parms.sky2 = val
name = 'sky2'
ph_parms.edtflg = 1
END
state.boxmradid : BEGIN
ph_parms.boxmrad = val
name = 'boxmrad'
ph_parms.edtflg = 1
END
state.gainid : BEGIN
ph_parms.gain = val
name = 'gain'
ph_parms.edtflg = 1
END
state.pscaleid : BEGIN
ph_parms.pscale = val
name = 'pscale'
ph_parms.edtflg = 1
END
state.toggleid : BEGIN
ph_parms.exact = event.value
END
state.loadid : BEGIN
fmt = '(G0.2)'
;Call the procedure that loads the parameters from a file.
it_pplod, ph_parms
;Refresh the text widgets.
WIDGET_CONTROL, state.logfileid, SET_VALUE=ph_parms.logfile
WIDGET_CONTROL, state.radiusid, SET_VALUE=STRING(ph_parms.radius, $
FORMAT=fmt)
WIDGET_CONTROL, state.sky1id, SET_VALUE=STRING(ph_parms.sky1, $
FORMAT=fmt)
WIDGET_CONTROL, state.sky2id, SET_VALUE=STRING(ph_parms.sky2, $
FORMAT=fmt)
WIDGET_CONTROL, state.boxmradid, SET_VALUE=STRING(ph_parms.boxmrad, $
FORMAT=fmt)
WIDGET_CONTROL, state.gainid, SET_VALUE=STRING(ph_parms.gain, $
FORMAT=fmt)
WIDGET_CONTROL, state.pscaleid, SET_VALUE=STRING(ph_parms.pscale, $
FORMAT=fmt)
WIDGET_CONTROL, state.nomextid, SET_VALUE=STRING(ph_parms.nomext, $
FORMAT=fmt)
WIDGET_CONTROL, state.zpointid, SET_VALUE=STRING(ph_parms.zpoint, $
FORMAT=fmt)
END
state.saveid : BEGIN
it_ppsav, ph_parms
END
state.nomextid : BEGIN
ph_parms.nomext = val
name = 'nomext'
ph_parms.edtflg = 1
END
state.zpointid : BEGIN
ph_parms.zpoint = val
name = 'zpoint'
ph_parms.edtflg = 1
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=ph_parms, /NO_COPY
WIDGET_CONTROL, stash, SET_UVALUE=state, /NO_COPY
RETURN, out_event
END
; ------------------------------------------------------------------------------
; Procedure cw_ppmgr
; ------------------------------------------------------------------------------
FUNCTION cw_ppmgr, parent, UVALUE=in_uvalue
;Note: This compound widget assumes that the photometry 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( in_uvalue ) THEN BEGIN
mainbase = WIDGET_BASE( parent, EVENT_FUNC='cw_ppeve', COLUMN=1, $
UVALUE=in_uvalue )
ENDIF ELSE BEGIN
mainbase = WIDGET_BASE( parent, EVENT_FUNC='cw_ppeve', COLUMN=1 )
ENDELSE
;Get the parameters.
WIDGET_CONTROL, parent, GET_UVALUE=ph_parms, /NO_COPY
;Local state structure.
state = { boxmradid:0L, dismissid:0L, $
gainid:0L, $
loadid:0L, logfileid:0L, nomextid:0L, $
pfileid:0L, pscaleid:0L, radiusid:0L, $
saveid:0L, sky1id:0L, sky2id:0L, $
toggleid:0L, zpointid:0L }
; Define the rest of the widgets and their bases.
;
aa_base = WIDGET_BASE( mainbase, COLUMN=1, FRAME=1 )
mi_base = WIDGET_BASE( aa_base, ROW=1 )
state.dismissid = WIDGET_BUTTON( mi_base, VALUE='Dismiss' )
state.loadid = WIDGET_BUTTON( mi_base, VALUE='Load' )
state.saveid = WIDGET_BUTTON( mi_base, VALUE='Save' )
pf_base = WIDGET_BASE( aa_base, /ROW )
state.pfileid = WIDGET_TEXT( pf_base, VALUE=ph_parms.parmfile, $
XSIZE=15, /EDITABLE)
w1 = WIDGET_LABEL( pf_base, VALUE='Photometry parameters file name' )
wb = WIDGET_BASE( mainbase, /ROW )
state.logfileid = WIDGET_TEXT(wb,VALUE=ph_parms.logfile, XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Photometry log file name' )
wb = WIDGET_BASE( mainbase, /ROW )
state.radiusid = WIDGET_TEXT( wb, VALUE=STRING( ph_parms.radius, $
FORMAT='(G0.2)' ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Aperture radius (pixels)' )
wb = WIDGET_BASE( mainbase, /ROW )
state.sky1id = WIDGET_TEXT( wb, VALUE= $
STRING( ph_parms.sky1, FORMAT='(G0.2)' ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Inner radius of sky annulus (pixels)' )
wb = WIDGET_BASE( mainbase, /ROW )
state.sky2id = WIDGET_TEXT( wb, VALUE= $
STRING( ph_parms.sky2, FORMAT='(G0.2)' ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Outer radius of sky annulus (pixels)' )
wb = WIDGET_BASE( mainbase, /ROW )
state.boxmradid = WIDGET_TEXT( wb, VALUE=STRING( ph_parms.boxmrad, $
FORMAT='(G0.2)' ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Local maximum box radius (pixels) ' )
wb = WIDGET_BASE( mainbase, /ROW )
state.gainid = WIDGET_TEXT( wb, VALUE= $
STRING( ph_parms.gain, FORMAT='(G0.2)' ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Gain of CCD (e-/DN)' )
wb = WIDGET_BASE( mainbase, /ROW )
state.pscaleid = WIDGET_TEXT( wb, $
VALUE=STRING(ph_parms.pscale,FORMAT='(G0.2)'), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb, VALUE='Plate scale (arcseconds/pixel)' )
wb = WIDGET_BASE( mainbase, /ROW )
state.toggleid = CW_BGROUP( wb, ['Search for local maximum', $
'Use exact position'], /EXCLUSIVE, /NO_RELEASE, /ROW, $
SET_VALUE=ph_parms.exact )
wb = WIDGET_BASE( mainbase, /COLUMN, /FRAME )
wb1 = WIDGET_BASE( wb, /ROW )
state.nomextid = WIDGET_TEXT( wb1, VALUE=STRING( ph_parms.nomext, $
FORMAT='(G0.2)' ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb1, VALUE='Nominal extinction (mags/airmass)' )
wb1 = WIDGET_BASE( wb, /ROW )
state.zpointid = WIDGET_TEXT( wb1, VALUE=STRING( ph_parms.zpoint, $
FORMAT='(G0.2)' ), XSIZE=15, /EDITABLE )
w1 = WIDGET_LABEL( wb1, VALUE='Zero point' )
;Put the parameters back.
WIDGET_CONTROL, parent, SET_UVALUE=ph_parms, /NO_COPY
;Restore the state.
stash = WIDGET_INFO( mainbase, /CHILD )
WIDGET_CONTROL, stash, SET_UVALUE=state, /NO_COPY
RETURN, mainbase
END