Pro thm_ui_error_event, event
widget_control, event.id, get_uval = uval
Case uval Of
'EXIT': widget_control, event.top, /destroy
'ERROR_DISPLAY':Begin
widget_control, event.id, get_val = error_arr
If(is_string(error_arr)) Then Begin
widget_control, event.top, get_uval = state, /no_copy
ptr_free, state.error
state.error = ptr_new(temporary(error_arr))
Endif
widget_control, event.top, set_uval = state, /no_copy
End
'SAVE': Begin
widget_control, event.top, get_uval = state, /no_copy
error_arr = *state.error
widget_control, event.top, set_uval = state, /no_copy
nerr = n_elements(error_arr)
xt = time_string(systime(/sec))
ttt = strmid(xt, 0, 4)+strmid(xt, 5, 2)+strmid(xt, 8, 2)+$
'_'+strmid(xt, 11, 2)+strmid(xt, 14, 2)+strmid(xt, 17, 2)
ofile = 'themis_help_request_'+ttt+'.txt'
osf = strupcase(!version.os_family)
If(osf Eq 'WINDOWS') Then ofile0 = file_expand_path('')+'\'+ofile $
Else ofile0 = file_expand_path('')+'/'+ofile
ofile = dialog_pickfile(title = 'THEMIS Help Request Filename', $
filter = '*.txt', file = ofile0)
If(is_string(ofile)) Then Begin
openw, unit, ofile, /get_lun
For j = 0, nerr-1 Do printf, unit, error_arr[j]
free_lun, unit
If(obj_valid(!themis.progobj)) Then Begin
!themis.progobj -> update, 0.0, $
text = 'THEMIS Help Request Saved as File: '+ofile
Endif
Endif Else Begin
If(obj_valid(!themis.progobj)) Then $
!themis.progobj -> update, 0.0, text = 'Operation Cancelled'
Endelse
End
Endcase
Return
End
Pro thm_ui_error
error_arr = 'No Error File'
p = expand_path(!path, /array)
If(!version.os_family Eq 'Windows') Then Begin
d = strpos(p, 'themis\common')
Endif Else d = strpos(p, 'themis/common')
ok = where(d Ne -1)
If(ok[0] Ne -1) Then Begin
f = file_search(p[ok[0]]+'/'+'themis_error_message.txt')
If(is_string(f)) Then Begin
lines = file_lines(f)
error_arr = strarr(lines)
Openr, unit, f, /get_lun
readf, unit, error_arr
Free_lun, unit
Endif
Endif
errorid = widget_base(/col, $
title = 'THEMIS: Help Request Form')
errordisplay = widget_text(errorid, uval = 'ERROR_DISPLAY', $
val = error_arr, /all_events, $
/editable, xsize = 80, ysize = 40, /scroll, $
frame = 5)
buttons = widget_base(errorid, /row, /align_center)
save_button = widget_base(buttons, /col, /align_center)
savebut = widget_button(save_button, val = ' Save ', uval = 'SAVE', $
/align_center, scr_xsize = 120)
exit_button = widget_base(buttons, /col, /align_center)
exitbut = widget_button(exit_button, val = ' Close ', uval = 'EXIT', $
/align_center, scr_xsize = 120)
state = {error:ptr_new(error_arr), errordisplay:errordisplay}
widget_control, errorid, set_uval = state, /no_copy
widget_control, errorid, /realize
xmanager, 'thm_ui_error', errorid, /no_block
Return
End