;+ ; NAME: ; qLoadCT ; PURPOSE: ; Load color table ; 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 qLoadCT_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_load: send = qImage_cw_Zoom(state, state.wid_load) ELSE: unexpected_event, event ENDCASE ;tmp = qLoadCT_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 qLoadCT, group=group, state=loadct_state, update=update, destroy=destroy @compile_opt.pro ; On error, return to caller InitVar, update , /key InitVar, destroy, /key qimage_cw_widget = IsType(loadct_state,/struct) IF qimage_cw_widget THEN qimage_cw_widget = tag_names(loadct_state,/structure) EQ 'QIMAGE_CW_LOADCT_STATE' CASE qimage_cw_widget OF 0: need_widget = 1 1: BEGIN wid_base = loadct_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_QLOADCT,$ wid_exit : 0L , $ wid_info : 0L , $ wid_load : 0L , $ wid_draw : 0L , $ wid_send : -1L } IF qimage_cw_widget THEN state.wid_send = loadct_state.wid_send wid_base = widget_base(title='qLoadCT', /row, /tlb_kill_request_events) ;, frame=2) IF qimage_cw_widget THEN loadct_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_load = widget_button(dummy, value='Load');, /dynamic) dummy = widget_base(dummy1, /row) state.wid_draw = widget_draw(dummy, xsize=256, ysize=75, frame=4, /button_ev, retain=2) ;true_color = !d.n_colors GT 256 ; 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, 'qLoadCT', wid_base, event_handler='qLoadCT_Event', group=group, /no_block ENDIF widget_control, wid_base, get_uvalue=state, /no_copy widget_control, state.wid_draw, get_value=wnew widget_control, wid_base, set_uvalue=state, /no_copy a = byte(indgen(256))#replicate(1B,30) wset, wnew tv, a IF qimage_cw_widget THEN BEGIN widget_control, wid_base, get_uvalue=state, /no_copy ;widget_control, state.wid_zoom , set_value =loadct_state.send.zoom_val , set_uvalue=loadct_state.send.zoom_uval widget_control, wid_base, set_uvalue=state, /no_copy ENDIF RETURN & END