comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » cancel button to stop w/in an iterative loop?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: cancel button to stop w/in an iterative loop? [message #14627 is a reply to message #14565] Wed, 10 March 1999 00:00 Go to previous message
R.Bauer is currently offline  R.Bauer
Messages: 1424
Registered: November 1998
Senior Member
Hi,

an example is included.
try x_slider_example.

After you pressed break a breakpoint is set into the running script.
It breaks then itself.

R.Bauer


; 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_slider
;
; PURPOSE:
; This widget function is used to place a slider in front to show steps of
; actions like an increment of a do loop.
; The break key is used to set if pressed a breakpoint into the source code.
; This widget don't use the xmanager
;
; CATEGORY:
; PROG_TOOLS/WIDGETS
;
; CALLING SEQUENCE:
; result=x_slider(minimum,maximum,[title=title],[/BREAK])
;
; INPUTS:
; minimum: the start value
; maximum: the end value
;
; KEYWORD PARAMETERS:
; title: the title for the base
; break: if set the break key is defined - if pressed a breakpoint
; will be generated where x_slider_widget_event was started
;
; OUTPUTS:
; The result is a structure:
; base: the base id
; slider: the slider id
;
; EXAMPLE:
; result=x_slider(0,10000)
; widget_control,result.slider,set_val=100
; widget_control,result.base,/destroy
;
;
; PRO x_slider_example
; result=x_slider(0,1000,title='CC',/break)
; FOR I=0,10 DO BEGIN
; WAIT,1
; WIDGET_CONTROL,result.slider,set_val=100*I
; X_SLIDER_WIDGET_EVENT,result
; ENDFOR
;
; WIDGET_CONTROL,result.base,/destroy
;
; END
;
; MODIFICATION HISTORY:
; Written by: R.Bauer (ICG-1), 1998-Nov-18
; 1998-12-02: keyword break added
;-

PRO x_slider_example
result=x_slider(0,1000,title='CC',/break)
FOR I=0,10 DO BEGIN
WAIT,1
WIDGET_CONTROL,result.slider,set_val=100*I
X_SLIDER_WIDGET_EVENT,result
ENDFOR
WIDGET_CONTROL,result.base,/destroy
END


PRO x_slider_widget_event,x_slider_struct
tagname=STRUPCASE('break')
tags=TAG_NAMES(x_slider_struct)
a=WHERE(tags EQ tagname,count)
IF count GT 0 THEN BEGIN
HELP,call=call
line=LONG((STR_SEP((STR_SEP(call[1],'( '))[1],')'))[0])
file=(STR_SEP((STR_SEP(call[1],'<'))[1],'('))[0]
x_slider_struct.file=file
x_slider_struct.line=line
WIDGET_CONTROL,x_slider_struct.base,set_uval= x_slider_struct
res=WIDGET_EVENT(x_slider_struct.break,/nowait)
ENDIF
END

PRO x_slider_manager_break,event
WIDGET_CONTROL,event.top,get_uval=uval
BREAKPOINT,uval.file,uval.line
END

FUNCTION x_slider,minimum,maximum,title=title,BREAK=BREAK
base=WIDGET_BASE(row=2,title=title)
IF KEYWORD_SET(break) THEN id_break=WIDGET_BUTTON(base,Value='BREAK',$
UVALUE='BREAK',/ALIGN_CENTER,EVENT_PRO='x_slider_manager_bre ak')
base2=WIDGET_BASE(base,col=3)
IF N_ELEMENTS(minimum) EQ 0 THEN minimum=0
IF N_ELEMENTS(maximum) EQ 0 THEN maximum=100
id_label=WIDGET_LABEL(base2,value=STRTRIM(STRING(minimum),2) )
slider=WIDGET_SLIDER(base2,minimum=minimum,maximum=maximum)
id_label=WIDGET_LABEL(base2,value=STRTRIM(STRING(maximum),2) )
WIDGET_CONTROL,base,/realize,/timer
result={base:base,slider:slider,line:0l,file:''}
WIDGET_CONTROL,base,set_uval= result
IF KEYWORD_SET(break) THEN result=CREATE_STRUCT(result,'break',id_break)
RETURN,result
END
[Message index]
 
Read Message
Read Message
Previous Topic: Re: Baffled by color postscript
Next Topic: GetColor Program

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Dec 03 00:43:33 PST 2025

Total time taken to generate the page: 0.00318 seconds