; This program is used as an example in the "Widgets" ; chapter of the _Using IDL_ manual. ; PRO tplottool_event, ev @tplot_com WIDGET_CONTROL, ev.top, GET_UVALUE=wid ;WIDGET_CONTROL, ev.id, GET_UVALUE=uval CASE ev.id OF wid.tplot : begin WIDGET_CONTROL, wid.tnames, get_value = names WIDGET_CONTROL, wid.trange, get_value = times WIDGET_CONTROL, wid.trange, set_value = time_string(times) tplot,names,trange=times end wid.tlimit : begin ctime,times,npoints=2 WIDGET_CONTROL, wid.tnames, get_value = names WIDGET_CONTROL, wid.trange, set_value = time_string(times) tplot,names,trange=times end wid.tzoom : tzoom wid.ctime : begin ctime,t WIDGET_CONTROL, wid.ctime, set_uvalue=t end wid.tnames : begin WIDGET_CONTROL, wid.tnames, get_value=tnames ; widget_control, wid.dlist, get_uvalue=dlist ; widget_control, wid.dlist, set_list_select=where(array_union(dlist,tnames) ge 0) dnames=wid.dnames_a WIDGET_CONTROL, wid.dnames, set_value=array_union(dnames,tnames) ge 0 end wid.names : begin tplot_names end wid.exec : begin WIDGET_CONTROL, wid.ctime, GET_UVALUE=t WIDGET_CONTROL, wid.exectext, GET_VALUE=Command d = execute(command[0]) end wid.dnames : begin WIDGET_CONTROL, wid.tnames, get_value = tnames WIDGET_CONTROL, wid.dnames, get_value=new_names if ev.select then tnames = [tnames,ev.value] $ else begin w = where(tnames ne ev.value,c) if c ne 0 then tnames = tnames[w] endelse widget_control, wid.tnames, set_value = tnames end ; wid.dlist : begin ; printdat,ev ; WIDGET_CONTROL, wid.tnames, get_value = tnames ; WIDGET_CONTROL, wid.dlist, get_uvalue=dlist ; ind = widget_info(wid.dlist,/list_select) ; if ind[0] ge 0 then tnames = [tnames,dlist[ev.index]] $ ; else begin ; w = where(tnames ne dlist[ev.index],c) ; if c ne 0 then tnames = tnames[w] ; endelse ; widget_control, wid.tnames, set_value = tnames ; end wid.done : WIDGET_CONTROL, ev.top, /DESTROY else: message,'Do Nothing',/info ENDCASE END PRO tplottool,execcom=execcom,width=width @tplot_com.pro if not keyword_set(width) then width = 16 base = WIDGET_BASE(/COLUMN,title='Tplot Tool') str_element,/add,wid,'tplot' , WIDGET_BUTTON(base, VALUE='Tplot') tnames='' str_element,tplot_vars,'options.varnames',tnames str_element,/add,wid,'tnames', WIDGET_TEXT(base,VALUE=tnames,/editable, $ /all,xsize=width,ysize=12,/scroll) str_element,/add,wid,'tlimit', WIDGET_BUTTON(base, VALUE='Tlimit') str_element,/add,wid,'trange', WIDGET_TEXT(base, /edit,ysize=2,xsize=width $ ,VALUE=time_string(tplot_vars.options.trange)) str_element,/add,wid,'tzoom', WIDGET_BUTTON(base, VALUE='Zoom') str_element,/add,wid,'ctime', WIDGET_BUTTON(base, VALUE='Ctime') str_element,/add,wid,'names', WIDGET_BUTTON(base, VALUE='Names') dnames = data_quants[1:*].name str_element,/add,wid,'dnames_a',dnames str_element,/add,wid,'dnames', CW_bgroup(base,dnames $ ,x_scroll=width*10,y_scroll_size=8*30 $ ,set_value=array_union(dnames,tnames) ge 0 $ ,/scroll,/nonexcl,/return_name) ;str_element,/add,wid,'dlist', WIDGET_LIST(base,uvalue=dnames,value=dnames $ ; ,ysize=8,/multiple ) ;str_element,/add,wid,'fslider', CW_fslider(base,value=50.,/edit) ;str_element,/add,wid,'test', CW_test(base) str_element,/add,wid,'exec', WIDGET_BUTTON(base,VALUE='Exec') if n_elements(execcom) eq 0 then execcom='' str_element,/add,wid,'exectext', WIDGET_TEXT(base,value=execcom,/editable, XSIZE=width) str_element,/add,wid,'done', WIDGET_BUTTON(base, VALUE='Done') WIDGET_CONTROL, base, SET_UVALUE=wid WIDGET_CONTROL, base, /REALIZE printdat,wid XMANAGER, 'tplottool', base,/no_block END