pro dprinttool_event,ev
common dprint_com, dprint_struct
on_error,2
uname = widget_info(ev.id,/uname)
dlvl = 5
case uname of
'DEBUG': dprint,dlevel=dlvl,setdebug = ev.str, Uname+' Changed'
'TRACE': dprint,dlevel=dlvl,print_trace = ev.index,Uname+' Changed'
'DLEVEL': dprint,dlevel=dlvl,print_dlevel = ev.select,Uname+' Changed'
'DTIME': dprint,dlevel=dlvl,print_time = ev.select ,Uname+' Changed'
'DDTIME': dprint,dlevel=dlvl,print_dtime = ev.select,Uname+' Changed'
'UPDATE': dprint,dlevel=0,'',sublevel=2
'DERROR': message,'User Forced Error!'
'BREAK': begin
dprint_struct.break_flag = ev.select
dprint,'Break = ',strtrim(dprint_struct.break_flag,2)
end
'DONE' : WIDGET_CONTROL, ev.top, /DESTROY
else: dprint,'Unknown event:', uname
endcase
return
end
pro dprinttool,messagetext,update=update,sublevel=sublevel,prefix=prefix
dprint, '--------------',dlevel=99
common dprint_com, dprint_struct
if not keyword_set(update) then begin
width = 50
base = widget_base(/column,title='Dprint Tool')
base1 = widget_base(base,/row)
base11 = widget_base(base1)
base12 = widget_base(base1,/column)
STACK_ID = widget_text(base11,uname='STACK',ysize=10,xsize=width)
DEBUG_ID = widget_combobox(base12,value=strtrim(indgen(11),2),uname='DEBUG',edit=0)
TRACE_ID = widget_droplist(base12,Title='Trace:',value=['OFF','LAST','INDENT','ALL','NUM'],uname='TRACE')
base121 = widget_base(base12,/nonexclusive)
DLEVEL_ID = widget_button(base121, value ='Dlevel', uname ='DLEVEL' )
DDTIME_ID = widget_button(base121, value ='Time', uname ='DTIME' )
DDTIME_ID = widget_button(base121, value ='Delta time', uname ='DDTIME' )
MENU_ID = widget_button(base12,/menu, value = 'Other', uname='MENU')
BREAK_ID = widget_button(MENU_ID, value = 'Request Break',uname='BREAK',/pushbutton_events)
ERROR_ID = widget_button(MENU_ID, value = 'Force Error',uname='DERROR')
UPDATE_id = widget_button(menu_id,value='Update',uname='UPDATE')
DONE_ID = widget_button(MENU_ID, value = 'Done',uname='DONE')
TEXT_ID = widget_text(base,uname='TEXT',ysize=2)
widget_control, base,/realize
xmanager, 'dprinttool', base ,/no_block
dprint_struct.widget_id = base
dprint_struct.check_events =1
endif
if widget_info(/valid_id,dprint_struct.widget_id) eq 0 then begin
dprint_struct.widget_id = 0L
dprint_struct.check_events = 0
return
endif
wid = dprint_struct.widget_id
if n_elements(prefix) eq 0 then begin
stack = scope_traceback(/structure,system=1)
level = n_elements(stack) -1
if level gt 200 then begin
Message,"Stack is too large! Runaway recursion?"
endif
if keyword_set(sublevel) then level -= sublevel
level = level > 1
stack = stack[0:level-1]
levels = indgen(level)
prefix=strtrim(levels,2)+' '+stack.routine + string(stack.line,format='(" (",i0,")")')
endif
widget_control, widget_info(wid,find_by_uname='STACK'),set_value=prefix
widget_control, widget_info(wid,find_by_uname='TEXT'), set_value=messagetext
widget_control, widget_info(wid,find_by_uname='DDTIME') ,set_button= dprint_struct.print_dtime
widget_control, widget_info(wid,find_by_uname='DTIME') ,set_button= dprint_struct.print_time
widget_control, widget_info(wid,find_by_uname='DLEVEL') ,set_button= dprint_struct.print_dlevel
widget_control, widget_info(wid,find_by_uname='TRACE') ,set_droplist_select = dprint_struct.print_trace
widget_control, widget_info(wid,find_by_uname='DEBUG') ,set_combobox_select = dprint_struct.debug
end