;+ ; NAME: ; qShow ; PURPOSE: ; Controls display of image in qImage_cw ; CATEGORY: ; sat/idl/widget/qimage_cw/qshow ; 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 qShow_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_ctable: state.wid_xsize : state.wid_ysize : ELSE: unexpected_event, event ENDCASE CASE kill OF 0: BEGIN tmp = qShow_State(state, event, send=send) widget_control, event.top, set_uvalue=state, /no_copy END 1: widget_control, event.top, /destroy ENDCASE RETURN & END PRO qShow, img, group=group, state=show_state, update=update @compile_opt.pro ; On error, return to caller InitVar, update, /key qimage_cw_widget = IsType(show_state,/struct) IF qimage_cw_widget THEN qimage_cw_widget = tag_names(show_state,/structure) EQ 'QIMAGE_CW_SHOW_STATE' CASE qimage_cw_widget OF 0: need_widget = 1 1: BEGIN wid_base = show_state.wid_base need_widget = 1-widget_info(wid_base, /valid) IF update AND need_widget THEN RETURN END ENDCASE IF need_widget THEN BEGIN ; Create new widget screen_size = size(img,/dim) state = {STATE_QSHOW,$ wid_exit : 0L , $ wid_info : 0L , $ wid_xsize : 0L , $ wid_ysize : 0L , $ wid_sizeout : 0L , $ wid_size : 0L , $ wid_sizein : 0L , $ wid_ctable : 0L , $ wid_white : 0L , $ wid_blowup : 0L , $ wid_xcross : 0L , $ wid_ycross : 0L , $ wid_draw : 0L , $ wid_xslide : 0L , $ wid_yslide : 0L , $ wid_send : -1L } IF qimage_cw_widget THEN state.wid_send = show_state.wid_send wid_base = widget_base(title='qShow', /row, /tlb_kill_request_events) ;, frame=2) IF qimage_cw_widget THEN show_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_info = widget_button(dummy, value=filepath(root=root,'info.ico'), /bitmap) state.wid_xsize = cw_field(dummy, value=screen_size[0], /integer, title='X-sz', /row, xsize=6, /all_ev, lxsize=lxsize) state.wid_ysize = cw_field(dummy, value=screen_size[1], /integer, title='Y-sz', /row, xsize=6, /all_ev, lxsize=lxsize) dummy2 = widget_label (dummy, value=' Size');, /dynamic) state.wid_sizeout = widget_button (dummy, value='<--') state.wid_size = cw_field (dummy, value=1, uvalue=1, /integer, title=' ', /row, xsize=3, /return_ev) state.wid_sizein = widget_button (dummy, value='-->') dummy2 = widget_base(dummy, /row, /nonexclusive) state.wid_white = widget_button(dummy2, value='White', uvalue=0) ;state.wid_mouse = widget_droplist(dummy,value=['Box','Pix','Roam Box','Roam Pix']) loadct, get_names=names state.wid_ctable = widget_droplist(dummy,value=strlowcase(names)) ;dummy = widget_base(dummy1, /row) ; state.wid_blowup = widget_draw(dummy, xsize=76, ysize=76, frame=4, retain=2) ; state.wid_xcross = widget_draw(dummy, xsize=screen_size[0], ysize=76, frame=4, /button_ev, retain=2) dummy = widget_base(dummy1, /row) ;state.wid_ycross = widget_draw(dummy, xsize=76, ysize=screen_size[1], frame=4, /button_ev, retain=2) state.wid_draw = widget_draw(dummy, xsize=screen_size[0], ysize=screen_size[1], frame=4, /button_ev, /motion_ev, retain=2) state.wid_yslide = widget_slider(dummy, /drag, ysize=screen_size[1]-1, min=0L, max=1L, /vertical) dummy = widget_base(dummy1, /row) ;dummy3 = widget_base( dummy, xsize=76) state.wid_xslide = widget_slider(dummy, /drag, xsize=screen_size[0]-1, min=0L, max=1L) ; Don't merge the following two statements with the previous two. ; (why not??) widget_control, state.wid_xslide, set_value=0, set_uvalue=0 widget_control, state.wid_yslide, set_value=0, set_uvalue=0 ;reset_colors widget_control, wid_base, set_uvalue=state, /no_copy widget_control, wid_base, /realize xmanager, 'qShow', wid_base, event_handler='qShow_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_ctable, set_value=show_state.send.ctable widget_control, wid_base, set_uvalue=state, /no_copy ENDIF RETURN & END