| 1 | pro pause,up=up,xcrs=xcrs,ycrs=ycrs,on_screen=on_screen |
|---|
| 2 | ;+ |
|---|
| 3 | ; routine: pause |
|---|
| 4 | ; |
|---|
| 5 | ; useage: pause |
|---|
| 6 | ; pause,up=up,xcrs=xcrs,ycrs=ycrs,on_screen=on_screen |
|---|
| 7 | ; |
|---|
| 8 | ; input: none |
|---|
| 9 | ; |
|---|
| 10 | ; keyword input: |
|---|
| 11 | ; up |
|---|
| 12 | ; if set, don't return until a upward button transition is |
|---|
| 13 | ; detected. This is useful when pause is used between plots which |
|---|
| 14 | ; draw quickly. Setting this keyword ensures that no plots are |
|---|
| 15 | ; skipped but also requires that each new plot be accompanied by a |
|---|
| 16 | ; downward and upward button transition. The default is to skip |
|---|
| 17 | ; to the next plot as long a mouse button is pressed down. |
|---|
| 18 | ; |
|---|
| 19 | ; |
|---|
| 20 | ; xcrs,ycrs |
|---|
| 21 | ; pixel location to put cursor while waiting |
|---|
| 22 | ; |
|---|
| 23 | ; on_screen |
|---|
| 24 | ; if set, don't pause if cursor not in plot window |
|---|
| 25 | ; |
|---|
| 26 | ; output: none |
|---|
| 27 | ; |
|---|
| 28 | ; PURPOSE: |
|---|
| 29 | ; Momentarily stop execution until a mouse key is pressed. While |
|---|
| 30 | ; in the paused state the cursor is changed to what looks like an |
|---|
| 31 | ; arrow pointing down on a button. When any of the mouse buttons |
|---|
| 32 | ; are pressed the cursor returns to its original form and |
|---|
| 33 | ; execution continues. |
|---|
| 34 | ; |
|---|
| 35 | ; PAUSE will only interrupt execution if the output device is 'X' |
|---|
| 36 | ; and plot system variable !p.multi(0) eq 0. The first condition |
|---|
| 37 | ; disables PAUSE when output is directed to a postscript file. |
|---|
| 38 | ; The second condition ensures that pauses occur only just before |
|---|
| 39 | ; the screen is erased for a new plot. |
|---|
| 40 | ; |
|---|
| 41 | ; NOTE: After PAUSE returns to the calling program different |
|---|
| 42 | ; actions can be performed depending on whether the left, middle |
|---|
| 43 | ; or right mouse button was pressed. Just test on the !err system |
|---|
| 44 | ; variable: !err=1 => left !err=2 => middle !err=4 => right. |
|---|
| 45 | ; |
|---|
| 46 | ; COMMON BLOCKS: pause_blk |
|---|
| 47 | ; |
|---|
| 48 | ; EXAMPLE: |
|---|
| 49 | ; |
|---|
| 50 | ;x=findgen(201)/10.-10. |
|---|
| 51 | ;for a=-2.,2.,.1 do begin & plot,x,1/(x^2*10.^a+1),tit=string(a) & pause & end |
|---|
| 52 | ; |
|---|
| 53 | ;for a=-2.,2.,.1 do begin & plot,x,1/(x^2*10.^a+1),tit=string(a) &$ |
|---|
| 54 | ; pause,/u & end |
|---|
| 55 | ; |
|---|
| 56 | ; author: Paul Ricchiazzi 22sep92 |
|---|
| 57 | ; Institute for Computational Earth System Science |
|---|
| 58 | ; University of California, Santa Barbara |
|---|
| 59 | ;- |
|---|
| 60 | |
|---|
| 61 | |
|---|
| 62 | if !d.name eq 'X' and !p.multi(0) eq 0 then begin |
|---|
| 63 | cursor,xw,yw,/nowait,/device |
|---|
| 64 | |
|---|
| 65 | if xw eq -1 then begin |
|---|
| 66 | if keyword_set(on_screen) then return |
|---|
| 67 | if n_elements(xcrs) eq 0 then xcrs=.9*!d.x_vsize |
|---|
| 68 | if n_elements(ycrs) eq 0 then ycrs=.9*!d.y_vsize |
|---|
| 69 | tvcrs,xcrs,ycrs |
|---|
| 70 | endif |
|---|
| 71 | device,cursor_standard=16 |
|---|
| 72 | cursor,xdum,ydum,/wait,/device |
|---|
| 73 | if keyword_set(up) then cursor,xdum,ydum,/up,/device |
|---|
| 74 | device,cursor_standard=30 |
|---|
| 75 | endif |
|---|
| 76 | end |
|---|