[jawsscripts] Re: Changing and Saving / Restoring Cursors

  • From: "Donald Marang" <donald.marang@xxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Thu, 4 Dec 2008 09:07:14 -0500

I have ToolTip reading on on the intermediate verbosity settings.  That way, 
I can easily switch.  The ToolTipEvent never gets called, even if I Reassign 
the "#32770" Class to "ToolTip"!  Similarly, The pop up "Toast" dialog, 
which also has a class of "#32770", never triggers a HelpBalloonEvent if I 
manually set this class to "HelpBalloon" or "Shell_TrayWnd" in the JCF file. 
Of course neither of these assignments would be entirely correct since this 
application uses this class for every dialog I have encountered.  I would 
need to do the same processing I now am attempting to do in my 
WindowActivatedEvent within my own HelpBalloonEvent.  In this case, I would 
only pass the HelpBalloonEvent down the chain, I assume, when it was not for 
my application.  I am not sure the default HelpBalloonEvent function could 
handle this dialog, since it has 7 children.  Again, I am attempting to 
capture this info in global variables.  I have a script, triggered with the 
F5 key to repeat this info.

Don Marang


----- Original Message ----- 
From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Thursday, December 04, 2008 7:10 AM
Subject: [jawsscripts] Re: Changing and Saving / Restoring Cursors


> oh p.s. you have turned on ToolTip reading in the jcf file under the
> verbosity dialog, under each of the 3 possible settings of advanced,
> intermediate and beginner I presume? for some reason known only to fs, 
> they
> disable this by default, whereas windoweyes, at least in the old days, 
> used
> to leave it on.  or is it a custom toolTip type event that doesn't trigger
> the standard ToolTip event?
>
> ----- Original Message ----- 
> From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
> To: <jawsscripts@xxxxxxxxxxxxx>
> Sent: Thursday, December 04, 2008 9:58 PM
> Subject: [jawsscripts] Re: Changing and Saving / Restoring Cursors
>
>
>> Hi Don.
>>
>> well, I myself have never used either the activeItemChangedEvent or the
>> windowCreatedEvent, so unfortunately can't give actual specifics about
> your
>> sitch.
>>
>> couple things that occur to me to comment upon though,
>> were,  that I wasn't quite
>> clear after reading that message, which certainly explained
> comprehensively
>> about the application itself and some of the details of why you wanna 
>> use
>> it,
>> exactly what was the major problem you were striking with this current
> code?
>>
>> other than you said you keep having to turn on PC cursor again after
> hitting
>> down arrow?
>> Again, very novice and probably useless things to point out, and my
> ability
>> to follow logic carefully through each component of a script is at 
>> present
>> minimal,
>> but, I was wondering,
>> have you put in multiple sayStrings all over the place, within and 
>> outside
>> these if and elif conditions, to debug/confirm exactly what bits of the
> code
>> are actually getting run, and what are not, in the various situations?
>> This is how I've found it helpful to debug stuff, after advice from 
>> people
>> up here.
>> like if the jaws cursor seems to you to be remaining active when you 
>> don't
>> feel it should be, working out where to maybe place another PcCursor
>> command, might be arrived at through the usage of SayStrings to debug?
>>
>> now, as for CustomHighlight assign, it can only really help if you know
> the
>> items you wanna read, actually do change color/become focused or
> highlighted
>> in some way,
>>  as you arrow through them with pcCursor, which of course they may not, 
>> if
>> they're simply readable stuff for the sightlings.
>> And, if you think the highlight color isn't a standard windowsy one.
>>
>> one thing to also remember is, that even if they do change color to a
> custom
>> highlight color  as you move through them, they might well change to a
>> totally different color, when the jawsCursor/mouse hovers over them.
> Thus,
>> using the invisible  Cursor, to check their colors,
>> rather than the jawsCursor, is in my view, the recommended option there.
>> Use of course insert+Top Row number 5 to check textColors of stuff.
>> if after doing that, you are convinced there is a concept of items in 
>> this
>> list view actually becoming highlighted, and also changing their color to
>> reflect this, then you can put the invisible cursor on that item and
> choose
>> the custom highlight assign command, insert+control+h.
>>
>> it should ask you foreground and background, to which you'd answer yes.
>> and then it should show the new color in a dialog etc, with an radio
> button
>> option to have both windows standard and custom colors read, which is 
>> what
>> you want, so just leave that and hit enter.
>> This color will then get added in the app.jcf file, under a new section
>> it'll put in there probably called something like [CustomHighlights]
>> or some such thing.
>> it'll have an =1, at the end of it, but for experimentation purposes, to
> in
>> effect disable it but not remove it, which is all that the front end
>> customhighlight box permits, you can change this 1 to a 0 and resave the
> jcf
>> file. then flip it back to 1 again as needs be, if you wanna just quickly
>> check stuff is working or whatever, without having to rego through
> deleting
>> and reassigning the whole custom highlight color etc.
>>
>> i used this very effectively in ITunes before they introduced MSAA into
> it,
>> and it brought the whole thing to life. menu bars too. no scripting
> needed!
>>
>>
>> ----- Original Message ----- 
>> From: "Donald Marang" <donald.marang@xxxxxxxxx>
>> To: <jawsscripts@xxxxxxxxxxxxx>
>> Sent: Thursday, December 04, 2008 7:07 PM
>> Subject: [jawsscripts] Re: Changing and Saving / Restoring Cursors
>>
>>
>> > Actually, I am certainly a novice at scripting.I had written minor
> scripts
>> > for many years, but nothing like this.  It is a great learning
> experience!
>> > I have never used many features in JAWS, like Custom Highlight Assign.
> As
>> > far as I could tell, it did not seem to handle this situation.
>> >
>> > The unruly application is Verizon Call Assistant.  It is a totally free
>> > software and web service for Verizon customers who still have a home,
> land
>> > line phone.  It is most usefull if you have Caller ID and Voice Mail on
>> that
>> > line.  This is exciting to me since I have all of these!  I realize 
>> > that
>> > most people have moved on and replaced these relics with newer more
>> flexible
>> > technology, like VoIP!  Once you create an account at
>> > verizon.com/callassistant and you link it to your phone number and 
>> > voice
>> > mail service, you get many new capabilities.  You can view your call
> log,
>> > listen and save voice mails, receive emails for selecctive calls and
>> email,
>> > and maintain a contact list.  If you download the PC software, you can
>> have
>> > all this available all the time and get apop up, "Toast" notification
> with
>> > the Caller ID info for calls and voice mails!  It pops up down near the
>> > clock area like a large HelpBalloon.  It even beats the phonne ringing
> by
>> at
>> > least a second.  I also like to know if someone is trying to call and
> left
>> a
>> > voice mail while my son is on the phone with his girlfriend.  I can see
>> who
>> > is trying to get through and even listen to the voice mail.  Verizon
>> > promises to bring many new features in the near future including
> advanced
>> > selective forwarding.
>> >
>> > The results show up in a nonstandard dialog below the small main window
>> with
>> > three buttons and a search edit box.  The results dialog is primarily a
>> > nonstandard list view, surounded by a title and controls to go to the
> next
>> > and previous pages.  The list shows up to 10 items at a time.  All of
> the
>> > options and settings are managed omn the wevsite.  The only set up on
> the
>> PC
>> > is the login, which can be set to be done automatically when the
> computer
>> > starts up.
>> >
>> > The list only has two columns, even though most of the time there is at
>> > least three things associated with that item that are inportant!  The
>> phone
>> > of the incoming call is not shown in the call log.  To get this
>> information,
>> > you must hover the mouse over the item.  A two line "ToolTip" appears
> with
>> > name and number.  New calls are shown in bold.  I also currently say
> "item
>>
>> > x" before each item to let me know the ActiveItemChangedEvent occoured.
>> > When the "ToolTip appears, I say the phone number and capture these
> items
>> in
>> > global variables for later use.  Below is my ActiveItemChanged function
>> and
>> > part of my WindowActivatedEventt.
>> >
>> > My WindowActivatedEvent function first checks if the window class =
>> "#32770"
>> > (used by the results dialog, the "HelpBalloon" Toast dialogs and
> various)
>> > "ToolTip" windows).  Then I check the Control ID of the first child to
>> > identify which action should be taken.  The Control ID of this window 
>> > is
>> > 282.
>> >
>> >
>> > Void Function ActiveItemChangedEvent (handle hWnd, int iCurrentID, Int
>> > iCurrentChild, handle hWndPrevious, Int iPreviousID, Int 
>> > iPreviousChild)
>> >
>> > If hWnd == ghWndListView Then
>> >  SayString ("Item " + IntToString (iCurrentChild))
>> >  If GetCharacterAttributes () & ATTRIB_BOLD Then SayString ("new ")
> EndIf
>> >  ; SayString ("Selection state = " + IntToString (lvGetItemState (hWnd,
>> > iCurrentChild) ))
>> >
>> >  JAWSCursor ()
>> >  RouteJAWSToPc ()
>> >  LeftMouseButton ()
>> >  PCCursor ()
>> > Else
>> >  SayString ("Call to item changed and not in list view!  Item = " +
>> > IntToString (iCurrentChild))
>> > EndIf
>> >
>> > ActiveItemChangedEvent (hWnd, iCurrentID, iCurrentChild, hWndPrevious,
>> > iPreviousID, iPreviousChild)
>> >
>> > EndFunction
>> >
>> >
>> > Void Function WindowActivatedEvent (handle hWnd)
>> > Var
>> >  Handle hWndFirstChild,
>> >  Int iFirstID,
>> >  Handle hWndLastChild,
>> >  Int iLastID,
>> >  String sTip
>> >
>> > Let hWndFirstChild = GetFirstChild (hWnd)
>> > Let iFirstID = GetControlID (hWndFirstChild)
>> >
>> > Let hWndLastChild = GetLastWindow (hWndFirstChild)
>> > Let iLastID = GetControlID (hWndLastChild)
>> > If GetWindowClass (hWnd) == WND_POPUP_CLASS Then
>> >     If ...; handle other windows
>> >  ELIf iFirstID == WCID_LIST_NAME Then
>> >   ; SayString ("Name and phone pop up")
>> >   Let gsListName = GetWindowName (hWndFirstChild)
>> >   ; SayString ("Caller was: " + gsListName)
>> >
>> >   If IsWindowVisible (hWndLastChild) Then
>> >    Let gsListNumber = GetWindowName (hWndLastChild)
>> >    SayString ("number: " + gsListNumber)
>> >   Else
>> >    ;The ToolTip in the Search rersulrts list view only displays the 
>> > name
>> >    Let gsListNumber = Null ()
>> >   EndIf
>> >  ElIf iFirstID == WCID_VIEW_CONTACT_NAME Then
>> > ... process other dialogs
>> >  EndIf
>> >
>> > EndIf
>> >
>> > WindowActivatedEvent (hWnd)
>> >
>> > EndFunction
>> >
>> >
>> > Don Marang
>> >
>> >
>> > ----- Original Message ----- 
>> > From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
>> > To: <jawsscripts@xxxxxxxxxxxxx>
>> > Sent: Wednesday, December 03, 2008 9:44 AM
>> > Subject: [jawsscripts] Re: Changing and Saving / Restoring Cursors
>> >
>> >
>> > > p.s.
>> > > like wen you say, switching whole scripts through
>> activeItemChangedEvent,
>> > > that sounds to me like
>> > > a pretty sledge hammer approach to be trying as a solution?
>> > > again, from a total novice perspective?
>> > > You presumably know all about custom highlight colors and things of
> that
>> > > nature too, right? the simple stuff?
>> > >
>> > >
>> > > ----- Original Message ----- 
>> > > From: "Donald Marang" <donald.marang@xxxxxxxxx>
>> > > To: <jawsscripts@xxxxxxxxxxxxx>
>> > > Sent: Wednesday, December 03, 2008 3:03 PM
>> > > Subject: [jawsscripts] Re: Changing and Saving / Restoring Cursors
>> > >
>> > >
>> > >> Thanks, this seemed to help some.  It has not fixed all my problems,
>> vut
>> > > it
>> > >> is vetter.  I will save this for future reference as well.  It is a
>> > >> little
>> > >> hard to debug with so many events.Today I tried to remove the need
> for
>> > >> frames and switch scripts that get called from my own
>> > >> WindowActivatedEvent
>> > >> function.  If I get this working properly, I want to put part of 
>> > >> this
>> > > script
>> > >> in a similar function in the default script file, so I will get
>> notified
>> > > by
>> > >> itscustom "HelpBaloon".
>> > >>
>> > >> Right now, I have to press the KeyPad + to force the PCCursor back 
>> > >> on
>> > > after
>> > >> each time I use the down arrow in a custom list view I am trying to
>> tame.
>> > >> If I don't, it seems to have the JAWSCursor active, and does not get
>> > > events
>> > >> from ActiveItemChangedEvent.  There must be something funky I am
> doing
>> > >> within my ActiveItemChanggedEvent.  I had no idea that my 
>> > >> application
>> > >> woulduse MSAA at all, buut I followed a previous suggestion on this
>> list
>> > > and
>> > >> it worked!  I have not investigated how to use MSAA any further at
> this
>> > >> point.
>> > >>
>> > >> Bless the list for its help.
>> > >>
>> > >> Don Marang
>> > >>
>> > >>
>> > >> ----- Original Message ----- 
>> > >> From: "James Panes" <jimpanes@xxxxxxxxx>
>> > >> To: <jawsscripts@xxxxxxxxxxxxx>
>> > >> Sent: Tuesday, December 02, 2008 5:59 PM
>> > >> Subject: [jawsscripts] Re: Changing and Saving / Restoring Cursors
>> > >>
>> > >>
>> > >> > Yes, the cursors do save on a stack. Another very important thing
> to
>> > >> > remember is that JAWS does not save the position of the PC Cursor
>> when
>> > > it
>> > >> > is
>> > >> > saved. There are valid scripting reasons why this is the case.
>> > >> >
>> > >> > To save and restore the PC cursor, I do the following:
>> > >> > InvisibleCursor ()
>> > >> > SaveCursor ()    ; This saves the original position of the
> invisible
>> > >> > cursor
>> > >> > Move InvisibleToPC ()
>> > >> > SaveCursor ()    ; This uses the invisible cursor to save the
>> position
>> > > of
>> > >> > the PC cursor.
>> > >> >
>> > >> > Code that changes positions here
>> > >> >
>> > >> > RestoreCursor ()    ; This moves the invisible cursor to the
> original
>> > >> > position of the PC Cursor.
>> > >> > RoutePCToInvisible () ; Places PC cursor back at its original
>> position.
>> > >> > RestoreCursor ()    ; Places Invisible cursor back to its original
>> > >> > position.
>> > >> > PCCursor ()    ; Activates PC cursor.
>> > >> >
>> > >> > This places the PC cursor and the invisible cursor back to where
> they
>> > > were
>> > >> > and activates the PC cursor. The other thing is to make sure that
> the
>> > >> > PC
>> > >> > cursor is active before going to all this trouble.
>> > >> >
>> > >> > Some scripters do not bother to save and restore the invisible
>> cursor.
>> > >> >
>> > >> > Regards,
>> > >> > James
>> > >> > jimpanes@xxxxxxxxx
>> > >> > jimpanes@xxxxxxxxxxxx
>> > >> > "Everything is easy when you know how."
>> > >> >
>> > >> > ----- Original Message ----- 
>> > >> > From: "Doug Lee" <doug.lee@xxxxxxxxxxxxxxxx>
>> > >> > To: <jawsscripts@xxxxxxxxxxxxx>
>> > >> > Sent: Tuesday, December 02, 2008 4:39 PM
>> > >> > Subject: [jawsscripts] Re: Changing and Saving / Restoring Cursors
>> > >> >
>> > >> >
>> > >> > My standard idiom is saveCursor() invisibleCursor() saveCursor():
>> The
>> > >> > first saveCursor keeps track of which cursor was active to begin
>> with,
>> > >> > and the second saves the position of the invisible cursor before I
>> > >> > move it.
>> > >> >
>> > >> > On Tue, Dec 02, 2008 at 04:32:27PM -0500, Donald Marang wrote:
>> > >> > In the examples I have seen for using the SaveCursor and
>> RestoreCursor
>> > >> > functions, they use the following order:
>> > >> > InvisibleCursor ()
>> > >> > SaveCursor ()
>> > >> > perform statements that move the focus...
>> > >> > RestoreCursor ()
>> > >> >
>> > >> > If the save and restore functions work like a stack, wouldn't the
>> > >> > SaveCursor
>> > >> > function need to be called first, and then change cursors?  I am a
>> > > little
>> > >> > confused here.  I am finding my application being continually with
>> the
>> > >> > InvisibleCursor active, and I am not sure why!
>> > >> >
>> > >> > Don Marang
>> > >> >
>> > >> >
>> > >> > __________?
>> > >> > 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
>> > >> >
>> > >> > -- 
>> > >> > Doug Lee, Senior Accessibility Programmer
>> > >> > SSB BART Group - Accessibility-on-Demand
>> > >> > mailto:doug.lee@xxxxxxxxxxxxxxxx  http://www.ssbbartgroup.com
>> > >> > "While they were saying among themselves it cannot be done,
>> > >> > it was done." --Helen Keller
>> > >> > __________
>> > >> > 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
>> > >> >
>> > >> > __________
>> > >> > 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
>> > >> >
>> > >>
>> > >> __________
>> > >> 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
>> > >>
>> > >
>> > > __________
>> > > 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
>> > >
>> >
>> > __________
>> > 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
>> >
>>
>> __________
>> 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
>>
>>
>
> __________
> 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
> 

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