This document is for use with Jaws 8.0 and all 8.0 service packs,
as well as Jaws 9.0 and 10.0.
Use of these scripts are governed by Oracle Terms of Use available at
http://www.oracle.com/html/terms.html
Overview
Script for reading E1 tables
There are essentially two separate scripts in one function that perform the
table previous and next column reading.
Each script must first determine whether the user is in a table and if so,
then must store the table ( column and row positions)
in memory variables.
If no table is detected then an error message is given stating
“Not in a table”.
The script then does a get command using the coordinates of the row and
column variables which if equal to zero, will use position one for each, row
and column respectably.
Since the reading of the table is in a loop, the script will continue
to read up or down the column/row until the end of the table is reached.
Then it will cycle back to the top of the table and/or the bottom of the
table depending on which way the user is going and start over again.
The control keys for this event are (Windows+N) reading from top to bottom
and (Windows+Shift+N) for reading from bottom to top.
However, these keys can be defined by the user to fit their own needs.
Instructions
The two scripts reside in this text document so copying into the current
version of Internet Explorer will be no problem.
Each script will have a begin copy line and an end copy line.
Note: Do not include those lines when cutting and pasting the scripts
into the IE script.
1. Copy the first script to the clip board, copy from just below the
“Begin Copy,: to just above the “End Copy” of script one.
2. Open an Internet session and press “JawsKey+0”.
This will open the script manager.
3. Press Ctrl+End to get to the bottom of the script then press Enter twice,
to leave some blank lines.
4. Paste in the first script. Press Ctrl+S to save the script,
if you have followed these steps correctly there will be no errors.
5. After saving is successful, press Ctrl+End, then arrow up until you are
in the script. If you are just below the "Date Written," you are fine.
6. Now Press CTRL+D, tab past the script name into the synopsis and type
a meaningful description of what the script will do. This is what you
will hear when getting Jaws keyboard help. In the next description
field, you can give more details. Tab to the "Assign to hotkey," and
assign a key stroke, (Windows+N).
7. Follow the same steps above for the second script.
Assign the key stroke to (Windows+Shift+N) and do a final save.
SCRIPTS
Begin Copy Script one; (do not copy this line).
void function DetectTableWhenNavigating(int iPrevTableIndex, int iPrevTableLevel)
var
int iCurTableLevel,
int iCurTableIndex
if InTable() then
let iCurTableLevel = GetTableNestingLevel()
let iCurTableIndex = GetTableIndex()
if iCurTableLevel < iPrevTableLevel then
; we've moved out of a nested table
SayUsingVoice(VCTX_MESSAGE,CMSGOutOfTable, OT_POSITION)
ElIf iCurTableLevel > iPrevTableLevel
|| (iCurTableIndex && iCurTableIndex != iPrevTableIndex) then
;we've moved into a table, announce it
SayUsingVoice(VCTX_MESSAGE, formatString(CMSGInTable,GetTableCaption()), OT_CONTROL_GROUP_NAME)
SayTableCellCoordinates()
EndIf
else ;not in a table
if iPrevTableIndex then
; we've moved out of a top-level table
SayUsingVoice(VCTX_MESSAGE,CMSGOutOfTable, OT_POSITION)
EndIf
endIf
EndFunction
Script ReadSameColumnNextTable ()
; Written by Don Mauck
; Date Written 04/09/2008
; Copyright (c) 2008 by Oracle USA
Var
int iPrevTableLevel,
int iPrevTableIndex,
String sListOfTables,
String sDelimiter,
Int iTableIndex,
Int iTableColumn,
Int iTableRow,
int iTableIndexMin,
int iTableIndexMax
if InTable() then
let iPrevTableLevel = GetTableNestingLevel()
let iPrevTableIndex = GetTableIndex()
elif (FALSE == InTable ()) then
SayFormattedMessage (OT_error, cMSGNotInTable_L, cMSGNotInTable_S) ; Not in a table
Return
EndIf
let sDelimiter = "|"
GetCellCoordinates(iTableColumn, iTableRow)
let sListOfTables = GetListOfTables(sDelimiter)
if StringContains (SListOfTables, "QBE") then
let iTableIndexMin = 2
else
let iTableIndexMin = 1
endif
let iTableIndexMax = StringSegmentCount(sListOfTables, sDelimiter) - 1
let iTableIndex = GetTableIndex()
if iTableIndex >= iTableIndexMax then
while iTableIndex > iTableIndexMin
MoveToTable(S_PRIOR)
let iTableIndex = iTableIndex - 1
endwhile
SayFormattedMessage(OT_STATUS,cmsgWrappingToTop_L,cmsgWrappingToTop_S)
beep()
else
MoveToTable(S_NEXT)
endif
MoveToTableCell(iTableColumn, iTableRow)
SayCell ()
EndScript
End Copy Script One; (do not copy this line).
Begin Copy Script Two; (Do not copy this line).
Script ReadSameColumnPreviousTable ()
; Written by Don Mauck
; Date Written 04/09/2008
; Copyright (c) 2008 by Oracle USA
Var
int iPrevTableLevel,
int iPrevTableIndex,
String sListOfTables,
String sDelimiter,
Int iTableIndex,
Int iTableColumn,
Int iTableRow,
int iTableIndexMax,
int iTableIndexMin
if InTable() then
let iPrevTableLevel = GetTableNestingLevel()
let iPrevTableIndex = GetTableIndex()
elif (FALSE == InTable ()) then
SayFormattedMessage (OT_error, cMSGNotInTable_L, cMSGNotInTable_S) ; Not in a table
Return
EndIf
let sDelimiter = "|"
GetCellCoordinates(iTableColumn, iTableRow)
let sListOfTables = GetListOfTables(sDelimiter)
if StringContains (SListOfTables, "QBE") then
let iTableIndexMin = 2
else
let iTableIndexMin = 1
endif
let iTableIndexMax = StringSegmentCount(sListOfTables, sDelimiter) - 1
let iTableIndex = GetTableIndex()
if iTableIndex <= iTableIndexMin then
while iTableIndex < iTableIndexMax
MoveToTable(S_NEXT)
let iTableIndex = iTableIndex + 1
endwhile
sayFormattedMessage(OT_STATUS,cmsgWrappingToBottom_L,cmsgWrappingToBottom_S)
beep()
else
MoveToTable(S_PRIOR)
endif
MoveToTableCell(iTableColumn, iTableRow)
SayCell ()
EndScript
End Copy Script Two; (do not copy this line).
|