;+ ; NAME: ; qvu ; PURPOSE: ; Widget for analyzing content of nv3d tomography file ; CATEGORY: ; Widget qvu ; CALLING SEQUENCE: ; qvu ; INPUTS: ; group=Group passed to xmanager when registering the qView widget ; OPTIONAL INPUT PARAMETERS: ; OUTPUTS: ; OPTIONAL OUTPUT PARAMETERS: ; CALLS: ; BadValue, qslider_cw, qvu_draw, qvu_fixgrid, qvu_kill, qvu_loadct ; qvu_pick, qvu_rebin, qvu_value, qvu_whatis, unexpected_event ; IsType ; SIDE EFFECTS: ; RESTRICTIONS: ; PROCEDURE: ; State structure: ; ; state = {STATE_QT3D, $ ; wid_top : 0L, $ ; wid_pick : 0L, $ ; wid_path : 0L, $ ; ; wid_type : 0L, $ ; uvalue: current droplist index ; wid_index : 0L, $ ; uvalue: current droplist index ; ; wid_info : 0L, $ ; wid_done : 0L, $ ; ; wid_loadct : 0L, $ ; ; wid_pole_lng: 0L, $ ; wid_pole_lat: 0L, $ ; wid_pole_rad: 0L, $ ; wid_pole_tim: 0L, $ ; ; wid_minvalue: 0L, $ ; wid_maxvalue: 0L, $ ; wid_fixscale: 0L, $ ; ; wid_cuttingplane: 0L, $ ; wid_synopticmap : 0L, $ ; wid_orthographic: 0L, $ ; ; wid_value : 0L, $ ; ; wid_grid : 0L, $ ; uvalue: size of draw widget ; wid_rebin : [0L,0L,0L], $ ; ; wid_draw : 0L, $ ; uvalue: function value ; wid_plane : 0L, $ ; ; count : 0L, $ ; ; type_list : ['nv','bb'], $ ; nv_list : ['velocity' ,'density' ], $ ; bb_list : ['B(radial)','B(tang)' ] $ ; } ; ; MODIFICATION HISTORY: ; SEP-2001, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ;- PRO qvu_Event, event @compile_opt.pro ; On error, return to caller redraw = 0 widget_control, event.top, get_uvalue=state, /no_copy CASE event.id OF ; ID of widget that generated the message event.top : qvu_kill , state, event state.wid_done : qvu_kill , state, event state.wid_pick : BEGIN qvu_pick, state, event redraw = state.count NE 0 END state.wid_path : BEGIN qvu_pick, state, event redraw = state.count NE 0 END ;state.wid_type : BEGIN ; ; widget_control, state.wid_type, get_uvalue=old_index ; redraw = old_index NE event.index ; widget_control, state.wid_type, set_uvalue=event.index ; ;END state.wid_index : BEGIN widget_control, state.wid_index, get_uvalue=old_index redraw = old_index NE event.index widget_control, state.wid_index, set_uvalue=event.index END state.wid_info : qvu_whatis , state, event state.wid_loadct : qvu_loadct , state, event state.wid_pole_lng : redraw = 1 state.wid_pole_lat : redraw = 1 state.wid_pole_rad : redraw = 1 state.wid_pole_tim : redraw = 1 state.wid_draw : qvu_value , state, event state.wid_minvalue : redraw = 1 state.wid_maxvalue : redraw = 1 state.wid_fixscale : BEGIN widget_control, state.wid_fixscale, set_uvalue=event.select redraw = 1 END state.wid_fixgrid : BEGIN qvu_fixgrid, state, event redraw = event.select END state.wid_cuttingplane: redraw = qvu_display(state, event) state.wid_synopticmap : redraw = qvu_display(state, event) state.wid_orthographic: redraw = qvu_display(state, event) state.wid_grid : BEGIN qvu_rebin, state, event redraw = 1 END state.wid_rebin[0] : BEGIN widget_control, state.wid_rebin[0], set_button=event.select, set_uvalue=event.select redraw = event.select END state.wid_rebin[1] : BEGIN widget_control, state.wid_rebin[1], set_button=event.select, set_uvalue=event.select redraw = event.select END state.wid_rebin[2] : BEGIN widget_control, state.wid_rebin[2], set_button=event.select, set_uvalue=event.select redraw = event.select END ELSE: unexpected_event, event ENDCASE IF redraw THEN qvu_draw, state, event IF widget_info(event.top, /valid_id) THEN $ widget_control, event.top, set_uvalue=state, /no_copy RETURN & END PRO qvu, path, group=group, filter=filter @compile_opt.pro ; On error, return to caller InitVar, path , filepath(root=getenv('SSW_SMEI_DAT'),subdir='nagoya','') InitVar, filter, ['nv','bb'] state = {STATE_QT3D, $ wid_top : 0L, $ wid_pick : 0L, $ wid_path : 0L, $ ;wid_type : 0L, $ ; uvalue: current droplist index wid_index : 0L, $ ; uvalue: current droplist index wid_info : 0L, $ wid_done : 0L, $ wid_loadct : 0L, $ wid_pole_lng: 0L, $ wid_pole_lat: 0L, $ wid_pole_rad: 0L, $ wid_pole_tim: 0L, $ wid_minvalue: 0L, $ wid_maxvalue: 0L, $ wid_fixscale: 0L, $ wid_cuttingplane: 0L, $ wid_synopticmap : 0L, $ wid_orthographic: 0L, $ wid_fixgrid : 0L, $ wid_value : 0L, $ wid_grid : 0L, $ ; uvalue: size of draw widget wid_rebin : [0L,0L,0L], $ wid_draw : 0L, $ ; uvalue: function value wid_plane : 0L, $ count : 0L, $ ;type_list : filter, $ nv_list : ['velocity' ,'density' ], $ bb_list : ['B(radial)','B(tang)' ] $ } base = widget_base(title='qvu', /column, /tlb_kill_request) state.wid_top = widget_base(base, /column) dummy = widget_base(state.wid_top, /row, frame=1) state.wid_done = widget_button(dummy, value=filepath(root=getenv('SSW_SMEI_UCSD'),subdir='image','done.ico'),/bitmap) state.wid_pick = widget_button(dummy, value='Pick File(s)') state.wid_path = cw_field(dummy, value=path, /string, title='Path', xsize=30, /return_ev) ;state.wid_type = widget_droplist(dummy, value=state.type_list, uvalue=0) state.wid_index = widget_droplist(dummy, value=state.nv_list , uvalue=0) state.wid_info = widget_button(dummy, value=filepath(root=getenv('SSW_SMEI_UCSD'),subdir='image','info.ico'), /bitmap) state.wid_loadct= widget_button(dummy, value='loadct') dummy = widget_base(state.wid_top, /column, frame=1) lxsize = 50 xsize = 8 length = 250 state.wid_pole_lng = qslider_cw(dummy, title='Longitude', min= 0,max=360, value= 0, $ frame=1,lxsize=lxsize, xsize=xsize, length=length, steps=360, uvalue=[0,0,360,360]) state.wid_pole_lat = qslider_cw(dummy, title='Latitude' , min= 0,max= 90, value=90, $ frame=1,lxsize=lxsize, xsize=xsize, length=length, steps= 90, uvalue=[90,0,90,90]) state.wid_pole_rad = qslider_cw(dummy, title='Distance' , min=-3,max= 3, value= 0, $ frame=1,lxsize=lxsize, xsize=xsize, length=length, steps=60, uvalue=[0,-3,3,120]) state.wid_pole_tim = qslider_cw(dummy, title='Time' , min= 0,max= 0, value= 0, $ frame=1,lxsize=lxsize, xsize=xsize, length=length, steps=100, uvalue=[0,0,0,100], /double) dummy = widget_base(state.wid_top, /row, frame=1) winsize = 400 state.wid_draw = widget_draw(dummy, xsize=winsize, ysize=winsize, uvalue=-1, /motion_ev) dummy1 = widget_base(dummy, /column) dummy2 = widget_base(dummy1, /row, frame=1) state.wid_minvalue = cw_field(dummy2, value=BadValue(0.0), /float, title='Min', /row, xsize=8, /return_ev) state.wid_maxvalue = cw_field(dummy2, value=BadValue(0.0), /float, title='Max', /row, xsize=8, /return_ev) state.wid_plane = widget_draw(dummy1, xsize=125, ysize=125) dummy2 = widget_base(dummy1, /row, frame=1) dummy3 = widget_base(dummy2, /nonexclusive, /column) state.wid_fixscale = widget_button(dummy3, value='Fix Scale', uvalue=0) dummy3 = widget_base(dummy2, /nonexclusive, /column) state.wid_fixgrid = widget_button(dummy3, value='Fix Grid', uvalue=0) dummy2 = widget_base(dummy1, /exclusive, /row) state.wid_cuttingplane = widget_button(dummy2, value='Cut' , uvalue=0) state.wid_synopticmap = widget_button(dummy2, value='Map' , uvalue=0) state.wid_orthographic = widget_button(dummy2, value='Disk', uvalue=0) dummy2 = widget_base(dummy1, /row, frame=1) state.wid_value = cw_field(dummy2, value=BadValue(0.0), /float, title='Value', /row, xsize=8) state.wid_grid = cw_field(dummy2, value=winsize, /integer, title='Grid', /row, /return_ev, xsize=4, uvalue=winsize) dummy2 = widget_base(dummy1, /exclusive, /column, frame=1) state.wid_rebin[0] = widget_button(dummy2, value='Congrid', uvalue=0, sensitive=0) state.wid_rebin[1] = widget_button(dummy2, value='Rebin' , uvalue=0, sensitive=0) state.wid_rebin[2] = widget_button(dummy2, value='Magnify', uvalue=0, sensitive=0) widget_control, state.wid_cuttingplane, /set_button, set_uvalue=1 widget_control, base, set_uvalue=state, /no_copy widget_control, base, /realize xmanager, 'qvu', base, group=Group, event_handler='qvu_Event', /no_block RETURN & END