; 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