[jawsscripts] Re: Changing and Saving / Restoring Cursors

  • From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Sat, 20 Dec 2008 16:08:33 +1100

Wow donald, this is some cool code here i wanna examine for my own learning
if only i get some decent headspace learning time to do it in!
<grin.>
thanks heaps for posting all this and what it's kinda doing etc.

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

Other related posts: