; Copyright (c) 1998, Forschungszentrum Juelich GmbH ICG-1
; All rights reserved.
; Unauthorized reproduction prohibited.
; This software may be used, copied, or redistributed as long as it is not
; sold and this copyright notice is reproduced on each copy made. This
; routine is provided as is without any express or implied warranties
; whatsoever.
;
;+
; NAME:
; x_breaker
;
; PURPOSE:
; This widget procedure is used to break a routine by sending a breakpoint
;
; CATEGORY:
; PROG_TOOLS/WIDGETS
;
; CALLING SEQUENCE:
; x_breaker
;
;
; EXAMPLE:
; PRO test
; result=x_breaker()
; FOR i=0l,100000l DO BEGIN
; res=WIDGET_EVENT(result.base,/nowait)
; WAIT,0.01
; PRINT,i
; ENDFOR
; END
;
;
; MODIFICATION HISTORY:
; Written by: R.Bauer (ICG-1), 1998-Dec-07
;-
PRO x_breaker_event,ev
WIDGET_CONTROL, ev.id, get_uval=cmd
WIDGET_CONTROL, ev.top, get_uval=map
WIDGET_CONTROL, map.base, get_uval=struct
IF SIZE(cmd,/type) NE 8 THEN BEGIN
CASE cmd[0] OF
'BREAK': BEGIN
HELP,call=call
line=LONG((STR_SEP((STR_SEP(call[1],'('))[1],')'))[0])
file=(STR_SEP((STR_SEP(call[1],'<'))[1],'('))[0]
BREAKPOINT,file,line
END
ELSE:
ENDCASE
ENDIF
END
FUNCTION x_breaker
base=WIDGET_BASE(col=3,title='Break a running Script')
id_break=WIDGET_BUTTON(base,Value='BREAK',UVALUE='BREAK',/ALIGN_CENTER,event_pro='x_breaker_event')
result={base:base}
WIDGET_CONTROL,base,set_uval= result,/realize , /XMANAGER_ACTIVE_COMMAND
RETURN,result
END