[jawsscripts] Re: Make Sure Your Function Always Runs First

  • From: "David Farough" <David.Farough@xxxxxxxxxxxxx>
  • To: "jawsscripts@xxxxxxxxxxxxx" <jawsscripts@xxxxxxxxxxxxx>
  • Date: Fri, 15 May 2009 10:46:07 -0400

Hi Jim:

I found a message from Dennis Brown who explains the usage and reasons
for the use of scoping function calls.  You will be able to find
examples of this in the Microsoft word2007 scripts.  Here is the message
I found.



David Farough
Application Accessibility Coordinator/coordonateur de l'accessibilité 
Information Technology Services Directorate /
Direction des services d'information technologiques
Public Service Commission / Commission de la fonction publique
Email / Courriel:  David.Farough@xxxxxxxxxxxxx
Tel. / Tél:    (613) 992-2779 

>>> "Dennis Brown" <DennisTBrown@xxxxxxxxxxx> 03:50 pm Tuesday, January
15, 2008 >>>
Hi,
Those are new "scope" identifiers, needed because Outlook 2007 uses
Word as 
the editor exclusively.  Using SwitchToConfiguration to launch the Word

script set became very problematic, especially when dealing with
exchange 
server timing issues.
These identifiers tells Jaws which specific function to call.
For example, the FocusChangedEventEx is the first event triggered on a
focus 
change.
Microsoft Outlook 2007 has one, as does Microsoft Word 2007,
MSOffice2007, 
and default.jss.
They drop through if not redirected.
When going into a message, and the Word functions need calling, not the

Outlook functions, then the FocusChangedEventEx needs to be redirected
to 
the correct function, otherwise it would call the Outlook
FocusChangedEvent, 
which would call the Outlook SayFocusedObject, and Outlook 
SayObjectTypeAndText, none of which are used in the message body in
Outlook.
So, in Outlook's FocusChangedEventEx, we caused it to look for the
class of 
the message body, _WwG, and if the current class, then redirect it to
call 
the Word's FocusChangedEventEx function, so the Word functions could
process 
the message body.
Microsoft_Word_2007::FocusChangedEventEx(...)
Now the correct functions get called, and no constant switching of
script 
sets, vulnerable to timing issues.

Self::
is only when you want the current script set's instance of that
function to 
be used.

Scope is redundant if the functions would be called by simply dropping

through.  For example,
; Overwritten event in MyScripts.jss...
Function ValueChangedEvent(...)
If GetCurrentControlId()==4444 Then
    Default::ValueChangedEvent(...) ; Calls default.jss
    Return
EndIf
ValueChangedEvent(...) ; Drops through to default.jss anyway.
EndFunction

If default is the next set, and you are already letting it drop through
to 
default, then no scope is needed.
Also, be careful not to get into a loop.  You should never call up the

chain, only down, otherwise you continually call the current function.
In this example, the Word scripts don't use anything in the Outlook
script 
set, so a scope to an Outlook function should never be used in the Word

scripts, since the Word script set is called in  a "use Microsoft Word

2007.jsb" line within Microsoft Outlook 2007.jss file.
Hth.

Thanks,
Dennis Brown
----- Original Message ----- 
From: "Artur Räpp" <rtr@xxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Tuesday, January 15, 2008 3:05 PM
Subject: [jawsscripts] is this new jaws script syntax?


> Hi,
>
> I use jaws 9.
> I found in Microsoft Outlook 2007 script file (Microsoft Outlook 
> 2007.JSS)following
> default::SayAllStoppedEvent()
> line 5434, function SayAllStoppedEvent()
>
> is these 2 colons new jaws scripting language syntax? I haven't seen
such 
> thing before.
>
> in same file are:
> line 173, function ScreenStabilizedEvent
> Microsoft_Word_2007::ScreenStabilizedEvent(hwndLastScreenWrite)
>
> line 215, function AutoStartEvent
> self::LoadApplicationSettings ()
>
> line 282, function FocusChangedEventEx
>  msoffice2007::FocusChangedEventEx (hwndFocus,
> nObject,nChild,hwndPrevFocus,nPrevObject, nPrevChild,nChangeDepth)
>
> Artur
>
> __________ View the list's information and change your settings at 



__________�
Visit and contribute to The JAWS Script Repository http://jawsscripts.com

View the list's information and change your settings at 
//www.freelists.org/list/jawsscripts

Other related posts: