[jawsscripts] Re: Changing and Saving / Restoring Cursors

  • From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Thu, 4 Dec 2008 21:58:39 +1100

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
> >> > //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
> >> > //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
> >> > //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
> >> //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
> > //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
> //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 
//www.freelists.org/list/jawsscripts

Other related posts: