[jawsscripts] Re: dlgList of buttons

  • From: Jackie McBride <abletec@xxxxxxxxx>
  • To: jawsscripts@xxxxxxxxxxxxx
  • Date: Tue, 28 Sep 2010 09:47:51 -0700

Well, no, I meant courses, perhaps, not classes, I guess, though I
tend to use the 2 interchangeably. Sorry for the confusion.

On 9/28/10, Mario Brusco <mrb620@xxxxxxxxxxx> wrote:
> "in 3 different classes" um, don't you mean 12 classes?
> "welcome to the weird & wonderful world of Jaws scripting!"
> Ugg! <grin>
>
> ----- Original Message -----
> From: "Jackie McBride" <abletec@xxxxxxxxx>
> To: <jawsscripts@xxxxxxxxxxxxx>
> Sent: Tuesday, September 28, 2010 11:36 AM
> Subject: [jawsscripts] Re: dlgList of buttons
>
>
> Interestingly enough, folks, the windows calculator scripts actually
> have such a function, activated by jawsKey + f8, & found in the script
> called ListCalculatorFunctions().
>
> This whole thing is weird, though, because for example, if in
> scientific view, & u do a findWindow() & search for the window whose
> name is "1", it'll actually click the button whose name is 1/x. Sounds
> like a bug in Jaws to me--what do yall think?
>
> Mario, good 4 u regarding going to the list & stimulating this type of
> discussion! For every1 else, Mario is 1 of my students/former students
>  in 3 different classes now, & is a very conscientious learner of whom
> I'm very proud, for whatever worth that has to him. & his job of
> learning scripting isn't made any easier w/this type of bizzarre
> behavior on the part of Jaws. Sorry for that, MB--welcome to the weird
> & wonderful world of Jaws scripting!
>
> On 9/28/10, Martin Slack <m.g.slack@xxxxxxxxxxxx> wrote:
>> Hi Mario,
>>
>>   I should say that I only tested my code on the simple display, and that
>> when I try the scientific view, my code presses the wrong buttons in a
>> systematic way which I haven't got to the bottom of yet.  Having said
>> that,
>> I would say that you haven't completed the key sequence for your chosen
>> example.  Pressing enter to choose five only inserts five into the
>> display,
>> it doesn't complete the calculation.  What do you get when you search for
>> the equals key in the dialog list as the final step and activate that?
>>
>>   Martin
>>
>>
>> ----- Original Message -----
>> From: "Mario Brusco" <mrb620@xxxxxxxxxxx>
>> To: <jawsscripts@xxxxxxxxxxxxx>
>> Sent: Tuesday, September 28, 2010 3:38 PM
>> Subject: [jawsscripts] Re: dlgList of buttons
>>
>>
>>> Hey Martin, your TestCalc script works like you said, but still doesn't
>>> give
>>> me the expected result. For example, 2^5=32, but when entering 2, hit the
>>> hotkey to call the TestCalc script, type x to get the x^y choice, press
>>> enter key, then type 5 and press enter, 5 is announced. Meaning that it
>>> doesn't perform the intended calculation, because if you type 2, use the
>>> JAWSCursor to find and click the x^y button,activate PCCursor,  type 5
>>> and
>>> then enter or =, 32 is announced.
>>>
>>> I've also noticed after pressing the testCalc hotkey, the 2 in the
>>> display
>>> changes to a ).
>>>
>>> I'm wondering if an additional move to is needed before the left click
>>> would
>>> fix the problem? just an idea.
>>>
>>> ----- Original Message -----
>>> From: "Martin Slack" <m.g.slack@xxxxxxxxxxxx>
>>> To: "JAWSScripts" <jawsscripts@xxxxxxxxxxxxx>
>>> Sent: Tuesday, September 28, 2010 7:26 AM
>>> Subject: [jawsscripts] Re: dlgList of buttons
>>>
>>>
>>> Hi Mario,
>>>
>>>  The FindWindow function seems to be a problem.  Once I got the dialog
>>> list
>>> working, I found that FindWindow would not reliably take me to the named
>>> button: it stopped at the first button it found which contained the
>>> desired
>>> name as a substring.  So I had to complicate matters by saving an
>>> additional
>>> list of button handles as I iterated through the collection.  See below.
>>> This code is working on my version of Calc under XP Home:
>>>
>>> Const
>>> sep = "\007"
>>>
>>> Script testCalc ()
>>> var
>>>    String sButtons,      ;list of button names
>>>    String sHandles,     ;list of button handles
>>>    String sItem,           ;name of chosen button
>>>    int iIndex,                ;index of button in dialog list
>>>    handle hW              ;general window handle
>>>
>>> ; find the first child button of Application Main Window
>>> let hW = FindWindow (GetAppMainWindow (GetCurrentWindow ()), "Button",
>>> "")
>>>
>>> ; if current window has the class "Button"
>>> ; save its handle and name to separate lists
>>> ; then step to next window at this level
>>> while (hW)
>>>    if (StringContains (GetWindowClass (hW), "Button")) then
>>>        let sHandles = sHandles + IntToString (hW) + sep
>>>        let sButtons = sButtons + GetWindowText (hW, false) + sep
>>>    endif
>>>    let hW = GetNextWindow (hW)
>>> endwhile
>>>
>>> ; request index of required button from dialog list
>>> let iIndex= dlgSelectItemInList (sButtons, "Calculator Buttons", false,
>>> 1)
>>>
>>> ; find corresponding handle
>>> let hW = StringToHandle (StringSegment (sHandles, sep, iIndex))
>>>
>>> ; Move JAWS cursor to button automatically
>>> MoveToWindow (hW)
>>>
>>> ; give the cursor time to move and do a left click
>>> Pause ()
>>> LeftMouseButton ()
>>>
>>> ; give calculator time to respond, change back to PC Cursor
>>> ; and speak result in calculator display
>>> Pause ()
>>> PCCursor ()
>>> SayChunk ()
>>> EndScript
>>>
>>>  hth
>>>
>>> Martin
>>>
>>>
>>>
>>> ----- Original Message -----
>>> From: "Mario Brusco" <mrb620@xxxxxxxxxxx>
>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>> Sent: Tuesday, September 28, 2010 3:04 AM
>>> Subject: [jawsscripts] Re: dlgList of buttons
>>>
>>>
>>>> Hi Martin, inserting your while code brings up a empty list, no items
>>>> (buttons). Now to get the button names in there. have any suggestions?
>>>>
>>>> ----- Original Message -----
>>>> From: "Martin Slack" <m.g.slack@xxxxxxxxxxxx>
>>>> To: "JAWSScripts" <jawsscripts@xxxxxxxxxxxxx>
>>>> Sent: Monday, September 27, 2010 6:01 PM
>>>> Subject: [jawsscripts] Re: dlgList of buttons
>>>>
>>>>
>>>> Hi Mario,
>>>>
>>>>  The line in your original code which I mentioned before as being
>>>> commented
>>>> out is actually in the wrong place.  As it stands, you will only look at
>>>> the
>>>> next window
>>>> if the first window you find is a button.  Try this:
>>>>
>>>> while ((hW) && not IsKeyWaiting ())
>>>>  if (GetWindowSubTypeCode (hW) == 1) then
>>>>    let sList = sList + GetWindowName (hW) + sep
>>>>  endIf
>>>>  let hW = GetNextWindow (hW) ;this now happens whether you find a button
>>>> or
>>>> not
>>>> endWhile ;
>>>>
>>>>  hth
>>>>
>>>> Martin
>>>>
>>>> ----- Original Message -----
>>>> From: "Mario Brusco" <mrb620@xxxxxxxxxxx>
>>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>>> Sent: Monday, September 27, 2010 10:06 PM
>>>> Subject: [jawsscripts] Re: dlgList of buttons
>>>>
>>>>
>>>>> hi David, which code are your comments referring to, the first or
>>>>> Jackie's?
>>>>>
>>>>> I've added an iCount variable into the while loop as follows:
>>>>>
>>>>> var int iCount,
>>>>> bla bla bla
>>>>> while ... && iCount<100
>>>>> bla bla bla
>>>>> let iCount= iCount+1
>>>>> EndWhile
>>>>>
>>>>> now a jawskey+control+b results as the script not being recognized
>>>>> (shouldn't it be a >100?). but I like your idea too. Exactly where and
>>>>> how
>>>>> would it be implemented without the iCount stuff?(exact code please as
>>>>> I
>>>>> am
>>>>> not a true scripter).
>>>>>
>>>>> I cringe when I need to force boot to get jaws back, and I'd like a
>>>>> sure
>>>>> fire way to prevent jaws from hanging.
>>>>> ----- Original Message -----
>>>>> From: "David Farough" <David.Farough@xxxxxxxxxxxxx>
>>>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>>>> Sent: Monday, September 27, 2010 2:02 PM
>>>>> Subject: [jawsscripts] Re: dlgList of buttons
>>>>>
>>>>>
>>>>> hi Mario;
>>>>> You could always add the Not IsKeyWaiting () condition to your while
>>>>> loop.  This will terminate the loop as soon as you hit a key.
>>>>>
>>>>> In the final FindWindow, you should only specify one value in the
>>>>> arguments,  You can specify "" (null string )   . for the class and the
>>>>> name for the window you are looking for.
>>>>>
>>>>>
>>>>> David Farough
>>>>> Application Accessibility Coordinator/coordonateur de l'accessibilité
>>>>> Information Technology Services Directorate /
>>>>> Direction des services d'information technologiques
>>>>> Public Service Commission / Commission de la fonction publique
>>>>> Email / Courriel:  David.Farough@xxxxxxxxxxxxx
>>>>> Tel. / Tél:    (613) 992-2779 >>> Mario Brusco <mrb620@xxxxxxxxxxx>
>>>>> 01:00 PM Monday, September 27, 2010 >>>
>>>>> Nope, still hangs. hmm, I'm wondering if there's a way to avoid the
>>>>> hanging
>>>>> without interfering the intended function of the script, sort of a
>>>>> safety
>>>>> out? I'm wary of forcing to turn off the PC (by holding the power
>>>>> button
>>>>> down until the PC shuts down (cold boot)) in order to get speech back;
>>>>> I've
>>>>> had to do this too many times.
>>>>>
>>>>> ----- Original Message -----
>>>>> From: "Jackie McBride" <abletec@xxxxxxxxx>
>>>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>>>> Sent: Monday, September 27, 2010 12:11 PM
>>>>> Subject: [jawsscripts] Re: dlgList of buttons
>>>>>
>>>>>
>>>>> Mario, let's revise the while loop, as follows:
>>>>>
>>>>> var
>>>>> String sList, ;will contain list of buttons
>>>>> String sItem, ;will contain the desired button name
>>>>> int iIndex, ;contains number of button selected
>>>>> handle hW ;contains window handles
>>>>> let hW= FindWindow (GetAppMainWindow (GetCurrentWindow ()), "Button",
>>>>> "")
>>>>> ;looks for a type (Button), starting from main window
>>>>> while (hW) ;while valid window handle found
>>>>> if GetWindowSubTypeCode (hW)== 1 then ;it's a button,gets name of
>>>>> button and
>>>>> adds it to the list, as well as the \007 item separator
>>>>> let sList= sList+GetWindowName (hW)+sep
>>>>>
>>>>> endIf
>>>>> ;let hW= GetNextWindow (hW) ;go to next window
>>>>> endWhile ;displays the list of buttons from which to pick, iIndex
>>>>> returns
>>>>> the button number
>>>>> let iIndex= dlgSelectItemInList (sList, "calculator buttons", 1) ;gets
>>>>> the
>>>>> name of the button selected
>>>>> let sItem= stringSegment (sList, sep, iIndex)
>>>>> let hW= FindWindow (GetAppMainWindow (GetCurrentWindow ()),
>>>>> "Button", sItem)
>>>>> if hW then ;valid window handle
>>>>> SetFocus(hw)
>>>>> TypeKey("space")
>>>>> else
>>>>> SayMessage (OT_MESSAGE, "window not found")
>>>>> endIf
>>>>>
>>>>> EndScript
>>>>>
>>>>>
>>>>> On 9/27/10, Mario Brusco <mrb620@xxxxxxxxxxx> wrote:
>>>>>> hi scripters, I am trying to adapt the following code to retrieve a
>>>>> list
>>>>>> of
>>>>>> the Windows calculator buttons whether it is in standard or
>>>>> scientific
>>>>>> mode,
>>>>>> whether the buttons are disabled or not. It seems to hang at some
>>>>> point.
>>>>>> can
>>>>>> someone please help to get it working for me? Maybe the problem is in
>>>>> the
>>>>>> while loop? I dabble lightly and am not a true scripter yet, so I
>>>>> need
>>>>>> actual code:
>>>>>>
>>>>>> const
>>>>>> sep = "\007"
>>>>>>
>>>>>> Script GetButton ()
>>>>>> ;control+jawskey+b
>>>>>> ; gathers the buttons in a window into a list, user can use arrows to
>>>>> use
>>>>>> the arrow keys and enter key to select a function
>>>>>> ; works in any window/dialog
>>>>>> var
>>>>>> String sList, ;will contain list of buttons
>>>>>> String sItem, ;will contain the desired button name
>>>>>> int iIndex, ;contains number of button selected
>>>>>> handle hW ;contains window handles
>>>>>> let hW= FindWindow (GetAppMainWindow (GetCurrentWindow ()), "Button",
>>>>> "")
>>>>>> ;looks for a type (Button), starting from main window
>>>>>> while (hW) ;while valid window handle found
>>>>>> if GetWindowSubTypeCode (hW)== 1 then ;it's a button,gets name of
>>>>> button
>>>>>> and
>>>>>> adds it to the list, as well as the \007 item separator
>>>>>> let sList= sList+GetWindowName (hW)+sep
>>>>>> ;let hW= GetNextWindow (hW) ;go to next window
>>>>>> endIf
>>>>>> endWhile ;displays the list of buttons from which to pick, iIndex
>>>>> returns
>>>>>> the button number
>>>>>> let iIndex= dlgSelectItemInList (sList, "calculator buttons", 1)
>>>>> ;gets the
>>>>>> name of the button selected
>>>>>> let sItem= stringSegment (sList, sep, iIndex)
>>>>>> SaveCursor ()
>>>>>> JAWSCursor ()
>>>>>> RouteJAWSToPc ();finds the button & gets its handle
>>>>>> let hW= FindWindow  (GetAppMainWindow (GetCurrentWindow ()),
>>>>>> "ThunderRT6CommandButton", sItem)
>>>>>> if hW  then ;valid window handle
>>>>>> if MoveToWindow (hW) then ;move to the window whose handle u just
>>>>> got
>>>>>> LeftMouseButton ()
>>>>>> Else
>>>>>> SayMessage (OT_MESSAGE, "cannot move to button")
>>>>>> endIf
>>>>>> else
>>>>>> SayMessage (OT_MESSAGE, "window not found")
>>>>>> endIf
>>>>>> RestoreCursor ()
>>>>>> EndScript
>>>>>>
>>>>>> __________
>>>>>>
>>>>>> View the list's information and change your settings at
>>>>>> //www.freelists.org/list/jawsscripts
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Change the world--1 deed at a time
>>>>> Jackie McBride
>>>>> Scripting Classes: http://jawsscripting.lonsdalemedia.org
>>>>> homePage: www.abletec.serverheaven.net
>>>>> For technophobes: www.technophoeb.com
>>>>> __________
>>>>>
>>>>> 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
>>>>>
>>>>>
>>>>>>
>>>>> This e-mail message is intended for the named recipient(s) and may
>>>>> contain information that is privileged, confidential and/or exempt from
>>>>> disclosure under applicable law. Unauthorized disclosure, copying or
>>>>> re-transmission is prohibited. If you are not a named recipient or not
>>>>> authorized by the named recipient(s), or if you have received this
>>>>> e-mail in error, then please notify the sender immediately and delete
>>>>> the message and any copies.
>>>>> >
>>>>> Ce courriel est destiné exclusivement au destinataire mentionné en
>>>>> titre
>>>>> et peut contenir de l'information privilégiée, confidentielle ou
>>>>> soustraite à la communication aux termes des lois applicables. Toute
>>>>> divulgation non autorisée, toute reproduction ou réacheminement est
>>>>> interdit. Si vous n'êtes pas le destinataire de ce courriel, ou n'êtes
>>>>> pas autorisé par le destinataire visé, ou encore, si vous l'avez reçu
>>>>> par erreur, veuillez le mentionner immédiatement à l'expéditeur et
>>>>> supprimer le courriel et les copies.
>>>>>
>>>>> __________?
>>>>>
>>>>> 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
>>>>
>>>
>>> __________�
>>>
>>> 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
>>
>>
>
>
> --
> Change the world--1 deed at a time
> Jackie McBride
> Scripting Classes: http://jawsscripting.lonsdalemedia.org
> homePage: www.abletec.serverheaven.net
> For technophobes: www.technophoeb.com
> __________�
>
> 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
>
>


-- 
Change the world--1 deed at a time
Jackie McBride
Scripting Classes: http://jawsscripting.lonsdalemedia.org
homePage: www.abletec.serverheaven.net
For technophobes: www.technophoeb.com
__________�

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

Other related posts: