pro spd_ui_add_variable_event, event
Compile_Opt idl2, hidden
Widget_Control, event.TOP, Get_UValue=state
err_xxx = 0
Catch, err_xxx
IF (err_xxx NE 0) THEN BEGIN
Catch, /Cancel
Help, /Last_Message, Output = err_msg
spd_ui_sbar_hwin_update, state, err_msg, /error, err_msgbox_title='Error in Variable Options'
Widget_Control, event.TOP, Set_UValue=state, /No_Copy
widget_control, event.top,/destroy
RETURN
ENDIF
IF (Tag_Names(event, /Structure_Name) EQ 'WIDGET_KILL_REQUEST') THEN BEGIN
*state.guiTree = state.treeObj->GetCopy()
Widget_Control, event.top, /Destroy
RETURN
ENDIF
Widget_Control, event.id, Get_UValue=uval
CASE uval OF
'CANC': BEGIN
state.historyWin->Update,'Exiting variable selection widget'
state.statusbar->Update,'Exiting variable selection widget'
*state.guiTree = state.treeObj->GetCopy()
Widget_Control, event.top, /destroy
RETURN
END
'OK': begin
id=widget_info(event.top,find_by_uname='addvarwlist')
widget_control,id,get_value=wlist
*state.return=wlist->GetValue()
*state.guiTree = state.treeObj->GetCopy()
Widget_Control, event.top, /destroy
RETURN
end
else:
ENDCASE
end
function spd_ui_add_variable, guiId,loadedData,guiTree,historywin,statusBar,multi=multi,control=control,leafonly=leafonly,treemode=treemode,windowtitle=windowtitle
Compile_Opt idl2, hidden
if undefined(treemode) then treemode = 1
if undefined(windowtitle) then windowtitle = 'Add Variable(s)'
if ~keyword_set(multi) then multi = 0
tlb=widget_base(/col,title=windowtitle,group_leader=guiId,/floating,/modal, $
xpad=4,ypad=4,space=6)
if keyword_set(control) then begin
cr = ssl_newline()
text = [ 'The selected data will be matched to the control variable point-by-point.', $
'No interpolation will occur.']
mx = max(strlen(text), mi)
dummy = widget_label(tlb, value=text[mi])
geo = widget_info(dummy,/geo)
widget_control, dummy, /destroy
title = widget_label(tlb, value=strjoin(text,cr), $
xsize=geo.scr_xsize, $
ysize=geo.scr_ysize*2.1 )
endif
treeObj=obj_new('spd_ui_widget_tree',tlb,'VARIABLES',loadeddata,xsize=400,ysize=400,uname='addvarwlist',mode=treemode, $
multi=multi,leafonly=leafonly,/showdatetime,from_copy=*guiTree)
buttonbase=widget_base(tlb,/row,/align_center)
okbutton=widget_button(buttonbase,value='OK', uval='OK')
cancelbutton=widget_button(buttonbase,value='CANCEL', uval = 'CANC')
return_value = ptr_new('')
state = {treeObj:treeObj,guiTree:guiTree,historywin:historywin,statusbar:statusbar,return:return_value}
CenterTlb, tlb
widget_control,tlb,set_uval=state
widget_control,tlb,/realize
if !d.NAME eq 'X' then begin
widget_control, tlb, xoffset=0, yoffset=0
endif
XManager, 'spd_ui_add_variable', tlb, /No_Block
return,*return_value
end