;+ ; NAME: ; qFramestamp ; PURPOSE: ; Calles compound widget to prompt for frame stamping information ; CATEGORY: ; Compound widget ; CALLING SEQUENCE: ; val = qFramestmap(chk_time) ; INPUTS: ; chk_time integer 0 or 1 ; will determine if the checkbox ; for 'Timestamp' is able to be ; manipulated. ; Call with 0 if frames do not have ; timestamp data available. ; Call with 1 if they do. ; OUTPUTS: ; Result integer 0 if canceled or exited. ; array[3] with 3 string values ; Null if the checkbox is un-selected ; otherwise they contain the position ; for the timestamp in cardinal coords ; northeast, northwest, southeast, southwest ; the last element contains the user ; inputted string to be placed in ; the image frames. ;- PRO qFramestamp_event, event widget_control, event.top, get_uvalue=stamper kill=0 state = stamper.state CASE event.id OF state.wid_cancel : kill=1 state.wid_accept : kill=2 state.wid_chkbox1 : BEGIN IF event.select eq 0 THEN widget_control, state.wid_box1grav, sensitive=0 ELSE widget_control, state.wid_box1grav, sensitive=1 END state.wid_chkbox2 : BEGIN IF event.select eq 0 THEN BEGIN widget_control, state.wid_box2val, sensitive=0 widget_control, state.wid_box2grav, sensitive=0 ENDIF ELSE BEGIN widget_control, state.wid_box2val, sensitive=1 widget_control, state.wid_box2grav, sensitive=1 ENDELSE END state.wid_box2val : BEGIN widget_control, state.wid_box2val, get_value=box2val widget_control, state.wid_box2val, set_value=box2val END state.wid_box1grav : BEGIN grav1val = widget_info(state.wid_box1grav, /combobox_gettext) grav2val = widget_info(state.wid_box2grav, /combobox_gettext) IF grav1val EQ grav2val THEN BEGIN widget_control, state.wid_box2grav, set_combobox_select=abs(event.index-1), /update grav2val = widget_info(state.wid_box2grav, /combobox_gettext) ENDIF (*stamper.ptr).grav1 = grav1val (*stamper.ptr).grav2 = grav2val END state.wid_box2grav : BEGIN grav1val = widget_info(state.wid_box1grav, /combobox_gettext) grav2val = widget_info(state.wid_box2grav, /combobox_gettext) IF grav1val EQ grav2val THEN BEGIN widget_control, state.wid_box1grav, set_combobox_select=abs(event.index-1), /update grav1val=widget_info(state.wid_box1grav, /combobox_gettext) ENDIF (*stamper.ptr).grav1 = grav1val (*stamper.ptr).grav2 = grav2val END ELSE: BEGIN kill=0 END ENDCASE CASE kill OF 0: widget_control, event.top, set_uvalue=stamper 1: BEGIN widget_control, event.top, /destroy return END 2: BEGIN (*stamper.ptr).die = 1 button1 = widget_info(state.wid_chkbox1, /button_set) button2 = widget_info(state.wid_chkbox2, /button_set) IF button1 EQ 0 THEN (*stamper.ptr).grav1 = '' IF button2 EQ 0 THEN BEGIN (*stamper.ptr).grav2 = '' (*stamper.ptr).box2val = '' ENDIF ELSE BEGIN widget_control, state.wid_box2val, get_value=box2val (*stamper.ptr).box2val = box2val ENDELSE widget_control, event.top, /destroy return END ENDCASE RETURN & END FUNCTION qFramestamp, chk_time @compile_opt.pro state = {STATE_QSTAMP, $ wid_chkbox1: 0L, $ wid_box1grav: 0L, $ wid_chkbox2: 0L, $ wid_box2grav: 0L, $ wid_box2val: 0L, $ wid_accept: 0L, $ wid_cancel: 0L } checkboxval = ['northwest', 'northeast', 'southwest', 'southeast'] stamp = chk_time ; if valid times detected, time widget is activated wid_chk = widget_base(title='Select Frame Options', /row) dummy1 = widget_base(wid_chk, /column, /nonexclusive) dummy2 = widget_base(wid_chk, /column, /align_bottom) dummy3 = widget_base(wid_chk, /column) dummy4 = widget_base(wid_chk, /row) state.wid_chkbox1 = widget_button(dummy1, value="Timestamp",uvalue='timestamp', sensitive=stamp) if stamp ne 0 then widget_control, state.wid_chkbox1, set_button=1 state.wid_box1grav = widget_combobox(dummy3, value=checkboxval, sensitive=stamp) state.wid_chkbox2 = widget_button(dummy1, value="String", uvalue='stringstamp') state.wid_box2val = widget_text(dummy2, /editable, value="UCSD/CASS", uvalue='boxval') widget_control, state.wid_chkbox2, set_button=1 ; checked by default state.wid_box2grav = widget_combobox(dummy3, value=checkboxval) widget_control, state.wid_box2grav, set_combobox_select=2 state.wid_accept = widget_button(dummy4, uvalue='save', value='Save') state.wid_cancel = widget_button(dummy4, uvalue='cancel', value='Cancel') grav1 = widget_info(state.wid_box1grav, /combobox_gettext) grav2 = widget_info(state.wid_box2grav, /combobox_gettext) widget_control, state.wid_box2val, get_value=box2val ptr = {grav1:grav1, grav2:grav2, box2val:box2val , die:0 } stamper = {ptr:ptr_new(ptr), state:state} stamperptr = stamper widget_control, wid_chk, set_uvalue=stamper, /no_copy widget_control, wid_chk, /realize xmanager, 'qFramestamp', wid_chk, event_handler='qFramestamp_event' IF (*stamperptr.ptr).die NE 0 THEN BEGIN out = [(*stamperptr.ptr).grav1, (*stamperptr.ptr).grav2, (*stamperptr.ptr).box2val] return, out ENDIF return, 0 END