home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
rox.zip
/
spinner.rox
< prev
next >
Wrap
Text File
|
1994-04-08
|
3KB
|
134 lines
:class spinner
:vars sem1 sem2 sem3 state row col
:*-------------------------------------------------------------------
:* initialize
:*-------------------------------------------------------------------
:method init
if (0 = RoxQueryClassLoaded("EventSem")) then
rc = RoxLoadDLL("roxsem")
sem1 = RoxCreate("EventSem")
sem2 = RoxCreate("EventSem")
sem3 = RoxCreate("MutexSem")
state = 0
if RxFuncQuery("SysLoadFuncs") then
do
rc = RxFuncAdd("SysLoadFuncs","REXXUtil","SysLoadFuncs")
rc = SysLoadFuncs()
end
return
:*-------------------------------------------------------------------
:* terminate
:*-------------------------------------------------------------------
:method deinit
rc = RoxDestroy(sem1)
rc = RoxDestroy(sem2)
return
:*-------------------------------------------------------------------
:* start spinner - 2
:*-------------------------------------------------------------------
:method spin2
spin.0 = "-"
spin.1 = "\"
spin.2 = "|"
spin.3 = "/"
spin.4 = "-"
spin.5 = "\"
spin.6 = "|"
spin.7 = "/"
index = -1
g = .reset(sem1)
g = .reset(sem2)
do while (.query(sem1) = 0)
/*---------------------------------------------------------------
* increment spin state
*---------------------------------------------------------------*/
index = index + 1
index = index // 8
/*---------------------------------------------------------------
* write spin character
*---------------------------------------------------------------*/
rc = .request(sem3)
parse value SysCurPos(row,col) with origRow origCol
rc = charout(,spin.index)
rc = SysCurPos(origRow,origCol)
rc = .release(sem3)
end
parse value SysCurPos(row,col) with origRow origCol
rc = charout(," ")
rc = SysCurPos(origRow,origCol)
g = .post(sem2)
return ""
:*-------------------------------------------------------------------
:* start spinner
:*-------------------------------------------------------------------
:method spin
if (state = 1) then
return self
state = 1
parse value SysCurPos() with row col
rc = RoxSendThread("spin2",self)
return self
:*-------------------------------------------------------------------
:* stop
:*-------------------------------------------------------------------
:method stop
state = 0
g = .post(sem1)
g = .wait(sem2)
state = 0
return self
:*-------------------------------------------------------------------
:* suspend
:*-------------------------------------------------------------------
:method suspend
if (state = 0) then
return self
rc = .request(sem3)
return rc
:*-------------------------------------------------------------------
:* resume
:*-------------------------------------------------------------------
:method resume
if (state = 0) then
return self
rc = .release(sem3)
return rc