PRO themis_fileconfig_init_struct,state,struct
compile_opt idl2,hidden
widget_control,state.localdir,set_value=struct.local_data_dir
widget_control,state.remotedir,set_value=struct.remote_data_dir
if struct.no_download eq 1 then begin
widget_control,state.nd_off_button,set_button=1
endif else begin
widget_control,state.nd_on_button,set_button=1
endelse
if struct.no_update eq 1 then begin
widget_control,state.nu_off_button,set_button=1
endif else begin
widget_control,state.nu_on_button,set_button=1
endelse
widget_control,state.v_droplist,set_combobox_select=struct.verbose
END
PRO themis_fileconfig_event, event
Widget_Control, event.handler, 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
state.statusbar->update,'Error in File Config.'
state.historywin->update,'Error in File Config.'
Widget_Control, event.TOP, Set_UValue=state, /No_Copy
widget_control, event.top,/destroy
RETURN
ENDIF
Widget_Control, event.id, Get_UValue = uval
CASE uval OF
'LOCALBROWSE':BEGIN
widget_control, state.localDir, get_value=currentDir
if currentDir ne '' then path = file_dirname(currentDir)
dirName = Dialog_Pickfile(Title='Choose a Local Data Directory:', $
Dialog_Parent=event.top,path=currentDir, /directory)
IF is_string(dirName) THEN BEGIN
!THEMIS.local_data_dir = dirName
widget_control, state.localDir, set_value=dirName
ENDIF ELSE BEGIN
ENDELSE
END
'LOCALDIR': BEGIN
widget_control, state.localDir, get_value=currentDir
!themis.local_data_dir = currentDir
END
'REMOTEDIR': BEGIN
widget_control, state.remoteDir, get_value=currentDir
!themis.remote_data_dir = currentDir
END
'NDON': BEGIN
IF event.select EQ 1 then !themis.no_download=0 else !themis.no_download=1
END
'NDOFF': BEGIN
IF event.select EQ 1 then !themis.no_download=1 else !themis.no_download=0
END
'NUON': BEGIN
IF event.select EQ 1 then !themis.no_update=0 else !themis.no_update=1
END
'NUOFF': BEGIN
IF event.select EQ 1 then !themis.no_update=1 else !themis.no_update=0
END
'VERBOSE': BEGIN
!themis.verbose = long(widget_info(state.v_droplist,/combobox_gettext))
END
'RESET': BEGIN
!themis=state.thm_cfg_save
widget_control,state.localdir,set_value=!themis.local_data_dir
widget_control,state.remotedir,set_value=!themis.remote_data_dir
if !themis.no_download eq 1 then begin
widget_control,state.nd_off_button,set_button=1
endif else begin
widget_control,state.nd_on_button,set_button=1
endelse
if !themis.no_update eq 1 then begin
widget_control,state.nu_off_button,set_button=1
endif else begin
widget_control,state.nu_on_button,set_button=1
endelse
widget_control,state.v_droplist,set_combobox_select=!themis.verbose
state.historywin->update,'Resetting controls to saved values.'
state.statusbar->update,'Resetting controls to saved values.'
END
'RESETTODEFAULT': BEGIN
thm_init, /reset
themis_fileconfig_init_struct,state,!themis
state.historywin->update,'Resetting configuration to default values.'
state.statusbar->update,'Resetting configuration to default values.'
END
'SAVE': BEGIN
thm_write_config
state.statusBar->update,'Saved thm_config.txt'
state.historyWin->update,'Saved thm_config.txt'
END
ELSE:
ENDCASE
widget_control, event.handler, set_uvalue=state, /NO_COPY
RETURN
END
PRO themis_fileconfig, tab_id, historyWin, statusBar
defsysv, '!themis', exists=exists
if not keyword_set(exists) then thm_init
thm_cfg_save = !themis
master = Widget_Base(tab_id, /col, tab_mode=1,/align_left, /align_top)
vmaster = widget_base(master, /col, /align_left, /align_top)
top = widget_base(vmaster,/row)
bmaster = widget_base(master, /row, /align_center)
ll = max(strlen([!themis.local_data_dir, !themis.remote_data_dir]))+12
configbase = widget_base(vmaster,/col)
lbase = widget_base(configbase, /row, /align_left)
flabel = widget_label(lbase, value = 'Local data directory: ')
localdir = widget_text(lbase, /edit, /all_events, xsiz = ll, $
uval = 'LOCALDIR', val = !themis.local_data_dir)
loc_browsebtn = widget_button(lbase,value='Browse', uval='LOCALBROWSE',/align_center)
rbase = widget_base(configbase, /row, /align_left)
flabel = widget_label(rbase, value = 'Remote data directory: ')
remotedir = widget_text(rbase, /edit, /all_events, xsiz = ll, $
uval = 'REMOTEDIR', val = !themis.remote_data_dir)
nd_base = widget_base(configbase, /row, /align_left)
nd_labelbase = widget_base(nd_base,/col,/align_center)
nd_label = widget_label(nd_labelbase, value='Download Data:',/align_left, xsize=95)
nd_buttonbase = widget_base(nd_base, /exclusive, column=2, uval="ND",/align_center)
nd_on_button = widget_button(nd_buttonbase, value='Automatically ', uval='NDON',/align_left,xsize=120)
nd_off_button = widget_button(nd_buttonbase, value='Use Local Data Only', uval='NDOFF',/align_left)
nubase = widget_base(configbase, /row, /align_left)
nu_labelbase = widget_base(nubase,/col,/align_center)
nu_label = widget_label(nu_labelbase, value='Update Files:',/align_left, xsize=95)
nu_buttonbase = widget_base(nubase, /exclusive, column=2, uval="NU",/align_center)
nu_on_button = widget_button(nu_buttonbase, value='Update if Newer ', uval='NUON',/align_left,xsize=120)
nu_off_button = widget_button(nu_buttonbase, value='Use Local Data Only', uval='NUOFF',/align_left)
v_base = widget_base(configbase, /row)
v_label = widget_label(v_base, value='Verbose (higher value = more comments): ')
v_values = ['0', '1', '2','3', '4', '5', '6', '7', '8', '9', '10']
v_droplist = widget_Combobox(v_base, value=v_values, uval='VERBOSE', /align_center)
savebut = widget_button(bmaster, value = ' Save To File ', uvalue = 'SAVE')
resetbut = widget_button(bmaster, value = ' Cancel ', uvalue = 'RESET')
reset_to_dbutton = widget_button(bmaster, value = ' Reset to Default ', uvalue = 'RESETTODEFAULT')
state = { thm_cfg_save:thm_cfg_save, $
localdir:localdir, remotedir:remotedir, $
nd_on_button:nd_on_button, nd_off_button:nd_off_button, $
nu_on_button:nu_on_button, nu_off_button:nu_off_button, $
v_values:v_values, v_droplist:v_droplist, statusBar:statusBar, $
historyWin:historyWin, tab_id:tab_id, master:master}
themis_fileconfig_init_struct,state,!themis
Widget_Control, master, Set_UValue=state, /No_Copy
widget_control, master, /realize
Widget_Control, widget_info(tab_id, /child), Set_UValue=state, /No_Copy
if !d.NAME eq 'X' then begin
widget_control, master, xoffset=0, yoffset=0
endif
xmanager, 'themis_fileconfig', master, /no_block
END