;+ ; NAME: ; qTool ; PURPOSE: ; Sets zoom and rebin factors for qImage_cw ; CATEGORY: ; CALLING SEQUENCE: ; 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 ; CALLS: ; PROCEDURE: ; MODIFICATION HISTORY: ; JUL-2005, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ;- PRO qTool_Event, event @compile_opt.pro ; On error, return to caller widget_control, event.top, get_uvalue=state, /no_copy kill = 0 send = 1 CASE event.id OF ; ID of widget that generated the message ; Intercepts WIDGET_KILL_REQUEST from top level widget event.top : kill = 1 state.wid_exit : kill = 1 state.wid_info : send = 0 ;state.wid_maxzoom: send = qImage_cw_Zoom(state, state.wid_maxzoom) state.wid_zoomout: send = qTool_Zoom(state, state.wid_zoomout) state.wid_zoom : send = qTool_Zoom(state, state.wid_zoom) state.wid_zoomin : send = qTool_Zoom(state, state.wid_zoomin) state.wid_white : widget_control, state.wid_white , set_uvalue=event.select state.wid_fixz : widget_control, state.wid_fixz , set_uvalue=event.select state.wid_zlog : widget_control, state.wid_zlog , set_uvalue=event.select state.wid_ellipse: widget_control, state.wid_ellipse, set_uvalue=event.select state.wid_zmin : state.wid_zmax : state.wid_ctable : state.wid_mouse : state.wid_fullsize: state.wid_histogram: ;state.wid_fixzoom : BEGIN ; CASE event.select OF ; 0: widget_control, state.wid_fixzoom, get_uvalue=anchor, /no_copy ; 1: BEGIN ; qImage_cw_Box, state, anchor, /get ; Center of current box is used to anchor the zoom ; anchor = qImage_cw_Transform(state, fromimage=0.5*total(anchor,2), /toscreen) ; widget_control, state.wid_fixzoom, set_uvalue=anchor, /no_copy ; END ; ENDCASE ;END state.wid_rebinout: send = qTool_Rebin(state, state.wid_rebinout) state.wid_rebin : send = qTool_Rebin(state, state.wid_rebin) state.wid_rebinin : send = qTool_Rebin(state, state.wid_rebinin) ELSE: unexpected_event, event ENDCASE tmp = qTool_State(state, event, send=send) CASE kill OF 0: widget_control, event.top, set_uvalue=state, /no_copy 1: widget_control, event.top, /destroy ENDCASE RETURN & END PRO qTool, group=group, state=tool_state, update=update, destroy=destroy @compile_opt.pro ; On error, return to caller InitVar, update , /key InitVar, destroy, /key qimage_cw_widget = IsType(tool_state,/struct) IF qimage_cw_widget THEN qimage_cw_widget = tag_names(tool_state,/structure) EQ 'QIMAGE_CW_TOOL_STATE' CASE qimage_cw_widget OF 0: need_widget = 1 1: BEGIN wid_base = tool_state.wid_base need_widget = 1-widget_info(wid_base, /valid) CASE need_widget OF 0: BEGIN IF destroy THEN BEGIN widget_control, wid_base, /destroy RETURN ENDIF END 1: IF update THEN RETURN ENDCASE END ENDCASE IF need_widget THEN BEGIN ; Create new widget state = {STATE_QTOOL,$ wid_exit : 0L , $ wid_info : 0L , $ wid_maxzoom : 0L , $ wid_zoomout : 0L , $ wid_zoom : 0L , $ wid_zoomin : 0L , $ wid_maxrebin: 0L , $ wid_rebinout: 0L , $ wid_rebin : 0L , $ wid_rebinin : 0L , $ wid_white : 0L , $ wid_ctable : 0L , $ wid_mouse : 0L , $ wid_fullsize: 0L , $ wid_histogram: 0L , $ wid_fixz : 0L , $ wid_zlog : 0L , $ wid_zmin : 0L , $ wid_zmax : 0L , $ wid_ellipse : 0L , $ wid_send : -1L } IF qimage_cw_widget THEN state.wid_send = tool_state.wid_send wid_base = widget_base(title='qTool', /row, /tlb_kill_request_events) ;, frame=2) IF qimage_cw_widget THEN tool_state.wid_base = wid_base root = filepath(root=getenv('SSW_SMEI_UCSD'),'image') dummy1 = widget_base(wid_base, /column) dummy = widget_base(dummy1, /row) state.wid_exit = widget_button(dummy, value=filepath(root=root,'done.ico'), /bitmap) state.wid_maxzoom = widget_label (dummy, value=' Zoom');, /dynamic) state.wid_zoomout = widget_button (dummy, value='<--') state.wid_zoom = cw_field (dummy, value=1, uvalue=1, /integer, title=' ', /row, xsize=3, /return_ev) state.wid_zoomin = widget_button (dummy, value='-->') dummy2 = widget_base(dummy, /row, /nonexclusive) state.wid_white = widget_button(dummy2, value='White', uvalue=0) state.wid_fixz = widget_button(dummy2, value=' Fix Z', uvalue=0B) state.wid_zmin = cw_field(dummy, value=0., /floating, title='Z-min',/row, xsize=6, /return_ev);, lxsize=30) state.wid_fullsize = widget_button(dummy, value='Full Size') state.wid_mouse = widget_droplist(dummy,value=['Box','Pix','Roam Box','Roam Pix']) dummy = widget_base(dummy1, /row) state.wid_info = widget_button(dummy, value=filepath(root=root,'info.ico'), /bitmap) state.wid_maxrebin = widget_label (dummy, value=' Rebin');, /dynamic) state.wid_rebinout = widget_button (dummy, value='<--') state.wid_rebin = cw_field (dummy, value=1, uvalue=1, /integer, title=' ', /row, xsize=3, /return_ev) state.wid_rebinin = widget_button (dummy, value='-->') dummy2 = widget_base(dummy, /row, /nonexclusive) state.wid_zlog = widget_button(dummy2, value=' Log' , uvalue=0B) state.wid_ellipse=widget_button(dummy2, value='Ellipse', uvalue=0B) state.wid_zmax = cw_field(dummy, value=0., /floating, title='Z-max',/row, xsize=6, /return_ev);, lxsize=30) state.wid_histogram = widget_button(dummy, value='Histogram') loadct, get_names=names state.wid_ctable = widget_droplist(dummy,value=strlowcase(names)) widget_control, wid_base, set_uvalue=state, /no_copy widget_control, wid_base, /realize xmanager, 'qTool', wid_base, event_handler='qTool_Event', group=group, /no_block ENDIF IF qimage_cw_widget THEN BEGIN widget_control, wid_base, get_uvalue=state, /no_copy widget_control, state.wid_zoom , set_value =tool_state.send.zoom_val , set_uvalue=tool_state.send.zoom_uval widget_control, state.wid_rebin, set_value =tool_state.send.rebin_val, set_uvalue=tool_state.send.rebin_uval widget_control, state.wid_fixz , set_button=tool_state.send.fixz , set_uvalue=tool_state.send.fixz widget_control, state.wid_zlog , set_button=tool_state.send.zlog , set_uvalue=tool_state.send.zlog widget_control, state.wid_zmin , set_value =tool_state.send.zmin widget_control, state.wid_zmax , set_value =tool_state.send.zmax widget_control, wid_base, set_uvalue=state, /no_copy ENDIF RETURN & END