• R/O
  • HTTP
  • SSH
  • HTTPS

nvdajp: List of commits

NVDA with Japanese branch


RSS
Rev. Time Author
b399395 2006-12-10 17:15:20 mdcurran <>

Pressing backspace when at the start of an edit field now says blank rather than nothing.

a9a57a8 2006-12-10 16:53:03 mdcurran <>

*internet explorer pane objects now only fetch their MSHTML dom when they receive focus, rather then on initialization. It also deletes the dom when loosing focus. This fixes the problem where internet explorer panes could not be navigated to properly when they didn't have focus.
*Internet explorer pane objects now have a typeString of "HTML editable text" when they are editable, rather than just editable text.
*RichEdit objects now have a typeString of "rich editable text" rather than "editable text".

Of course if 'editable text' (role_system_text) is called something else in your language then the operating system will still say the correct thing.

27b1255 2006-12-10 15:01:58 mdcurran <>

Added a reportStatusBar script as insert+end. It just uses a findWindow starting at the current foregroundWindow, and looks for a class of 'msctls_statusbar32', then gets that window's client object and speaks it.

4a8e37a 2006-12-10 11:47:32 mdcurran <>

Fixed bug in audio.py where relativeUpercasePitch for capitals were being fetched from the synth value in nvda.ini, this can be 'auto' so we must use synthDriverHandler.driverName for the real current synth name. speakPresentationValues in NVDAObjects_textBuffer now no longer speaks values that are 'None'. reportStyle in the documentFormatting section of nvda.ini is set to false by default.

dfe71d5 2006-12-10 10:24:31 mdcurran <>

Fixed up a few indentation errors which only became important because of the adition of docstrings.

8d1a1f2 2006-12-10 09:45:59 mdcurran <>

Updated many more docstrings

407dbef 2006-12-10 05:52:37 mdcurran <>

Added another check when figuring out if an object should speak when it gains focus. Now apart from speakOnFocus being true, and seeing if it has a focus state (if needsFocusState is true) it also now only speaks if the focus object is also not the current foreground object, or, it is the current foreground object but speakOnForeground is false. This means that places where the focus moves to the foreground window (such as in a dos console window) NVDA will only report the object once.

a77fce3 2006-12-09 22:10:38 mdcurran <>

Fixed up internet epxlorer editable documents so that NVDA reads the physical line when arrowing up and down, rather than the entire paragraph. There is no way (I can see) to ask IE for the character positions of the start and end of the line, so script_moveByLine just moves to the line, moves to the end, records the caret position, moves to the start, records the caret position, and then speaks the line (according to the found positions). This now makes Outlook Express usable for both reading and writing messages.

faaa840 2006-12-09 20:35:24 mdcurran <>

*Made the sapi5 driver much more responsive by fixing up cancel(). I was not aware that you could pass None to the sapi5 speak function rather than "" when shutting up.
*The sapi5 driver now supports position indexing (like Viavoice did). This means in Say all, the cursor should be at the right location when you finally stop. This also means that the bug where sapi5 would not shut up when reading lines of text should be now gone.
*Fixed the bug where the synthesizer dialog would sometimes either not open, or it would crash NVDA all together.
*Fixed a bug with the voices dialog, where you could not select a voice if the synth setting in the speech section of nvda.ini was set to 'auto'. Now the dialog properly asks synthDriverHandler for the current synth, rather than checking the config file.
*Fixed a bug with sapi4, where it would not shut up when reading lines of text. Sapi4 still can not have position indexing (I am just not sure how to do it) so say all doesn't properly move the cursor.
*Changed the synth drivers so they also now use autoPropertyType as their metaclass.
*config.save now updates the last known modification time of nvda.ini once it saves the configuration.
*When NVDA starts (and all its sub-systems get initialized) nvda.ini gets written to disc. This makes sure that an nvda.ini exists after the first time NVDA successfully starts. In the future there will also be a script in the source version that can produce an nvda.ini with out running NVDA.

532cc0e 2006-12-08 20:08:49 mdcurran <>

Removed viavoice synth driver - Licencing issues. This will indirectly also make the synthersizer dialog work for anyone who did not have viavoice installed, it seems that there was a problem with getInstallPath causing an exception.

13f2192 2006-12-07 13:55:57 mdcurran <>

Revision 230 fixes a bug where if you are running NVDA and you start internet explorer, the page will never load. If you had previously started internet explorer before starting NVDA this wouldn't have been a problem.

NVDA needs to get the events for the main document at least once, even if internet explorer says its not complete, or else NVDA will never be notified that the first page is complete.

Also virtualBuffer pass-through mode is now turned on and off at appropriate times. It is automatically turned on if you give focus to an internet explorer pane that has an editable document. It is turned off if you give focus to anything inside an internet explorer virtual buffer (as long as the content is not editable).


256dd31 2006-12-07 11:26:24 mdcurran <>

*Fixed bug where the review cursor in dos console windows was no longer following the system caret when it moved.
*Disabled reading the content of dos console windows when focus was not on that particular console window. The reason for this is that to read the content of a console window, NVDA must make that console window become its own process console. And this used to happen on the initialization of NVDAObject_consoleWindowClassClient objects. The problem arises if you are currently focused in one console window, but you then use the number pad to navigate to another console window on your system, then NVDA's console will now become the other console window, and you will no longer be able to read in the focused one, (this includes new text events etc). Now NVDA only ataches the console on the object's gainFocus event, and detaches it on the looseFocus event. If functions that depend on the console are run when the console is not atached they will only return 0 or "" or None (what ever is best suited for that function).

753408e 2006-12-07 09:04:03 mdcurran <>

Fixed problem with detecting the difference between read only internet explorer documents and editable ones. Instead of using the dom property isTextEdit, we use isContentEditable).

077d94e 2006-12-07 07:17:17 mdcurran <>

Editable internetExplorer_server windows are now mostly accessible. These types of windows are used in such things as the outlook express new message editor. Reading by character, word and selection is fine, but reading by line is a little problematic because there is currently no way to find out what text is on the physical screen line, only the text line (using line break characters). This may mean that a line actually reads longer than it really is, plus when you move to the next line, it may repete the line because according to the line breaks, its the same. Hopefully we can find a fix for this.

61f9313 2006-12-06 21:05:23 mdcurran <>

edit fields in internet explorer forms can now be navigated with the cursor, moving by character and word all works. We even have selections. To do this we now have an NVDAObject_internetExplorerEdit object. The code to find out the caret position was thanks to a small article at:
http://www.bazon.net/mishoo/articles.epl?art_id=1292
Very strange way to do things, but it works.
You can get a bookmark from the caret in edit fields and this bookmark can be used to move back to this place at any time. If you know what to look for, this bookmark is not really a unicode string, but a bunch of 39 or more 16 bit numbers. It just happens that the third one in is the caret position, the second one in (if it is 3), means there is a selection, if its something else (most usually 259) there is no selection. The caret position also acts as the start of the selection when there is one. But what the website didn't mention (what I found out from some pretty fun checking) was that the 40th number (if there is a selection) is the end of the selection.
Well... at least it works :p
I bet you this completely breaks in anything but IE 6.

7e81b6e 2006-12-06 15:43:45 mdcurran <>

maxLineLength and linesPerPage have been added to the virtualBuffers section of nvda.ini. virtualBuffers.baseType.virtaulBuffer now wraps lines of text to maxLineLength, and script_pageUp and script_pageDown have been added and these move up and down the buffer by a jump of linesPerPage.

621f584 2006-12-06 12:59:36 mdcurran <>

*Improved the responsivness of arrowing around an internet explorer virtual buffer document by keeping info about each field, such as its typeString (link, list, list item, heading etc) and also keeping a reference to its dom node, rather than having to ask for it by its ID every time.
The ID also knows about two optional functions that can return state text (such as checked) and description text (such as "with 5 items"). These functions are optional so this means that only certain IDs will have to access their dom node for info.
*When a new page is loaded in an internet explorer frame, the virtual buffer is reloaded. It would be nice to just refresh that part of the buffer which has changed, but onreadystatechange event for some odd reason does not provide an srcElement or fromElement or toElement or relatedTarget property, so it is impossible to see exactly who the event was fired for. All we can do is check the main document's readyState value, and if it is "complete" then we reload.
*start and end frame messages in internet explorer virtual buffer objects are no longer phisically printed to the virtual buffer, but frames now have enter and exit messages as you move in and out of them the same as lists do.
*It is now possible to update any part of the virtual buffer (if of course you have a good enough internet explorer event that can tell you exactly what dom node it is for). Because of event problems, random updates by javascript etc still doesn't happen, but it is possible if events can be fixed up.

Assuming that most of this doesn't break in IE 7, (which I am still unable to test) this should make all general websites (including forms and frames) accessible enough. But some banking and shopping sites still will be partly inaccessible because of popup windows and dynamic content.

ef17071 2006-12-04 08:28:16 mdcurran <>

I hope, the exit NVDA dialog ... and the NVDA Window itself, have been fixed once and for all. It seems to work repetedly well on my system at this point in time. As well as a self.raise() for the NVDA window, it also needs a self.setFocus() after that. NVDA was getting an event_foreground, but never an event_object_focus. So now, onExit now creates the message dialog as a child of the mainFrame (NVDA window) and makes sure it gets shown or hidden properly before and after the dialog.

a18cd15 2006-12-04 08:18:53 mdcurran <>

Progress bar update beeps have been limited to windows that are descendants of the current foreground window (which means they will only beep if the progress bar is currently in the active application). Also there is now a beepOnProgressBarUpdates boolean under the presentation section of nvda.ini. By default it is set to True).

cd083ac 2006-12-03 16:16:30 mdcurran <>

Client objects are now reported as window. There has been some confusion with some people running NVDA for the first time and hearing client for a lot of their windows. Also added an NVDAObject_progressBar, which beeps the pc speaker somewhere between 440 and 880 hz each time the percentage changes, so you can tell how far it has moved with out it having to speak heeps of percentages at you.

21e7d5c 2006-12-02 16:25:32 mdcurran <>

*Fixed bugs with move mouse to navigator object and move navigator oject to mouse commands, they no longer worked after the 216-217 MSAA independence changes.
*NVDAObject_MSAA now has a groupName property which is used to get the name of the current group name (if any) for the current MSAA object. (example: system properties dialog in control panel, advanced tab, the settings buttons are in certain groupings). This property though is quite intensive because it has to keep moving to the previous object until either it finds a grouping object or ends up off the edge. I did try doing this many months ago, but due to my lack of understanding of the MSAA location property, I never got it to work. (it is not left,top,right,bottom, but left,top,width,height).
*Added support for speaking the current group name for MSAA objects when they receive focus. Because this can make things a little bit delayed at times, it only does this if
1. reportObjectGroupNames in the presentation section of nvda.ini is true,
2. The current foreground object is a dialog box,
3. This object with focus does not have an MSAAChildID with a value greater than 0 (i.e. it is not something like a list item)
*depending on the sayStateFirst boolean value in the presentation section of nvda.ini, an object's state will be said first before the rest of its properties. (example: checked I like food checkbox).
*Fixed some problems with NVDA saying the window class of objects, this was also missed when doing the big 216-217 changes.
*Removed reportClassOfAllObjects from the presentation section of nvda.ini for now. Also removed reportMouseShapeChanges from the mouse section (This didn't work anyway, and it seems there is a bit of a problem with mouse nameChanged events).

16a59c7 2006-12-01 23:14:59 mdcurran <>

Updated documentation

b2b862a 2006-12-01 21:44:41 mdcurran <>

Updated mouseHandler to the new code. I tend to forget mouseHandler a lot.

c910b82 2006-12-01 20:34:34 mdcurran <>

Forgot to add virtualBuffers/MSAA.py

2927864 2006-12-01 20:33:36 mdcurran <>

There are not too many changes here that will be noticeable to the end user, however they are all very important and in the end will allow NVDA to work with other technologies than just MSAA, and possibly there could be a chance that NVDA could now at some point be tinkered with to work on windows 98.

This revision Completely makes the core workings of NVDA independent of any accessibility or operating system interaction APIs.
NVDA still uses MSAA by default, but it is now possible to write NVDA objects and virtual buffers (and of course event handlers) for other APIs (such as the Java Access Bridge) with out having to tamper with MSAA support.

Focus and forground objects no longer have to be set with an MSAA event locator (window,objectID,childID), they can just directly be set with an NVDAObject. This is made possible because NVDAObject_MSAA objects now are initialised with an optional origEventLocator parameter which is the (window,objectID,childID) that the MSAA event was for. So any compairisons that need to be made against locators on MSAA objects can still be done.

the MSAA module in NVDAObjects now manages its own class map (like manager used to). Because each api (MSAA etc) has different attributes to check when choosing an NVDAObject class, class mapping has to be handled by each API with in NVDAObjects.

Virtual Buffers are pretty much the same, there is now an MSAA sub-module which manages all the MSAA virtual buffers, there is still one function in virtualBuffers/__init__.py though, which is getVirtualBuffer, however this just checks the type of the NVDAObject being passed to it and then calls the getVirtualBuffer for the specific API (in this case, its only MSAA at the moment).

api.executeEvent has now been moved to MSAAHandler.py since it was only MSAA specific anyway.

setForegroundObjectByLocator and setFocusObjectByLocator have been removed, setFocusObject and setForegroundObject have been added.

properties specific to NVDAObject_windows now have 'window' prepended to the name (example: windowclassName, windowControlID) and NVDAObject_MSAA (MSAAChildID).

More NVDAObject docstrings have been updated.

navigator objects are now set in event_gainFocus and event_foreground in the base NVDAObject, rather than in event handlers such as MSAA. This fixes the problem with lists where you would end up on an unknown object sometimes.

d16b936 2006-11-30 21:19:37 mdcurran <>

*Added properties to the base NVDAObject:
-speakOnGainFocus: If true the object will speak when it gains focus.
-needsFocusState: If true, a gainFocus event will only be run if this object has its focus state set at the time
-speakOnForeground: if true this object will speak when it becomes the current foreground object
*Changed a few NVDAObjects so that they set things like speakOnGainFocus etc in their __init__ rather than overriding event_gain/Focus etc.
*Stopped NVDA from saying "client client client" or even worse "SHELLDLL_DefView client SHELLDLL_DefView client SHELLDLL_DefView client" sometimes when moving in and out of folders in a windows explorer list. This was fixed by adding an NVDAObject specifically for this windowClass/role and then setting its speakOnGainFocus to false.
*NVDA no longer processes a focus event for an object that already has the focus
*Now when a list agains focus, its active list item is always spoken, and if there is no active list item, then there must be 0 items so it reports as so. This is handled by an NVDAObject for lists that when having gained focus, it tries to get its active child, and if it is a list item, it setsFocusObjectByLocator, and runs the list item's event_gainFocus. This should not make the list item speak twice because NVDA now already knows that the list item has gained focus by the time its real event comes (if MSAA does its job properly).

fd989e0 2006-11-30 15:12:43 mdcurran <>

Internet Explorer virtualBuffer now renders pages with frames. However, clicking links etc inside frames that load a new document with in that frame doesn't work as of yet.

12a0f47 2006-11-30 10:04:16 mdcurran <>

Changed getLineLength in NVDAObject_textBuffer to properly handle \r, \n, or \r\n line ends. Also fixed a bug with NVDAObject_edit where it couldn't handle a line length of 1 because the unicode buffer was not being made large enough to actually hold the size data for the operating system to read. Now NVDA seems to work again ok in Notepad and when reviewing static text fields.

e3f93b3 2006-11-29 22:19:55 mdcurran <>

Fixed up an indentation problem in NVDAObjects/baseType.py... hopefully now NVDA should actually start.

f07efe3 2006-11-29 21:52:16 mdcurran <>

*NVDAObjects and virtualBuffers now use a new metaclass called autoPropertyType which creates properties for specially named methods in a class. Example: the property 'name' will exist if either _get_name(self) or _set_name(self,val) exists.
*Started adding epydoc compatible docstrings to NVDAObjects. Eventuaully I would suggest that NVDAObjects, virtualBuffers and synthDrivers all be set up for ease of epydoc document generation.
*Moved the virtualBuffer management functions in to virtualBuffers/management.py, previously they were in virtualBuffers/__init__.py. Now virtualBuffers themselves can access these functions if need be.
*Re-wrote most of the base virtualBuffer type. Now all virtualBuffers have a text buffer, and a set of ID lists that hold start and end positions in the text buffer. Think of this as a list of fields in the text buffer denoted by an ID. But ineaad of one ID for each field, its a list of IDs (this is so that its easyer to implement layers of fields). There are functions to get the IDs at a certain position, get the start and end position for a certain ID, append text (with some IDs) to the end of the buffer, insert text (and some IDs) at any given point in the buffer, and remove text by ID.
*Re-wrote most of the MSHTML virtualBuffer (internet explorer) so it now uses the new virtualBuffer structure.
This means now that when arrowing around an internet explorer virtualBuffer, lists, links, form fields, headings etc are reported as you move in to them but they are not actually printed in the buffer. Previously the text in the buffer physically had link, or heading, or table, written, now all you see is the actual text, but the virtualBuffer itself keeps track of what fields you are moving through and reports them accordingly. These fields also read even in sayAll.
*Removed the code that allowed font and style attributes to be spoken when they changed with in the middle of a line. It just got very slow, and made some rather dojy code. However, you can still hear font and style changes when arrowing in and out of them, or when in say All, changes will be reported at least when moving from one line to the next. Of course you still need the appropriate settings in nvda.ini for these to be heard.
*If speak typed characters or speak typed words is set to on, but you are currently focused on an object with its protected state set (e.g. password field) NVDA will only say * for each character.
*Started work again on Mozilla support, but it is currently not in any workable state. I am currently waiting on some help from the person who wrote the windows accessibility support for Mozilla. Once I do fix the problem though, it seems it will be able to be as good (if not better) than current internet explorer support.

Show on old repository browser