[jawsscripts] Re: is this new jaws script syntax?

  • From: "Dennis Brown" <DennisTBrown@xxxxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Wed, 16 Jan 2008 11:00:50 -0500

Here is an example of Self getting used:

When using multiple script sets, you use the "use" statement, such as follows:
; In My Script Set.jss file
use "My Script Set1.jsb"
use "My Script Set2.jsb"
use "My Script Set3.jsb"

Now, when using the use statement, and you load the application that uses My Script Set.jsb, then the script sets designated in the use statements get loaded bottom-up. For instance, My Script Set3 gets loaded, then My Script Set2, then My Script Set1, then the top-level set, My Script Set. This is because if any constants or variables get used, they need to already be declared. So the AutoStartEvent functions get launched in reverse order--set3, then set2, then set1, then the top-layer set. If you call a function that sets your globals from AutoStartEvent, then you want the correct function called.
Example:
In My Script Set2 and My Script Set1, I have a function called SetParameters(), that set the parameters used in those script sets, and I called this function from AutoStartEvent, then I'd use the Self:: identifier to ensure the correct one got called as the other script sets get loaded. Timing is such that without the Self scope identifier, the next script set to load might get its SetParameters function called instead.

In My Script Set1
Function AutoStartEvent()
If !gbSetOneHasRunBefore Then
   SetParameters() ; Initialize application parameters.
   let gbSetOneHasRunBefore=TRUE
EndIf
EndFunction

In My Script Set2
Function AutoStartEvent()
If !gbSetTwoHasRunBefore Then
   Self::SetParameters() ; Initialize application parameters for set2
   let gbSetTwoHasRunBefore=TRUE
EndIf
EndFunction

This would ensure that the correct SetParameters function got called.

Keep in mind that even though the script sets load bottom-up in the load order, when you call a function, they get called top-down in the load order.
Thanks,
Dennis Brown
----- Original Message ----- From: "Marlon Brandão de Sousa" <splyt.lists@xxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Wednesday, January 16, 2008 6:53 AM
Subject: [jawsscripts] Re: is this new jaws script syntax?


Hello Dennis,
Can you explain again what is self used for? In my understanding self
will make explicit that the function being called is from the same jss
file, but if this is true then the self key word isn't that usefull,
sinse you can call the function without scope identifiers anyways and
the compiler will assume you're referring to the version of the
function defined in the current jss file.
Another question is the following: can you use a scope identifier to a
file you didn't referenced with a use statement (other than default)?
And still another question ... can you provide me a sample about how
one could call a function (up the chain)?
Thanks,
Marlon.


2008/1/15, Dennis Brown <DennisTBrown@xxxxxxxxxxx>:
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
> //www.freelists.org/list/jawsscripts
>
>

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




--
When you say "I wrote a program that crashed Windows," people just
stare at you blankly and say "Hey, I got those with the system, for
free."
Linus Torvalds
__________
View the list's information and change your settings at
//www.freelists.org/list/jawsscripts


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

Other related posts: