pro spd_ui_init_load_update_tree_copy,state
Compile_Opt idl2, hidden
tab = widget_info(state.tabBase,/tab_current)
if tab eq 1 then tab=0
if obj_valid(state.treeArray[tab]) then begin
*state.treeCopyPtr = state.treeArray[tab]->getCopy()
endif
end
pro spd_ui_load_data_set_user_select,state
widget_control,widget_info(state.tabArray[0],/child),get_uvalue=load_data_state
if widget_valid(load_data_state.itypeDropList) && (*state.userSelectPtr).inst ne -1 then begin
widget_control,load_data_state.itypeDroplist,set_combobox_select=(*state.userSelectPtr).inst
endif
spd_ui_load_data_file_itype_sel, load_data_state
if widget_valid(load_data_state.coordDropList) && (*state.userSelectPtr).coord ne -1 then begin
widget_control,load_data_state.coordDropList,set_combobox_select=(*state.userSelectPtr).coord
endif
spd_ui_load_data_file_coord_sel, load_data_state
if widget_valid(load_data_state.observList) && ptr_valid((*state.userSelectPtr).observPtr) && (*(*state.userSelectPtr).observPtr)[0] ne -1 then begin
widget_control,load_data_state.observList,set_list_select=*(*state.userSelectPtr).observPtr
endif
spd_ui_load_data_file_obs_sel, load_data_state
if widget_valid(load_data_state.level1List) && ptr_valid((*state.userSelectPtr).level1Ptr) && (*(*state.userSelectPtr).level1Ptr)[0] ne -1 then begin
widget_control,load_data_state.level1List,set_list_select=*(*state.userSelectPtr).level1Ptr
endif
spd_ui_load_data_file_l1_sel, load_data_state
if widget_valid(load_data_state.level2List) && ptr_valid((*state.userSelectPtr).level2Ptr) && (*(*state.userSelectPtr).level2Ptr)[0] ne -1 then begin
widget_control,load_data_state.level2List,set_list_select=*(*state.userSelectPtr).level2Ptr
endif
spd_ui_load_data_file_l2_sel, load_data_state
raw_data_widget_id = widget_info(widget_info(state.tabArray[0],/child),find_by_uname='raw_data')
if widget_valid(raw_data_widget_id) then begin
widget_control,raw_data_widget_id,set_button=(*state.userSelectPtr).uncalibrated
endif
widget_control,widget_info(state.tabArray[0],/child),set_uvalue=load_data_state,/no_copy
end
pro spd_ui_load_data_select_copy,state
Compile_Opt idl2, hidden
widget_control,widget_info(state.tabArray[0],/child),get_uvalue=load_data_state
if ptr_valid(state.userSelectPtr) && is_struct(load_data_state) then begin
if widget_valid(load_data_state.itypeDroplist) then begin
(*state.userSelectPtr).inst = where(widget_info(load_data_state.itypeDroplist,/combobox_gettext) eq load_data_state.validItype)
endif
if widget_valid(load_data_state.coordDropList) then begin
(*state.userSelectPtr).coord = where(widget_info(load_data_state.coordDropList,/combobox_gettext) eq *load_data_state.validCoords)
endif
if widget_valid(load_data_state.observList) then begin
ptr_free,(*state.userSelectPtr).observPtr
(*state.userSelectPtr).observPtr = ptr_new(widget_info(load_data_state.observList,/list_select))
endif
if widget_valid(load_data_state.level1List) then begin
ptr_free,(*state.userSelectPtr).level1Ptr
(*state.userSelectPtr).level1Ptr = ptr_new(widget_info(load_data_state.level1List,/list_select))
endif
if widget_valid(load_data_state.level2List) then begin
ptr_free,(*state.userSelectPtr).level2Ptr
(*state.userSelectPtr).level2Ptr = ptr_new(widget_info(load_data_state.level2List,/list_select))
endif
raw_data_widget_id = widget_info(widget_info(state.tabArray[0],/child),find_by_uname='raw_data')
if widget_valid(raw_data_widget_id) then begin
(*state.userSelectPtr).uncalibrated = widget_info(raw_data_widget_id,/button_set)
endif
endif
end
pro spd_ui_init_load_window_event, event
Compile_Opt idl2, hidden
Widget_Control, event.TOP, Get_UValue=state, /No_Copy
err_xxx = 0
Catch, err_xxx
IF (err_xxx NE 0) THEN BEGIN
Catch, /Cancel
Help, /Last_Message, Output = err_msg
if is_struct(state) then begin
FOR j = 0, N_Elements(err_msg)-1 DO state.historywin->update,err_msg[j]
x=state.gui_id
histobj=state.historywin
spd_ui_init_load_update_tree_copy,state
endif
Print, 'Error--See history'
ok=error_message('An unknown error occured and the window must be restarted. See console for details.',$
/noname, /center, title='Error in Load Data')
Widget_Control, event.TOP, Set_UValue=state, /No_Copy
widget_control, event.top,/destroy
if widget_valid(x) && obj_valid(histobj) then begin
spd_gui_error,x,histobj
endif
RETURN
ENDIF
IF (Tag_Names(event, /Structure_Name) EQ 'WIDGET_KILL_REQUEST') THEN BEGIN
exit_sequence:
state.historyWin->Update,'SPD_UI_INIT_LOAD_WINDOW: Widget closed'
spd_ui_init_load_update_tree_copy,state
Widget_Control, event.TOP, Set_UValue=state, /No_Copy
Widget_Control, event.top, /Destroy
RETURN
ENDIF
IF (Tag_Names(event, /Structure_Name) EQ 'WIDGET_TAB') THEN BEGIN
tab = event.tab
spd_ui_time_widget_update,state.timeArray[tab], $
oneday= spd_ui_time_widget_is_oneday(state.timeArray[state.previoustab])
spd_ui_init_load_update_tree_copy,state
widget_control,event.top,tlb_set_title=state.tabTitleText[tab]
if state.previousTab ne 1 then begin
if obj_valid(state.treeArray[state.previousTab]) then begin
*state.treeCopyPtr = state.treeArray[state.previousTab]->getCopy()
endif
endif
if tab ne 1 then begin
if obj_valid(state.treeArray[tab]) then begin
state.treeArray[tab]->update,from_copy=*state.treeCopyPtr
endif
endif
state.previousTab = tab
Widget_Control, event.TOP, Set_UValue=state, /No_Copy
return
endif
Widget_Control, event.id, Get_UValue=uval
if size(uval,/type) eq 0 then begin
Widget_Control, event.top, Set_UValue = state, /No_Copy
RETURN
endif
state.historywin->update,'SPD_UI_INIT_LOAD_WINDOW: User value: '+uval ,/dontshow
CASE uval OF
'DISMISS':BEGIN
spd_ui_init_load_update_tree_copy,state
spd_ui_load_data_select_copy,state
Widget_Control, event.top, Set_UValue=state, /No_Copy
Widget_Control, event.top, /Destroy
RETURN
END
ELSE:
ENDCASE
Widget_Control, event.top, Set_UValue = state, /No_Copy
RETURN
end
pro spd_ui_init_load_window, gui_id, windowStorage, loadedData, historyWin, $
timerange, treeCopyPtr,userSelectPtr
compile_opt idl2, hidden
tlb = widget_base(/Col, Title = "Load Data", Group_Leader = gui_id, $
/Modal, /Floating, /TLB_KILL_REQUEST_EVENTS)
tabBase = widget_tab(tlb, location=0, multiline=10)
getresourcepath,configPath
restore,filename=configPath+'spd_ui_load_data_config_template.sav'
loadDataTabs = read_ascii(configPath+'spd_ui_load_data_config.txt',template=templ,count=tabNum)
ind = where(loadDataTabs.panel_title eq '', ncnt)
if ncnt gt 0 then loadDataTabs.panel_title[ind]=loadDataTabs.mission_name[ind]
if tabNum eq 0 then begin
message,'ERROR: No tabs found in config file. Probable config file error'
endif
tabArray = make_array(tabNum, /long)
for i=0,tabNum-1 do begin
tabArray[i] = widget_base(tabBase, title=loadDataTabs.mission_name[i], $
event_pro=loadDataTabs.procedure_name[i])
endfor
bottomBase = widget_base(tlb, /Col, YPad=6, /Align_Left)
widget_control, tabBase, set_tab_current=0
okButton = Widget_Button(bottomBase, Value='Done', XSize=75, uValue='DISMISS', $
ToolTip='Dismiss Load Panel', /align_center)
statusText = Obj_New('SPD_UI_MESSAGE_BAR', $
Value='Status information is displayed here.', $
bottomBase, XSize=135, YSize=1)
windowStorage->getProperty, callSequence=callSequence
userSelectStruct = $
{inst:-1,$
coord:-1,$
observPtr:ptr_new(-1),$
level1Ptr:ptr_new(-1),$
level2Ptr:ptr_new(-1),$
uncalibrated:0}
if ~ptr_valid(userSelectPtr) then begin
userSelectPtr = ptr_new(userSelectStruct)
endif
treeArray = objarr(tabNum)
timeArray = lonarr(tabNum)
for i= 0, tabNum-1 do begin
call_procedure, strtrim(loadDataTabs.procedure_name[i]), tabArray[i], loadedData, historyWin, statusText, $
treeCopyPtr, timeRange, callSequence,loadTree=thisTreeArray, $
timeWidget=otherTimeWidget
timeArray[i] = otherTimeWidget
treeArray[i] = thisTreeArray
endfor
tabTitleText=loadDataTabs.panel_title
state = {tlb:tlb, gui_id:gui_id,tabBase:tabBase, historyWin:historyWin, statusText:statusText,treeArray:treeArray,timeArray:timeArray,tabArray:tabArray,treeCopyPtr:treeCopyPtr,previousTab:0,tabTitleText:tabTitleText, userSelectPtr:userSelectPtr}
CenterTLB, tlb
Widget_Control, tlb, Set_UValue = state, /No_Copy
Widget_Control, tlb, /Realize
Widget_Control, tlb, get_UValue = state, /No_Copy
spd_ui_load_data_set_user_select,state
Widget_Control, tlb, set_UValue = state, /No_Copy
if !d.NAME eq 'X' then begin
widget_control, tlb, xoffset=0, yoffset=0
endif
XManager, 'spd_ui_init_load_window', tlb, /No_Block
RETURN
end