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

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

Just  the Verbosity trees.  It is getting mixed reviews.

Also, one other item is the ValueChangedEvent has another parameter that gives you the ability to determine if the current object that just had a value change is the object that has focus.
bIsFocusObject.
So you can say
If bIsFocusObject Then
   [Put your code you want triggered if the object has focus here.]
   Return
EndIf
And it would only get triggered if the object has focus.

Another set of functions gives date conversions and weekday. I asked for those when we were working on the Outlook Calendar support.
:function ParseLongDate
:Description Formats a locale-specific date string in a long date format into a string in the standard form YYYY/MM/DD.
:Returns String The formatted date.
:Param String/strDate a date string  in a Locale specific format
:Optional
:Param String/locale The LCID representing the format of strDate. Defaults to the system LCID.
:Category System

:function ParseLongDateToShortDate
:Description Formats a locale-specific date string in a long date format into the corresponding short date format.
:Returns String The formatted date in short date format.
:Param String/strDate a date string in a Locale specific long date format
:Optional
:Param String/locale The LCID representing the format of strDate. Defaults to the system LCID.
:Category System

:function ParseShortDate
:Description Formats a locale-specific date string in a short date format into a string in the standard form YYYY/MM/DD.
:Returns String The formatted date.
:Param String/strDate a short date string  in a Locale specific format
:Optional
:Param String/strYear A year to be added to the shortDateString. If not provided then the shortDateString is assumed to be fully qualified :Param String/locale The LCID representing the format of strDate. Defaults to the system LCID.
:Category System



:function GetDayOfWeek
:Description Returns a localized string representing the day of the week given a date in the YYYY/MM/DD format. The day can be either the long day format or the short day format.
:Returns String The day of the week
:Param String/strDate a date in the format YYYY/MM/DD
:Optional
:Param String/strDayType "L" or "S". Determines if the day of the week is returned as a short abbreviated day or a long day. Defaults to a long day name. :Param String/locale The LCID to be used for determining the language in which the day name should be returned. Defaults to the system LCID.
:Category System




I'm sure there are more, but I'll have to post them as I remember them.
FS has always been bad about documenting such stuff, even internally. Many times in-house scripters run across new functions by accident that development forgot to mention.

Thanks,
Dennis Brown
----- Original Message ----- From: "Jamal Mazrui" <empower@xxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Wednesday, January 16, 2008 10:56 AM
Subject: [jawsscripts] Re: is this new jaws script syntax?


Thanks, Dennis, for being a great source of scripting information!  As
long as we're on the topic of language changes in JAWS 9, are there any
other syntax enhancements you can think of?

Jamal
On Wed, 16 Jan 2008, Dennis
Brown wrote:

Date: Wed, 16 Jan 2008 09:24:51 -0500
From: Dennis Brown <DennisTBrown@xxxxxxxxxxx>
Reply-To: jawsscripts@xxxxxxxxxxxxx
To: jawsscripts@xxxxxxxxxxxxx
Subject: [jawsscripts] Re: is this new jaws script syntax?

I can't think of an example of the Self scope identifier off the top of my
head, but in most cases, if the function is in the current script set, no
identifier is necessary.
As for your second question about using scope to call a function that
resides in a script set that isn't referenced in a use statement, or in
default, there is no way to do that because the script set in question would
not be loaded at the time.
You'd need to tell Jaws that you wanted to use that script set's function
within the current application, which is what the use statement is for!
<grin>
As for an example on calling a script up the chain...
You can do that as long as you are not calling it from the same function
that would get called in the current level script set.  For example,

In Outlook 2007, if you had
use "Microsoft Word 2007.jsb"
and you had
Function SayLine()
If NoMoreMessageItems() Then ; Message list is empty...
    ReadStatusLine()
    Return
   EndIf
SayLine() ; Drops to the SayLine in Word 2007.
EndFunction

And in Word, you had
Function SayLine()
If gsApplicationName=="Outlook" Then ; In Outlook, but in the message body. Microsoft_Outlook_2007::SayLine() ; Calls the Outlook SayLine function.
     Return
   EndIf
SayLine() ; Drops to the SayLine in default.
EndFunction

This would cause the loop effect, since the Outlook SayLine would drop into
the Word SayLine, then the Word SayLine would call the Outlook SayLine.

If you had the Word SayLine function call something other than the SayLine,
then it would be ok:
Function SayLine()
If gsApplicationName=="Outlook" Then ; In Outlook, but in message body.
    Microsoft_Outlook_2007::SayFocusedObject() ; Call Outlook's
SayFocusedObject function.
    Return
   EndIf
SayLine() ; Drops to the SayLine in default.
EndFunction

You're calling up the chain, but not the function that called the Word
SayLine initially, so no problem with a loop.
Hth.

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

__________
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: