[jawsscripts] Re: TopOfText
- From: "Paul Magill" <magills@xxxxxxxxxxx>
- To: <jawsscripts@xxxxxxxxxxxxx>
- Date: Sat, 25 Apr 2009 16:41:53 +1000
Hi Dean,
I have not followed this thread, but take the problem to be that the
function that you have scheduled to fire, fires again when you wish it to
cease.
The ScheduleFunction call setts up a timer to fire the nominated function
when the timer elapses.
If I have not misunderstood the problem, then perhaps you need to use the
UnScheduleFunction to terminate the pending call of the function. That
pending call of the nominated function can *only* be terminated, or
prevented, by using the UnScheduleFunction function.
To do this, you need to store the internal identifier of the scheduled call,
with something like this:
LET Global_ScheduleIdentifier = scheduleFunction ("PositionForNextRead",
200)
then where your code recognises that the scheduling should stop, use:
UnScheduleFunction (Global_ScheduleIdentifier)
This will cause any pending call to the nominated function to be cancelled.
Note: the variable Global_ScheduleIdentifier, stores an integer which is
unique to the function that is to be called, & not to the actual call. i e.
if your code has more than one ScheduleFunction call to one nominated
function, then all those ScheduleFunction calls will generate the same
identifier.
Hope this helps.
Paul from Aust
----- Original Message -----
From: "Dean Masters" <dwmasters@xxxxxxxxxxxxx>
here is the function I have been getting help on. The scheduled function
still goes on even when I have hit a key to stop the reading. I don't know
why something doesn't trigger when a key is pressed to stop the scheduled
function.
Also the scheme is not switched from the default after going to the next
screen. I have tried moving the lines of code below the keystroke to move to
the next screen and also to the function that is scheduled. None of these
effect the scheme and reading of the reference which is supposed to be
turned off.
Void Function TopOfText ()
VAR
string LastLine,
Int iKeyWasPressed, ;use this to terminate the while loop.
string sScheme,
string sScheme1,
string sScheme2
Let iKeyWasPressed = IsKeyWaiting () ; set variable to true if a key was
pressed.
If iKeyWasPressed then
Return ; get out before starting process and while loop
EndIf
InvisibleCursor ()
Let LastLine = GetLine (); saves first line
SayLine ();speaks first line
JAWSHome ()
NextLine ();scrols to next line
Pause ()
Let CurrentLine = GetLine ();saves new line
While (CurrentLine != LastLine && iKeyWasPressed ==0);speak if two
adjacentlines are dissimilar or if a key was pressed
Let iKeyWasPressed = IsKeyWaiting () ; set variable to true if a key was
pressed.
If iKeyWasPressed then
Return
ElIf iKeyWasPressed ==0 then
SayLine ()
Let LastLine = CurrentLine; sets up for new comparison
NextLine ();scrolls down one line
Let CurrentLine = GetLine (); saves the new line
EndIf
EndWhile;loop until the two lines are the same
Say ("Bottom of page", ot_status, false); for testing purposes
If iKeyWasPressed then
Let sScheme = GetCurrentSchemeName ();scheme set for sounds which is to be
turned off for this script
If GetCurrentSchemeName () != "LDLS" then
Let sScheme1 = sScheme
Let sScheme2 = sScheme
Else
Let sScheme1 = "Classic"
Let sScheme2 = "LDLS"
EndIf
Let g_ChapterAndVerseToggle = 0;mutes speaking of the chapter and verse
SwitchToScheme (sScheme1);switches to the classic scheme if in LDLS scheme
Return
Else
PCCursor ()
TypeKey ("spacebar");new keystroke in Libronix 3c to go to next screen
Say ("next page", ot_status, false); for texting
scheduleFunction ("PositionForNextRead", 200)
EndIf
EndFunction
Thanks,
Dean
__________
Visit and contribute to The JAWS Script Repository http://jawsscripts.com
View the list's information and change your settings at
http://www.freelists.org/list/jawsscripts
Other related posts: