FUNCTION qImage_cw_SMEI, state, event ;+ ; NAME: ; qImage_cw_SMEI ; PURPOSE: ; Creates/destroys the SMEI section of the qImage_cw widget ; CATEGORY: ; Compound widget qImage_cw ; CALLING SEQUENCE: ; Result = qImage_cw_SMEI(state, event) ; INPUTS: ; state array[1]; type: structure ; qImage_cw state structure ; event array[1]; type: structure ; event from state.wid_smei button ; OUTPUTS: ; Result scalar; type: byte ; 1B: display needs to be refreshed completely ; (by call to qImage_cw_Set_Value) ; 0B: display does not need to be redrawn ; INCLUDE: @compile_opt.pro ; On error, return to caller ; CALLS: ; qImage_cw_Update, qImage_cw_Box, qimage_cw_smei_frm, smei_camera ; PROCEDURE: ; The SMEI button function acts as a toggle to create/destroy the ; SMEI section of the qImage_cw compound widget. ; While the SMEI section exists qImage_cw uses wedges instead of squares ; to calculate pixel values, centroids, etc. ; MODIFICATION HISTORY: ; FEB-2000, Paul Hick (UCSD/CASS) ; NOV-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ; Added state.wid_corner fields ;- widget_control, state.wid_smei, set_uvalue=event.select CASE event.select OF 0: BEGIN set_image_value = 0B widget_control, state.wid_smei_base, /destroy qImage_cw_Update, state END 1: BEGIN set_image_value = widget_info(state.wid_draw_wrap, /valid_id) IF set_image_value THEN widget_control, state.wid_draw_wrap, /destroy state.wid_smei_base = widget_base(event.handler, /column, frame=2) smei = widget_base(state.wid_smei_base, /row) widget_control, smei, update=0 IF NOT qimage_cw_smei_frm(state, event, /get_camera, value=camera) THEN destroyvar, camera img_center = smei_camera(/get_center , camera=camera) img_axis = smei_camera(/get_optical_axis , camera=camera) img_limits = smei_camera(/get_fov_limits , camera=camera) dummy0 = widget_base(smei, /column, frame=1) dummy = widget_label(dummy0, value='Arc') dummy0 = widget_base (dummy0, /row) dummy = widget_base(dummy0, /column) state.wid_phi[0] = cw_field(dummy, /floating, title='P-min', /row, xsize=6, /return_ev, lxsize=28) state.wid_rad[0] = cw_field(dummy, /floating, title='R-min', /row, xsize=6, /return_ev, lxsize=28) dummy = widget_base(dummy0, /column) state.wid_phi[1] = cw_field(dummy, /floating, title='P-max', /row, xsize=6, /return_ev, lxsize=31) state.wid_rad[1] = cw_field(dummy, /floating, title='R-max', /row, xsize=6, /return_ev, lxsize=31) dummy = widget_base(dummy0, /column) state.wid_phi[3] = cw_field(dummy, /floating, title='P-com', /row, xsize=6) state.wid_rad[3] = cw_field(dummy, /floating, title='R-com', /row, xsize=6) dummy = widget_base(dummy0, /column) state.wid_phi[2] = cw_field(dummy, value=1.5, /floating, title='dP', /row, xsize=6) state.wid_rad[2] = cw_field(dummy, value=30., /floating, title='dR', /row, xsize=6) dummy = widget_base(smei, /column) state.wid_smeifov = widget_button(dummy, value='SMEI FOV') state.wid_smeimask = widget_button(dummy, value='FOV --> file') state.wid_azimuthal = widget_button(dummy, value='Azimuth Slice') state.wid_radial = widget_button(dummy, value='Radial Slice') dummy0 = widget_base(smei, /column, frame=1) dummy = widget_label(dummy0, value='Field of View') dummy0 = widget_base(dummy0, /row) dummy = widget_base(dummy0, /column) state.wid_center[0] = cw_field(dummy, value=img_center[0] , /floating, title='X' , /row, xsize=6, /return_ev) state.wid_center[1] = cw_field(dummy, value=img_center[1] , /floating, title='Y' , /row, xsize=6, /return_ev) dummy = widget_base(dummy0, /column) state.wid_corner[0] = cw_field(dummy, value=img_limits[0]*!radeg, /floating, title='PL', /row, xsize=7, /return_ev) state.wid_corner[1] = cw_field(dummy, value=img_limits[1] , /floating, title='RL', /row, xsize=7, /return_ev) dummy = widget_base(dummy0, /column) state.wid_axis [0] = cw_field(dummy, value=img_axis [0]*!radeg, /floating, title='P0', /row, xsize=7, /return_ev) state.wid_axis [1] = cw_field(dummy, value=img_axis [1] , /floating, title='R0', /row, xsize=7, /return_ev) dummy = widget_base(dummy0, /column) state.wid_corner[2] = cw_field(dummy, value=img_limits[2]*!radeg, /floating, title='PH', /row, xsize=7, /return_ev) state.wid_corner[3] = cw_field(dummy, value=img_limits[3] , /floating, title='PH', /row, xsize=7, /return_ev) dummy = widget_base(dummy0, /column) state.wid_prorate[0] = cw_field(dummy, value=10, /integer, title='nX', /row, xsize=3, /return_ev) state.wid_prorate[1] = cw_field(dummy, value=10, /integer, title='nY', /row, xsize=3, /return_ev) dummy0 = widget_base(smei, /column, frame=1) dummy = widget_label(dummy0, value='Keys') dummy = widget_base (dummy0, /column, /nonexclusive) state.wid_cos = widget_button(dummy, value='cosine' , uvalue=0B) state.wid_prorate[2] = widget_button(dummy, value='prorate', uvalue=0B) widget_control, smei, update=1 ; SMEI fov: phi = [-120,-60], rad=[1153,1251] CASE (where(state.img_size NE 0))[0] EQ -1 OF ; Does this ever happen??? 0: BEGIN qImage_cw_Box, state, /get, box CASE box[0,1]-box[0,0]+1 OF state.img_size[0]: qImage_cw_Box, state, /smeifov ELSE : qImage_cw_Box, state, /get, /put ENDCASE END 1: qImage_cw_Box, state, /smeifov ENDCASE END ENDCASE RETURN, set_image_value & END