------------------------------------------------------------------------
r1827 | jteh | 2008-03-12 09:01:04 +1100 (Wed, 12 Mar 2008) | 1 line

Tagging release 0.6p1.
------------------------------------------------------------------------
r1826 | mdcurran | 2008-03-12 02:53:40 +1100 (Wed, 12 Mar 2008) | 1 line

ControlTypes: NVDA should announce 'menu' instead of 'popup menu' for popup menus.
------------------------------------------------------------------------
r1825 | pvagner | 2008-03-11 22:03:01 +1100 (Tue, 11 Mar 2008) | 2 lines

* IAccessibleHandler: commit 1793 breaks corect anouncement of deleted items in the outlook express message list. Unfortunatelly not all outlook express versions do report their lists as SysListView32.
This time I am trying to do the opposite. use activeChild for childIDs greater than 0, if it's not a ToolbarWindow32 control. Normally we are unable to delete toolbar items so I guess this should be safer than the solution in 1793.
------------------------------------------------------------------------
r1824 | pvagner | 2008-03-10 23:41:54 +1100 (Mon, 10 Mar 2008) | 3 lines

* added NVDA command key quick reference
 in finish
* revised finish language file
------------------------------------------------------------------------
r1823 | pvagner | 2008-03-10 04:52:19 +1100 (Mon, 10 Mar 2008) | 1 line

* added key commands.txt in french
------------------------------------------------------------------------
r1822 | pvagner | 2008-03-10 03:09:39 +1100 (Mon, 10 Mar 2008) | 2 lines

* updated russian language file and readme
* added keycodes.txt in russian
------------------------------------------------------------------------
r1821 | pvagner | 2008-03-09 07:54:14 +1100 (Sun, 09 Mar 2008) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1820 | pvagner | 2008-03-09 07:15:30 +1100 (Sun, 09 Mar 2008) | 1 line

* sapi4 serotek driver can now set the pitch correctly
------------------------------------------------------------------------
r1819 | pvagner | 2008-03-09 05:41:51 +1100 (Sun, 09 Mar 2008) | 1 line

* Sapi4 serotek synthdriver: make sure that we are sending null-terminated strings to the synth. This fixes some bogus stuff being spoken while spelling characters with a few synths.
------------------------------------------------------------------------
r1818 | pvagner | 2008-03-09 03:24:03 +1100 (Sun, 09 Mar 2008) | 1 line

* updated finish and traditional chinese language file
------------------------------------------------------------------------
r1817 | pvagner | 2008-03-08 18:33:13 +1100 (Sat, 08 Mar 2008) | 1 line

* updated french language file
------------------------------------------------------------------------
r1815 | mdcurran | 2008-03-08 18:09:13 +1100 (Sat, 08 Mar 2008) | 1 line

Remove the wiki menu item from the NVDA  help menu as the wiki is completely stuffed atm and we are going to re-think a better solution.
------------------------------------------------------------------------
r1814 | pvagner | 2008-03-08 16:59:37 +1100 (Sat, 08 Mar 2008) | 1 line

* err czech language file again
------------------------------------------------------------------------
r1813 | mdcurran | 2008-03-08 14:19:31 +1100 (Sat, 08 Mar 2008) | 1 line

Base and gecko_ia2 virtualBuffers: announce  ARIA sliders, also allow pressing enter on them to  turn virtualBuffer pass-through mode on so you can move the slider. However, it seems that the buffer is not updating hen you do, but  the values are bieng spoken at least when you do. something too look at in the backend at some point.
------------------------------------------------------------------------
r1812 | mdcurran | 2008-03-08 11:32:28 +1100 (Sat, 08 Mar 2008) | 1 line

IAccessiblehandler.winEventCallback: temporarily   just assign to globalVars.focusObject instead of calling api.setfocusObject. As api.setfocusObject can try and do things with virtualBuffers and COM etc.
------------------------------------------------------------------------
r1811 | mdcurran | 2008-03-08 11:17:04 +1100 (Sat, 08 Mar 2008) | 1 line

Base virtualBuffer and gecko_ia2 virtualBuffer:  added quick keys (t and shift+t) to move to next/previous table.
------------------------------------------------------------------------
r1810 | mdcurran | 2008-03-08 10:54:59 +1100 (Sat, 08 Mar 2008) | 1 line

Fix an error with the Sapi4 serotek synth driver where in recent NVDA trunk revisions WX Python error window would come up with a traceback. However, this seems to also fix callbacks in in the driver as well.  seems hat comtypes no longer has the S_OK constant. Thanks Peter for  solving that one.
------------------------------------------------------------------------
r1809 | pvagner | 2008-03-08 10:33:35 +1100 (Sat, 08 Mar 2008) | 1 line

* updated czech language file
------------------------------------------------------------------------
r1808 | mdcurran | 2008-03-08 10:13:07 +1100 (Sat, 08 Mar 2008) | 1 line

IAccessiblehandler.initialize: do not fire real foreground and focus events, just queue focus_manageEvent for both the foregroundObject and focusObject (with out using isForegroundChange=True). This means that Once NVDA starts, it will announce where you are, but it will not interupt what was currently being spoken. Core.main: do not wait on the spoken startup messages, there is no need for this now as IAccessiblehandler will not interupt them. This means that as it is saying NVDA started etc you can now press control or do something else, rather than having to wait for NVDA to complete the messages.
------------------------------------------------------------------------
r1807 | pvagner | 2008-03-08 05:20:15 +1100 (Sat, 08 Mar 2008) | 1 line

* updated german, french, finish, slovak and chinese language files
------------------------------------------------------------------------
r1806 | pvagner | 2008-03-08 02:10:25 +1100 (Sat, 08 Mar 2008) | 1 line

* UPDATED FRENCH, CHINESE AND SLOVAK LANGUAGE FILES
------------------------------------------------------------------------
r1805 | jteh | 2008-03-08 02:04:59 +1100 (Sat, 08 Mar 2008) | 5 lines

Fix incorrect spelling in the filename contributors.txt.
Copy contributors.txt into the documentation folder when building.
Reworked the NVDA help menu to provide quick access to all documentation and web resources, including the new key commands quick reference.
The code tries to get the documentation for the correct locale, though it will fail for locales which do not name their user guide "user guide.html" or "user guide.txt". This code is really nasty; I'd like to work out a better solution. It should work in most cases for now, though.

------------------------------------------------------------------------
r1804 | jteh | 2008-03-08 02:04:23 +1100 (Sat, 08 Mar 2008) | 1 line

Remove maintainer name and email address. Users should use the provided online resources, rather than emailing Mick directly.
------------------------------------------------------------------------
r1803 | jteh | 2008-03-08 00:33:28 +1100 (Sat, 08 Mar 2008) | 4 lines

Documentation changes:
	* Removed bugs.txt and todo.txt, which were very out of date. We are now using Trac for this anyway.
	* Update dependencies.txt to mention the NVDA external dependencies package.

------------------------------------------------------------------------
r1802 | pvagner | 2008-03-08 00:19:34 +1100 (Sat, 08 Mar 2008) | 1 line

* updated german and finish language files
------------------------------------------------------------------------
r1801 | mdcurran | 2008-03-07 23:20:44 +1100 (Fri, 07 Mar 2008) | 1 line

Core: When NVDA starts, other than saying NVDA started, also mention that you can press insert+n to activate the NVDA menu at any time. Eventually there will be an option to disable this, but at least for 0.6 p1 this message is probably quite necessary.
------------------------------------------------------------------------
r1800 | mdcurran | 2008-03-07 22:23:01 +1100 (Fri, 07 Mar 2008) | 1 line

Setup.py: make sure to include the virtualBuffers package when compiling NVDA.
------------------------------------------------------------------------
r1799 | mdcurran | 2008-03-07 22:21:38 +1100 (Fri, 07 Mar 2008) | 1 line

Updated whats new.txt in user docs to mention important visible changes since 0.5. Also added key commands.txt to the end directory  of user docs. This is a list of the current key commands in NVDA with a very short description for each.
------------------------------------------------------------------------
r1798 | mdcurran | 2008-03-07 22:19:37 +1100 (Fri, 07 Mar 2008) | 1 line

virtualBufferHandler: finally make use of the new in-process virtualBuffers by default for any Mozilla Gecko readinly document that has IAccessible2 support (Gecko 1.9 onwards).
------------------------------------------------------------------------
r1797 | jteh | 2008-03-07 19:46:21 +1100 (Fri, 07 Mar 2008) | 1 line

Update bzr ignores now that prebuilt external dependencies have been removed.
------------------------------------------------------------------------
r1796 | jteh | 2008-03-07 19:06:59 +1100 (Fri, 07 Mar 2008) | 1 line

If the vkCode is in the normal ASCII printable character range, use that instead of the character returned by the operating system. Although not technically correct with regard to non-US English keyboards, this allows, for example, NVDA+1 to work on keyboards on which numbers are normally shifted.
------------------------------------------------------------------------
r1795 | jteh | 2008-03-07 19:06:38 +1100 (Fri, 07 Mar 2008) | 1 line

Removing all prebuilt external dependencies from version control, including eSpeak, all input hook dlls, the IA2 dll and all typelibs. These will be made available for download in a separate archive from now on.
------------------------------------------------------------------------
r1794 | mdcurran | 2008-03-07 18:19:06 +1100 (Fri, 07 Mar 2008) | 1 line

Updated Japanese language file.
------------------------------------------------------------------------
r1793 | mdcurran | 2008-03-07 14:48:57 +1100 (Fri, 07 Mar 2008) | 1 line

IAccessibleHandler: fix bug where NVDA would announce strange popup menus in the start menu etc. Seems that accFocus on that menu is very broken. So, only use activeChild for childIDs greater than 0, if its a SysListView32 control, otherwise don't bother. Its really only needed to support proper announcement of deleted items, but we assumed it would not hinder any other controls.
------------------------------------------------------------------------
r1792 | mdcurran | 2008-03-07 11:19:29 +1100 (Fri, 07 Mar 2008) | 1 line

gecko_ia2 virtualBuffer: make sure isNVDAObjectInVirtualBuffer returns False for descendant windows who's class name does not start with 'Mozilla' and also only try checking if this uniqueID is  known by the root object if this is the exact same window as the root's window. If this is a descendant window, for now just say True, there is no good test we can do at this stage other than that. This should make sure that events inside iframes etc will work. However of course  document loads in iframes (after the main page has loaded is still broken due to the firefox bug).
------------------------------------------------------------------------
r1791 | pvagner | 2008-03-07 11:13:38 +1100 (Fri, 07 Mar 2008) | 1 line

* updated traditional chinese language file
------------------------------------------------------------------------
r1790 | pvagner | 2008-03-07 09:21:30 +1100 (Fri, 07 Mar 2008) | 1 line

* cursor manager: when copying text to the clipboard use windows new line format (\r\n)
------------------------------------------------------------------------
r1789 | pvagner | 2008-03-07 09:18:49 +1100 (Fri, 07 Mar 2008) | 2 lines

* updated italian, french, portuguese, russian, croatian and czech language files
* updated russian readme
------------------------------------------------------------------------
r1788 | pvagner | 2008-03-07 09:15:24 +1100 (Fri, 07 Mar 2008) | 2 lines

* updated czech language strings for the NVDA installer
* updated copiright notice in the installer's welcome page
------------------------------------------------------------------------
r1787 | pvagner | 2008-03-07 03:41:00 +1100 (Fri, 07 Mar 2008) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1786 | mdcurran | 2008-03-06 22:38:06 +1100 (Thu, 06 Mar 2008) | 1 line

New base virtualBuffer:  bind links list to NVDA+f7 instead -- seems to be becoming popular.
------------------------------------------------------------------------
r1785 | jteh | 2008-03-06 21:42:57 +1100 (Thu, 06 Mar 2008) | 1 line

new virtual buffers: Introducing links list! It is bound to NVDA+Control+K. I would like to separate some of this code so that it can be used for other field lists, but this also requires similar code separation in scriptUI.
------------------------------------------------------------------------
r1784 | mdcurran | 2008-03-06 20:42:38 +1100 (Thu, 06 Mar 2008) | 1 line

KeyboardHandler: improve on the fix to make punctuation keys usable for scripts. Instead of the character taking presidence, only try and get the character if the key's name starts with 'oem' or its empty, then ask windows for the character for this vkCode.
------------------------------------------------------------------------
r1783 | jteh | 2008-03-06 19:34:55 +1100 (Thu, 06 Mar 2008) | 4 lines

When running from source, the NVDA process will have a name of pythonw.exe, which is not specific to NVDA. Therefore, when getting the application name, check against NVDA's process ID and return "nvda" if it matches. This allows for an appModule for NVDA itself.
IAccessible menu start event: Fake the focus event at a lower level so that an appModule can be loaded and used if appropriate. This is not a real focus event, so the menu will not have a focus state. This required a change to IAccessibleHandler.focus_winEventCallback() to allow the focus state check to be overridden.
Provide an NVDA appModule which sets the name of the NVDA system tray context menu to "NVDA". This means that "NVDA popup menu" will now be heard when the menu is activated instead of "context popup menu".

------------------------------------------------------------------------
r1782 | jteh | 2008-03-06 19:34:12 +1100 (Thu, 06 Mar 2008) | 1 line

Clean up appModuleHandler: fix docstrings, fix indentation, use the "in" operator instead of the has_key() method on dicts, do some things more efficiently, etc.
------------------------------------------------------------------------
r1781 | mdcurran | 2008-03-06 15:49:20 +1100 (Thu, 06 Mar 2008) | 1 line

An attempt to fix trac ticket 36. keyboardHandler: for any keyName in a keyPress, try getting its vkCode's character representation from the OS first, before looking it up in the vkCodes module we have. However, if the character is a whitespace character, then also just go back to looking it up the old way. appModuleHandler: change the regular expression that processes the key=script lines from the kbd files to  use \S (cap s) to look for non-whitepsace, rather than \w (words).  This makes it possible for the keys in the kbd file to contaion punctuation.
------------------------------------------------------------------------
r1780 | jteh | 2008-03-06 14:55:35 +1100 (Thu, 06 Mar 2008) | 1 line

speakFormattedTextWithXML(): Fix the incorrect reporting of "blank" where there was no content but entry into new fields was to be reported after the content. This stops "blank" from being reported when jumping or focusing on check boxes and radio buttons. Hopefully, I've got it right now...
------------------------------------------------------------------------
r1779 | mdcurran | 2008-03-06 14:21:10 +1100 (Thu, 06 Mar 2008) | 1 line

Basic support for alerts in Gecko applications (where an alert comes up asking you about something, and it contains buttons to perform actions. In Gecko these do not get focus so previously they were never picked up).  Added role_alert to controlTypes.py. Changed the mapping for IAccessible's ROLE_SYSTEM_ALERT from role_dialog to role_alert.  Added event_alert to the IA2 NVDAObject, which just speaks the object and its descendants.  IAccessiblehandler also registers to receive MSAA EVENT_SYSTEM_ALERT events.  This  now all means that when alerts appear, NVDA will speak them. However a small bug is that it may read the child TextNodes of some objects that contain IAccessibleText. But this can be fixed at a later date.
------------------------------------------------------------------------
r1778 | mdcurran | 2008-03-06 13:54:50 +1100 (Thu, 06 Mar 2008) | 1 line

Gecko_ia2 virtualBuffer: remove some old code
------------------------------------------------------------------------
r1777 | mdcurran | 2008-03-06 12:09:57 +1100 (Thu, 06 Mar 2008) | 1 line

Revert the change in api.setFocusObject (svn r1773) this was the wrong way to try and fix the thunderbird3 ghost document issue. Instead, in the gecko_ia2 virtualBuffer's isNVDAObjectInVirtualBuffer: get the uniqueID of the object in question, and use accChild method of the rootNVDAObject with that ID to see if the ID is known by the rootNVDAObject. If it is, then this NVDAObject is in the virtualBuffer, if not, then its not. This solves the thunderbird3 issue, and also solves a  a few focus issues that ere introduced yesterday with the r1773 code.
------------------------------------------------------------------------
r1776 | jteh | 2008-03-06 11:26:05 +1100 (Thu, 06 Mar 2008) | 3 lines

If we are handling a menu end for an object and a focus event is received for the same object, this is probably an invalid focus event, so try finding the real focus ourselves. This fixes the issue where leaving the system menu in a console window leaves the focus stuck on the system menu bar.
In the menu end event, silence speech before finding the real focus and faking a focus event. This stops the bad focus event from speaking in the above case.

------------------------------------------------------------------------
r1775 | jteh | 2008-03-06 08:33:01 +1100 (Thu, 06 Mar 2008) | 1 line

Ignore focus events for invisible windows. This stops the annoying report of "pane" when accessing the NVDA menu. This is actually a wx bug, but anyway...
------------------------------------------------------------------------
r1774 | pvagner | 2008-03-06 08:22:30 +1100 (Thu, 06 Mar 2008) | 1 line

* updated chinese language file
------------------------------------------------------------------------
r1773 | mdcurran | 2008-03-06 00:35:27 +1100 (Thu, 06 Mar 2008) | 1 line

api.setFocusObject: when seeing if the object needs to possibly try and create a new virtualBuffer, make sure that if in deed it does have an already existing virtualBuffer that it checks to see if the virtualBuffer's root object is in the focus ancestors. If its not, then its really not a virtualBuffer for this object at all. This seems to fix a problem in thunderbird3 where some imap messages would  not render due to  a ghost document being created first and then not going away before the real one is created. This code does slightly slow down focus changes in virtualBuffers, but its needed for now until the thunderbird3 issue is resolved.
------------------------------------------------------------------------
r1772 | jteh | 2008-03-05 18:35:48 +1100 (Wed, 05 Mar 2008) | 1 line

speakFormattedTextWithXML(): cosmetic changes: Remove unnecessary level of indentation and add some blank lines to separate sections of the code.
------------------------------------------------------------------------
r1771 | jteh | 2008-03-05 18:34:44 +1100 (Wed, 05 Mar 2008) | 9 lines

speech.speakFormattedTextWithXML():
	* Don't add empty text strings to the list of strings to speak. This makes the length of the text list actually useful.
	* Don't report "blank" if any new fields are being entered. This stops extraneous reporting of "blank".
* Cleaned up some code.
 ------------- This line and the following will be ignored --------------

modified:
  source/speech.py

------------------------------------------------------------------------
r1770 | mdcurran | 2008-03-05 18:12:19 +1100 (Wed, 05 Mar 2008) | 1 line

Speech.getSpeechTextForProperties: specifically support the 'level' property so that it can be translated.
------------------------------------------------------------------------
r1769 | mdcurran | 2008-03-05 15:48:11 +1100 (Wed, 05 Mar 2008) | 1 line

new base virtualBuffer's getXMLFieldSpeech: only announce moving in and out of read-only lists (not form field lists) if reason is caret or sayAll (so not when ujumping with single-letter keys or focus). Also make sure the logic for non-read-only lists checks that  read-only is not a state.
------------------------------------------------------------------------
r1768 | mdcurran | 2008-03-05 15:41:37 +1100 (Wed, 05 Mar 2008) | 1 line

new base virtualBuffer's getXMLFieldSpeech: when not using extra detail and when speaking because of caret or say all, and the field is a heading, link, radioButton, checkbox, button, or graphic, speak the field even if its start_inStack. Previously it was only start_addedToStack and start_relative. This means that if one of these fields spans multiple lines, the field will be spoken for each. it also makes sure that when constantly speaking the same line (e.g. pressing up arrow on the top line of the NVDA home page which is a graphic) that it speaks the field always, rather than just the text. Also added support for announcing role_separator to this lot of roles. So when you arrow on to a separator it speaks as so.
------------------------------------------------------------------------
r1767 | mdcurran | 2008-03-05 15:00:49 +1100 (Wed, 05 Mar 2008) | 1 line

speech.XMLContextParser: tell expat to use utf-8 when parsing, also actually encode the xml to utf-8 before handing it to expat. This fixes many exceptions that cuased fields in virtualBuffers to go missing.
------------------------------------------------------------------------
r1766 | mdcurran | 2008-03-05 14:38:13 +1100 (Wed, 05 Mar 2008) | 1 line

Spech: remove a lot of old code that is not used any more -- some old xml processing classes and functions.
------------------------------------------------------------------------
r1765 | jteh | 2008-03-05 12:43:32 +1100 (Wed, 05 Mar 2008) | 1 line

Remove debugging code.
------------------------------------------------------------------------
r1764 | jteh | 2008-03-05 12:43:14 +1100 (Wed, 05 Mar 2008) | 5 lines

menuEnd event for IAccessible NVDAObject:
	* If the focus is on the desktop object, the focus is probably invalid due to a destroy event, so we need to act as if no focus event occurred and find the object with focus. This fixes the issue where focus is not correctly restored after exiting a context menu without selecting an item.
	* Remove unnecessary call to api.getFocusObject().
api.processPendingEvents(): Call IAccessibleHandler.pumpAll() to ensure that focus events are handled.

------------------------------------------------------------------------
r1763 | mdcurran | 2008-03-05 11:38:56 +1100 (Wed, 05 Mar 2008) | 1 line

IAccessible2Text TextInfo class - _getCharacterOffsets:  catch exceptions from COM, just return super's _getCharacterOffsets if something bad happens. Lotus Symphony seems to fail here quite a bit.
------------------------------------------------------------------------
r1762 | mdcurran | 2008-03-05 11:17:11 +1100 (Wed, 05 Mar 2008) | 1 line

Progress bar IAccessible NVDAObject: also make sure that the object does not have state_invisible, and make sure that isWindowVisible(self.windowHandle) is true, and that self.windowHandle is a descendant of the foreground window, before trying to play beeps for progress bar value changes. This finally stops the massive amount of  beeping that happens in accessibility probe and should fix it for Lotus Notes / Lotus Symphony etc.
------------------------------------------------------------------------
r1761 | mdcurran | 2008-03-05 07:56:00 +1100 (Wed, 05 Mar 2008) | 1 line

New gecko_ia2 virtualBuffer: remove some code that worked around a bug in Gecko to do with doc loading. In fact this work around now causes other NVDA bugs. So now in firefox3 with new virtualBuffers, pages with lots of iframes should load properly again. However, this does again cause some problems for imap messages in Thunderbird, though I'm trying to sort this out with Mozilla.
------------------------------------------------------------------------
r1760 | pvagner | 2008-03-05 03:22:48 +1100 (Wed, 05 Mar 2008) | 1 line

* updated french, spanish, italian, galician and slovak language files
------------------------------------------------------------------------
r1759 | mdcurran | 2008-03-04 22:14:00 +1100 (Tue, 04 Mar 2008) | 1 line

characterSymbols: add \u2026 (dot dot dot) -- its used a lot in Mozilla applications in the menus.
------------------------------------------------------------------------
r1758 | jteh | 2008-03-04 22:13:00 +1100 (Tue, 04 Mar 2008) | 1 line

WordDocument NVDAObject: Remove __del__(), as it was accessing the dom property which might attempt to retrieve the DOM when the application is exiting, causing an error. __del__() was calling destroyObjectModel() which was doing nothing anyway, so removed this as well. This should fix "No native object model" errors when exiting Word.
------------------------------------------------------------------------
r1757 | pvagner | 2008-03-04 18:31:54 +1100 (Tue, 04 Mar 2008) | 1 line

* updated brazilian portuguese language file
------------------------------------------------------------------------
r1756 | jteh | 2008-03-04 18:07:02 +1100 (Tue, 04 Mar 2008) | 1 line

api.copyToClip(): Call EmptyClipboard() before setting the data. Otherwise, data copied in other formats will still be present and may be used in preference to the text we wanted to copy. This fixes issues where text copied from NVDA does not appear to have been copied when pasting to certain controls; e.g. rich edit fields.
------------------------------------------------------------------------
r1755 | jteh | 2008-03-04 18:06:44 +1100 (Tue, 04 Mar 2008) | 1 line

gecko_ia2 virtual buffer: When the caret is moved to a field, move the navigator object to the field before trying to set the focus. Sometimes, the focus can't be set, but the navigator object can always be set.
------------------------------------------------------------------------
r1754 | pvagner | 2008-03-04 00:53:54 +1100 (Tue, 04 Mar 2008) | 2 lines

* improved file reading for espeak variant detection and user dictionaries loading
* make sure option in nvda.ini is reset to none when unknown variant identifier is given
------------------------------------------------------------------------
r1753 | jteh | 2008-03-03 16:31:35 +1100 (Mon, 03 Mar 2008) | 1 line

Update copyright period to 2006-2008. Note that the headers in the source files have not yet been updated.
------------------------------------------------------------------------
r1752 | jteh | 2008-03-03 16:31:18 +1100 (Mon, 03 Mar 2008) | 1 line

Remove commented import.
------------------------------------------------------------------------
r1751 | jteh | 2008-03-03 16:30:57 +1100 (Mon, 03 Mar 2008) | 4 lines

Changes relating to new virtual buffers and speech.speakFormattedTextWithXML:
Don't report fields for which the role is silenced; e.g. list items.
Report "blank" correctly for lines which contain fields but no text.

------------------------------------------------------------------------
r1750 | pvagner | 2008-03-03 06:56:33 +1100 (Mon, 03 Mar 2008) | 2 lines

* updated traditional chinese language file
* updated russian language file
------------------------------------------------------------------------
r1749 | pvagner | 2008-03-03 01:22:42 +1100 (Mon, 03 Mar 2008) | 1 line

* updated thai language file
------------------------------------------------------------------------
r1748 | pvagner | 2008-03-01 18:59:06 +1100 (Sat, 01 Mar 2008) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1747 | pvagner | 2008-03-01 09:15:27 +1100 (Sat, 01 Mar 2008) | 1 line

* updated spanish, galician, french and slovak language files
------------------------------------------------------------------------
r1746 | pvagner | 2008-03-01 02:53:38 +1100 (Sat, 01 Mar 2008) | 2 lines

* removing hideInterfaceOnStartup option from the config file and also removing corresponding option from the general settings dialog
* removing no longer needed import from _espeak.py
------------------------------------------------------------------------
r1745 | jteh | 2008-02-29 16:32:20 +1100 (Fri, 29 Feb 2008) | 28 lines

 Merge from guiRefactor branch:

1551 James Teh	2008-02-28
      Some major changes to the GUI:
      Get rid of the old NVDA main window. This includes the quick start text, which is extremely outdated, full of errors, difficult for translators and otherwise abominable.
      Instead, move to a system tray popup menu. This is activated when NVDA+N is pressed or when the system tray icon is right clicked.
      As a result, the shortcut keys to access menu items (e.g. Control+Shift+V for Voice Settings) can no longer be used, so remove them from the menu item text.
      We still have a main frame to handle events and act as the main app window which causes the app to exit once destroyed. Showing and hiding this window briefly at startup also seems to make Windows more readily disposed to allowing NVDA popups to come to the foreground later. I suspect this has something to do with the application receiving permission to set the foreground window, but I don't really understand it.
      All dialogs are no longer children of the mainFrame. This isn't necessary and causes foreground window problems.
      Change all occurrences of the literal -1 to wx.ID_ANY.

 1554 James Teh	2008-02-28
      Major rework of the settingsDialogs code.
        All settings dialogs now inherit from the new SettingsDialog class. SettingsDialog encapsulates functionality common to all settings dialogs.
        Aside from its cosmetic and design appeal, all dialogs are now destroyed properly after they are dismissed.
        The dialog title is now maintained inside the dialog class instead of in the caller.
        The ID is wx.ID_ANY for all dialogs; this is no longer passed from the caller.
        Also, all settings dialog class names now start with a capital letter.

 1555 James Teh	2008-02-28
      Remove the NVDA menu. Move User Dictionaries into the Preferences menu. Move Revert to Save configuration, Save Configuration and Exit to the bottom of the root sys tray menu.

 1556 James Teh	2008-02-29
      Fix a bug whereby NVDAObjectTextInfo.find() would land on an incorrect position if searching from anywhere but the start. This was exhibited in the cursor manager find text functionality.
      Fix the code which handles reverse searching in NVDAObjectTextInfo.find(). Note that this is not yet accessible from the cursor manager UI.
      CursorManager: Add NVDA+Control+f to activate the find dialog. NVDA+f3 now searches for the next occurrence of the string or brings up the find dialog if no string has yet been entered.
      Minor tweaks to some text and add code comments.

------------------------------------------------------------------------
r1744 | pvagner | 2008-02-29 04:06:19 +1100 (Fri, 29 Feb 2008) | 1 line

* updated french language file
------------------------------------------------------------------------
r1743 | pvagner | 2008-02-28 04:51:40 +1100 (Thu, 28 Feb 2008) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1742 | pvagner | 2008-02-28 00:49:07 +1100 (Thu, 28 Feb 2008) | 1 line

* updated traditional chinese language file
------------------------------------------------------------------------
r1741 | pvagner | 2008-02-27 23:12:45 +1100 (Wed, 27 Feb 2008) | 1 line

* further work for real espeak variant support: It can now be set using synth settings ring. Also removed some debug messages which are no longer needed.
------------------------------------------------------------------------
r1740 | pvagner | 2008-02-27 22:07:09 +1100 (Wed, 27 Feb 2008) | 1 line

* fix _espeak.getVariantDict() so it won't try to open subdirectories (thanks Michel). NVDA can be run from SVN sources again.
------------------------------------------------------------------------
r1739 | pvagner | 2008-02-27 21:01:04 +1100 (Wed, 27 Feb 2008) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1738 | pvagner | 2008-02-27 20:10:07 +1100 (Wed, 27 Feb 2008) | 1 line

* initial support for real espeak variants. Variant identifiers are saved to the configuration file and real variant names are displayed in the voice settings dialog. variant property of SynthDriver class is changed from integer to string. 
------------------------------------------------------------------------
r1737 | pvagner | 2008-02-26 17:40:12 +1100 (Tue, 26 Feb 2008) | 1 line

* update the workaround in skype appmodule so it no longer says contact name twice with new version of skype
------------------------------------------------------------------------
r1736 | mdcurran | 2008-02-26 17:25:24 +1100 (Tue, 26 Feb 2008) | 2 lines

New gecko_ia2 virtualBuffer: if event_gainFocus is fired for a document that is not the rootNVDAObject (but of course is in the virtualBuffer) do not speak anything, obviously we're just passing by, as focus moves to a control inside an embedded document (such as in an iframe).

------------------------------------------------------------------------
r1735 | jteh | 2008-02-25 15:14:30 +1100 (Mon, 25 Feb 2008) | 1 line

Speak the unicode normal bullet (0x2022) as "bullet". Do not speak "bullet" for list item fields anymore.
------------------------------------------------------------------------
r1734 | mdcurran | 2008-02-25 11:56:31 +1100 (Mon, 25 Feb 2008) | 1 line

New base virtualBuffer:  when exiting multyLine edit fields, the fact should be announced. When an edit field (not multyLine) wraps over more than one line,  the field should be spoken on each of the lines, not just when entering. This is rather rare, but at least then it will not be confusing as to if you are in an edit field or not.
------------------------------------------------------------------------
r1733 | mdcurran | 2008-02-25 11:35:31 +1100 (Mon, 25 Feb 2008) | 1 line

New virtualbuffers: level (as in heading level) should be anounced for headings. speech.getSpeechTextForProperties should only annouce an arbitrary property if its value is not None or "". New gecko_ia2 virtualBufferTextInfo - getXMLFieldSpeech: pull apart the IA2Attributes in to a python dict. Also grab level out, and pass that along to the vase virtualBufferTextInfo getXMLFieldSpeech.
------------------------------------------------------------------------
r1732 | mdcurran | 2008-02-25 08:58:09 +1100 (Mon, 25 Feb 2008) | 1 line

New gecko_ia2 virtualBuffer: fix typo in eventa_scrollingStart
------------------------------------------------------------------------
r1731 | pvagner | 2008-02-24 02:56:32 +1100 (Sun, 24 Feb 2008) | 1 line

* updated japanese language file
------------------------------------------------------------------------
r1730 | mdcurran | 2008-02-23 14:58:08 +1100 (Sat, 23 Feb 2008) | 1 line

New gecko_ia2 virtualBuffer: event_scrollingStart is now supported, which means that when pressing on a same-page link, the virtual caret will jump to where it should, and the line it lands on will get announced.
------------------------------------------------------------------------
r1729 | mdcurran | 2008-02-23 11:21:18 +1100 (Sat, 23 Feb 2008) | 1 line

New virtualBuffers: make all scripts and events handle the fact that there may not actually be a virtualBuffer laoded at the time of their execution. New gecko_ia2 virtualBuffer: override LoadBuffer so that it just returns with out doing anything if rootNVDAObject has state_busy set. This now stops a virtualBuffer library buffer from needlessly being laoded twice while a page loads.
------------------------------------------------------------------------
r1728 | mdcurran | 2008-02-23 09:12:27 +1100 (Sat, 23 Feb 2008) | 1 line

New gecko_ia2 virtualBuffer - event_stateChange: make sure to call nextHandler if this state change is not for the rootNVDAObject. This should again make  NVA speak checked/unchecked etc when pressing on check boxes and radio buttons etc.
------------------------------------------------------------------------
r1727 | pvagner | 2008-02-20 08:38:55 +1100 (Wed, 20 Feb 2008) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1726 | mdcurran | 2008-02-19 10:12:57 +1100 (Tue, 19 Feb 2008) | 1 line

New gecko_ia2 virtualBuffer: work around a strange issue in Thunderbird3 where the stateChange given to tell the AT that a message has finnished loading (using imap) keeps the original object with state_busy. For now, if the virtualBuffer gets a stateChange or gainFocus event and the rootNVDAObject is state_busy, then try getting it again using its windowHandle and uniqueID. If this works, and this new object is not state_busy, then use this as the rootNVDAObject instead, and also reload the buffer. Now it should be much easier to use NVDA with thunderbird3 and imap messages as you shouldn't have to open and close and reopen the message to read it.
------------------------------------------------------------------------
r1725 | mdcurran | 2008-02-18 21:20:32 +1100 (Mon, 18 Feb 2008) | 1 line

Fix for trac ticket #31 (indexError in api.getFocusAncestors()[-1], in IAccessibleHandler.winEventCallback).  For now put it in a try except block and if it fails, just use the desktopObject instead.
------------------------------------------------------------------------
r1724 | mdcurran | 2008-02-18 21:17:02 +1100 (Mon, 18 Feb 2008) | 1 line

New virtualBuffers: make sure to use _inFind property from cirsurManager. Now Find (NVDA+f3) should work in new virtualBuffers. It is not case sensitive like the old virtualBuffers, though eventually the dialog will have a checkbox to to give the user the choice.
------------------------------------------------------------------------
r1723 | mdcurran | 2008-02-18 21:14:53 +1100 (Mon, 18 Feb 2008) | 1 line

CursorManager: added a find script (NVDA+f3). possibly this should be made in to a default script so that the key can be listed in _default_desktop.kbd, but  for now this will do. It uses the same find dialog that the old virtualBuffers used, so there may still be issues with accidental focus of the NVDA window etc. see track ticket #28 for more info.
------------------------------------------------------------------------
r1722 | mdcurran | 2008-02-18 21:11:34 +1100 (Mon, 18 Feb 2008) | 1 line

Base NVDAObjectTextInfo (also inherited by VirtualBufferTextInfo): add an implementation of the find method. One issue to be still fixed up is the _inFind variable: this is set to true just before running the find dialog, and then seg back to false once the caret has been moved (so that other events can take note and not move the caret themselves), however if there is an error in the dialog or any code inbetween, then _inFind will never be set back to false.
------------------------------------------------------------------------
r1721 | mdcurran | 2008-02-18 16:30:11 +1100 (Mon, 18 Feb 2008) | 1 line

TextHandler.TextInfo: added a find method. allows you to search for text (option for case sensitivity and option for searching backwards). This is of course just an abstract method, none of the subclasses have the find method implemented yet. Though the plan is for the new virtualBuffers to make use of this with  a find dialog, to allow the user to search the buffer for text.
------------------------------------------------------------------------
r1720 | mdcurran | 2008-02-18 15:51:37 +1100 (Mon, 18 Feb 2008) | 1 line

new base virtualBuffer TextInfo class - getXMLFieldSpeech: role_blockquote should be announced when entering and exiting in chunks... not just when navigating by character.
------------------------------------------------------------------------
r1719 | mdcurran | 2008-02-18 15:49:54 +1100 (Mon, 18 Feb 2008) | 1 line

New gecko_ia2 virtualBuffer: get the IAccessible2::attributes node attribute if it exists. So far using this node attribute, it searches for tag:blockquote to detect blockquotes.
------------------------------------------------------------------------
r1718 | pvagner | 2008-02-17 07:06:40 +1100 (Sun, 17 Feb 2008) | 1 line

* really added recently updated finish language file instead of italian. Sorry for the inconvenience. Closes ticket #32
------------------------------------------------------------------------
r1717 | mdcurran | 2008-02-16 20:30:13 +1100 (Sat, 16 Feb 2008) | 1 line

IAccessible2TextInfo - _getSentenceOffsets: if start and end are equal,  assume that there was an error and call super (this will have the affect of eventually returning line offsets instead of sentence offsets.
------------------------------------------------------------------------
r1716 | mdcurran | 2008-02-15 20:47:18 +1100 (Fri, 15 Feb 2008) | 9 lines

These changes should some what improve the accuricy of how NVDA knows when to load a new virtualBuffer. Previously  old ones such as the about:blank document which firefox3 starts with tended to sometimes stay around, and sometimes documents with iframes would not always load correctly.
  
*NVDAObjects' virtualBuffer property: If the cached weakref exists, dereference it, and if there is a virtualBuffer object, and it exists in virtualBufferHandler.runningTable, then return it. Otherwise return None. If there is no cached weakref, then use virtualBufferhandler.getVirtualBuffer to get one. The change here is that the property only tries to get a virtualBuffer once, if the weakref eventually becomes none, or the object is no longer in runningTable, it doesn't bother trying to get a new one. Also allowd this property to be set by a _set_virtualBuffer method.
*api.setFocusObject: When virtualBufferHandler.update makes and returns a new virtualBuffer, then set the focusObject's virtualBuffer property to this virtualBuffer object. This makes sure that when a script accesses the virtualBuffer property (as the object has the focus) the virtualBuffer property will already be possibly pointing to a virtualBuffer, and therefore will not call virtualBufferHandler.getVirtualBuffer (which can't really be called in a keyEvent due to issues with windows system hook callback (you can't access COM).
 *New gecko_ia2 virtualBuffer - isAlive: make sure to return False, not None, when its not True.
*New gecko_ia2 virtualBuffer - isNVDAObjectInVirtualBuffer: use winUser.isDescendantWindow, not a while loop.
*IAccessible2 NVDAObject's states property: if getting the IAccessible2 states causes an exception, at least pretend that IA2_STATE_DEFUNCT is given (as the object is obviously dead or broken).
*New gecko_ia2 virtualBuffer - event_gainFocus: if the rootNVDAObject has state_busy set, then after speaking busy, return. We shouldn't bother doing anything else here as its busy.

------------------------------------------------------------------------
r1715 | jteh | 2008-02-15 19:02:48 +1100 (Fri, 15 Feb 2008) | 1 line

The functionality of wx.PySimpleApp has been merged into wx.App, so just use the latter.
------------------------------------------------------------------------
r1714 | mdcurran | 2008-02-15 16:18:23 +1100 (Fri, 15 Feb 2008) | 1 line

IAccessibleHandler: do not map IA2_STATE_STALE TO controlTypes.STATE_DEFUNCT (these are quite different, and it tends to confuse Gecko virtualBuffers)
------------------------------------------------------------------------
r1713 | jteh | 2008-02-15 09:32:11 +1100 (Fri, 15 Feb 2008) | 1 line

Remove unnecessary imports.
------------------------------------------------------------------------
r1712 | mdcurran | 2008-02-15 00:05:59 +1100 (Fri, 15 Feb 2008) | 1 line

Base NVDAObject's virtualBuffer property: if the cached weakRef gives us a virtualBuffer, firstly check if it exists in virtualBufferHandler.runningTable before really considering it ok. This makes sure that as soon as a virtualBuffer is killed, its impossible for an event or script to pass to it.
------------------------------------------------------------------------
r1711 | mdcurran | 2008-02-14 23:08:27 +1100 (Thu, 14 Feb 2008) | 1 line

New gecko_ia2 virtualBuffer:  speak busy when there is a stateChange or gainFocus and the rootNVDAObject is busy. This should happen even if the virtualBuffer is going to be killed straight after.
------------------------------------------------------------------------
r1710 | mdcurran | 2008-02-14 23:06:44 +1100 (Thu, 14 Feb 2008) | 1 line

New base virtualBuffer: if the rootNVDAObject has state_busy in its states when being asked to loadBuffer, say busy.
------------------------------------------------------------------------
r1709 | mdcurran | 2008-02-14 22:23:02 +1100 (Thu, 14 Feb 2008) | 1 line

IAccessibleHandler.focus_manageEvent: for now don't care if state_defunct is in the object's states, it causes too many problems with virtualBuffers.
------------------------------------------------------------------------
r1708 | mdcurran | 2008-02-14 21:01:17 +1100 (Thu, 14 Feb 2008) | 1 line

New base virtualBuffer: removed an old fillVBufHelper method. Also the refresh script (insert+f5) properly calls unloadBuffer and loadBuffer, rather than the old fillVBuf (which doesn't exist.
------------------------------------------------------------------------
r1707 | mdcurran | 2008-02-14 20:33:16 +1100 (Thu, 14 Feb 2008) | 1 line

New gecko_ia2 virtualBuffer:  make the dicts passed back by _searchableAttribsForNodeType much simpler by making them more specific to gecko_ia2's requirements (removing any of the gecko 1.8 role strings). Also removed  IA2DocumentLoadedEvent method ... was for testing, shouldn't be there.
------------------------------------------------------------------------
r1706 | mdcurran | 2008-02-14 20:22:07 +1100 (Thu, 14 Feb 2008) | 1 line

virtualBuffer_lib: add attributeValue_t struct. Change multyValueAttribute_t struct to use POINTER(attributeValue_t) instead of a pointer to c_wchar_p, and also add nameLength after name. VBufClient_findBufferFieldIdentifierByProperties: make sure to fill in the nameLength member of each attribute, and to properly use attributeValue_t.
------------------------------------------------------------------------
r1705 | mdcurran | 2008-02-14 16:48:58 +1100 (Thu, 14 Feb 2008) | 1 line

New gecko_ia2 virtualBuffer - event_gainFocus: stop sayAll if the focus changes. Also speak the name of the document when focus moves to the rootNVDAObject.
------------------------------------------------------------------------
r1704 | jteh | 2008-02-14 16:26:41 +1100 (Thu, 14 Feb 2008) | 1 line

Provide sayAllHandler.isRunning() to determine whether say all is running.
------------------------------------------------------------------------
r1703 | mdcurran | 2008-02-14 15:30:38 +1100 (Thu, 14 Feb 2008) | 1 line

VirtualBufferHandler.killVirtualBuffer: catch KeyError exception when trying to remove a virtualBuffer that already has been removed.
------------------------------------------------------------------------
r1702 | jteh | 2008-02-14 09:22:59 +1100 (Thu, 14 Feb 2008) | 5 lines

queueHandler generator objects:
      Get the keys from the generators dict and then iterate through those instead of iterating through the dict directly, as it can be mutated during iteration. We used to do this, but I thought I was being smart when I removed the call to keys(). :) This fixes "RuntimeError: dictionary changed size during iteration" exceptions.
      Now that we have cancelGeneratorObject, a generator can be removed by another generator before the iterator reaches it. Although this doesn't happen yet, handle it by catching and ignoring KeyError when retrieving the generator.
      Change another instance of %s referring to an int to %d.

------------------------------------------------------------------------
r1701 | pvagner | 2008-02-14 05:05:13 +1100 (Thu, 14 Feb 2008) | 2 lines

* updated spanish language file
* updated galician language file
------------------------------------------------------------------------
r1700 | pvagner | 2008-02-14 01:07:02 +1100 (Thu, 14 Feb 2008) | 2 lines

* updated czech language file
* updated finish language file
------------------------------------------------------------------------
r1699 | pvagner | 2008-02-14 00:21:11 +1100 (Thu, 14 Feb 2008) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1698 | jteh | 2008-02-13 20:04:39 +1100 (Wed, 13 Feb 2008) | 7 lines

Much clean up of and cosmetic improvement to the main GUI code, though no functional change.
* Use super() instead of calling the super-class directly.
* Bind events using the PyEventBinder framework wherever possible; i.e. window.Bind(). For menu items, don't create IDs for each item; instead, get the item object and bind using that.
* Do ExternalCommandEvent more nicely, again using the PyEventBinder framework. Also, use wx.PostEvent() instead of mainFrame.GetEventHandler().AddPendingEvent(). The effect is the same, but this looks nicer.
* Other minor clean up.
Note that these changes don't include the settingsDialogs code, although all still works.

------------------------------------------------------------------------
r1697 | jteh | 2008-02-13 20:04:22 +1100 (Wed, 13 Feb 2008) | 1 line

bzr: Ignore source/{build,dist}.
------------------------------------------------------------------------
r1696 | mdcurran | 2008-02-13 15:55:08 +1100 (Wed, 13 Feb 2008) | 1 line

New virtualBuffers: remove adobe, IAccessible and Gecko -- these need to be re-written again, with their own backends.
------------------------------------------------------------------------
r1695 | mdcurran | 2008-02-13 15:52:27 +1100 (Wed, 13 Feb 2008) | 1 line

Removing virtualBuffer_new.dll ... this has been superceeded by the new in-process dll.
------------------------------------------------------------------------
r1694 | mdcurran | 2008-02-13 15:50:55 +1100 (Wed, 13 Feb 2008) | 1 line

Added new gecko 1.9 virtualBuffer class. This is for use with the gecko_ia2 backend, and the new in-process virtualBuffers. Note that the dlls are still not included yet.
------------------------------------------------------------------------
r1693 | mdcurran | 2008-02-13 15:49:05 +1100 (Wed, 13 Feb 2008) | 1 line

move virtualBuffer_lib.py from virtualBuffers in to the main source dir. personally I think it looks better for all dll-related stuff to be here, rathr than floating around in virtualBuffers with NVDA virtualBuffer specific classes.
------------------------------------------------------------------------
r1692 | mdcurran | 2008-02-13 15:45:41 +1100 (Wed, 13 Feb 2008) | 1 line

virtualBufferHandler: add a killVirtualBuffer function which removes a virtualBuffer object from runningTable. RunningTable is now a set not a list.
------------------------------------------------------------------------
r1691 | mdcurran | 2008-02-13 15:43:19 +1100 (Wed, 13 Feb 2008) | 1 line

NVDAObject virtualBuffer property: re-work the logic a bit.
------------------------------------------------------------------------
r1690 | mdcurran | 2008-02-13 15:42:35 +1100 (Wed, 13 Feb 2008) | 1 line

api.setfocusObject: virtualBufferhandler.update should be called not only if obj.virtualBuffer is None, but also if obj.virtualBuffer.isAlive() is false.
------------------------------------------------------------------------
r1689 | mdcurran | 2008-02-13 15:41:13 +1100 (Wed, 13 Feb 2008) | 1 line

New base virtualBuffer: loadBuffer and unloadBuffer do not get called automatically in object instanciation / destruction -- virtualBufferhandler etc will ahve to do that manually. also loadBuffer now only initiates a sayAll if the focus is in this virtualBuffer.
------------------------------------------------------------------------
r1688 | mdcurran | 2008-02-13 14:09:32 +1100 (Wed, 13 Feb 2008) | 1 line

IAccessibleHandler: map IA2_STATE_STALE to controlTypes.STATE_DEFUNCT
------------------------------------------------------------------------
r1687 | jteh | 2008-02-13 11:51:54 +1100 (Wed, 13 Feb 2008) | 1 line

Fix typo.
------------------------------------------------------------------------
r1686 | mdcurran | 2008-02-13 11:27:19 +1100 (Wed, 13 Feb 2008) | 1 line

keyboardHandler: fix typo in except clause of internal_keyDownEvent. This was causing NVDA to be silent on an error in a key  press, and for lo traceback to be sent to nvda.log. also made the spoken message for this error not have wait=True as it just locks up NVDA if it is already speaking a long string (such as SayAll).
------------------------------------------------------------------------
r1685 | jteh | 2008-02-13 09:56:06 +1100 (Wed, 13 Feb 2008) | 1 line

Explicitly include the cursorManager module for py2exe, as it is not being implicitly included by any modules bundled into the executable. This can be removed once the new virtualBuffers package is included. This should fix the problems with the MSN Messenger appModule in recent snapshots.
------------------------------------------------------------------------
r1684 | jteh | 2008-02-12 22:01:54 +1100 (Tue, 12 Feb 2008) | 5 lines

Merge from jamie:
  When changing the speech mode setting, explicitly cancel speech before speaking the new mode to ensure fastest response. This is necessary because although speech is implicitly cancelled when a key is pressed, cancel speech has no effect when speech mode is not set to talk.
  Provide the ability to cancel generator objects using queueHandler.cancelGeneratorObject(ID), where ID is now returned by queueHandler.registerGeneratorObject().
  Say all: Instead of checking the key press count to determine whether say all should stop, just cancel the generator. sayAllHandler.stop() can now be used to stop say all and is called from speech.cancelSpeech(). This means that say all can be stopped programmatically.

------------------------------------------------------------------------
r1683 | mdcurran | 2008-02-12 21:30:52 +1100 (Tue, 12 Feb 2008) | 1 line

New base virtualBuffer.loadBuffer: if virtualBuffer pass-through mode is on, turn it off before loading the new document.
------------------------------------------------------------------------
r1682 | mdcurran | 2008-02-12 19:37:14 +1100 (Tue, 12 Feb 2008) | 2 lines

New base virtualBuffer._caretMovementScripthelper: only call _caretMovedToField if there is no extra keys waiting to be processed. This stops things getting very laggy when  holding down an arrow key when navigating a new virtualBuffer (as the virtualBuffer will not try to keep setting focus to any new field the caret lands in until the user has finnished moving down the page).

------------------------------------------------------------------------
r1681 | mdcurran | 2008-02-12 19:28:10 +1100 (Tue, 12 Feb 2008) | 1 line

New base virtualBufferTextInfo.getXMLFieldSpeech:  if reason is reason_focus, also speak the name of the field if there is one.
------------------------------------------------------------------------
r1680 | mdcurran | 2008-02-12 19:11:34 +1100 (Tue, 12 Feb 2008) | 1 line

New base virtualBuffer:  __init__ takes backendLibPath as a keyword argument so that subClasses can specify the backend to be used. Creating and destroying buffers have been moved in to the new methids, loadBuffer and unloadBuffer. loadBuffer as well as creating the buffer also initiates a sayAll.  the virtualBufferTextInfo class now supports moving by paragraph. Technically it moves to the next/previous block element, not necessarily an actual paragraph element. Various other changes to do with  file locations etc.
------------------------------------------------------------------------
r1679 | mdcurran | 2008-02-12 19:08:20 +1100 (Tue, 12 Feb 2008) | 1 line

CursorManager: add scripts for moving to next/previous paragraph.
------------------------------------------------------------------------
r1678 | mdcurran | 2008-02-12 17:09:19 +1100 (Tue, 12 Feb 2008) | 1 line

setup.py should include virtualBuffers_old, not virtualBuffers.
------------------------------------------------------------------------
r1677 | mdcurran | 2008-02-12 16:56:41 +1100 (Tue, 12 Feb 2008) | 8 lines

These changes are another try at  trying to be more true to real MSAA focus events and not making generalizations about how applications have bad focus events. 
 
*IAccessibleHandler.focus_manageEvent: Don't do the activeChild hack here, will do a better coded one in focus_winEventCallback. 
*IAccessibleHandler.focus_manageEvent: if this is a mozilla window, and this object is equal to the foregroundObject, but this isn't a foreground change, ignore the event. This is a direct approach to solving the problem where mozilla fires a focus event on its foreground when focus moves out of a document. Really, focus shouldn't be fired at all, but  at least this way we can fix it with out harming much else in NVDA. Note that previously we used to rely on the activeChild hack to fix this, which has been replaced with something else.
*IAccessiblehandler.focus_winEventCallback: if the MSAA childID is greater than 0, we should get the object at window,objectID,0, and then get its activeChild if it has one, and use that instead of just the object at window,objectID,childID. This is necessary now as focus_manageEvent no longer does the activeChild hack for all objects, but we still do want to do it for MSAA objects that are represented with a childID. Also check the sanity of the activeChild, if the activechild is equal to the object (such as with some toolbars...) don't use it, just use the childID normally. We can only do this, also if the focusEventQueue is empty, and also the queueHandler.interactiveQueue is empty. Otherwise, we may end up producing duplicate focus events for focus_manageEvent, and as someone holds down the arrows when fast moving through a list, the last focus event when they stop may be silenced due to it being a duplicate.
*IAccessiblehandler.focus_winEventCallback: if this MSAA event has a childID of 0, once  having the object, try and get its activeChild. If its childID is greater than 0, then use this instead of the object.
 

------------------------------------------------------------------------
r1676 | mdcurran | 2008-02-12 13:52:56 +1100 (Tue, 12 Feb 2008) | 1 line

Move virtualBuffer_new_wrapper to virtualBuffers/virtualBuffer_lib.py
------------------------------------------------------------------------
r1675 | mdcurran | 2008-02-12 13:51:30 +1100 (Tue, 12 Feb 2008) | 1 line

Move virtualBuffers_new to virtualBuffers.
------------------------------------------------------------------------
r1674 | mdcurran | 2008-02-12 13:49:54 +1100 (Tue, 12 Feb 2008) | 1 line

Move virtualBuffers to virtualBuffers_old. No longer import virtualBuffers in eventhandler, scripthandler, default appModule (its not needed, and is now invalid anyway). virtualBufferHandler: each classString (the path to the specific virtualBuffers) should have virtualBuffers_old. prepended to them. when doing __import__ no longer prepend virtualBuffers. as each classString contains the full path. These changes are so that old the old virtualBuffers are marked as  virtualBuffers_old, though they are still used by default as each classString points to one of them. Eventually virtualBuffers_new will be renamed to virtualBuffers, and it will be just a matter of edting the particular classString to point to one of the new ones, to use it.  Old virtualBuffers shouldn't in theory break with this change, though note that new virtualBuffers are still broken for now until the new ones are re-written to use the in-process dll that has been written.
------------------------------------------------------------------------
r1673 | mdcurran | 2008-02-12 13:45:34 +1100 (Tue, 12 Feb 2008) | 1 line

IAccessiblehandler: remove some old code (previously disabled with an if False:)
------------------------------------------------------------------------
r1672 | mdcurran | 2008-02-12 13:34:17 +1100 (Tue, 12 Feb 2008) | 1 line

New base virtualBuffer: use VBufClient instead of VBufStorage. Note that this commit still breaks new virtualBuffers -- this commit is unusable.
------------------------------------------------------------------------
r1671 | mdcurran | 2008-02-12 13:32:59 +1100 (Tue, 12 Feb 2008) | 1 line

virtualBuffer_new_wrapper: wrap VBufClient calls, not VBufStorage calls now. The new in-process virtualBuffer dll will use a backend to add and remove nodes, and now clients should use VBufClient to interact with storage, rather than using storage itself. Note this commit will break new virtualbuffers, this commit is unusable.
------------------------------------------------------------------------
r1670 | mdcurran | 2008-02-12 08:35:48 +1100 (Tue, 12 Feb 2008) | 1 line

Fix bug in Outlook Express / Windows Mail appModule where the focus would not be announced at all. event_gainFocus should call nextHandler() when its done ... sorry about that.
------------------------------------------------------------------------
r1669 | mdcurran | 2008-02-11 22:59:33 +1100 (Mon, 11 Feb 2008) | 18 lines


-e changes try to fix issues that occure when the focus object is removed due to a deletion or some other operating system event. 
If these changes work ok, this would make trac ticket #14 no longer necessary.
These changes need to be tested in lots of situations, but so far I have done some general testing, including in Windows Mail and things seem to be ok.

*IAccessibleHandler.winEventCallback: do not ignore duplicate focus events
*IAccessibleHandler.focus_winEventCallback: do not ignore focus events that have the same window,objectID,childID as the current focus object.
*IAccessible NVDAObject's _isEqual method: return false if the  iAccIdentityStrings do not match, rather than returning true if they do. Just because window,objectID,childID is the same does not garentee its the same object.
*IAccessible NVDAObject - next, previous, firstChild, lastChild, children and activechild properties: make sure to give all event params when making a new NVDAObject with the same MSAA object but different childID, previously it only gave event_objectID.
*IAccessiblehandler.winEventCallback: when an event_object_destroy is processed for the current focus object (the event params match) set the current focus to its first ancestor (parent). This firstly makes sure NVDA doesn't keep thinking that it has an invalid object for focus, and also it makes sure that if another focus event with the same childID comes along after this (i.e. a list item was deleted), the focus event will still properly be processed.
*IAccessibleHandler.focus_manageEvent: if the object being processed is equal to the current focus we would normally just return. However, we now check to see if the current focus has sane event params, and if not, and if this object has sane event params, then we give them to the current focus. The reason that the current focus may not have sane event params is because perhaps the focus event was high in the hyerarchy, and therefore activeChild was used quite a bit, and therefore the event params became unpredictable.
*Outlook Express / Windows Mail appModule - event_gainFocus: remove all code that was needed to make sure that deleting messages was spoken properly. In theory, NVDA should be able to now handle this all by itself. This also should fix the bug where deleting the second last message in the message list would then not announce the next item.
This line, and those below, will be ignored--

M    IAccessibleHandler.py
M    NVDAObjects/IAccessible/__init__.py
M    appModules/msimn.py

------------------------------------------------------------------------
r1668 | jteh | 2008-02-11 17:39:06 +1100 (Mon, 11 Feb 2008) | 1 line

Add missing import. Fixes exception when using page up and page down.
------------------------------------------------------------------------
r1667 | jteh | 2008-02-11 15:34:19 +1100 (Mon, 11 Feb 2008) | 3 lines

Introduce cursor managers, which provide caret navigation and selection commands  for a virtual text range. This separates and abstracts this support from the new virtual buffers so that it can be used elsewhere. Implements #24.
Use a cursor manager in the MSN Messenger history window to provide a virtual cursor. Users should now be able to use the standard cursoring, selection and copy keys in this window. Implements #25.

------------------------------------------------------------------------
r1666 | pvagner | 2008-02-11 05:57:14 +1100 (Mon, 11 Feb 2008) | 1 line

* updated russian language file and language strings for the NVDA installer.
------------------------------------------------------------------------
r1665 | mdcurran | 2008-02-11 04:09:35 +1100 (Mon, 11 Feb 2008) | 1 line

JABHandler.terminate: fix some indenting issues -- we should unregister all events if JAB was initialized, previously this code was inaccessible as it was tabbed in directly under the return for the case where it wasn't initialized. Also force the windowsAccessBridge dll to unload by using FreeLibrary from kernel32, and then setting bridgeDll, and the ctypes cdll WindowsAccessBridge property to None. Ctypes really should have a better way of unloading libraries, but this will do for now. These changes seem to fix the bug where exiting NVDA when a java application is running (this includes Open Office being loaded in memory on start-up but not being used) would cause NVDA to crash after the exit sound. Now java Acces Bridge has a chance to clean itself up properly.
------------------------------------------------------------------------
r1664 | jteh | 2008-02-10 12:41:33 +1100 (Sun, 10 Feb 2008) | 1 line

Apparently, tree view items *can* be selectable after all. Therefore, speak "not selected" for unselected tree view items.
------------------------------------------------------------------------
r1663 | jteh | 2008-02-08 16:20:52 +1100 (Fri, 08 Feb 2008) | 1 line

Don't announce "selected" for selectable tree view items. Tree view items really shouldn't have the selectable state anyway, but they do.
------------------------------------------------------------------------
r1662 | pvagner | 2008-02-08 06:17:13 +1100 (Fri, 08 Feb 2008) | 2 lines

* updated thai language file
* commented out thai language strings loading for the NVDA installer until thai espeak voice gets improved. closes ticket #26
------------------------------------------------------------------------
r1661 | mdcurran | 2008-02-07 08:43:44 +1100 (Thu, 07 Feb 2008) | 1 line

NVDAObjects.IAccessible: Remove the Toolbar IAccessible NVDAObject as all it contained was an event_gainFocus which forced focus to the activeChild. This code is no longer needed as IAccessiblehandler now automatically goes to the activechild for any focus. It also does it much nicer with out having to use api.processPendingEvents etc. This stops toolbars such as tha taskbar being announced twice in recent revisions. Also remove the event_gainFocus from List IAccessible NVDAObjects. Again, this forced focus to the activeChild... IAccessiblehandler does this itself now. This may improve performance a little in Windows explorer lists etc as api.processPendingEvents is no longer used each time a list is focused (e.g. when quicking going in and out of folders).
------------------------------------------------------------------------
r1660 | pvagner | 2008-02-07 06:08:13 +1100 (Thu, 07 Feb 2008) | 1 line

* miranda-im appmodule: fixed and improved _get_states method for mirandaIMContactList. Thanks jamie for forcing me to fix this. It had to be done before ages.
------------------------------------------------------------------------
r1659 | pvagner | 2008-02-07 04:28:51 +1100 (Thu, 07 Feb 2008) | 2 lines

* updated finish language file
* updated freench language file and language strings for the NVDA installer
------------------------------------------------------------------------
r1658 | jteh | 2008-02-06 11:28:49 +1100 (Wed, 06 Feb 2008) | 1 line

Oops. We need to restrict the selectable state check to lists when handling negative states as well. This stops menu items from speaking "not selected" again.
------------------------------------------------------------------------
r1657 | jteh | 2008-02-06 10:28:34 +1100 (Wed, 06 Feb 2008) | 1 line

Merge from svn.
------------------------------------------------------------------------
r1656 | jteh | 2008-02-06 10:28:07 +1100 (Wed, 06 Feb 2008) | 4 lines

Fix some bugs in the new state speaking code:
States that are silenced on focus also need to be silenced when speaking because of caret movement or say all.
If no real states information is passed, assume that the states provided are the real states. This fixes the exceptions in the new virtual buffers introduced by my recent commit.

------------------------------------------------------------------------
r1655 | jteh | 2008-02-06 10:27:46 +1100 (Wed, 06 Feb 2008) | 1 line

It seems that the selectable is only really reliable in lists (as opposed to only being unreliable in IAccessible menu items). Therefore, revert my last commit and instead, only rely on the selectable state for lists.
------------------------------------------------------------------------
r1653 | jteh | 2008-02-05 17:25:29 +1100 (Tue, 05 Feb 2008) | 1 line

It seems that IAccessible menu items have the selectable state set, even though they don't set selected for the highlighted item. Work around this brokenness by removing the selectable state from IAccessible menu items.
------------------------------------------------------------------------
r1652 | jteh | 2008-02-05 16:11:09 +1100 (Tue, 05 Feb 2008) | 6 lines

Add a selectable state and map it for IAccessible.
Move the determination of which positive and negative states to speak from simple dicts into functions: processPositiveStates() and processNegativeStates(). The dicts only allowed decisions to be made based on the role, whereas the functions can check both role and individual states.
This was done so that list items without the selectable state no longer speak "not selected". If the selectable state isn't set, the selected state isn't valid. Fixes #23.

Used this new functionality to silence the removal of the selection state on items which do not have the focused state. This stops "not selected" from being spoken in broken lists such as the page selection list in the options dialog of Mozilla Firefox/Thunderbird 3 where the state change occurs before the focus event is fired.

------------------------------------------------------------------------
r1651 | mdcurran | 2008-02-02 00:28:42 +1100 (Sat, 02 Feb 2008) | 1 line

IAccessible NVDAObjects' processgeckoDescription:  set this object's positionString to be made up of level w x of y contains z... if any of that info exists. Also fixed a bug in the regexps that pull level and positionString and cotnains from gecko descriptions, so that they are non-greedy, which stops the all but the last digit from being chopped off. i.e. in previous revisions  Gecko objects may have been announced as something like  0 of 40... where really it was 10 of 40.  All these changes now mean that in Thunderbird3, you can hear the position info on items in the message list, and folder tree. No doubt there are also other places this will now work properly.
------------------------------------------------------------------------
r1650 | mdcurran | 2008-02-02 00:23:58 +1100 (Sat, 02 Feb 2008) | 1 line

IAccessible2 NVDAObjects' value property:  only allow it to be what IAccessible2 gives for accValue if this NVDAObject does not have a custom TextInfo class. This means that in a lot of cases you will no longer hear the text twice for some IAccessible2 edit fields (such as the location bar in Firefox3.
------------------------------------------------------------------------
r1649 | pvagner | 2008-02-01 18:24:45 +1100 (Fri, 01 Feb 2008) | 1 line

* Thai readme by Amorn Kiattikhunrat
------------------------------------------------------------------------
r1648 | mdcurran | 2008-01-31 09:49:33 +1100 (Thu, 31 Jan 2008) | 1 line

IAccessiblehandler.focus_manageEvent: only check for an object's activechild if its not a listItem, or treeviewItem or menuItem -- objects we clearly know probably wouldn't have the fake focus issue as they're tipically leaf nodes. Seems to fix a problem where deleting a message in thunderbird3 the next/prev message wouldn't get announced.
------------------------------------------------------------------------
r1647 | mdcurran | 2008-01-30 10:07:58 +1100 (Wed, 30 Jan 2008) | 1 line

IAccessible NVDAObject's _get_activeChild: only try getting the active child if self.IAccessibleChildID is 0... if its not the question doesn't make any sence.  This now makes boolbar buttons speak again when they have focus, after the commit that fixed up all the focus ancestors announcing with Mozilla Gecko Chrome etc.
------------------------------------------------------------------------
r1646 | mdcurran | 2008-01-30 10:06:28 +1100 (Wed, 30 Jan 2008) | 1 line

IAccessiblehandler.focus_manageEvent: only cancel speech becauseof a foreground change if this object is actually real -- its not None or its not role_unknown.
------------------------------------------------------------------------
r1645 | mdcurran | 2008-01-30 09:25:47 +1100 (Wed, 30 Jan 2008) | 1 line

A quick fix to event_caret in the IAccessible2 NVDAObject class: do not force focus to change to the caret unless the caret and the current focus are in the same document. This stops focus sometimes jumping to weird places in Thunderbird3 just because a caret happened to move on some toolbar.
------------------------------------------------------------------------
r1644 | mdcurran | 2008-01-30 09:00:40 +1100 (Wed, 30 Jan 2008) | 1 line

IAccessiblehandler.focus_manageEvent: if this event is not because of a foreground change, try grabbing the object's activeChild. If it has one, and its not equal to the object (bad MSAA), then recursivly call focus_manageEvent with the active child and return. This forces NVDA to ignore any focus events fired by apps such as Firefox where the event isn't realy indicating a focus change, but just pointing out something along the way to a real focus change. e.g. a focus event is fired on the foreground window of Firefox3 when moving from the document to the location bar.  IAccessiblehandler.focus_manageEvent: if this is a foregroundChange, and if the the object has one or more children, then fire this as a focusEntered event, not a gainFocus event. eventHandler.py.manageEvent: for propertyPage objects, do not announce them for focusEntered if they do not have a name or description.  base NVDAObject: for event_focusEntered: do not announce the object's value or text, only name, role and description. All these changes make navigating the chrome of Mozilla Gecko apps much nicer as  unlabeled propertyPages are no longer announced (e.g. when mvoing between thunderbird 3 folders and message list), strange values on lists and treeviews are no longer announced (e.g. thunderbird 3 message list used to announce the date of the currently focused message as the value of the list for some odd reason.). This could break some other things, please report any strange focus issues that may appear in this review.
------------------------------------------------------------------------
r1643 | pvagner | 2008-01-29 04:10:28 +1100 (Tue, 29 Jan 2008) | 1 line

* Thai language strings for the NVDA installer/locale/th
------------------------------------------------------------------------
r1642 | mdcurran | 2008-01-27 04:05:26 +1100 (Sun, 27 Jan 2008) | 1 line

IAccessiblehandler.pumpAll, do not queue focus events, as anything exicuted in pumpAll is in the right thread anyway. This speeds up announcement of focus a little, and partially fixes some problems where state changes that occure on an object after the focus has changed to another one, still get announced  as NVDA processed the propertyChange before the focus -- in the wrong order, as the propertyChange was executed directly, but the focus event was queued. There still seems to be some times where events are still out of order, though possibly saving the time on focus and property change events and then ordering them in pumpAll may fix that.
------------------------------------------------------------------------
r1641 | mdcurran | 2008-01-27 02:23:15 +1100 (Sun, 27 Jan 2008) | 1 line

IAccessiblehandler: when winEventCallback detects that this event is a mouse shape change, after trying to get the NVDAObject that represents the change, check if its actually valid before trying to speak its name etc. This should stop errors when the mouse shape changes on some systems.
------------------------------------------------------------------------
r1640 | mdcurran | 2008-01-27 02:21:20 +1100 (Sun, 27 Jan 2008) | 1 line

Remove some debugging code from IAccessiblehandler.
------------------------------------------------------------------------
r1639 | mdcurran | 2008-01-27 02:20:43 +1100 (Sun, 27 Jan 2008) | 1 line

IAccessiblehandler: also limit events we know are associated with a caret, using the 100 ms propertyChange limit code. this would include IA2_TEXT_CARET_MOVED, and locationChange for OBJID_CARET (which wasn't previously limited since locationChange is changed to caret before it got there).
------------------------------------------------------------------------
r1638 | mdcurran | 2008-01-23 07:58:39 +1100 (Wed, 23 Jan 2008) | 1 line

Fix bug where speech from some IAccessible events was being silenced by key presses. E.g. changing the value of a combo box. Now in core, IAccessiblehandler.pumpAll is called after queuehandler.pumpAll.
------------------------------------------------------------------------
r1637 | mdcurran | 2008-01-22 21:16:38 +1100 (Tue, 22 Jan 2008) | 1 line

Fix bug where MSAA property changes such as state changes when toggling checkboxes would sometimes not be announced. To fix the propertyChangeEventCache in IAccessibleHandler has been revized. Rather than it being a dictionary, its now just a set. When winEventCallback processes a propertyChange or reorder event it ads the eventname,window,objectID,childID tuple to the set. In pumpAll, on each cycle the set is copied, temporarily, the real propertyChangeEventCache set is cleared, then  all the events in the copied set are passed trhough to NVDA. This way is not *as* limiting, as no actual time is checked, however, it is impossible for NVDA to get bogged down on many propertyChange events as there will always only be one event for any given object.
------------------------------------------------------------------------
r1636 | jteh | 2008-01-22 13:26:29 +1100 (Tue, 22 Jan 2008) | 1 line

Add .bzrignore for bzr users.
------------------------------------------------------------------------
r1635 | mdcurran | 2008-01-22 12:22:38 +1100 (Tue, 22 Jan 2008) | 1 line

Fix a bug in the MS Word document NVDAObject where AccessibleObjectFromWindow would seem to fail to retreave the native object model, most likely bcause too many NVDAObjects were asking MS Word for it. Rather than trying to get the object model on NVDAObject initialization, change the dom property (which holds the object model) so its a property that dynamically fetches the object model the first time its asked for, and then caches it for further use. This should fix issues noted in trac ticket 22 though more testing should be done first.
------------------------------------------------------------------------
r1634 | mdcurran | 2008-01-19 15:34:40 +1100 (Sat, 19 Jan 2008) | 1 line

IAccessiblehandler: instead of using the propertyChangeEventCache to act as a queue for the event, wating till pumpAll got to it before allowing manageEvent to send it on its way through NVDA, instead in winEventCallback, if this event doesn't exist in propertyChangeEventCache, then queue it, but still record the event and time in the cache. Then, pumpAll's job is only to remove old events that have been there for 100 ms or more, rather than also sending the event on its way through NVDA. This in theory stops events from being delayed by 100 ms before they are fired. However, it still enables the limiting of events to 100 ms.
------------------------------------------------------------------------
r1633 | pvagner | 2008-01-19 07:37:27 +1100 (Sat, 19 Jan 2008) | 1 line

* appmodule for media player classic adding status bar reporting
------------------------------------------------------------------------
r1632 | mdcurran | 2008-01-19 06:18:22 +1100 (Sat, 19 Jan 2008) | 1 line

IAccessibleHandler: limit property change events (such as valueChange, nameChange, descriptionChange, etc) and also reorder events, so that any given object fires an event at most once every 100 ms. This should greatly improve performance in Eclipse applications and other apps that fire a lot of redundant property change events. Closes trac ticket #21
------------------------------------------------------------------------
r1631 | pvagner | 2008-01-18 00:18:31 +1100 (Fri, 18 Jan 2008) | 1 line

* mapped a ATL:msctls_statusbar32 window class to the statusBar iaccessible NVDA object and added it also to the list of statusBar classes in the _get_statusBar() script. can be found e.g. in the foobar 2000 0.9.5.
------------------------------------------------------------------------
r1630 | mdcurran | 2008-01-16 20:20:18 +1100 (Wed, 16 Jan 2008) | 1 line

Fix bug caused by  commit 1628 where controls could no longer be activated in IAccessible virtualBuffers.
------------------------------------------------------------------------
r1629 | mdcurran | 2008-01-16 19:50:26 +1100 (Wed, 16 Jan 2008) | 1 line

New IAccessible virtualBuffers: fix bug caused by last commit where jumping to form fields no longer worked.
------------------------------------------------------------------------
r1628 | mdcurran | 2008-01-16 16:52:48 +1100 (Wed, 16 Jan 2008) | 11 lines

New virtualBuffers:
Enable NVDA to properly interact with controls and fields in frames and iframes. Also shrink the amount of information tagNodes for IAccessible objects need to carry around.
Note this commit has a bit of a problem with sometimes documents not re-rendering in Firefox or Thunderbird. In future commits I will properly make use of IAccessible2 document load events etc which should fix it for Gecko 1.9
 
*Updated virtualBuffer_new.dll to latest trunk. 
*Change virtualBuffer_new_wrapper to be compatible with changes in dll. i.e. instead of just an ID, a node is identified by both a docHandle and an ID -- allowing for APIs such as MSAA to provide both a windowHandle and a uniqueID, to keep track of nodes that represent IAccessible objects. Any functions with the word ID in their name are now changed to ave Identifier in their name instead.
*New base virtualBuffer and new IAccessible virtualBuffer: make sure all calls to the virtualBuffer library use docHandles and IDs, rather than just IDs.
*New IAccessible virtualBuffer's event_gainFocus: only reload the document if the focus event is for a document, and its not the same object as the virtualBuffer's rootNVDAObject, and make sure this object is not actually an object already in the virtualBuffer (it could be an embedded document).
*New IAccessible virtualBuffer: only include states as node properties if the state is actually set. Also change all searchableAttributesForNodeType code so that it should set the value of an attribute it *doesn't* want to exist on the node, to None. The dll now handles NULL values for this case -- means that IAccessible states to not have to be included in the node properties if they're off.
*New base virtualBuffer: rename the _activateID method to _activateField.

------------------------------------------------------------------------
r1627 | pvagner | 2008-01-16 07:43:10 +1100 (Wed, 16 Jan 2008) | 1 line

* updated brazilian portugueselanguage file
------------------------------------------------------------------------
r1625 | pvagner | 2008-01-15 08:31:03 +1100 (Tue, 15 Jan 2008) | 2 lines

* updated italian language file
* updated thai language file
------------------------------------------------------------------------
r1623 | mdcurran | 2008-01-14 11:42:38 +1100 (Mon, 14 Jan 2008) | 1 line

IAccessibleHandler.foreground_winEventCallback: when checking to see if this window is an ancestor of the current focus, first check if the focus is an IAccessible NVDAObject. Fixes an error when exiting java applications.
------------------------------------------------------------------------
r1621 | pvagner | 2008-01-14 10:08:35 +1100 (Mon, 14 Jan 2008) | 1 line

* Default app module: Catch an exception when trying to use review_currentCharacter to spel and review cursor points to no character.
------------------------------------------------------------------------
r1620 | pvagner | 2008-01-14 09:18:26 +1100 (Mon, 14 Jan 2008) | 3 lines

* added croatian language file and language strings for the NVDA installer (by Mario Percinic and Hrvoje Katic)
* updated spanish language file
* updated galician language file
------------------------------------------------------------------------
r1619 | mdcurran | 2008-01-13 22:40:00 +1100 (Sun, 13 Jan 2008) | 1 line

New IAccessible virtualBuffer:  include IAccessible2 object attributes as IAccessible2::attribute_x where x is the attribute name,  in the node properties added to the buffer. Also do not for now descend in to 'embed'  IAccessible objects as Adobe flash... or something seems to have major errors in its MSAA implementation causing terible errors in such things as Google Reader.
------------------------------------------------------------------------
r1618 | mdcurran | 2008-01-13 20:50:17 +1100 (Sun, 13 Jan 2008) | 1 line

catch an excpetion  when trying to get selection offsets for IAccessible2 text.
------------------------------------------------------------------------
r1617 | pvagner | 2008-01-13 09:04:44 +1100 (Sun, 13 Jan 2008) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1616 | mdcurran | 2008-01-12 23:40:26 +1100 (Sat, 12 Jan 2008) | 1 line

virtualBufferHandler.update: for  Gecko with only MSAA (not IAccessible2) only check state_readonly, don't worry about state_busy being there or not there, as for some reason focus events are being lost or something, and we're not being notified that the busy state was taken out.
------------------------------------------------------------------------
r1615 | mdcurran | 2008-01-12 17:21:21 +1100 (Sat, 12 Jan 2008) | 1 line

New virtualBuffers: announce going in an out of IFrames, announce list controls (as in not readonly html lists). New IAccessible virtualBuffer: when getting an IAccessible2 role, if its 0, then get the accRole instead.
------------------------------------------------------------------------
r1614 | mdcurran | 2008-01-12 17:19:53 +1100 (Sat, 12 Jan 2008) | 1 line

NVDA should speak internaFrame roles as 'IFrames's
------------------------------------------------------------------------
r1613 | mdcurran | 2008-01-12 16:02:44 +1100 (Sat, 12 Jan 2008) | 1 line

IAccessible2 NVDAObject: catch an exception when trying to get IAccessible2 role -- Gecko 1.9 currently has a tendency to through COM exceptions randomly for when asking for the IA2 role.
------------------------------------------------------------------------
r1612 | mdcurran | 2008-01-12 16:01:11 +1100 (Sat, 12 Jan 2008) | 1 line

IAccessiblehandler: map the 'iframe' accRole to controlTypes.ROLE_INTERNALFRAME - used in Gecko 1.8 and Gecko 1.9 apps until the IA2 internalFrame role is supported in the engine.
------------------------------------------------------------------------
r1611 | mdcurran | 2008-01-12 15:59:36 +1100 (Sat, 12 Jan 2008) | 1 line

New Gecko virtualBuffer: should import controlTypes as its needed by isAlive.
------------------------------------------------------------------------
r1610 | mdcurran | 2008-01-12 12:13:29 +1100 (Sat, 12 Jan 2008) | 1 line

New Gecko virtualBuffer: isAlive other than doing the same as IAccessible's isAlive, should also check that state_readonly is in the rootNVDAObject's states. If not, then the document is editable and we shouldn't use a virtualBuffer here. This fixes a bug in NVA with Thunderbird3 where replying to a message in plain text uses a virtualBuffer as as the document first appears, it has the readonly state set.
------------------------------------------------------------------------
r1609 | mdcurran | 2008-01-12 10:53:33 +1100 (Sat, 12 Jan 2008) | 1 line

speech.speakFormattedTextWithXML: no longer announce blank lines when in sayAll -- when in new virtualBuffers etc.
------------------------------------------------------------------------
r1608 | mdcurran | 2008-01-12 10:31:53 +1100 (Sat, 12 Jan 2008) | 1 line

VirtualBufferHandler.update: catch a mysterious exception when trying to remove old virtualBuffers where runningTable seems to have been mutated with in the for loop -- just log it as a warning. Also grab windowClassName, role and states properties from the NVDAObject, and then use these to work out which virtualBuffer should be used, rather than constantly calling the role and states properties etc. Also do not allow the use of Gecko virtualBuffers if the document NVDAObject has the state_busy state set - we'll receive a focus event when it becomes not busy for a chance to load virtualBuffers anyway.
------------------------------------------------------------------------
r1607 | pvagner | 2008-01-12 02:53:14 +1100 (Sat, 12 Jan 2008) | 2 lines

* updated finish language file
* updated traditional chinese language file as well as traditional language strings for the NVDA installer
------------------------------------------------------------------------
r1606 | mdcurran | 2008-01-11 18:04:00 +1100 (Fri, 11 Jan 2008) | 1 line

New virtualBuffers: when jumping or focusing, use reason_focus, not reason_caret. When announcing links, buttons, radioButtons and checkboxes, when arroing by line say the role before the text, but when tabbing and jumping etc say it after. This is so its much clearer where the control starts, when the caret is placeda t the beginning of a line. Also now say role, states for most things, only links should say states, role.
------------------------------------------------------------------------
r1605 | mdcurran | 2008-01-11 14:59:01 +1100 (Fri, 11 Jan 2008) | 1 line

speech.getSpeechTextForProperties: only try making negativeStates using states if states is not None. Rather than setting states to set() if none where provided, set it to None. This stops negative states such as 'not checked' being spoken for a checkBox if states wan't actually asked for at all.
------------------------------------------------------------------------
r1604 | mdcurran | 2008-01-11 14:35:14 +1100 (Fri, 11 Jan 2008) | 1 line

New IAccessible virtualBuffers: catch an exception when trying to get the oldID in event_gainFocus -- sometimes happens if a new page loads whos length does not reach where the caret was positioned on the last page.
------------------------------------------------------------------------
r1603 | mdcurran | 2008-01-11 14:29:26 +1100 (Fri, 11 Jan 2008) | 1 line

speech.speakObjectProperties: the for loop that compares new to old properties should use the intercection of the set of newPropertyValues and the set of oldCachedPropertyValues, not just newPropertyValues. Stops a few random errors when values change before a focus change or something.
------------------------------------------------------------------------
r1602 | mdcurran | 2008-01-11 13:57:49 +1100 (Fri, 11 Jan 2008) | 1 line

New base virtualBuffer: added pageUp and pageDown scripts for moving up and down the buffer by the configurable option of linesPerPage.
------------------------------------------------------------------------
r1601 | mdcurran | 2008-01-11 09:27:09 +1100 (Fri, 11 Jan 2008) | 1 line

mouseHandler.initialize: check to see if we get a valid NVDAObject from the mouse point, if not, then set it to the desktop object.
------------------------------------------------------------------------
r1600 | mdcurran | 2008-01-11 09:19:17 +1100 (Fri, 11 Jan 2008) | 1 line

Remove level and contains properties from NVDAObjects, as they are very specific to treeviews. Instead now the sysTreeview32 NVDAObject announces the level as it changes with focus, and also announces number of items when a branch is expanded, both using speakMessage, not speakObjectProperties. Some work will have to be done to get similar level support for Gecko and MSN treeviews, but this is good for now. This also means tht level and num items are now translatable.
------------------------------------------------------------------------
r1599 | mdcurran | 2008-01-11 08:50:18 +1100 (Fri, 11 Jan 2008) | 1 line

Use unicode() instead of str() when forcing particular values to strings. May fix some errors in treeviews etc for some languages.
------------------------------------------------------------------------
r1598 | mdcurran | 2008-01-11 07:27:45 +1100 (Fri, 11 Jan 2008) | 1 line

New IAccessible virtualBuffer: if the caret moves to an offset that is in the document but not in any other field, do not set focus to the object. Stops the document NVDAObject being announced  in such places as near the bottom of the Google News page.
------------------------------------------------------------------------
r1597 | mdcurran | 2008-01-11 06:39:55 +1100 (Fri, 11 Jan 2008) | 1 line

Make sure to set reason to reason_caret when calling speech.speakFormattedTextWithXML in reportCurrentLine script in default appModule and when focus changes are read in new IAccessible virtualBuffer.
------------------------------------------------------------------------
r1596 | pvagner | 2008-01-11 03:27:58 +1100 (Fri, 11 Jan 2008) | 3 lines

* updated french language file
* small correction to a phrase in new virtual buffer. we haven't visited and unvisited formfields :-)
* updated slovak language file
------------------------------------------------------------------------
r1595 | mdcurran | 2008-01-10 20:49:28 +1100 (Thu, 10 Jan 2008) | 1 line

Add next and previous form field scripts to new virtualBuffers. new IAccessible virtualBuffer: don't have to convert constants to strings in _searchableAttribsForNodeType - virtualBuffer_new_wrapper will do that for us now -- saves a bit of line space. New virtualBuffer jump scripts: fix some typos where the nextLink and previousLink script docStrings were being overridden for next and prev visited and unvisited.
------------------------------------------------------------------------
r1594 | mdcurran | 2008-01-10 20:46:28 +1100 (Thu, 10 Jan 2008) | 1 line

virtualBuffer_new_wrapper: force anything that isn't None to a string before passing it to the virtualBuffer library, in regards to passing attribute values.
------------------------------------------------------------------------
r1593 | mdcurran | 2008-01-10 20:17:36 +1100 (Thu, 10 Jan 2008) | 1 line

SayAllHandler should set reason to reason_sayAll when calling speech.speakFormattedTextWithXML.
------------------------------------------------------------------------
r1592 | mdcurran | 2008-01-10 19:38:33 +1100 (Thu, 10 Jan 2008) | 1 line

New virtualBuffers: instead of _jumpToNodeType speaking a message if it can't jump to a node type, instead return False -- return True if it did jump. In all of the jump scripts, speak a message if the jump could not be made. This message is translatable so now nodeType and direction by themselves are not.
------------------------------------------------------------------------
r1591 | mdcurran | 2008-01-10 19:11:36 +1100 (Thu, 10 Jan 2008) | 1 line

New IAccessible virtualBuffer TextInfo's getXMLFieldSpeech: copy the attrs dict before mutating it. The dict is exactly the same dict that is cached, so mutating it would make it compare different. This fixes a bug where arrowing by character would announce exiting and entering all field ancestors even though they didn't change.
------------------------------------------------------------------------
r1590 | mdcurran | 2008-01-10 18:54:07 +1100 (Thu, 10 Jan 2008) | 1 line

Fix bug in new virtualBuffers where they would not render for any app that didn't have IAccessible2 support.
------------------------------------------------------------------------
r1589 | mdcurran | 2008-01-10 17:41:17 +1100 (Thu, 10 Jan 2008) | 16 lines

Some big changes to new VirtualBuffers which move a lot of field announcing logic out of the IAccessible virtualBuffer in in to the base virtualBuffer.
For the most part there should be no noticable difference to the user, but this allows future virtualBuffers such as for Internet Explorer etc to take advantage of already written code.
However, the user will notice the scripts for visited and unvisited links :)

*_fillVBufHelper in new IAccessible virtualBuffer prepends an IAccessible or IAccessible2 namespace to any attrib names of attribs that would have to be converted in some way before NVDA can use them on the other end. E.g. role becomes IAccessible::role, as role needs to be later converted from an IAccessible role to a controlTypes role. However something like keyboardShortcut doesn't contain the namespace as its a simple string anyway.
*_fillVBufHelper in new IAccessible virtualBuffer adds individual state attributes for each state, giving them a value of "1" or "0". This means there is a large amount of attributes being passed in the xml, though this is the only way it can be allowed that jumping code for quick key navigation, can tell the use findBufferFieldIDByProperties to find visited and unvisited links etc.
*Created a getXMLFieldSpeech method on the new base virtualBuffer TextInfo class, and added logic that resembed what used to be in new IAccessible virtualBuffer TextInfo's getXMLFieldSpeech, though this time converted to using controlTypes constants. It also makes use of speech.getSpeechTextForProperties, rather than having to manually process roles and states etc itself. It also makes use ot the new _chardCount, _indexInParent and _parentChildCount attribs provided by the virtualBuffer library, rather than an accessibility API having to calculate all that while rendering, also leaving the possibility open that they could change after the render.
*TextInfo.getXMLFieldSpeech now takes a reason keyword argument.
*All caret moving scripts in new base virtualBuffers make sure to set reason to reason_caret in speech.speakFormattedTextWithXML.
*New IAccessible virtualBuffer TextInfo's getXMLFieldSpeech: just convert any IAccessible / IAccessible2 namespaced attribs to NVDA ones and add them back in with out the namespace. Then call the base getXMLFieldSpeech.
*New IAccessible virtualBuffer's _searchableAttribsForNodeType: make sure to use namespaced attribs where necessary.
*New IAccessible virtualBuffer's _searchableAttribsForNodeType: support visitedLink and unvisitedLink.
*New base virtualBuffer: add scripts for jumping to next/prev visited/unvisited links (v, shift+v, u, shift+u).
*Updated virtualBuffer_new.dll to latest trunk
*speech.silentPositiveStatesOnFocus: add state_linked to the default set, remove role_link as the default should handle it.

------------------------------------------------------------------------
r1587 | mdcurran | 2008-01-10 13:18:05 +1100 (Thu, 10 Jan 2008) | 1 line

Fix bug in WinWord NVDAObject where backspace or sayAll would not work. There was a typo in its TextInfo.move. Hopefully this should fix the problem, though I havn't actually tested yet.
------------------------------------------------------------------------
r1586 | mdcurran | 2008-01-10 00:43:20 +1100 (Thu, 10 Jan 2008) | 1 line

Added a MenuItem NVAObject to the IAccessible NVDAObjects. It is mapped to #32768,role_system_menuItem. This class simply overrides _get_description, and checks to see if name and description are different, if so it returns description, but if not it returns None.  the MenuItem nVDAObject is also mapped to ToolbarWindow32,role_system_menuItem. Many menus tend to have identical name and description properties. speech.speakObjectProperties used to detect this kind of thing, but really the NVDAObject should do it.
------------------------------------------------------------------------
r1585 | mdcurran | 2008-01-10 00:40:21 +1100 (Thu, 10 Jan 2008) | 10 lines

Some changes to split away the logic that converts object property values  such as name, role, value, states, description, keyboardShortcut and positionString etc from speakObjectProperties in to its own function so that it can be also used in virtualBuffer code, rather than just for NVDA objects.

*Added speech.getSpeechTextForProperties: it takes a reason constant, and other keyword arguments who's names are the properties, and values are the property values, of what you want to speak. It processes properties such as role and states, converting from controlTypes constants to strings, and also manages negativeStates etc. It knows name, role, value, states, negativeStates, description, keyboardShortcut and positionString, any other properties it can also process, but it includes the propertie's name and value, not just value for those ones. e.g. level=1 will produce the text "level 1" as it doesn't know the level property specifically.
Not only will this function be used by speech.speakObjectProperties, but it will be able to be used in the new virtualBuffers, in getXMLFieldSpeech, rather than getXMLFieldSpeech having to invent its own logic for handling object properties.
*speech.speakObjectProperties no longer takes specific keyword arguments, but any keyword argument through a **kwargs. It pretty much takes the properties listed in the kwargs, makes sure they're true, grabs the property value from the actual NVDAObject, and passes it along to getSpeechTextForProperties, and then speaks the returned text. However, it also caches the property values it collects back on the NVDAObject in _speakObjectPropertiesCache. If reason is REASON_CHANGED, then it compares the new values to the cached values and only speaks changed ones, plus it also does proper comparison for states, so that only changed states are announced -- it also works out any states that have been turned off and also passes them with the other properties to getSpeechTextFromProperties, as 'negativeStates'.
*Base NVDAObject: remove the _oldStates, _oldName, _oldValue and _oldDescription properties as they are not needed any more. This is a good thing as they no longer need to be initialized in __init__ possibly wasting time. 
*Base NVDAObject: event_stateChange, event_valueChange, event_nameChange and event_descriptionChange now don't bother with caching or comparing values themselves, as speakObjectProperties does it for them.
*SysTreeview32 NVDAObject.event_stateChange: make sure to check the states property, and the _speakObjectPropertiesCache property on self, to find out if the 'expanded' state has been turned on. If so, then it needs to announce the contained bla items message.
*speech.speakObject: after calling speakObjectProperties, grab a textInfo object at the selection/caret, and speak either the selection or readingChunk. Only do this if the NVDAObject's TextInfo class is not the base NVDAObject TextInfo class, and the reason is not REASON_SAYALL, REASON_CARET OR REASON_MOUSE. This code used to be in speakObjectProperties, however this really isn't technically a property.

------------------------------------------------------------------------
r1584 | mdcurran | 2008-01-09 09:49:41 +1100 (Wed, 09 Jan 2008) | 1 line

eSpeak synthDriver: catch exceptions from nvWave.WavePlayer.feed, and just write a warning to the log file, rather than causing the error sound to play etc. These exceptions shouldn't happen, but  they occasionaly do.
------------------------------------------------------------------------
r1583 | pvagner | 2008-01-09 03:00:10 +1100 (Wed, 09 Jan 2008) | 5 lines

New VirtualBuffers:
*Added two more quick navigation scripts to the new base virtualBuffers: nextLink and previousLink (k and shift+K respectively).
*New IAccessible virtualBuffer: in _searchableAttribsForNodeType, if link is given as nodeType, then return a suitable dict.
* made the nodeType and  direction translatable in the few quick navigation script which already exist to show this shal be reworked for ability to have accurate translations to the various languages. It's a pity because this code looks really nice.
* also added a few doc strings to a few scripts in the new base virtualBuffers
------------------------------------------------------------------------
r1582 | mdcurran | 2008-01-08 21:11:50 +1100 (Tue, 08 Jan 2008) | 8 lines

New VirtualBuffers:
*Updated virtualBuffer_new.dll to latest trunk
*Changed virtualBuffer_new_wrapper to be compatible with latest virtualBuffer.dll -- VBufStorage_findBufferFieldIDByProperties takes a startOffset, not a startID, also catch some errors.
*New base virtualBuffer: add a _searchableAttribsForNodeType method, which takes two arguments: nodeType (a string such as "heading", "paragraph", "formField" etc - depends on the quick navigation scripts), and direction, which is either "next" or "previous". This should be overridden in subclasses, and should return a dict of attribute names to lists of possible values each attribute can be.
*Added the first two quick navigation scripts to the new base virtualBuffers: nextHeading and previousHeading (h and shift+h respectivly).
Many more scripts will be added over time, but this was the first code to really test searching nodes by properties in the new virtualBuffer library.
*New IAccessible virtualBuffer: override _searchableAttribsForNodeType, and if "heading" is given as nodeType, then return a suitable dict.

------------------------------------------------------------------------
r1577 | mdcurran | 2008-01-07 22:29:32 +1100 (Mon, 07 Jan 2008) | 13 lines

New virtualBuffers:
*Updated virtualBuffer_new.dll to latest trunk
*Changed virtualBuffer_new_wrapper.py so that it works with the API changes in the virtualBuffer library:
-VBufStorage_getFieldIDFromBufferOffset, and VBufStorage_findBufferFieldByProperties, from the dll now pass back ID by reference, so that the return code can be used for error checking.
-VBufStorage_addTextNodeToBuffer no longer takes a lineBreakOffsets parameter
-VBufStorage_getBufferLineOffsets now takes two extra parameters: maxLineLength and useScreenLayout.
*New base virtualBuffer now passes maxLineLength from NVDA config to VBufStorage_getBufferLineOffsets, so that the virtualBuffer library can give back line lengths that do not exceed this length.
*new base virtualBuffer has a toggleScreenLayout script (insert+v) which toggles screen layout on and off for virtualBuffers that support it. 

These changes now fix a bug in the new virtualBuffers where even though maxLineLength could be configured, and long paragraphs with no links etc would seem to be correct, paragraphs that did contain links and other fields, would cause line lengths sometimes much longer than the configured length. The reason for this was that NVDA would format each bit of text before adding it to the buffer, obviously not being able to take in to account the fact that two peaces of text could sit beside each other causing long lines. Now the VirtualBuffer library itself manages line lengths and screen layout at runTime when asked for line offsets.

 

------------------------------------------------------------------------
r1575 | mdcurran | 2008-01-07 09:13:21 +1100 (Mon, 07 Jan 2008) | 1 line

New base virtualBuffer: in if virtualBufferPassThrough mode is on when loading a document, turn it off first.
------------------------------------------------------------------------
r1574 | mdcurran | 2008-01-07 08:53:55 +1100 (Mon, 07 Jan 2008) | 1 line

New IAccessible virtualBuffer: stop negating IAccessible2 uniqueIDs as  Gecko 1.9 finally gives us correct ones. Note though you need to be using Firefox3 or any Gecko trunk app from Jan 6 onwards, for NVDA to be able to activate controls etc in the new virtualBuffers again.
------------------------------------------------------------------------
r1571 | mdcurran | 2008-01-06 19:12:53 +1100 (Sun, 06 Jan 2008) | 11 lines

The following changes improve NVDA's ability to match a winEvent with an already instanciated IAccessible NVDAObject. They also may improve equality checks of IAccessible NVDAObjects.
This almost fixes all of trac ticket 18, though use of IAccIdentity should be used a bit more if its found to be definitly faster than WindowFromAccessibleObject.

*IAccessible NVDAObjects now take  event_windowHandle, event_objectID and event_childID as extra optional instanciation arguments. IAccessibleObjectID and IAccessibleOrigChildID arguments have been removed.
The IAccessible NVDAObject also sets these event parameters as attributes on itself for later use.
*NVDAObjects.IAccessible.getNVDAObjectFromEvent now provides event_windowHandle, event_objectID and event_childID to the IAccessible NVDAObject it is instanciating, rather than windowHandle, IAccessibleObjectID and IAccessibleOrigChildID.
*IAccessibleHandler, when ever it has to compare an event with an instanciated IAccessible NVDAObject, uses the event_windowhandle, event_objectID and event_childID attributes. It used to use windowHandle, IAccessibleObjectID and IAccessibleOrigChildID.
*Equality checks of IAccessible NVDAObjects now also check the location of the object first before role or name. 
*Event_caret in IAccessible2 NVDAObjects now only changes focus if its definitly clear that this is a sane caret move... in that it checks to see if the caret is not placed over an imbedded object character ... if it was, then we'd hopefully receive another caret event lower down anyway. This stops a few problems in Firefox3 where focus ancestors sometimes would get announced for no reason... due to the caret apparently moving up there.
*IAccessibleHandler.manageEvent:  after instanciating an IAccessible NVDAObject, compare it against the current focus object. Although the event itself was already compared against it, this doubly makes sure that two different focus events arn't producing the same object.

------------------------------------------------------------------------
r1570 | mdcurran | 2008-01-06 14:40:00 +1100 (Sun, 06 Jan 2008) | 1 line

Fix bug in Outlook Express / windows Mail appModule where focus would move to the bottom of an html message when first opened. When opening a plain text message, the app does not place focus in the edit field, but leaves it on the top window which is bad. NVDA emulates a shift+tab in order to fix it up, though doing this on an html message causes problems. Only do the shift+tab if the top window still has the focused state.
------------------------------------------------------------------------
r1569 | mdcurran | 2008-01-06 13:28:48 +1100 (Sun, 06 Jan 2008) | 1 line

Fix typo in charHook.py, unhookWinEvent not unHookWinEvent
------------------------------------------------------------------------
r1568 | mdcurran | 2008-01-06 02:14:25 +1100 (Sun, 06 Jan 2008) | 1 line

charHook.py, charHook.terminate: unhook the winEvents we hooked in charHook.initialize. This probably still won't fix the charHook.dll being locked after NVDA exit, though we should do this anyway.
------------------------------------------------------------------------
r1567 | mdcurran | 2008-01-06 00:37:08 +1100 (Sun, 06 Jan 2008) | 1 line

New Adobe virtualBuffer: support event_valueChange, so that the virtualBuffer is re-rendered when changing pages.
------------------------------------------------------------------------
r1566 | mdcurran | 2008-01-05 18:20:14 +1100 (Sat, 05 Jan 2008) | 1 line

New virtualBuffers: added adobe.py, which contains an Adobe class which is empty, but inherits from IAccessible. Tweeks will have to be made to this class in future so it properly supports page changes etc, but it at least should load the currently visible content.
------------------------------------------------------------------------
r1565 | mdcurran | 2008-01-05 18:16:36 +1100 (Sat, 05 Jan 2008) | 1 line

virtualBufferHandler: Make sure Adobe virtualBuffers get loaded when Adobe reader is set to  show a page at a time via its accessibility interfaces. the root IAccessible object has a role of page, not document in this case.
------------------------------------------------------------------------
r1564 | mdcurran | 2008-01-05 17:58:37 +1100 (Sat, 05 Jan 2008) | 1 line

IAccessibleHandler.normalizeIAccessible: don't try to query interface to IAccessible2 first, but just try the whole query interface to IServiceProvider and if that worked query service to IAccessible2. This may speed things up for non-IAccessible2 objects - it shouldn't really slow down for IAccessible2 objects.
------------------------------------------------------------------------
r1563 | mdcurran | 2008-01-05 17:18:51 +1100 (Sat, 05 Jan 2008) | 1 line

new virtualBuffers: adding gecko.py again, this time all it does is contains an empty Gecko class that inherits from IAccessible.
------------------------------------------------------------------------
r1562 | mdcurran | 2008-01-05 17:17:33 +1100 (Sat, 05 Jan 2008) | 1 line

New virtualBuffers: renamed gecko.py to IAccessible.py, renamed the Gecko virtualBuffer to IAccesible. The reason for this is because so far this virtualBuffer is quite generic to IAccessible/IAccessible2, and most of the code will not just be used in Gecko, but also in Adobe Reader, and the Opera web browser. A new gecko.py will be committed after this.
------------------------------------------------------------------------
r1561 | mdcurran | 2008-01-05 17:02:04 +1100 (Sat, 05 Jan 2008) | 1 line

New gecko virtualBuffer: catch exceptions when trying to activate an ID or focus to an ID. Also improve logic in regards to whether event_gainFocus should speak and update caret location due to a focus change.
------------------------------------------------------------------------
r1560 | mdcurran | 2008-01-05 15:21:01 +1100 (Sat, 05 Jan 2008) | 1 line

New base virtualBuffer: fixed bug where selecting to bottom of document (control+shift+home) would not select the very last character.
------------------------------------------------------------------------
r1559 | mdcurran | 2008-01-05 14:53:21 +1100 (Sat, 05 Jan 2008) | 1 line

Update virtualBuffer_new.dll to latest trunk and also temporarily remove error check from getFieldIDFromBufferOffset in virtualBuffer_new_wrapper as it can return negative IDs.
------------------------------------------------------------------------
r1558 | mdcurran | 2008-01-05 14:40:10 +1100 (Sat, 05 Jan 2008) | 1 line

queueHandler.queueFunction: when logging a warning about a queue being full, reconstruct the function signature i.e. func(arg1,arg2...,kwarg1name=kwarg1val,kwarg2name=kwarg2val...) and provide that text in the warning. Previously it only included the function's name. For something like manageEvent, it was very hard to work out exactly what type of event it was.
------------------------------------------------------------------------
r1557 | mdcurran | 2008-01-05 12:19:04 +1100 (Sat, 05 Jan 2008) | 1 line

New gecko virtualBuffer: When moving around, the focus is automatically given to the control under the caret, if it is actually allowed to get focus. Now pressing enter or space on  fields either activates them (i.e. accDoDefaultAction) or toggles virtualBufferPassThrough to on so that you can interact with that control.
------------------------------------------------------------------------
r1556 | mdcurran | 2008-01-05 12:16:51 +1100 (Sat, 05 Jan 2008) | 1 line

New base virtualBuffer: rename activatePosition method to _activateID. add a _caretMovedToID method which takes an ID as a parameter. sub classes should override this to make sure that focus is always in sync with the virtualBuffer caret.
------------------------------------------------------------------------
r1555 | pvagner | 2008-01-05 07:46:25 +1100 (Sat, 05 Jan 2008) | 4 lines

* Since we are copying to the clipboard a lot added copyToclip() function to the api.py. Make all the copying routines to use this function.
* made navigatorObject_current script working with NVDATextInfo enabled objects such as edit fields when copying and spelling the text. It no longer crashes NVDA when its shortcut key is pressed multiple times in some windows.
* test_navigatorWindowInfo (NVDA+F1) can copy control id, class name and internal text to the clipboard when pressed twice.
* mapped TPasswordEdit window class to the edit.edit iaccessible NVDAObject. It is frequently used in NSIS-made installers.
------------------------------------------------------------------------
r1554 | mdcurran | 2008-01-04 22:11:43 +1100 (Fri, 04 Jan 2008) | 1 line

New base virtualBuffer: added selection scripts. shift+right, shift+left, control+shift+right, control+shift+left, shift+home, shift+end, control+shift+home, control+shift+end, control+a. Also added a copyToClipboard script (control+c). CopyToClipboard still needs to be re-thought a little as its possible to get text that seems like its missing spaces between some words, mainly if they happen to be two links next to each other etc. So far line breaks are inserted in to the text where necessary, but word spacing will still need to be looked in to.
------------------------------------------------------------------------
r1553 | mdcurran | 2008-01-04 22:04:32 +1100 (Fri, 04 Jan 2008) | 13 lines

This commit removes the moveByUnit method from TextInfo classes, and replaces it with a move method, which performs a bit differently from the old one.
Like the old one, move takes a unit parameter and a direction parameter, but rather than start and end keyWords, it just takes an optional endPoint keyword which can either be "start" "end" or not specified at all.
The old method used to always collapse the range and move, if start or end were false, it would just restore the value for the false one at the end. This worked in some cercomstances, but was very unlike how MS Word and MS HTML's move methods worked, plus it  hindered implementing text selection in the new virtualBuffers as selection needs to be completely managed by NVDA.
The new method is different in that if an endPoint is specified, then it simply moves *that* endPoint by the unit and direction. If no endPoint is specified, then it collapses the range and moves both endPoints.

*Added a move method to the base TextInfo class in textHandler. This method just raises NotImplementedError, it of course has to be overridden in a sub class. For some odd reason, moveByUnit didn't exist in the base TextInfo class, so it didn't have to be removed anyway.
 *Removed moveByUnit, and added move, to the base NVDAObject TextInfo class AKA the base offset-based TextInfo class. At this point in time, if you call move, with endPoint specified as either start or end, and the move forces that endPoint to cross over the other one, at the end the start and end are reversed to make sure that start is always less than or equal to end. Perhaps in future there should be an argument added to move that says what exactly *should* happen if the endPoints cross, but fore now its evident that the new virtualBuffer selection code will need crossings to be reversed.
*Removed moveByUnit, and added move, to the MSHTML TextInfo class.  
*Removed moveByUnit, and added move, to the WinWord TextInfo class.
*Changed the default appModule review scripts, sayAllHandler, and the new base virtualBuffer class, to use move, not moveByUnit. 

Please report any strange behaviour that may occure after this commit to do with reviewing text or performing sayAll, as re-writing the move logic affects a very large part of NVDA.

------------------------------------------------------------------------
r1552 | pvagner | 2008-01-04 03:07:26 +1100 (Fri, 04 Jan 2008) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1551 | pvagner | 2008-01-03 18:24:30 +1100 (Thu, 03 Jan 2008) | 1 line

* updated hungarian language file
------------------------------------------------------------------------
r1550 | mdcurran | 2008-01-03 12:24:42 +1100 (Thu, 03 Jan 2008) | 1 line

New base virtualBuffer: in fillVBuf, if the _speech_XMLCache attribute exists on the virtualBuffer object (as speech.speakFormattedTextWithXML has been called before) then remove it before re-rendering so that when NVDA starts to read after the new content is loaded, it doesn't mention that the cursor has moved out of a list or another control etc.
------------------------------------------------------------------------
r1549 | mdcurran | 2008-01-03 12:19:16 +1100 (Thu, 03 Jan 2008) | 1 line

New base virtualBuffer: added a refreshBuffer script (insert+f5). This can be used at any time to re-render the buffer. Also changed the fillVBuf method so that it *always* starts the sayAll from the top of the document, not where the caret currently is. This should stop it from seeming to read from an arbitrary location in the page sometimes after rendering.
------------------------------------------------------------------------
r1548 | mdcurran | 2008-01-03 10:37:17 +1100 (Thu, 03 Jan 2008) | 1 line

Fix up the doc string for compareEndPoints so that it does not talk about offsets. compareStart and compareEnd used to return a difference in offsets, but compareEndPoints only returns -1, 0 or 1, which is how mos other  comparisons work outside of NVDA.
------------------------------------------------------------------------
r1547 | mdcurran | 2008-01-03 10:35:17 +1100 (Thu, 03 Jan 2008) | 1 line

review scripts in default appModule used compareStart and compareEnd, change to use compareEndPoints.
------------------------------------------------------------------------
r1546 | mdcurran | 2008-01-03 10:25:33 +1100 (Thu, 03 Jan 2008) | 9 lines

*Removed compareStart and compareEnd methods from TextInfo classes, and replaced them with compareEndPoints, which takes another textInfo object and a string indicating which ends to compare: "startToStart" "startToEnd" "endToStart" "endToEnd". These strings are equivalent to the strings that mshtml textRange objects use with their compareEndPoints method. This change slightly cuts down on the amount of code used for comparison for some objects.
*Added a setEndPoint method to TextInfo classes. This method takes another TextInfo object and a string indicating which end to set, and from what end to take the value: "startToStart" "startToEnd" "endToStart" "endToEnd".
For example, if you wanted to set the start of object x, to the end of object y, you would do x.setEndPoint(y,"startToEnd")
Again setEndPoint takes the same strings that the setEndPoint in mshtml range objects does.
*Greatly improve speech.speakSelectionChanges so that it takes advantage of the new setEndPoint method. This means speakSelectionChanges no longer has to keep calling moveByUnit(textHandler.UNIT_CHARACTER,...) to stretch a textInfo object to represent the selection change.

All these changes make TextInfo objects even more abstract in regards to start and end, as in now TextInfo objects for mshtml no longer has to depend on disecting bookmarks to try and work with offsets when calculating selections, its all now pure start end logic.
Indirectly, these changes were also so that it will be easier to implement text selection in the new virtualBuffers.

------------------------------------------------------------------------
r1545 | pvagner | 2008-01-03 05:19:00 +1100 (Thu, 03 Jan 2008) | 1 line

* updated french language file
------------------------------------------------------------------------
r1544 | pvagner | 2008-01-03 01:12:37 +1100 (Thu, 03 Jan 2008) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1543 | pvagner | 2008-01-02 23:32:30 +1100 (Wed, 02 Jan 2008) | 2 lines

* updated slovak language file
* updated finish language file
------------------------------------------------------------------------
r1542 | mdcurran | 2008-01-02 13:35:14 +1100 (Wed, 02 Jan 2008) | 1 line

New base virtualBuffer class: cut down on amount of code for the caret movement scripts, now the _caretMovementScriptHelper method can handle mvoing to top/bottom of document and start/end of line etc, as well as normal unit movements etc.
------------------------------------------------------------------------
r1541 | pvagner | 2008-01-02 09:28:23 +1100 (Wed, 02 Jan 2008) | 1 line

* when changing voice using synth settings ring user dictionary is also changed accordingly (Patch by Rui Batista)
------------------------------------------------------------------------
r1540 | pvagner | 2008-01-02 07:48:45 +1100 (Wed, 02 Jan 2008) | 2 lines

* updated spanish language file
* updated galician language file
------------------------------------------------------------------------
r1539 | mdcurran | 2008-01-01 20:12:22 +1100 (Tue, 01 Jan 2008) | 1 line

Added a reportCurrentSelection script (insert+shift+upArrow) to the default appModule. This reports what is currently selected according to the current focus object or virtualBuffer object's textInfo object. If nothing is selected, then it announces so.
------------------------------------------------------------------------
r1537 | mdcurran | 2008-01-01 11:02:22 +1100 (Tue, 01 Jan 2008) | 1 line

Cache exceptions when trying to get IAccessible/IAccessible2 states in NVDAObjects, Gecko 1.9 has a tendency to throw errors randomly.
------------------------------------------------------------------------
r1536 | mdcurran | 2008-01-01 10:41:26 +1100 (Tue, 01 Jan 2008) | 1 line

IAccessible2 NVDAObject states property: if both hasPopup and autoComplete are set, remove hasPopup, we don't really need to know about it.
------------------------------------------------------------------------
r1535 | mdcurran | 2008-01-01 10:38:06 +1100 (Tue, 01 Jan 2008) | 1 line

Re-wrote the logic for the states properties for IAccessible and IAccessible2 NVDAObjects. No longer uses api.createStateList, but just does its own thing with  generator expressions and set expressions.
------------------------------------------------------------------------
r1534 | mdcurran | 2008-01-01 09:57:41 +1100 (Tue, 01 Jan 2008) | 1 line

The states property on IAccessible2 NVDA objects now gives states taking both IAccessible2 and IAccessible states in to account.
------------------------------------------------------------------------
r1533 | mdcurran | 2008-01-01 09:56:26 +1100 (Tue, 01 Jan 2008) | 1 line

Removed all IAccessible2 role, event and state constants from IAccessibleHandler, as they now can be fetched directly from the COM interface. Also added an IAccessible2StatesToNVDAStates to IAccessibleHandler, which maps IAccessible2 specific states to controlTypes states.
------------------------------------------------------------------------
r1532 | mdcurran | 2008-01-01 09:55:02 +1100 (Tue, 01 Jan 2008) | 1 line

Added more states to controlTypes.py, these are a few states that IAccessible2 offers.
------------------------------------------------------------------------
r1531 | mdcurran | 2008-01-01 09:53:38 +1100 (Tue, 01 Jan 2008) | 1 line

Updated the IAccessible2 type library to include role, event and state constants. The IDL is not quite the standard IA2 idl anymore, though the values are the same, just a bit of moving around to make sure that the constants get included in the tlb. Note that you *need* to re-run generate.py after this change.
------------------------------------------------------------------------
r1530 | mdcurran | 2007-12-31 18:23:26 +1100 (Mon, 31 Dec 2007) | 1 line

New gecko virtualBuffer: announces the visited state of links
------------------------------------------------------------------------
r1529 | mdcurran | 2007-12-31 18:13:34 +1100 (Mon, 31 Dec 2007) | 1 line

Miranda32 appModule used IAccessibleStatesToNVDAStates,  make sure it gets it from IAccessibleHandler.
------------------------------------------------------------------------
r1528 | mdcurran | 2007-12-31 18:09:18 +1100 (Mon, 31 Dec 2007) | 1 line

Moved the IAccessibleStatesToNVDAStates dictionary out of NVDAObjects.IAccessible and in to IAccessibleHandler. This is for the same reason as why the IAccessibleRolesToNVDARoles were moved... this logic isn't really specific to NVDA Objects.
------------------------------------------------------------------------
r1527 | mdcurran | 2007-12-31 11:55:05 +1100 (Mon, 31 Dec 2007) | 1 line

Update the virtualBuffer dll  to the latest virtualBuffer library trunk, it should fix a bug where NVDA would crash when trying to get the line offsets from an offset on the last line of a virtualBuffer.
------------------------------------------------------------------------
r1525 | mdcurran | 2007-12-30 22:40:47 +1100 (Sun, 30 Dec 2007) | 1 line

New Gecko virtualBuffer can now announce radio buttons and check boxes.
------------------------------------------------------------------------
r1524 | mdcurran | 2007-12-30 17:32:19 +1100 (Sun, 30 Dec 2007) | 1 line

Added a _calculateLineBreaks method to the new base virtualBuffer class. This method takes a text string as its only parameters, and returns a list of offsets, which represent where line breaks should occure. It uses the maxLineLength config option to work out the line breaks. If breaks on the start of a non-whitespace character or set of characters, as long as the current offset is greater than maxLineLength. The new gecko virtualBuffer now uses this method to calculate lineBreaks for all text it adds when rendering, so as to break up large paragraphs, with out actually mutating the original text by inserting line feeds etc.  Physical lines in a gecko virtualBuffer can still be longer than maxLineLength as the buffer does not check the length of multiple inline texts put together, though this probably wouldn't be a problem that often.
------------------------------------------------------------------------
r1523 | mdcurran | 2007-12-30 12:48:00 +1100 (Sun, 30 Dec 2007) | 11 lines

New virtualBuffers:
*Updated virtualBuffer_new.dll to latest virtualBufferLibrary trunk. The changes in the dll are pretty much to do with how lines are represented, this will make it much easier for NVDA to make nicely looking content, and also if the user wishes, for it to reflect the layout of the document much more realistically.
*Updated virtualBuffer_new_wrapper.py to work with the latest changes in the dll.
*new base virtualBuffer now has an activatePosition script. It locates the ID of the node at the caret's offset and then calls self.activatePosition(ID). self.activatePosition needs to be overridden in specific virtualBuffers to do what ever should happen when pressing on a particular node. The script is bound to enter and space at the moment.
*Reorder some code in the new base virtualBuffer scripts so it looks a little more logical. updateCaret should be called before expand.
*New gecko virtualBuffer: now it can announce combo boxes, properly supports list items when one is not the only thing on a line.
*New gecko virtualBuffer: When rendering the buffer, check if the current IAccessible represents a block element (i.e. it should be on a line by itself). If its just an MSAA object then we assume block by default. If its IA2, and there is a formatting:block attribute in its object attributes, then we know its a block. If there isn't a formatting:block attribute, then its not a block. we pass the answer to whether its a block element or not, to VBufStorage_addTagNodeToBuffer when we call it, so the virtualBuffer library knows how to handle line breaks around it.
 *New gecko virtualBuffer: no longer remove \r or \n chars from the text when rendering the buffer, as this breaks synchronicity between Gecko and the virtualBuffer. If we ever did really need to get rid of them, we would have to replace them with spaces or something, but the text lengths can not be changed.

If using the new gecko virtualBuffers with latest Firefox3, representation of documents whould be much more accurate. for now the layout closely maches the layout of the actual document, as in if there is a line of text with a link in the middle, then NVDA does not break the line before and after the link. Eventually there will be a config option as to whether you want a simple layout or a screen layout, but the screen layout is much harder to code for, so this is why much more work is going in to it. 

------------------------------------------------------------------------
r1521 | mdcurran | 2007-12-29 11:05:40 +1100 (Sat, 29 Dec 2007) | 1 line

script_reportCurrentLine (insert+upArrow) in the default appModule now supports the new virtualBuffers and also XML text. This means that when in new virtualBuffers insert+upArrow will properly announce the current line.
------------------------------------------------------------------------
r1520 | vtsaran | 2007-12-25 10:37:55 +1100 (Tue, 25 Dec 2007) | 2 lines

Fixed a bug where uninstaller would leave behind a file with the name of "NVDA", thus preventing future installations until the file is removed from the "program files" folder. This bug was reproducable only if the user chose to preserve NVDA configuration file during the uninstallation process.
Note: this is a temporary fix; we should implement an install log in the near future to keep track of which files are actually installed.
------------------------------------------------------------------------
r1519 | mdcurran | 2007-12-21 21:28:09 +1100 (Fri, 21 Dec 2007) | 1 line

New Gecko virtualBuffer: make sure that things still look pretty much the same in firefox2 (Gecko 1.8), support  the h1 through h6 heading string roles for heading, and revert that changed that used accValue over accName ... bad idea, accName in Mozilla is much more important.
------------------------------------------------------------------------
r1518 | mdcurran | 2007-12-21 20:34:41 +1100 (Fri, 21 Dec 2007) | 1 line

New gecko virtualBuffer: don't try and read the region  when the focus changes if the focus moves to the actual document object, rather it should just announce it as a normal old focus change.
------------------------------------------------------------------------
r1517 | pvagner | 2007-12-21 20:33:51 +1100 (Fri, 21 Dec 2007) | 1 line

* updated portuguese language file as well as portuguese language strings for the NVDA installer
------------------------------------------------------------------------
r1516 | mdcurran | 2007-12-21 19:50:55 +1100 (Fri, 21 Dec 2007) | 7 lines

New Gecko virtualBuffer:
*Reorganized _fillVBufHelper so that text or child IAccessibles are collected in a list before actually adding any nodes to the buffer or recursivly calling _fillVBufHelper. This firstly allows us to keep a count of the child IAccessibles we're including (as accChildCount will probably be wrong most of the time since we're not using *all* children). But it also allows us to releace the IAccessible pointer _fillVBufHelper received, before recursivly calling _fillVBufHelper with one of the child IAccessibles. The advantage of this of course is that as we render the document we do not hold on to all the ancestors of the IAccessible we're working with -- much less taxing on memory for both NVDA and Gecko. the childCount we got also now is added to attribs as 'childCount'.
*_fillVBufHelper adds accState to attribs as 'states'.
*getXMLFieldSpeech now knows how to announce entering and exiting lists, it announces bullet for list items, it announces edit fields, and it can announce frames, though there are still some issues with NVDA and Firefox3 in rendering them.
*_fillVBufHelper now tries to weed out any pointless spacing from Gecko, spacing and line feeds really do need to be looked at much more closely in future work.
*If _fillVBufHelper has to resort to using properties to create text (as in the object has no text interface, nor any children) it first tries accValue, and if that's empty, accName. It used to try name before value.

------------------------------------------------------------------------
r1515 | pvagner | 2007-12-21 19:01:43 +1100 (Fri, 21 Dec 2007) | 1 line

* updated brazilian portuguese language strings for the NVDA installer
------------------------------------------------------------------------
r1514 | mdcurran | 2007-12-21 16:08:32 +1100 (Fri, 21 Dec 2007) | 1 line

Fix some typos/bugs in IAccessibleHandler.py, where after normalizing an IAccessible pointer (to get an IAccessible or IAccessible2) it then query Interfaces to IAccessible. This is just wrong. Now accParent etc properly return an IAccessible2 if its an IAccessible2, or an IAccessible if its an IAccessible etc.
------------------------------------------------------------------------
r1513 | mdcurran | 2007-12-21 12:29:38 +1100 (Fri, 21 Dec 2007) | 1 line

New gecko virtualBuffer: break lines of text at maxLineLength according to NVDA's configuration. We may not be able to do this once rendering code goes  in-process as adding newLine chars in the middle of arbitrary text will stuff up the IA2 text_inserted and text_removed  events.
------------------------------------------------------------------------
r1512 | mdcurran | 2007-12-21 11:58:33 +1100 (Fri, 21 Dec 2007) | 1 line

New base virtualBuffer: added scripts to move to the top and bottom of the document (control+home and control+end).
------------------------------------------------------------------------
r1511 | mdcurran | 2007-12-21 11:21:07 +1100 (Fri, 21 Dec 2007) | 1 line

speech.speakFormattedTextWithXML: when working out all the end_removedFromStack fields, record them in reversed order, so that when they are announced, they are announced going up out of where you laast were, e.g. out of list item out of list... rather than out of list out of list item.
------------------------------------------------------------------------
r1510 | mdcurran | 2007-12-21 11:17:48 +1100 (Fri, 21 Dec 2007) | 1 line

New gecko virtualBuffer: add an event_gainFocus and an event_focusEntered, so that documents in Firefox etc are loaded when they are refreshed or ready etc, also tabbing arround the document now updates the cursor position,  navigatorObject, and it also announces the region of the buffer you landed on. Using the left and right arrows, now all fields are announced as you move in and out of them.
------------------------------------------------------------------------
r1509 | mdcurran | 2007-12-21 11:15:10 +1100 (Fri, 21 Dec 2007) | 1 line

New base virtualBuffer: it now announces loading document, and done, like the old ones. It also now starts a sayAll once its loaded the document. The initializer also takes an optional keyword argument of TextInfo, which allows higher-level virtualBuffer classes to specifiy their own TextInfo class, which out having to wrry about whether they should set it before or after calling super.
------------------------------------------------------------------------
r1508 | mdcurran | 2007-12-21 10:42:23 +1100 (Fri, 21 Dec 2007) | 2 lines

Merged NVDAObjects.IAccessible.IAccessibleRolesToNVDARoles and NVDAObjects.IAccessible.IA2.IA2RolesToNVDARoles dictionaries and moved them to IAccessibleHandler.IAccessibleRolesToNVDARoles. This now mekas it a lot easier for any IAccessible/IAccessible2  code to find out the NVDA-specific role for an IA/IA2 role, where as before this was quite locked down to NVDAObjects. for instance now the new virtualBuffers will be able to use the dictioanry to map from IAccessibleRoles for getXMLFieldSpeech etc.

------------------------------------------------------------------------
r1507 | pvagner | 2007-12-21 09:24:47 +1100 (Fri, 21 Dec 2007) | 1 line

* updated german language file
------------------------------------------------------------------------
r1506 | mdcurran | 2007-12-21 09:24:41 +1100 (Fri, 21 Dec 2007) | 1 line

Changed sayAll to work in the new virtualBuffers. speech.speakFormattedTextWithXML now properly handles the index keyword argument, passing it to speech.speakText as it should. index is no longer used in for loops for this function, use a variable called count instead -- now index is not mucked up. sayAllHandler.readTextHelper_generator now checks if the reader info object supports xml, if so it uses speakFormattedTextWithXML, if not it just uses speakText like normal. script_sayAll in the default appModule now uses sayAllhandler if we're dealing with an NVDAObject, or a new virtualBuffer, i.e. it has a TextInfo class as one of its properties.  It uses the old textBuffer sayAll code of course still for the old virtualBuffers.
------------------------------------------------------------------------
r1505 | pvagner | 2007-12-21 08:31:24 +1100 (Fri, 21 Dec 2007) | 5 lines

* updated traditional chinese language strings for NVDA installer
* added traditional chinese user guide
* updated galician language file
* added galician readme
* updated german language file
------------------------------------------------------------------------
r1504 | mdcurran | 2007-12-20 23:05:06 +1100 (Thu, 20 Dec 2007) | 1 line

Made XMLContext and XMLText properties be bart of the base textInfo class. Also added a hasXML boolean property, which if true, means that this textInfo object supports xml fields. Also added a getXMLFieldSpeech method, which is the same idea as getFieldSpeech, in the new virtualBuffers. Changed the new virtualBuffer code to define custom getXMLFieldSpeech methods in their textInfo classes, rather than getFieldSpeech in their virtualBuffer classes.
------------------------------------------------------------------------
r1503 | mdcurran | 2007-12-20 22:29:18 +1100 (Thu, 20 Dec 2007) | 1 line

The new gecko virtualBuffer now can render bais IAccessible/IAccessible2 documents, and can announce links and headings and buttons and graphics. There is yet no forms mode or  say all or quick navigation keys in the new virtualBuffers, but this is a start. If it is dealing with IAccessible2 objects, it tries to use the embedded object in parent text way to recurse the document. This has shown promising speed-ups in Firefox 3. Although we're still in Python, and still out-of-process, The rendering of IAccessible2 with embedded object documents (Gecko 1.9) has been speed up by more than two. A particular wikipedia article we test now takes 11 seconds, rather than over 30.
------------------------------------------------------------------------
r1502 | mdcurran | 2007-12-20 22:22:55 +1100 (Thu, 20 Dec 2007) | 1 line

speech.speakFormattedTextWithXML: make sure we use the getFieldSpeechFunc parameter rather than speech.getFieldSpeech. When making the final text string to speak, only include strings that are not empty. Also make sure that fields that are newly added to the cache stack e.g. labeled as start_addedToStack,  are taken in to account when doing all the end_inStack fields.
------------------------------------------------------------------------
r1501 | mdcurran | 2007-12-20 22:18:05 +1100 (Thu, 20 Dec 2007) | 1 line

api.setFocusObject:  rather than walking from focus object up the ancestor chain, trying to make a virtual buffer, instead walk down the chain from the top. This would make sure that the highest most window is caught first.
------------------------------------------------------------------------
r1500 | pvagner | 2007-12-20 07:55:33 +1100 (Thu, 20 Dec 2007) | 1 line

* updated german language file
------------------------------------------------------------------------
r1499 | pvagner | 2007-12-20 04:29:30 +1100 (Thu, 20 Dec 2007) | 4 lines

* updated french language file 
* updated italian language file and language strings for the NVDA installer
* updated traditional chinese language file
* updated thai language file
------------------------------------------------------------------------
r1498 | mdcurran | 2007-12-20 00:04:04 +1100 (Thu, 20 Dec 2007) | 1 line

Added virtualBuffers_new/gecko.py. This is the start of a new gecko virtualBuffer object. Again, not at all usable, all it does is fills the buffer with the word Test, and then the name of the currently loaded document of the Gekco app being used.  In theory, to use this new virtualBuffer, you would change a line in virtualBufferhandler.py, so that it looks in virtualBuffers_new rather than virtualBuffers, for its virtualBuffer modules.  Of course though doing this would break all non-existing new virtualBuffers such as internet explorer and adobe, but it would run the cecko one at least with Firefox.
------------------------------------------------------------------------
r1497 | mdcurran | 2007-12-20 00:00:13 +1100 (Thu, 20 Dec 2007) | 1 line

Fixed a few typos in virtualBuffer_new_wrapper.py and also added error check functions to all the dll exported functions. Replaced virtualBuffer_new.dll with the real one, the previous one seemed to be an old dll from some time ago. Fixed a typo in speech.speakFormattedTextWithXML, it should call speakText, not speech.speakText. Fixed a few typos in virtualBuffers_new/__init__.py. These changes really only consern the new virtualBuffer code, which still, is not ready at all for user testing. But a bit of house keeping needed to be done to make sure its happyily functioning with in trunk.
------------------------------------------------------------------------
r1496 | pvagner | 2007-12-19 21:22:29 +1100 (Wed, 19 Dec 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1495 | pvagner | 2007-12-19 19:27:19 +1100 (Wed, 19 Dec 2007) | 2 lines

* updated spanish readme
* updated japanese language file
------------------------------------------------------------------------
r1494 | mdcurran | 2007-12-19 19:12:10 +1100 (Wed, 19 Dec 2007) | 1 line

Reverted the changes in r1491 which added an oldUserDict to the dictionaryDialog in order to clear the real userDict to disable dictionary processing. Now instead, there is now globalVars.userDictionaryProcessing, which is a boolean, that when true, allows userDicthandler.processText to use the user dictionaries to process the text, otherwise it just returns the text it was given. This flag is set to false when the dictionaryDialog is created, and is set back to true in onOk and onCancel events for the dialog. This means that absolutely no dictionary processing takes place while in the dialog.
------------------------------------------------------------------------
r1493 | mdcurran | 2007-12-19 17:12:37 +1100 (Wed, 19 Dec 2007) | 1 line

Fix bug where voice specific dictionaries could not be used if the voice in NVDA had never been changed before. in synthDriverhandler.setSynth, even if there is no config saying what to set the voice to, changeVoice to the current voice anyway (this does nothing but does give a chance for voice dictionaries to be fixed up.)  This should also fix the bug where the voice dictionary dialog would not open for some people.
------------------------------------------------------------------------
r1492 | mdcurran | 2007-12-19 17:04:48 +1100 (Wed, 19 Dec 2007) | 1 line

Removed reload default/voice dictionaries and edit default/voice dictionaries  menu items from the user dictionaries menu in NVDA. Now the dictionary dialog should be used for management of the dictionaries. Though of course, there is nothing stopping you manually editing your dictionary in a text editor, though you will have to restart NVDA for the changes to take effect.
------------------------------------------------------------------------
r1491 | mdcurran | 2007-12-19 16:59:01 +1100 (Wed, 19 Dec 2007) | 1 line

Dictionary dialog: On initialization it copies the given user dict entries to tempUserDict and also now oldUserDict. the given userDict is cleared completely now, so that while in the dialog, no dictionary processing is done by that dictionary. Added a hasChanged property to the dialog, which gets set to True when adding, editing or removing an entry. If true, onOk saves, if false it doesn't. OnOk now always copies entries from tempUserDict to userDict. Added an onCancel event: it copies the entries from oldUserDict in to userDict. Fixed a problem in onDialog where editing an entry would change the values of the original entry, it should really create a new entry, setting its values to the given values, and inserted in place of the original entry. This fixes a bug where canceling out of the dialog after editing an entry would cause the edit to be saved.
------------------------------------------------------------------------
r1490 | mdcurran | 2007-12-19 15:49:32 +1100 (Wed, 19 Dec 2007) | 1 line

Final commit to fix spelling of virtualBufferHandler.py, now has upper h
------------------------------------------------------------------------
r1489 | mdcurran | 2007-12-19 15:48:31 +1100 (Wed, 19 Dec 2007) | 1 line

first commit to fix up  spelling of virtualBufferHandler.py, had a lower h
------------------------------------------------------------------------
r1488 | mdcurran | 2007-12-19 15:45:56 +1100 (Wed, 19 Dec 2007) | 27 lines

Changes to how virtualBuffers and appModules are managed by NVDA.
From the point of view of the core etc, now appModules and virtualBuffers can be loaded or located using an NVDAObject, rather than a windowHandle, or particular code in the window NVDAObject. Of course most of the time a windowHandle is still used, but at least now its possible to use something other than a windowHandle. Also virtualBuffers make more use of focus ancestors when creating new ones etc.

*added appModuleHandler.getAppModuleForNVDAObject(obj). If obj is a Window NVDAObject or something higher, it uses its windowHandle to locate the appModule.
*Removed all code to do with appModules from the window NVDAObject class.
*The base NVDAObject class now has an appModule property, which locates an appModule for this object and caches a reference to it if it finds one, and then returns it.
  *all calls to obj.appModule() have been changed to obj.appModule
*Added virtualBufferHandler.py, which contains getVirtualBuffer and update functions, just like in virtualBuffers.IAccessible, but these just take an NVDAObject as a parameter. 
runningTable is now just a list of virtualBuffer instances, rather than a dictionary of window-to-virtualBuffer mappings. 
Update now has hard-coded rules of how to choose the correct virtualBuffer class for a new virtualBuffer, this is instead of using _staticMap. Having the rules in code gives more flexibility for checking against window class, role, state, or anything else necessary. 
As update has no windows to check validity of, to check if a virtualBuffer is still supposed to be alive, it calls isAlive(), on each virtualBuffer instance in runningTable. If one returns False, then it is deleted from the list.
getVirtualBuffer takes an NVDAObject, and passes it to the 'isNVDAObjectInVirtualBuffer' method on each virtualBuffer instance in runningTable, until one of them returns true. If one does return true, then that virtualBuffer is returned.
The use of isAlive and isNVDAObjectInVirtualBuffer now means that a lot more logic can be overridden in each virtualBuffer class, to change how virtualBuffers should be detected etc.
*Added isNVDAObjectInVirtualBuffer, and isAlive, methods to all existing virtualBuffer classes. For now all these methods work with windowhandles, very much like how the old code did, though I think it should be a little more efficient.
*Changed all calls to virtualBuffers.getVirtualBuffer and virtualBuffers.IAccessible.getVirtualBuffer to virtualBufferHandler.getVirtualBuffer. The same with virtualBuffers.update and virtualBuffers.IAccessible.update, to virtualBufferHandler.update.
*Moved mshtml.py and gecko.py and adobe.py from virtualBuffers.IAccessible to just virtualBuffers, and removed IAccessible.
*Removed all virtualBuffer code from the window NVDAObject.
*Added a virtualBuffer property to the base NVDAObject. This property locates the virtualBuffer for this object if any using virtualBufferHandler.getVirtualBuffer, and caches a reference to it for later calls,and returns the virtualBuffer.
*Changed all calls from obj.virtualBuffer() to obj.virtualBuffer
*In api.setFocusObject, if the focus object does not have a virtualBuffer, as obj.virtualBuffer returns None, then move up the ancestor chain, starting at the focus object, and call virtualBufferhandler.update for each, stopping if it actually created a virtualBuffer.
*Removed calls to virtualBuffers from IAccessiblehandler.py
*Improved the code that detects if Mozilla gecko virtualBuffers are needed. Now they are only used if the document is read-only, which means, hopefully that when composing a mesage in Thunderbird, virtualBuffers won't get loaded anymore.
*Improved the code that detects if mshtml virtualBuffers are needed. Now a virtualBuffer is only loaded if there is no active system caret in the application of that window we are using, or the window that the caret is in, is not the window we are loading the virtualBuffer for. This seems to work ok for most websites in Internet Explorer, and composing messages in Outlook Express, but I am still noticing some times when loading a google page where focus jumps to the edit field by default, that virtualBuffers are not loaded unless you firstly tab out of the field once. Perhaps this can be fixed soon.
 *Removed the silly code that automatically turned off virtualBuffer pass-through mode when moving from a form field to a link etc in Internet Explorer.

I'm hoping that we're on our way to improving at least when virtualBuffers are loaded and used. There are no visible changes yet to exactly how NVDA renders particular content in virtualBuffers, such as links etc, but changing virtualBuffer management is a first step towards improving things.

------------------------------------------------------------------------
r1487 | pvagner | 2007-12-19 08:06:03 +1100 (Wed, 19 Dec 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1486 | vtsaran | 2007-12-19 07:43:09 +1100 (Wed, 19 Dec 2007) | 1 line

Removed langstrings.txt (old file) from the installation tree since we no longer use it.
------------------------------------------------------------------------
r1485 | pvagner | 2007-12-19 03:21:23 +1100 (Wed, 19 Dec 2007) | 1 line

* updated spanish language file and spanish language strings for the NVDA installer
------------------------------------------------------------------------
r1484 | pvagner | 2007-12-18 21:15:17 +1100 (Tue, 18 Dec 2007) | 1 line

* updated finish language file as well as finish language strings for the NVDA installer
------------------------------------------------------------------------
r1483 | vtsaran | 2007-12-18 16:45:08 +1100 (Tue, 18 Dec 2007) | 1 line

Changed the script so that the installer will now open the README file for a particular language on the last installation screen.
------------------------------------------------------------------------
r1482 | vtsaran | 2007-12-18 16:25:34 +1100 (Tue, 18 Dec 2007) | 1 line

Broke down langstrings.txt into separate files for each language and placed them into their own folders. Every folder is named after the target language.
------------------------------------------------------------------------
r1481 | mdcurran | 2007-12-18 15:38:58 +1100 (Tue, 18 Dec 2007) | 1 line

A quick fix for a bug in NVDA where some IAccessible2 focus changes in Mozilla products would not get announced. Problem was that the caret seems to move on  the focused object before the focus event is actually processed. So NVDA would silently update focus because caret moved somewhere where focus wasn't, but then the real focus event would be processed, though to NVDA it looked like a redundant event as focus was already there. Now if we see an IA2 caret event on an object that doesn't have focus, we call IAccessibleHandler.focus_manageEvent(self) so that NVDA processes this as a full focus event, and announces it properly. However, we do not do this if the object currently has a virtualBuffer, as the old virtual buffer code doesn't cope to well with focus jumping to paragraphs and documents and all such at this point in time. This seems to have fixed the problem with thunderbird where subject edit field wouldn't be announced. However, it does seem to be now a bit overly verbose because of the list ancestors of the to/cc/bcc fields in the compersition window.
------------------------------------------------------------------------
r1480 | mdcurran | 2007-12-18 15:02:32 +1100 (Tue, 18 Dec 2007) | 1 line

Changed new base virtualBuffer to use the python wrapper for virtualBuffer_new.dll. Also changed it to pass self.getFieldSpeech as a parameter to speech.spakFormattedTextWithXML as the getFieldSpeech method can now be overridden to contain logic specific to each virtualBuffer API.
------------------------------------------------------------------------
r1479 | jteh | 2007-12-18 14:57:44 +1100 (Tue, 18 Dec 2007) | 1 line

Copy virtualBuffers from the virtualBuffer_rewrite branch to trunk/source/virtualBuffers_new as intended in r1477.
------------------------------------------------------------------------
r1477 | mdcurran | 2007-12-18 14:19:07 +1100 (Tue, 18 Dec 2007) | 1 line

Added some new virtual buffer code to NVDA trunk. However, this is not at all used by trunk yet, and probably won't be for a little while longer. However, this does allow work on the new virtual buffer code to be much easier, as in only a few lines of code need to be changed for testing the new code. Note though that it is not ready to be tested yet, code for geco and mshtml etc needs tobe written still. The new base virtualBuffer I think is pretty much complete, virtualBuffers_new/__init__.py. virtualBuffer_new_wrapper.py contains python wrapper functions for the new virtualBuffer dll virtualBuffer_new.dll. Eventually of course the _new will be removed from all file names. Again, this change does *not* change NVDA's current virtual buffers in any way, please wait for the new virtual buffers to be completed before asking any qeustions. speech.py now contains some new xml processing code and speakFormattedTextWithXML. A lot of this code has come from the virtualBuffer branch, which will now be removed as work will continue in trunk.
------------------------------------------------------------------------
r1476 | jteh | 2007-12-18 12:27:33 +1100 (Tue, 18 Dec 2007) | 1 line

Change quit prompt... again.
------------------------------------------------------------------------
r1475 | mdcurran | 2007-12-18 12:07:25 +1100 (Tue, 18 Dec 2007) | 1 line

Move around the columns in the dictionary dialog list, so that its comment, pattern, replacement, not pattern, replacement, comment
------------------------------------------------------------------------
r1474 | mdcurran | 2007-12-18 12:06:17 +1100 (Tue, 18 Dec 2007) | 1 line

Fix up some comments in default.dic
------------------------------------------------------------------------
r1473 | pvagner | 2007-12-18 11:47:45 +1100 (Tue, 18 Dec 2007) | 2 lines

* fixed a problem when NVDA was not properly saving the dictionary when an item was removed

------------------------------------------------------------------------
r1472 | mdcurran | 2007-12-18 11:42:45 +1100 (Tue, 18 Dec 2007) | 1 line

Added default dictionary... and voice dictionary... menu items to the user dictionaries menu. These items open the dictionary dialog for their respective dictionaries. So now its possible to use the voice and default dictionaries exactly how you would use the temporary dictionairy. You can add, edit and remove items, and when pressing ok, your changes are both set in NVDA, and saved to the file. Voice dictionary dialog also has the fileName in the title so you can tell really what voice this is for. The old reload and edit items have not been taken out just yet, once people are happy with the new items, these can be removed.
------------------------------------------------------------------------
r1471 | mdcurran | 2007-12-18 11:38:18 +1100 (Tue, 18 Dec 2007) | 1 line

in the load method of user dict objects, set self.fileName at the top, rather than after successfully loading the file, as if the file doesn't exist, we still want self.fileName to be set... for possible later saves.
------------------------------------------------------------------------
r1470 | mdcurran | 2007-12-18 11:36:26 +1100 (Tue, 18 Dec 2007) | 1 line

synthDriverHandler.changeVoice: replace any back slashes with underlines in voice names before trying to use them as part of a file name to load a dictionary. eSpeak contains a lot of back slashes in the voice names.
------------------------------------------------------------------------
r1469 | mdcurran | 2007-12-18 11:20:34 +1100 (Tue, 18 Dec 2007) | 1 line

When pressing ok in the dictionary dialog, first check if userDict and tempUserDict are not equal (meaning there has been a change). If so, clear userDict, copy tempuserDict entries to userDict, and call userDict.save(). Note that if userDict was not originally loaded from a file in the first place save will do nothing.
------------------------------------------------------------------------
r1468 | mdcurran | 2007-12-18 11:15:34 +1100 (Tue, 18 Dec 2007) | 1 line

When saving a userDictionary, if a filename hasn't been given to the save method, check for self.fileName. If that also doesn't exist, just return silently, this is a dictionary that obviously was not populated from a file. Also remember to add \r\n to the end of each line when writing it to the file..
------------------------------------------------------------------------
r1467 | mdcurran | 2007-12-18 10:53:39 +1100 (Tue, 18 Dec 2007) | 1 line

Added a label to the dictionary entries list in the dictionary dialog. Removed an unneeded variable. Renamed dictList to entriesList.
------------------------------------------------------------------------
r1466 | mdcurran | 2007-12-18 10:39:48 +1100 (Tue, 18 Dec 2007) | 1 line

Some small code improvements to user dicts. Use rstrip instead of two replace calls when loading dictionary files, and use userDict.extend(otherUserDict) when copying entries from one user dict to another. Could use [:] sintax, though I think extend is a little more readable.
------------------------------------------------------------------------
r1465 | mdcurran | 2007-12-18 10:31:50 +1100 (Tue, 18 Dec 2007) | 1 line

Make exiti dailog message a little clearer with the new yes and no buttons.
------------------------------------------------------------------------
r1464 | pvagner | 2007-12-18 08:40:00 +1100 (Tue, 18 Dec 2007) | 1 line

* update german language strings for the NVDA installer
------------------------------------------------------------------------
r1463 | pvagner | 2007-12-18 06:36:46 +1100 (Tue, 18 Dec 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1462 | pvagner | 2007-12-18 06:35:19 +1100 (Tue, 18 Dec 2007) | 1 line

* tweak exit dialog so it contains Yes and No buttons rather than OK and Cancel (thx to Pavel Vlcek)
------------------------------------------------------------------------
r1461 | pvagner | 2007-12-18 06:33:28 +1100 (Tue, 18 Dec 2007) | 1 line

* another patch to the NVDA installer by Michel Such which adds language specific shortcuts to readme files and user guides.
------------------------------------------------------------------------
r1460 | pvagner | 2007-12-18 02:10:36 +1100 (Tue, 18 Dec 2007) | 3 lines

* patch to NVDA installer by Michel Such.
It adds translatable start menu shortcuts.
* french and slovak language strings are also updated
------------------------------------------------------------------------
r1459 | pvagner | 2007-12-18 02:02:15 +1100 (Tue, 18 Dec 2007) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1458 | mdcurran | 2007-12-17 23:49:51 +1100 (Mon, 17 Dec 2007) | 9 lines

Some changes to user dictionaries:

*user dictionary entry objects now have a comment property.
*When loading user dictionry entries from a file, comments are also loaded in to the comment property of each user dictionary entry object if there is a comment.
A comment is a line of text starting with a '#' character, but it must be directly before the entry, if there is a blank line between it will ignore it.
*A save method has been added to user dictionary objects. It can take an optional argument of fileName, though if not specified, it saves to the fileName it loaded from.
*TemporaryDictionaryDialog in gui/settingsDialogs.py has been renamed to DictionaryDialog, and it now takes a user dictionary object as one of its arguments. It firstly makes a copy of the user dictionary, and then populates the list using the copy. Adding and editing is all done on the copy, though when the ok button is pressed, the entries are updated in the original user dictionary object. The list is now formatted with proper columns, for pattern, replacement and comment.
*The tempory dictionary... menu item in the user dictionaries menu in NVDA now uses the new dictionary dialog , passing it the temp dictionary.

------------------------------------------------------------------------
r1457 | pvagner | 2007-12-17 22:12:23 +1100 (Mon, 17 Dec 2007) | 1 line


------------------------------------------------------------------------
r1456 | pvagner | 2007-12-17 09:55:45 +1100 (Mon, 17 Dec 2007) | 2 lines

* updated russian language file
* added russian readme
------------------------------------------------------------------------
r1455 | pvagner | 2007-12-16 23:05:06 +1100 (Sun, 16 Dec 2007) | 2 lines

* updated spanish language file
* updated galician language file
------------------------------------------------------------------------
r1454 | mdcurran | 2007-12-16 21:35:02 +1100 (Sun, 16 Dec 2007) | 1 line

When loading a dictionary file in to a userDictionary object, not only get rid of line feed characters, but also cariage returns as well. Cariage returns was the cause of the bug where words joined by case changes where being pronounced oddly ... such as folderView, or wordPad. The replacement text for all regexps was actually containing the cariage return, so you'd end up with something like wordP\rad or folderV\riew sounding like wordP add or folderV iew.
------------------------------------------------------------------------
r1453 | mdcurran | 2007-12-16 21:25:43 +1100 (Sun, 16 Dec 2007) | 3 lines

Fix regexp in default.dic that splits numbers away from the end of a word.
\l and \u are not supported by python, but \w can't be used either in this case as the set of \w contains digits. Instead, match on the set of all symbols excluding digits, but with out eating any of the actual data, then match on the set of all word symbols.

------------------------------------------------------------------------
r1452 | pvagner | 2007-12-16 20:23:24 +1100 (Sun, 16 Dec 2007) | 3 lines

* updated finish language file
* updated thai language file
* updated french language file
------------------------------------------------------------------------
r1451 | pvagner | 2007-12-16 20:21:12 +1100 (Sun, 16 Dec 2007) | 1 line

* fixed some entries in the default user dictionary
------------------------------------------------------------------------
r1449 | pvagner | 2007-12-16 09:44:38 +1100 (Sun, 16 Dec 2007) | 8 lines

* added user dictionaries support (original patch by Aleksey Sadovoy)
Now we have 3 types of dictionaries: temporary, voice-specific and default dictionary. They are applied in this order.
Voice-specific and default dictionaries can be edited in any text editor. They are UTF-8 files with UTF-8 BOM at the begining (so notepad can also be used to edit them).
Each line may hold one dictionary entry where pattern and replacement are delimited by tab character. Optionally blank lines can be used to split the dictionary file and lines starting with hash '#' character are skipped. It is not possible to put a comment in the middle or at the end of the line.
Temporary dictionary can be edited directly using temporary dictionary... dialog from the nvda\dictionaries menu.
Note: voice-specific dictionary does not update automatically when changing voice using synth settings ring. Also code to handle voice changes shal be reworked.
* added a simple default dictionary which includes a few examples and entries to handle groups of words where capital letter denotes begining of the new word.
* Some code handling breaking such groups of words is now removed from speech.py
------------------------------------------------------------------------
r1445 | pvagner | 2007-12-15 21:13:46 +1100 (Sat, 15 Dec 2007) | 1 line

* another tweak for sapi5 synthDriver. Switch to the proper output device when loading the sapi5 as well. Prewiously it was only switching on voice change.
------------------------------------------------------------------------
r1444 | pvagner | 2007-12-15 19:49:49 +1100 (Sat, 15 Dec 2007) | 1 line

* updated german language file
------------------------------------------------------------------------
r1443 | pvagner | 2007-12-15 19:45:15 +1100 (Sat, 15 Dec 2007) | 1 line

* fixed sapi5 synth driver not being able to switch voices when other than default output device is selected in the synthesizer settings dialog
------------------------------------------------------------------------
r1441 | pvagner | 2007-12-15 00:12:10 +1100 (Sat, 15 Dec 2007) | 1 line

* updated japanese language file
------------------------------------------------------------------------
r1440 | mdcurran | 2007-12-14 23:08:27 +1100 (Fri, 14 Dec 2007) | 1 line

Fix to _set_voice in sapi5 synth driver. Now the voice should be able to change again.
------------------------------------------------------------------------
r1438 | pvagner | 2007-12-14 04:26:33 +1100 (Fri, 14 Dec 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1437 | pvagner | 2007-12-14 04:23:21 +1100 (Fri, 14 Dec 2007) | 2 lines

* one more tweak for espeak synthdriver. I forgot to cut old variant from the voice identifier before setting the new one
* also updated espeak synthdriver in 0.5 branch because first request to be able to use newer version of espeak with 0.5 version has just been posted.
------------------------------------------------------------------------
r1436 | mdcurran | 2007-12-13 14:39:28 +1100 (Thu, 13 Dec 2007) | 1 line

Small change to Gecko virtual buffer code which makes it show password edit fields properly in Firefox.
------------------------------------------------------------------------
r1435 | mdcurran | 2007-12-13 10:24:27 +1100 (Thu, 13 Dec 2007) | 1 line

A massive speed improvement to focus events in NVDA by adding another queue layer in IAccessibleHandler. When a focus event is detected by winEventCallback, it now queues it to focusEventQueue,  though if the queue is currently full, it grabs the first item and gets rid of it, to make space for this one. focusEventQueue can only old up to 3 focus events, so now when a lot of focus events happen all at once, e.g. a new program opens, or you hold down tab or something, NVDA should no longer lag behind at all. The focusEventQueue gets processed in IAccessiblehandler.pumpAll, which is called from core in the wx.Timer.notify method. Also in IAccessiblehandler.focus_winEventCallback, a focus event with a window that is not the focus window of the active application, but is an ancestor of it, are ignored, since we must be behind in focus events, and MSAA will send us one for the focus window anyway. This change also fixes that terible bug where holding down the left or right arrow key on the windows explorer menu bar and NVDA would keep trying to say menu items way after you let the key go.
------------------------------------------------------------------------
r1434 | pvagner | 2007-12-13 09:18:26 +1100 (Thu, 13 Dec 2007) | 1 line

* updated brazilian portuguese language file
------------------------------------------------------------------------
r1433 | pvagner | 2007-12-13 09:12:37 +1100 (Thu, 13 Dec 2007) | 1 line

* reverting the change made to synthDriverHandler.py
------------------------------------------------------------------------
r1432 | pvagner | 2007-12-13 08:32:12 +1100 (Thu, 13 Dec 2007) | 2 lines

* reworked _set_variant() method in espeak synthdriver allowing it to work with newer versions of espeak and making sure variant setting is properly applied on nvda startup. Compatibility with the version of espeak shipped with NVDA is not affected.
* also when retrieving voice index in espeak driver compare voice identifiers excluding their variants rather than comparing whole voice structures as they may differ when variant is applied
------------------------------------------------------------------------
r1431 | pvagner | 2007-12-13 07:44:16 +1100 (Thu, 13 Dec 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1430 | pvagner | 2007-12-13 03:39:01 +1100 (Thu, 13 Dec 2007) | 1 line

* added Thai language file by Amorn Kiattikhunrat
------------------------------------------------------------------------
r1429 | pvagner | 2007-12-13 03:26:51 +1100 (Thu, 13 Dec 2007) | 1 line

* really updated traditional chinese language file (I apologise for yesterdays commit)
------------------------------------------------------------------------
r1428 | mdcurran | 2007-12-12 18:58:36 +1100 (Wed, 12 Dec 2007) | 1 line

Added JABHandler.terminate, which unsets all the events we have registered for in JABhandler.initialize. This may stop some crashes of NVDA when NVDA exits while a Java VM is running, though there still needs to be another way to completely terminate Java Access Bridge altogether. core now calls JABhandler.terminate, just like how it terminates all the other sybsystems.
------------------------------------------------------------------------
r1427 | mdcurran | 2007-12-12 09:51:34 +1100 (Wed, 12 Dec 2007) | 9 lines

Completely merged IA2Handler and IAccessibleHandler together:

*IAccessiblehandler: Temporarily removed support for IAccessible2 activeDescendantChange as I'm not sure if its really used at the moment, plus it should be re-thought out a bit.
*IAccessibleHandler: Call NormalizeIAccessible on any IAccessible pointer received from accNavigate, accfocus, accSelect, accessibleChildren, accessibleObjectFromWindow, accessibleObjectFromEvent, so that its changed to an IAccessible2 if at all possible.
*IAccessible NVDAObject: in __new__: if the IAccessibleObject is an IAccessible2 instance, then use the IA2 NVDAObject class.
*Stop importing and using IA2Handler, everything is in IAccessiblehandler now.
*All IAccessible2 role, text and event constants have IA2_ prepended to them, like in the IA2 IDL, so as to tell the difference between IAccessible and IAccessible2 roles.
*Remove IA2Handler.py as its no longer needed.

------------------------------------------------------------------------
r1426 | pvagner | 2007-12-12 02:48:10 +1100 (Wed, 12 Dec 2007) | 2 lines

* updated italian language file
* updated traditional chinese language file
------------------------------------------------------------------------
r1425 | mdcurran | 2007-12-11 22:59:14 +1100 (Tue, 11 Dec 2007) | 1 line

Forgot to commit changes to gui/settingsdialogs.py -- for the removal of reportObjectGroupnames and addition of reportObjectDescriptions.
------------------------------------------------------------------------
r1424 | mdcurran | 2007-12-11 21:06:17 +1100 (Tue, 11 Dec 2007) | 1 line

Made the value property of sysListView32 listItems return their MSAA description property (as this seems to contain all the multi-column info), and make the description property return None. This is so that you can turn off reportObjectDescriptions but still get meaningfull info in sysListview32 lists (such as in outlook express message list).
------------------------------------------------------------------------
r1423 | mdcurran | 2007-12-11 20:48:37 +1100 (Tue, 11 Dec 2007) | 1 line

Removed reportObjectGroupNames from presentation section of nvda.ini and the checkbox from object presentation settings dailog as its no longer needed due to focusAncestor code. Added reportObjectDescriptions to presentation section of nvda.ini, and a check box in the object presentation dialog. Power users may want to uncheck this box to stop hearing MSAA/Java descriptions, onb objects, which can sometimes be quite long.  Moved report* config checks out of speech.speakObjectProperties and in to speech.speakObject. Also fix a bug where speakObject was passing the dictionary of properties to speak to speakObjectProperties as positional arguments, not keyword arguments.
------------------------------------------------------------------------
r1422 | mdcurran | 2007-12-11 19:01:47 +1100 (Tue, 11 Dec 2007) | 1 line

JAB NVDAObject: remove event_gainFocus, and add reportFocus, which doesn't report focus if focus is a list inside a combo box. event_gainFocus used to also deny announcing edit fields inside a combo box, but this is bad as some combo boxes do not set their value as the text in the edit field. Also the reason for getting rid of event_gainFocus and using reportFocus instead is to fix a bug where the navigator object would not be set to the right object sometimes  with JAB NVDAObjects. Also disabled the JAB NVDAObject from supporting JABTextInfo for buttons, menus, menuItems and listItems, as there are a few Java apps that put wrong text in these objects. Also disabled JAB NVDAObject from using accessibleValue for value if the object has an accessibleText.
------------------------------------------------------------------------
r1421 | mdcurran | 2007-12-11 14:58:19 +1100 (Tue, 11 Dec 2007) | 1 line

Fixed up IAccessibleHandler.normalizeIAccessible, which was added in a previous commit but had quite a few typos in it. normalizeIAccessible takes  a comtypes COM pointer (anything inherited from IUnknown) and does what ever it has to do to try and turn it in to an IAccessible. So if its not yet an IAccessible it will try doing QueryInterface to IAccesslbe. Once it has an IAccessible, it will try turning it in to an IAccessible2. First it tries queryInterface, if that doesn't work, it tries QueryService (via IServiceProvider). in the end this function will always return an IAccessible or IAccessible2, if not it raises ValueError due to being given something that is not an IAccessible.
------------------------------------------------------------------------
r1420 | mdcurran | 2007-12-11 14:11:19 +1100 (Tue, 11 Dec 2007) | 1 line

Added IAccessible2 role and event constants to IAccessibleHandler.py. Also imported all from comInterfaces.IAccessible2Lib in to IAccessibleHandler. Eventually IA2Handler will be removed, once IAccessible2 and IAccessible NVDAObjects are merged.
------------------------------------------------------------------------
r1419 | jteh | 2007-12-11 12:57:00 +1100 (Tue, 11 Dec 2007) | 1 line

No need to import comtypes.client here anymore.
------------------------------------------------------------------------
r1418 | mdcurran | 2007-12-11 12:44:44 +1100 (Tue, 11 Dec 2007) | 1 line

Stop using comtypes.client.GetModule, instead import the module from comInterfaces. using its friendly name.
------------------------------------------------------------------------
r1417 | jteh | 2007-12-11 12:32:01 +1100 (Tue, 11 Dec 2007) | 3 lines

Exclude the comInterfaces package from the actual py2exe bundle. Otherwise, comtypes.gen will be pointing at the bundled comInterfaces, which doesn't actually contain the comtypes interfaces. Also, this stops comtypes interfaces being included in the executable.
Remove the explicit inclusion of nvwave, as this is now imported by tones, so it will be included implicitly.

------------------------------------------------------------------------
r1416 | mdcurran | 2007-12-11 12:00:23 +1100 (Tue, 11 Dec 2007) | 1 line

Make generate.py generate the richEdit interfaces library (from msftedit.dll).
------------------------------------------------------------------------
r1415 | mdcurran | 2007-12-11 11:55:27 +1100 (Tue, 11 Dec 2007) | 1 line

appModuleHandler.fetchModule: if there is an exception when importing an appModule, then make sure that globalVars.log.error has exc_info=True so we see the traceback. Also take out wait=True from the speakMessage call that reports that there's an error with the appModule... it sometimes can freeze up NVDA.
------------------------------------------------------------------------
r1414 | mdcurran | 2007-12-11 01:00:34 +1100 (Tue, 11 Dec 2007) | 1 line

reason_debug in speech.py should be 8, as reason_caret is now 7.
------------------------------------------------------------------------
r1413 | mdcurran | 2007-12-10 19:52:24 +1100 (Mon, 10 Dec 2007) | 1 line

Cleaned up IAccessibleHandler.py, in preparation to merge IA2handler with IAccessibleHandler and the IAccessible2 and IAccessible NVDA objects. removed getRoleName and getStateName, and changed all vrtualBuffers to use getRoleText and getStateText. Removed pointer_IAccessible, use POINTER(IAccessible). Also stop using comtypes.client.getModule('oleacc.dll') etc to get access to the IAccessible com interfaces, just do from comInterfaces import Accessibility. Same with IServiceProvider.  Also import * from ctypes, and comtyps.automation, so that code in IAccessiblehandler looks a little more COM like.
------------------------------------------------------------------------
r1412 | pvagner | 2007-12-10 19:42:47 +1100 (Mon, 10 Dec 2007) | 1 line

* updated japanese language file
------------------------------------------------------------------------
r1411 | mdcurran | 2007-12-10 19:15:26 +1100 (Mon, 10 Dec 2007) | 1 line

Removed the roleNames and stateNames dictionaries from IAccessiblehandler.py, and stopped IAccessiblehandler.getRoleText and IAccessiblehandler.getStateText from using them. This code is rather old and is not used anymore.
------------------------------------------------------------------------
r1410 | mdcurran | 2007-12-10 19:12:13 +1100 (Mon, 10 Dec 2007) | 1 line

Added reason_caret to speech.py. changed speech.speakObject so that its easier to turn off certain properties from speaking depending on the reason. E.g. if reason_caret, then we don't went the textInfo stuff spoken (as the caret movment scripts handle that.
------------------------------------------------------------------------
r1409 | pvagner | 2007-12-10 06:09:24 +1100 (Mon, 10 Dec 2007) | 1 line

* updated french language file
------------------------------------------------------------------------
r1408 | pvagner | 2007-12-09 18:21:49 +1100 (Sun, 09 Dec 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1407 | mdcurran | 2007-12-09 14:46:53 +1100 (Sun, 09 Dec 2007) | 1 line

Installer: show a loading setup dialog right from when it starts, until its finnished unpacking the temp copy of NVDA etc. nvda.nsi is using the Banner plugin for this.
------------------------------------------------------------------------
r1406 | mdcurran | 2007-12-09 12:28:41 +1100 (Sun, 09 Dec 2007) | 1 line

Fix bug where text in Java objects was not readable (e.g. Open Office writer documents seemed to have no text). This bug was introduced after moving review code from objects out to global. super __init__ was being called after self.TextInfo was being set, so self.TextInfo ended up getting over written with the base NVDA object TextInfo class. Thanks to Hector for pointing out the bug.
------------------------------------------------------------------------
r1405 | pvagner | 2007-12-09 04:07:03 +1100 (Sun, 09 Dec 2007) | 2 lines

* updated finish language file
* updated russian language file
------------------------------------------------------------------------
r1404 | mdcurran | 2007-12-09 00:54:08 +1100 (Sun, 09 Dec 2007) | 7 lines

Installer:
*Cleaned up nvda.nsi by moving around some functions so that install and uninstall stuff doesn't get all tangled up in the file.
*Removed un.OnGUIEnd and added code to the uninstaller's section that removes files, though taking preserveConfig in to account. (this used to be in un.onGUIEnd).
*The temp copy of NVDA is now started with --replace so it kills any old instance, rather than using wm_quit directly from the installer. This fixes a bug where the installer tells NVDA to quit but as PostMessage does not block, the installer continues on trying to start the new NVDA whilst the other one hasn't exited yet -- seen as the new NVDA not starting.
 *When the NVDA files are successfully installed, a variable is set so that when exiting the installer, it knows whether or not its save to start the new installed copy of NVDA. If it hasn't yet been installed, it also works out whether it has started a new instance of NVDA during the install and if so it instructs it to quit with wm_quit.  NVDA's --quit could not be used here due to the way NSIS executes a process -- execWait seems to not allow much priority to any other process other than itself and the child its spawning, thus NVDA can't process the window message very well.
*The uninstaller no longer checks for a running NVDA, as it can't really start a temp one anyway. Plus if files are in use, the uninstaller can just ask to reboot anyway.

------------------------------------------------------------------------
r1403 | mdcurran | 2007-12-09 00:40:08 +1100 (Sun, 09 Dec 2007) | 3 lines

*Added a -r --replace commandline argument to NVDA. This quits any already running version and then starts this one.
*Improved the code that waits for the old instance of NVDA to exit for --quit and --replace. Rather than just waiting for the old windowHandle to become invalid, it grabs the processID from that window, waits for the window  to become invalid, then waits for the process ID to become invalid, by trying to open a handle to that process. This now means that the new NVDA will know when the old NVDA has really exited (as in terminated all subsystems and physically exited), rather than just wx getting rid of the window. It also returns an exit code of 1 if --quit or --replace failed to do its job.

------------------------------------------------------------------------
r1402 | mdcurran | 2007-12-08 12:58:50 +1100 (Sat, 08 Dec 2007) | 1 line

When instructing an already running copy of NVDA to quit with the -q --quit commandline argument, now NVDA keeps checking if the old copy has been killed every 100 ms, for about 1.5 seconds or until it really has been killed. If it reaches 1.5 seconds and it still hasn't been killed, NVDA shows a dialog explaining it couldn't  kill the old NVDA. This change now means that the new NVDA will block until the old one has definitely exited.
------------------------------------------------------------------------
r1401 | pvagner | 2007-12-08 03:35:34 +1100 (Sat, 08 Dec 2007) | 2 lines

* updated a few language files: finish, italian and slovak
* merged a few strings in the default app module into one
------------------------------------------------------------------------
r1400 | pvagner | 2007-12-07 20:34:27 +1100 (Fri, 07 Dec 2007) | 3 lines

* updated portuguese language file
* changed quick start document: occurence of keyboard settings was replaced by the general settings and all the occurences of insert in the keybindings section have been replaced with NVDA+
sorry translators but that change with general settings has already been requested so I've decided to make more changes so they can be applied in one go. if anyone has more changes just email me them so we can manage to fix it before translators will update their files.
------------------------------------------------------------------------
r1399 | mdcurran | 2007-12-07 17:29:36 +1100 (Fri, 07 Dec 2007) | 1 line

Removed debug.py, removed all "import debug" lines, changed all debug.write* calls to globalVars.log.debug calls. We still really need to go through all the code and add more appropriate log calls.  However now the old debug module is no longer needed or used, which also means that debug.log / nvda_debug.log is no longer created. nvda.log is now the log file that should always be looked at.
------------------------------------------------------------------------
r1398 | mdcurran | 2007-12-07 15:55:17 +1100 (Fri, 07 Dec 2007) | 1 line

Added a log level combo box to the general settings dialog in the NVDA interface.
------------------------------------------------------------------------
r1397 | mdcurran | 2007-12-07 15:27:39 +1100 (Fri, 07 Dec 2007) | 1 line

Reverted change to logObj.py accidentily committed in 1396.
------------------------------------------------------------------------
r1396 | mdcurran | 2007-12-07 15:20:02 +1100 (Fri, 07 Dec 2007) | 1 line

First commit to make logging configurable by the user. nvda.ini now contains a loggingLevel option under the [general] section, which takes a string, either DEBUG, INFO, WARN, ERROR OR CRITICAL.  The default is WARN. Now if -l or --log-level is not specified as a commandline option, its default value in globalVars.appArgs is set to 0 (unset). When loading configuration from nvda.ini for the first time in core, we only set the log level if it hasn't been set on the commandline. When reverting to a saved config, we just do it either way, we don't check globalVars.appArgs. This now means you could specify loggingLevel=DEBUG in nvda.ini and you would get a log level of debug for NVDA. However, you would only get debug from the time config was loaded. If you need full debugging right from when NVDA.pyw starts, you would need to set it on the commandline. A gui option for setting the loggingLevel config option has not been added yet.
------------------------------------------------------------------------
r1393 | mdcurran | 2007-12-07 11:39:16 +1100 (Fri, 07 Dec 2007) | 1 line

Stop the control key from unpausing speech when pressed and released once after pressing it to pause. Make the shift key now unpause sheech if pressed and released after speech is paused. This change now means you can tap the control key to shut up speech in a dynamic situation as much as you like and NVDA will no longer keep pausing and unpausing speech.  At any time after shutting up speech with the control key, you can press and release shift (with out pressing any other keys) to resume speech.
------------------------------------------------------------------------
r1392 | mdcurran | 2007-12-06 15:18:12 +1100 (Thu, 06 Dec 2007) | 1 line

Renamed User Interface settings dialog and menu item to General Settings, as log level and possibly other things not completely related to user interface will be added in future.
------------------------------------------------------------------------
r1391 | mdcurran | 2007-12-06 11:42:15 +1100 (Thu, 06 Dec 2007) | 1 line

Fix bug where firstChild and lastChild properties in IAccessible NVDAObject cause an exception due to a new IAccessible NVDAObject being none, rather than an NVDA object.
------------------------------------------------------------------------
r1390 | mdcurran | 2007-12-05 23:19:38 +1100 (Wed, 05 Dec 2007) | 1 line

Fix for bug where  trying to get furst child of a top level object, and where java access bridge is not in stalled, causes an exception in JABhandler.isJavaWindow. Now isJavaWindow checks to see if JABHandler is actually running beore trying to call isJavaWindow from java access bridge. If its not running it just returns false
------------------------------------------------------------------------
r1389 | mdcurran | 2007-12-05 18:40:25 +1100 (Wed, 05 Dec 2007) | 1 line

Added Japanese language file from Katsutoshi Tsuji.
------------------------------------------------------------------------
r1388 | mdcurran | 2007-12-05 18:24:59 +1100 (Wed, 05 Dec 2007) | 1 line

Fix bug in logObj.getcodePath where it would throw an exception if the first argument of the function that called a log call was a tuple. A few print statements have been removed now that were used for debugging the log code. %s%arg where arg happens to be a tuple doesn't work as % expands the tuple.
------------------------------------------------------------------------
r1387 | mdcurran | 2007-12-05 17:04:38 +1100 (Wed, 05 Dec 2007) | 1 line

_isEqual in the IAccessible NVDA object class: don't call _isEqual on the super class untill we've checked equality of child ID, IAccesslbe  pointer equality and IAccIdentity string equality. This seems to fix most of the redundant focus ancestor speech in Mozilla Gecko <=1.8 apps (Firefox2 etc) as firefox  alwasy gives the same Accessible the same memory address. This is a partial fix for some of the problems in bug ticket #18, though that ticket should probably still be implemented at some stage, as  things will still break when apps don't have equal windows for events and objects, and they don't  have same memory addresses for same IAccessibles like Mozilla does.
------------------------------------------------------------------------
r1386 | pvagner | 2007-12-04 16:24:41 +1100 (Tue, 04 Dec 2007) | 1 line

* updated french language file
------------------------------------------------------------------------
r1385 | pvagner | 2007-12-04 00:05:20 +1100 (Tue, 04 Dec 2007) | 4 lines

* changed some default options (original patch by Aleksey Sadovoy): 
speakPunctuation is now false
and espeak's rate is set to 40%
Ticket: closes #11
------------------------------------------------------------------------
r1384 | pvagner | 2007-12-03 23:21:02 +1100 (Mon, 03 Dec 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1383 | mdcurran | 2007-12-02 11:03:54 +1100 (Sun, 02 Dec 2007) | 1 line

Fixed some bugs with backspace and the review cursor. Plus  when updating the review cursor in one of the moveBy* scripts,  only globalVars.caretMovesReviewCursor is checked, not whether focus is equal to globalVars.reviewPosition.obj... I'm not too sure if that logic will always work anyway.
------------------------------------------------------------------------
r1382 | mdcurran | 2007-12-02 10:53:37 +1100 (Sun, 02 Dec 2007) | 1 line

Removed some code from the msn messenger appModule and from  a delphy RichText NVDA object that used to allow you to use the arrow keys to control the review cursor. As the review cursor is now handled  differently in NVDA this is no longer possible. Please just use the number pad instead.
------------------------------------------------------------------------
r1381 | mdcurran | 2007-12-02 02:42:33 +1100 (Sun, 02 Dec 2007) | 1 line

Fix typo, thanks Jamie.
------------------------------------------------------------------------
r1380 | mdcurran | 2007-12-02 02:39:06 +1100 (Sun, 02 Dec 2007) | 1 line

More fixes to do with reviewPosition. We can't use event_caret to update the reviewPosition in edit/RichEdit controls as this is fired even sometimes when it shouldn't be, for instance when we ask for the current line number with a window message its fired. However, fixed all the references to reviewPosition in moveByCharacter/movebyWord/moveByLine etc, so now the review cursor again follows the caret properly.
------------------------------------------------------------------------
r1379 | mdcurran | 2007-12-01 16:29:04 +1100 (Sat, 01 Dec 2007) | 1 line

Fix some sayAll code that was not changed in the last commit.
------------------------------------------------------------------------
r1378 | mdcurran | 2007-12-01 16:18:34 +1100 (Sat, 01 Dec 2007) | 1 line

Finally moved all the code for reviewing text in an object to a more global level. Rather than review scripts and reviewPosition etc being stored in each object, reviewPosition is now stored in globalVars, and the review scripts are in the default appModule. This change greatly simplifies the code needed to instanciate review positions when an NVDA object is instanciates, as   review positions are now only changed when setting the navigator object, or when a caret event is detected in an NVDA object that happens to be the navigator object.  The only disadvantage to this is that now you won't be albe to use the arrow keys in msn messenger history windows or in the skype text chat window. However you should use the numberpad to read these, as in relaity, you can't move the caret with the arrow keys in these controls anyway. Code looks much better, and is easier to manage if we only use the review features as review features, rather than emulating arrow keys etc.
------------------------------------------------------------------------
r1377 | mdcurran | 2007-12-01 12:15:43 +1100 (Sat, 01 Dec 2007) | 1 line

Removed api.setMenuMode, api.getMenuMode, globalVars.menuMode, and any references to  any of them. Menu modes have not been used at all in NVDA for quite a while, though they had just nver really been removed. Although setMenuMode was still being called quite a bit,  getMenuMode was not being used therefore making setMenuMode pointless.
------------------------------------------------------------------------
r1376 | mdcurran | 2007-12-01 11:57:38 +1100 (Sat, 01 Dec 2007) | 1 line

sayAllHandler.readTextHelper_generator now uses textInfo.moveByUnit(unit,1,start=False) rather than textInfo.expand just before speaking some text. This fixes a bug where say all would always seem to start speaking from the beginning of the current reading chunk (e.g. sentence, line) rather than from the actual cursor position. So now if you start say all from in the middle of a word, you will hear NVDA speak the rest of the word and the rest of the document, rather than the whole word and possible more before, and the rest of the document.  This has been tested in Notepad, and Outlook Express MSHTML controls with no side effects shown... though I think MS Word etc will still need to be tested.
------------------------------------------------------------------------
r1375 | pvagner | 2007-11-30 23:25:44 +1100 (Fri, 30 Nov 2007) | 1 line

* make the recent commit to the miranda-im appmodule more efficient including suggestions by jamie
------------------------------------------------------------------------
r1374 | pvagner | 2007-11-30 22:15:41 +1100 (Fri, 30 Nov 2007) | 1 line

* worked around some ansi miranda-im RichEdit windows which report them-selves as unicode
------------------------------------------------------------------------
r1373 | mdcurran | 2007-11-30 20:34:19 +1100 (Fri, 30 Nov 2007) | 1 line

Added second logging patch from Aleksie Sadovoy, which adds exc_info=True to any globalVars.log calls that are in exceptions. Also fixes a few typos.
------------------------------------------------------------------------
r1372 | mdcurran | 2007-11-30 16:04:13 +1100 (Fri, 30 Nov 2007) | 1 line

Added logging patch from Aleksie that replaces all debug.writeMessage/writeError/writeException's with globalVars.log.* calls.  Much work still needs to be done adding exc_info keyword arguments to many of the calls inside exceptions, and more calls need to be added that didn't actually used to have a debug.* call. Also added some log calls to appModuleHandler.py.  As we will most likely now use another logger for automated testing, we don't need to worry about only having particular things in the info log level, however debug, info, warning, error and critical should still be used approapriately.
------------------------------------------------------------------------
r1371 | mdcurran | 2007-11-29 22:11:23 +1100 (Thu, 29 Nov 2007) | 1 line

When retreaving a range of text from RichEdit controls with an  API version of 2 or higher, copy the text as an array of bytes first, before working out whether its ansi or unicode. If the window is unicode, or there is a non-0 byte value found where an ansi NULL character should be, treet the bytes as a unicode string, else treet them as an ansi string. This fixes the problem with NVDA only reading the first character when readinb by lines such as in the Jarte text editor. Ticket: closes #17
------------------------------------------------------------------------
r1370 | pvagner | 2007-11-26 06:58:39 +1100 (Mon, 26 Nov 2007) | 1 line

* appModules/miranda32.py - mapped srmm message log to the edit.Richedit iaccessible object overriding default behaviour for Richedit20A windows.
------------------------------------------------------------------------
r1369 | pvagner | 2007-11-26 00:06:14 +1100 (Mon, 26 Nov 2007) | 1 line

* updated finish language files
------------------------------------------------------------------------
r1366 | mdcurran | 2007-11-24 20:48:24 +1100 (Sat, 24 Nov 2007) | 24 lines

This commit starts moving away from the use of debug.py, in favour of Python's logging system.
The reason being that debug.py was not very configurable, and this will be come more important as we move to automated testing, and receiving better results from user testing.
Rather than writeMessage, writeError and writeException, we now have levels of debug, info, warn, error and critical.
Its planned that 
critical is for messages related to situations where the error is so bad that NVDA is going to crash/freeze/exit.
Error is for where there is clearly an error but NVDA can still continue.
Warn is for a situation where an API or something did something unexpected, or silly, but NVDA can easily get around the problem with no real noticible difference to the user.
Info is for user experience, as in anything that gets spoken, or any key pressed, tone beeped, mouse moved etc. This would be the most important level for automated tests. Its also important that input/output messages such as speech and keyboard are only mentioned exactly once for each event in the info level, plus no timing or other dynamic data should be listed as automated tests would not cope with this.
Debug is for messages in low level code that explains in great detail how a task is going.

*Added logObj.py:
-Provides a custom Logger, which adds a 'codepath' attribute to log records. codepath is a dotted path for the frame where the log entry was made, made up of modules, a possible class name, and a possible function name.
-Provides a custom python logging handler based on logging.FileHandler, but plays the NVDA error sound if a log record is handled that has a level of error or critical.
*nvda.pyw now instanciates a Logger object from LogObj, giving it  the handler also from LogObj. The formatter used has a pattern of 
<levelName> - <codepath>:
<message>
 <possible traceback if in an exception>
The logger is stored as globalVars.log
*Added calls to globalVars.log in core, speech, queueHandler, and keyboardHandler so far.
Many more calls need to be added to NVDA, replacing debug.py calls, but also adding many new ones as well.
 *Renamed the commandline option of -f --debug-file, to -f --log-file, and added -l --log-level <num>
The possible log levels are 10 - debug, 20 - info, 30 - warn, 40 - error, 50 - critical. The default level is warn.
*the log file is now called nvda.log, for both source and compiled, though compiled is still stored in users' temp dir, and source in the source dir.

------------------------------------------------------------------------
r1365 | mdcurran | 2007-11-23 11:31:33 +1100 (Fri, 23 Nov 2007) | 1 line

For IAccessible NVDA object navigation properties (such as next/previous/firstChild/activeChild/children), check to see if the IAccessible pointer we get from accNavigate/accFocus/accessibleChildren is the same or different to the original IAccessible pointer for this NVDA object. If they are the same, then we already know the window handle and objectID etc and we shouldn't have to calculate them again.  Bug: closes #16
------------------------------------------------------------------------
r1363 | pvagner | 2007-11-15 07:07:15 +1100 (Thu, 15 Nov 2007) | 2 lines

* updated spanish language file
* added galician language file (by Juan C. buno)
------------------------------------------------------------------------
r1362 | jteh | 2007-11-12 17:39:30 +1100 (Mon, 12 Nov 2007) | 1 line

We don't use win32com.client here anymore.
------------------------------------------------------------------------
r1361 | pvagner | 2007-11-12 01:53:31 +1100 (Mon, 12 Nov 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1360 | mdcurran | 2007-11-11 19:31:13 +1100 (Sun, 11 Nov 2007) | 1 line

For now remove checks in charHook.py that make sure that the window that received a typed character or input language change is the foreground window or a descendant of the foreground window. his check was not allowing announcment of these events when on the desktop. Removing the checks *could* have some side affects where an app decides to change its input language and its not in focus NVDA will announce it, though I strongly doubt an app would actually do that anyway.
------------------------------------------------------------------------
r1359 | pvagner | 2007-11-10 17:27:03 +1100 (Sat, 10 Nov 2007) | 2 lines

* added italian readme
* updated german language file
------------------------------------------------------------------------
r1358 | pvagner | 2007-11-09 23:53:41 +1100 (Fri, 09 Nov 2007) | 1 line

* added swedish name for hystory window to possibleHistoryWindowNames in msnmsgr appmodule
------------------------------------------------------------------------
r1357 | mdcurran | 2007-11-09 22:21:07 +1100 (Fri, 09 Nov 2007) | 1 line

in Scintilla NVDA object, fix a bug with bad line offsets. The last line would always be announced as blank, due to the end offset being further past the end of the document, confusing Scintilla.
------------------------------------------------------------------------
r1356 | mdcurran | 2007-11-09 22:17:08 +1100 (Fri, 09 Nov 2007) | 1 line

Improve line offset logic for edit/RichEdit NVDAObjects. There was a bug where sometimes if reading the current line when it was blank, and it was the last line, it would announce the line before due to incorrect line offsets.
------------------------------------------------------------------------
r1355 | mdcurran | 2007-11-09 21:47:06 +1100 (Fri, 09 Nov 2007) | 1 line

Updated charHook to the latest revision. Now NVDA can again correctly announce characters being typed correctly, no matter if a window is unicode or ansi. However the skype chat input window still seems to not announce anything when typing characters, but this seems to be an exception to the rule.
------------------------------------------------------------------------
r1353 | mdcurran | 2007-11-09 18:41:26 +1100 (Fri, 09 Nov 2007) | 1 line

Fix a bug where NVDA freeses when focus is given to some scintilla controls, specifically when one has no text. The while loop that double checks where a line end could go for ever if there was no text at all. Now its limited.
------------------------------------------------------------------------
r1352 | pvagner | 2007-11-09 18:27:06 +1100 (Fri, 09 Nov 2007) | 1 line

* changed all references to RichEdit20A
------------------------------------------------------------------------
r1351 | mdcurran | 2007-11-09 13:12:33 +1100 (Fri, 09 Nov 2007) | 1 line

Added an isWindowUnicode property to window NVDA objects. Changed all code in Edit NVDA objects that need to know if they're dealing with unicode to use the isWindowUnicode property, rather than the editAPIUnicode property that is set for particular edit NVDA objects. Removed all ansi richEdit NVDA objects, as all they do is set editAPIUnicode to False, this is no longer used.
------------------------------------------------------------------------
r1350 | mdcurran | 2007-11-08 18:12:56 +1100 (Thu, 08 Nov 2007) | 1 line

Fix a major bug with the way NVDA announces selections. Previously NVDA would always assume that when a selection changed, that the new and old selections moved around a common point, differing either to the left or right. However this logic did not work when there was an old selection and there was a new selection but they were not related in any way, as in they were in completely separate areas of the document. This caused problems when in Notepad/Wordpad and pressing f3 to search for some text that was far away from the current poition. NVDA would think that the range from the current position all the way to the found item was selected, which of course is wrong. To fix, compareStart and compareEnd methods in all textInfo objects were changed to take an optional argument. compareStart takes a 'useEnd' boolean, and compareEnd takes a 'useStart' boolean. useEnd means compare the start of this object against the end of the given  textInfo object, rather than the start.  'useStart' means compare the end of this object against the start of the given textInfo object, not the end. This now allows the comparison of start to start, end to end, start to end and end to start. speech.speakSelectionChange was changed so that it would detect when selections were not related, and speak them appropriately.
------------------------------------------------------------------------
r1349 | mdcurran | 2007-11-08 17:25:06 +1100 (Thu, 08 Nov 2007) | 1 line

Improved sayAllHandler.readTextHelper_generator. This hopefully fixes some bugs where pressing the control key in a long document in Notepad etc would not seem to pause or stop, but just interupt and start speaking the next chunk. When saving the bookmark of the current position, for later use when updating the caret, also save a count of how many chunks have been sent to the synth at this time. On each loop of the generator, if the count of chunks sent to the synth minus the chunks spoken by the synth is greater than 10, then just yield, let the synth catch up a bit before forcing more stuff in. Also do not update lastKeyCount if speech is paused, as globalVars.keyKounter does not get updated on speech pausing anyway.
------------------------------------------------------------------------
r1348 | mdcurran | 2007-11-08 17:20:18 +1100 (Thu, 08 Nov 2007) | 1 line

_getSelectionOffsets in the Edit TextInfo class, when dealing with normal edit controls, should convert the offsets to unsigned shorts before returning them. Previously there was a chance they could have been sometimes negative values, which would greatly confuse other NVDA functions, or even possibly crash/freeze the app/NVDA.
------------------------------------------------------------------------
r1347 | mdcurran | 2007-11-08 16:59:55 +1100 (Thu, 08 Nov 2007) | 1 line

Improved calculation of line offsets for Scintilla textInfo objects. They seemed to be sometimes out by one which would cause an endless loop with sayAll in these controls.
------------------------------------------------------------------------
r1346 | mdcurran | 2007-11-08 16:58:24 +1100 (Thu, 08 Nov 2007) | 1 line

MoveByUnit (in the textInfo class of the base NVDA object) now checks to see if the offsets (after moving) are valid for the direction it was supposed to move in. This is to protect things like the Edit textInfo object from going past the 64 k boundary, as the offsets will be reset to 0 if it does.
------------------------------------------------------------------------
r1345 | pvagner | 2007-11-08 04:23:07 +1100 (Thu, 08 Nov 2007) | 3 lines

* updated traditional chinese language file
* updated finish language file
* updated italian language file
------------------------------------------------------------------------
r1344 | mdcurran | 2007-11-07 17:24:46 +1100 (Wed, 07 Nov 2007) | 1 line

Fix error in keyboardHandler.internal_keyUpEvent. There was a logic situation where it would return None rather than true or false. This seemed to block the context menu key from working, plus it cuased some issues with the NVDA exit dialog and probably typing in general.
------------------------------------------------------------------------
r1342 | mdcurran | 2007-11-07 16:42:22 +1100 (Wed, 07 Nov 2007) | 1 line

Remove some old code from keyboardHandler.py to do with old revisions of charHook.
------------------------------------------------------------------------
r1341 | mdcurran | 2007-11-07 16:39:10 +1100 (Wed, 07 Nov 2007) | 9 lines

Updated charHook.dll to the latest revision. Apart from some structural changes and bug fixes, charHook now supports  the detection of input language changes. 
*Created charHook.py which now initializes and terminates charHook. In initialization it registers win events for event_typedCharacter and event_inputLangChange. For these win events it uses winEventCallback as the callback function, which handles these events, queuing speech.speakTypedCharacters for typed character events, and calls keyboardHandler.speakKeyboardLayout for input language changes.
*Core initializes and terminates charHook like it does with other subSystems.
*keyboardHandler.speakKeyboardLayout now takes an argument of 'layout' which is the layout data received with a wm_inputLangChange. Technically the high word is the physical layout, and the low word is the locale ID.
*keyboardHandler.speakKeyboardLayout has been changed so that if it fails to open a registry key based on the low word of the layout data, it then tries the high word instead. It seems that at least for the English Australian keyboard layout, the low word (0x00000c09) does not seem to exist as a registry key in hkey_local_machine\system\currentControlSet\control\keyboardLayouts. But the high word is a valid 'US' layout.
*keyboardHandler.speakKeyboardLayout now announces the layout and "keyboard layout". For example "Canadian French keyboard Layout". This was added as more than one person was getting a little confused with the feature, both when meaning to use it and just bumping it.
 *Removed logic handling keyboard layout speaking from keyboardHandler.internal_keyDownEvent and keyboardHandler.internal_keyUpEvent as its no longer needed. NVDA is notified automatically when the layout is changed via charHook.


------------------------------------------------------------------------
r1339 | pvagner | 2007-11-07 09:03:26 +1100 (Wed, 07 Nov 2007) | 1 line

* speakApplicationName script tweaked by Alexey so it also speaks name of the currently loaded appModule
------------------------------------------------------------------------
r1338 | pvagner | 2007-11-07 07:06:10 +1100 (Wed, 07 Nov 2007) | 2 lines

Patch from Aleksey Sadovoy:
* Added experimental feature to anounce keyboard layout when changed using alt+shift or ctrl+shift keyboard shortcuts.
------------------------------------------------------------------------
r1337 | mdcurran | 2007-11-06 23:25:35 +1100 (Tue, 06 Nov 2007) | 1 line

Outlook Express / windows mail appModule: when an ATH_Note window gets focus, process any pending events, and then see if focus has moved away from it. If not, then send a shift+tab keyPress through to the application to try and force focus off it. This is to fix a problem in Outlook Express where opening a message in plane text, focus never gets set to the actual message text.
------------------------------------------------------------------------
r1336 | mdcurran | 2007-11-06 23:23:44 +1100 (Tue, 06 Nov 2007) | 1 line

Convert key names to uppercase before looking them up in vkCodes for their IDs, for use in sendKey.
------------------------------------------------------------------------
r1335 | mdcurran | 2007-11-06 21:57:27 +1100 (Tue, 06 Nov 2007) | 1 line

speech.speakSpelling: strip all whitespace characters from the right of the string to be spelled. This means when spelling words, or spelling a line in dos windows etc, you will no longer  hear many spaces after the characters in the actual word/line. The strip only happens if the whole string is not whitespace in itself, this is to make sure that single spaces and tabs and new lines by themselves are not silenced.
------------------------------------------------------------------------
r1334 | mdcurran | 2007-11-06 16:05:12 +1100 (Tue, 06 Nov 2007) | 1 line

Fixed bug where NVDA would think that focus had fallen out of the menu bar in some apps (such as the NVDA window) when arrowing from the main menu bar items to the system menu. In event_menuEnd of the IAccessible NVDAObject class, return with out faking a focus change if the focus when the event started is different to the focus after an api.processPendingEvents.
------------------------------------------------------------------------
r1333 | mdcurran | 2007-11-06 15:49:02 +1100 (Tue, 06 Nov 2007) | 1 line

Import win32com.client, not win32com, in the MS Outlook appModule. Should fix reported bus with Outlook appModule.
------------------------------------------------------------------------
r1332 | mdcurran | 2007-11-06 13:11:47 +1100 (Tue, 06 Nov 2007) | 1 line

If speech.speakSpelling is given either an empy string, or something other than a string, it straight away  sends the result of processSymbol() to the synth. This means in this case it will say 'blank', rather than nothing at all. This problem was apparent in Outlook Express, and I think MS word, when you arrowed to the very end of a document where there was no carage return.
------------------------------------------------------------------------
r1331 | mdcurran | 2007-11-06 12:40:46 +1100 (Tue, 06 Nov 2007) | 1 line

Previous commit only changed backspace support to use textInfo bookmarks. Now make all caret movement scripts use textInfo bookmarks.
------------------------------------------------------------------------
r1330 | mdcurran | 2007-11-06 12:23:20 +1100 (Tue, 06 Nov 2007) | 1 line

Hopefully fixed bugs with backspace in Outlook Express and Microsoft Word. _hasCaretMoved in the base NVDA object now takes a textInfo bookmark, rather than a textInfo object, as the old position, and then gets a bookmark at the new caret location and  checks equality of the bookmarks. textHandler.Bookmark now has __eq__ and __ne__ methods, which enable equality checking of bookmarks, they just  check equality of self.infoClassandother.infoClass, and also self.data and other.data. The problems with the previous code that used real textInfo objects for _hasCaretMoved was that it was possible for the oriinal textInfo object to mutate itself, such as in MSHTML text ranges where the range object moves itself if a character before it is removed. The new way using bookmarks makes sure that the position can not be mutated, as its a static peace of data.
------------------------------------------------------------------------
r1329 | pvagner | 2007-11-06 06:00:18 +1100 (Tue, 06 Nov 2007) | 1 line

* added skype appmodule which just prevents speaking of contact's name twice when arrowing in the contactlist window
------------------------------------------------------------------------
r1328 | pvagner | 2007-11-06 05:57:26 +1100 (Tue, 06 Nov 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1327 | pvagner | 2007-11-06 05:09:41 +1100 (Tue, 06 Nov 2007) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1326 | pvagner | 2007-11-05 07:09:01 +1100 (Mon, 05 Nov 2007) | 1 line

* patch to the review_currentCharacter script from Aleksey Sadovoy which adds ability to speak ascii and hex value on a multiple keypress
------------------------------------------------------------------------
r1325 | pvagner | 2007-11-05 04:33:44 +1100 (Mon, 05 Nov 2007) | 1 line

* spanish language file updated too
------------------------------------------------------------------------
r1324 | pvagner | 2007-11-05 04:20:02 +1100 (Mon, 05 Nov 2007) | 1 line

* updated portuguese language file
------------------------------------------------------------------------
r1323 | pvagner | 2007-11-04 08:58:38 +1100 (Sun, 04 Nov 2007) | 4 lines

* revised finish language file
* tweaked navigatorObject_current script so it won't stay quiet when pressing it's key binding several times
* added ukrainian language file by Aleksey Sadovoy
* workaround for espeak synth driver so it falls to english voice when there is no voice matching NVDA's user interface language. This needs testing because I don't seem to be able to test it properly.
------------------------------------------------------------------------
r1322 | pvagner | 2007-11-03 21:53:16 +1100 (Sat, 03 Nov 2007) | 4 lines

* updated french language file
* multiple keypresses code tweaked by Aleksey Sadovoy that now it only times out when no modifier key is pressed 
* fixed when reviewing by character in a textInfo enabled NVDA objects
* split date time reporting to 2 keypresses too
------------------------------------------------------------------------
r1321 | mdcurran | 2007-11-03 18:50:44 +1100 (Sat, 03 Nov 2007) | 1 line

IAccessibleHandler.focus_manageEvent: make sure to use the _get_parent method of the IAccessible NVDA object class specifically, when getting parents to make focus ancestors. This means that if parent is overridden for a particular IAccessible NVDA object, such as treeViewItem, it won't get used. This should fix possible sluggishness, or crashes/freezes when moving around a treeview.
------------------------------------------------------------------------
r1320 | mdcurran | 2007-11-03 16:50:20 +1100 (Sat, 03 Nov 2007) | 1 line

speech.speakSpelling now only waits for a speech index after speaking a character if the number of characters speakSpelling is saying is greater than 1.
------------------------------------------------------------------------
r1319 | mdcurran | 2007-11-03 16:43:48 +1100 (Sat, 03 Nov 2007) | 1 line

Remove speech.speakSymbol and make all code in NVDA use speech.speakSpelling instead. speech.speakSpelling now handles uppercase beeps, uppercase pitch raising, and 'cap' before uppercase. It also sends the character to the synthesizer along with a speech index, and then waits for the speech index to come back before speaking the next character. This needs to happen so that the beeps for uppercase happen at the same time as the appropriate character being spoken. speech.speakSpelling automatically stops on any key press, and also pauses and unpauses like expected.
------------------------------------------------------------------------
r1318 | pvagner | 2007-11-03 10:06:45 +1100 (Sat, 03 Nov 2007) | 2 lines

* multiple keypresses of the same key binding will timeout after 0.5 sec.
* also tweaked spelling in navigatorObject_current a bit
------------------------------------------------------------------------
r1317 | pvagner | 2007-11-03 09:05:18 +1100 (Sat, 03 Nov 2007) | 2 lines

* added Another patch from Aleksey Sadovoy. This time it brings spelling on double keypresses. It's currently implemented for reportCurrentLine, navigatorObject_current (press 3 times to copy to the clipboard), reportCurrentFocus, reportStatusLine and review_currentWord scripts.
* I have also corrected small typo which I am constantly forgotting.
------------------------------------------------------------------------
r1316 | pvagner | 2007-11-03 03:58:18 +1100 (Sat, 03 Nov 2007) | 2 lines

* updated finish language file
* appmodule handler cleaned a bit
------------------------------------------------------------------------
r1315 | pvagner | 2007-11-03 01:59:05 +1100 (Sat, 03 Nov 2007) | 6 lines

* patch from Aleksey which adds:
+ keystroke and fixes for script navigatorObject_where (ctrl+shift+nvda+numpad5)
+ function speakSpelling into the speech module (now test_navigatorWindowInfo script also makes use of it)
+ reportCurrentLineSpelling script bound to shift+nvda+up
+ speakApplicationName script (ctrl+shift+F1)
* rewritten appModuleHandler.getAppName using the code from speakApplicationNamescript by Aleksey. It has an optimal parameter includeExt. When set to True it returns file name of the application otherwise returns application filename but strips its extension as before. NVDA no longer depends on WMI (that's a good point for win 2000 users). Also changed speakApplicationNamescript accordingly.
------------------------------------------------------------------------
r1314 | mdcurran | 2007-11-02 14:33:22 +1100 (Fri, 02 Nov 2007) | 1 line

Fix another small memory leak where  IData objects were not able to be removed by Python garbage collection. In the edit NVDA object, we now use hash to get the address of the IData object, rather than using ctypes.cast to get a c_void_p and use its value. IData objects are used when getting the text of imbedded objects in rich edit fields.
------------------------------------------------------------------------
r1310 | jteh | 2007-11-01 16:42:07 +1100 (Thu, 01 Nov 2007) | 1 line

Initial version of a virtual synthDriver which outputs text to a window instead of speaking via a speech synthesiser. This should be more pleasant for sighted developers who are not used to speech synthesis but want to know what is spoken by NVDA. There are probably still some bugs, so feedback is most definitely welcome.
------------------------------------------------------------------------
r1303 | mdcurran | 2007-10-26 23:40:41 +1100 (Fri, 26 Oct 2007) | 1 line

Added patch from Michel Such for nvda installer that automatically registers the IAccessible2 proxy dll.
------------------------------------------------------------------------
r1300 | mdcurran | 2007-10-26 13:07:51 +1100 (Fri, 26 Oct 2007) | 1 line

IAccessibleHandler.focus_manageEvent: when collecting all the parents of the new focus to be focus ancestors, rather than checking each parent against the old ancestors from top to bottom, do it from bottom to top. Equality is always faster than instanciating a parent. Also check parent against the old focus, if they are the same, then the rest of the old ancestors will be the same.
------------------------------------------------------------------------
r1299 | mdcurran | 2007-10-26 13:05:58 +1100 (Fri, 26 Oct 2007) | 1 line

Like the parent property of IAccessible NVDA objects check childID to see if info such as window handle can be directly added as an instanciation argument, with the activeChild property also add the window handle and IAccessible com object if accFocus clearly only returns a childID, and the IAccessible com object is the same. After testing, this *does* fix the foobar play list double speaking issue, at least on my machine anyway.
------------------------------------------------------------------------
r1298 | mdcurran | 2007-10-26 11:48:38 +1100 (Fri, 26 Oct 2007) | 1 line

The parent property of an IAccessible NVDA object now checks its IAccessibleChildID property to see if its greater than 0. If so, it returns a new instance of an IAccessible NVDA object using the same window handle, the same IAccessible COM object, but a childID of 0. This should fix some problems with Foobar2000 play list where the parent of the active child of the list (the list) seemed to have a different window handle to what it had before. Also removed a peace of code from IAccessible NVDA object initialization where if childID was 0, it would be replaced with the original child ID from the event. Although this might logically give more chance of events finding the right live object, its very wrong when actually  calling methods on the IAccessible.
------------------------------------------------------------------------
r1297 | jteh | 2007-10-26 10:40:51 +1100 (Fri, 26 Oct 2007) | 1 line

Update version dependency for comtypes. Fix capitalisation of comtypes and wxPython.
------------------------------------------------------------------------
r1296 | pvagner | 2007-10-26 03:13:47 +1100 (Fri, 26 Oct 2007) | 1 line

* added a _get_name method to PropertyPage iaccessible NVDA object. If the property page in question does not return a name try to locate tabcontrol (usually next to it) and retrieve name from its active child.
------------------------------------------------------------------------
r1295 | mdcurran | 2007-10-26 00:24:28 +1100 (Fri, 26 Oct 2007) | 1 line

Reorder a few things in nvda.pyw, and remove the try accept block from around core.main(). Also in core.main, remove the try accept block from around app.mainLoop(), but add one around the code in  the notify method of the wx timer we use for the core cycles. These changes don't seem to fix anymore memory errors, though its probably not good to have try accept blocks lasting for an entire session of NVDA as a lot of objects need to be kept alive in order to print a useful trace back.
------------------------------------------------------------------------
r1294 | mdcurran | 2007-10-26 00:08:17 +1100 (Fri, 26 Oct 2007) | 1 line

In NVDAObjects.edit.Edit, do not try calling __del__ of its super object, as there is no __del__ below. This stops some errors being printed to stderr.log in regards to this situation.
------------------------------------------------------------------------
r1293 | mdcurran | 2007-10-25 20:39:28 +1100 (Thu, 25 Oct 2007) | 1 line

IAccessibleHandler.focus_manageEvent: when searching for a related group box in focus ancestors, also search for an actual gorup box thats already in the ancestors. If there is one, then pretend we've found one ourselves, no need to keep looking for one as we already have it. This fixes an bug with arrowing up and down the file types list in foobar2000 preferences, where the file types grouping and file types list would keep getting announced.
------------------------------------------------------------------------
r1292 | mdcurran | 2007-10-25 12:42:59 +1100 (Thu, 25 Oct 2007) | 1 line

Fix bug where  NVDA would no longer load new documents in internet explorer. Somewhere between comtypes 0.2.1 and 0.3.3 comtypes.client.GetEvents was changed to return an object that kept the events connection alive as long as it was alive. So now when calling GetEvents, save the object returned on the virtual buffer itself.
------------------------------------------------------------------------
r1291 | mdcurran | 2007-10-25 11:49:07 +1100 (Thu, 25 Oct 2007) | 1 line

Fix double speaking of toolbars, and possibly some lists (though still not sure about foolbar) that snuck back in to the code due to another fix to do with equality. Now in the event_gainFocus for both toolbars and lists, after locating the child we want to auto set focus to, we first call api.processPendingEvents, and then only if the child is not equal to the current focus, do we set focus/announce it.
------------------------------------------------------------------------
r1290 | mdcurran | 2007-10-25 11:44:33 +1100 (Thu, 25 Oct 2007) | 1 line

Removed some no longer neeeded Mozilla-based NVDA objects.
------------------------------------------------------------------------
r1289 | mdcurran | 2007-10-25 10:34:42 +1100 (Thu, 25 Oct 2007) | 1 line

When testing equality of IAccessible/IAccessible2 NVDA objects, check their child IDs before checking if their IAccessible COM pointers are equal. This fixes a bug where a list and a list item were testing true (the same object) since they both share the same IAccessible COM pointer, but their child IDs are different.
------------------------------------------------------------------------
r1288 | pvagner | 2007-10-25 05:24:24 +1100 (Thu, 25 Oct 2007) | 1 line

* updated french language file
------------------------------------------------------------------------
r1287 | jteh | 2007-10-24 21:52:02 +1100 (Wed, 24 Oct 2007) | 1 line

Later versions of comtypes seem to return None where an empty string was previously returned, so use an empty string when this occurs.
------------------------------------------------------------------------
r1286 | jteh | 2007-10-24 21:32:06 +1100 (Wed, 24 Oct 2007) | 1 line

Further to r1285, avoid casting IAccessible pointers to c_void_p for Gecko/Adobe virtual buffers to avoid creating uncollectable circular references.
------------------------------------------------------------------------
r1285 | mdcurran | 2007-10-24 21:16:03 +1100 (Wed, 24 Oct 2007) | 1 line

Casting to c_void_p from IAccessibles cause circular references which prevent garbage collection, since comtypes objects do have __del__ methods. Also changed textHandler.TextInfo so that it holds the NVDA object as a weakref, this also fixes some circular reference issues since some NVDA objects such as Edit also have a __del__ method. This fixes some major memory leaks where  lots of IAccessible com pointers could not be removed by Python's garbage collection.
------------------------------------------------------------------------
r1284 | mdcurran | 2007-10-24 15:24:25 +1100 (Wed, 24 Oct 2007) | 1 line

If a dialog has only one single child, and it has a role of pane, then use the pane's children to caulcate the dialog description, not the dialog's. Some dialogs in WinMail (Outlook Express) need this.
------------------------------------------------------------------------
r1283 | mdcurran | 2007-10-24 15:20:51 +1100 (Wed, 24 Oct 2007) | 1 line

IAccessibleHandler.focus_manageEvent: check if obj is not true (its not a valid object) return. We did check for this lower down, but the new code in 1282 depends on it, so we move it above.
------------------------------------------------------------------------
r1282 | mdcurran | 2007-10-24 15:04:17 +1100 (Wed, 24 Oct 2007) | 1 line

In IAccessibleHandler.focus_manageEvent, if  an object with a role of unknown is passed to it, get the object's parent if it has one, and re-pass it to focus_manageEvent and return. This fixes some problems with the Windows Vista Network and sharing centre where some controls that get focus actually give focus to a single child which has an unknown role, in these cases its much better to   pretend focus was for the parent.
------------------------------------------------------------------------
r1281 | mdcurran | 2007-10-24 14:29:31 +1100 (Wed, 24 Oct 2007) | 1 line

do not announce focus ancestor objects with a role of unknown (0, invalid).
------------------------------------------------------------------------
r1280 | mdcurran | 2007-10-24 14:04:33 +1100 (Wed, 24 Oct 2007) | 1 line

Another try to move NVDA above comtypes 0.2.1. Please try NVDA with comtypes 0.3.3 (latest version) and see how things go. This time if things break we'll stick with it and fix things rather than reverting to 0.2.1 again.  comtypesClient.py has been removed since its no longer needed. All references to comtypesClient are now comtypes.client. Also core and generator modules now import comtypes.client and change gen_dir to point to our comInterfaces dir, and then  point sys.modules['comtypes.gen'] and comtypes.gen to the comInterfaces module, imported with __import__ so that py2exe doesn't try and automatically include comInterfaces.  After upgrading to comtypes 0.3.3 you will have to remove all files from comInterfaces (excluding __init__.py and __init__.pyc and then run generate.py. So far testing I have done shows that comtypes seems to work ok both from source and from compiled.
------------------------------------------------------------------------
r1279 | pvagner | 2007-10-24 04:08:56 +1100 (Wed, 24 Oct 2007) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1278 | mdcurran | 2007-10-23 16:25:01 +1100 (Tue, 23 Oct 2007) | 1 line

Only cancel speech before announcing focus of a menu item if the parent of the menu item is also a menu item or popup menu or menu bar. This now allows toolbars and other interesting controls to be announced when they are a parent of a menu item, rather than just your tipical popup menu.
------------------------------------------------------------------------
r1277 | jteh | 2007-10-23 16:23:54 +1100 (Tue, 23 Oct 2007) | 1 line

Further to r1273, don't include a static text object in the description for a dialog or property page if the previous object is a graphic and the object previous to the graphic is a group box. This is because the static text object belongs to the group box.
------------------------------------------------------------------------
r1276 | mdcurran | 2007-10-23 16:21:20 +1100 (Tue, 23 Oct 2007) | 1 line

Add a needsFocusState optional argument to IAccessibleHandler.focus_manageEvent. This is so a focus event can be faked from with in NVDA, but on an object that does not have a focus state, but at the same time shouldn't be treeted as a foreground change.
------------------------------------------------------------------------
r1275 | mdcurran | 2007-10-23 16:08:06 +1100 (Tue, 23 Oct 2007) | 1 line

in event_gainFocus of Dialog IAccessible NVDA objects, after calling super event_gainFocus, check the object's children for a property page object, and if there is one, fire focus on that. This is useful for dialogs where focus lands on the tab control as there are no actual focusable controls in the property page. This now means that when opening the network setup wizard (or to some extent the system properties dialog), the property page will be announced, even though focus ends up being somewhere else. This shouldn't effect dialogs that automatically put focus in the property page as NVDA should trap duplicate focus events.
------------------------------------------------------------------------
r1274 | mdcurran | 2007-10-23 15:42:26 +1100 (Tue, 23 Oct 2007) | 1 line

PropertyPage IAccessible NVDA objects now also have their description made up of child static text objects.
------------------------------------------------------------------------
r1273 | jteh | 2007-10-23 15:28:43 +1100 (Tue, 23 Oct 2007) | 1 line

When getting the description for a group box, if the first object after the group box is a graphic with the same name as the group box, ignore it and try the next object.
------------------------------------------------------------------------
r1272 | mdcurran | 2007-10-23 14:46:14 +1100 (Tue, 23 Oct 2007) | 1 line

If there is a static text object directly after a group box object, and the text object is not the label for an object after it, the name of the text object is used as the description for the group box object. This now means that the description for certain group boxes in windows dialogs will be announced, such as the performance grouping in the advanced tab, system dialog, control panel. Also the dialog _get_description method now ignores a text object directly after a group box object, as we know this will be used as the group box's description.
------------------------------------------------------------------------
r1271 | mdcurran | 2007-10-23 13:10:58 +1100 (Tue, 23 Oct 2007) | 1 line

Remove a fake foreground event from event_menuEnd in IAccessible NVDA objects. Really if necessary, focus ancestors should announce this anyway, plus there is no need to worry about foreground announcment delays as the only time that fake events are needed in menu end is if the foreground doesn't really change anyway, e.g. a dialog does not appear.
------------------------------------------------------------------------
r1270 | jteh | 2007-10-23 13:05:20 +1100 (Tue, 23 Oct 2007) | 1 line

Fix typo of foreground as forground.
------------------------------------------------------------------------
r1269 | mdcurran | 2007-10-23 13:04:36 +1100 (Tue, 23 Oct 2007) | 1 line

The description property of dialog IAccessible NVDA objects is now generated from static text objects it has as children. However, the code also makes sure to ignore static text objects that are clearly just labels for certain controls, plus it also ignores invisible or unavailable objects as well. Also mapped MsiDialogCloseClass to dialog in IAccessible class map so that some .net installers speak correctly. The description dialog changes now enable many dialog boxes to speak their text, such as the NVDA exit dialog, the NVDA about dialog, quite a few known installers, and some windows common dialogs. This support still needs to be added to Windows property pages though.
------------------------------------------------------------------------
r1268 | mdcurran | 2007-10-23 11:26:02 +1100 (Tue, 23 Oct 2007) | 1 line

script_delete in the base NVDA object must also provide self._hasCaretMoved with a text info object, retreaved before sendKey. This fixes a bug where delete would cause an error in some rich edit controls such as in out look express.
------------------------------------------------------------------------
r1267 | jteh | 2007-10-23 10:11:33 +1100 (Tue, 23 Oct 2007) | 1 line

Ensure that the TextInfo for the initial caret position is retrieved before sending the key press. Otherwise, the caret may have moved before the initial caret position is retrieved, which means it will appear as if the caret didn't move.
------------------------------------------------------------------------
r1266 | jteh | 2007-10-23 09:43:21 +1100 (Tue, 23 Oct 2007) | 1 line

Fix spelling of callback and remove unnecessary variable.
------------------------------------------------------------------------
r1265 | mdcurran | 2007-10-22 23:39:50 +1100 (Mon, 22 Oct 2007) | 17 lines

Yet again Re-thought the logic for foreground changes and leaving menus etc. There were some hidden problems such as it taking way too long for forground to be announced due to sometimes many ancestors having to be calculated before announcing foreground, and that group boxes would not get announced on faked foreground/focus changes as that code was completely bypassed.
*When receiving win events in IAccessibleHandler, instead of just ignoring events that have an invalid window handle:
If the window is NULL, then use the desktop window handle instead, but if the window is not NULL, but its still invalid (i.e. does not exist), ignore the event.
This now lets event_system_switchEnd through to NVDA, which previously was being ignored by the callback due to this event not having a window handle.
*Rename IAccessibleHandler.objectEventCallback to winEventCallback
*rename IAccessibleHandler.handleForegroundEvent to foreground_winEventCallback
*Rename IAccessibleHandler.handleFocusEvent to focus_winEventCallback
  *Move all the code dealing with an instanciated object out of IAccessibleHandler.focus_winEventCallback and in to IAccessibleHandler.focus_manageEvent, and call focus_manageEvent from focus_winEventCallback. This is so its possible for other parts of NVDA to call IAccessibleHandler.focus_manageEvent with an IAccessible NVDA object and take advantage of its group box detection code etc.
*Change any code in IAccessible NVDA objects etc that call IAccessibleHandler.objectEventCallback, or something like api.setFocusObject(); eventHandler.ManageEvent("gainFocus"...) to use IAccesibleHandler.focus_manageEvent with an instanciated object.
 *remove checks for foreground object in eventHandler.manageEvent("gainFocus"...) and instead, from foreground_winEventCallback call focus_winEventCallback, but passing an optional argument of isForegroundChange=True. Also focus_manageEvent takes this optional argument of isForegroundChange, and if it is true, it disables its focus state checking.
All this means that now foreground is pretty much treeted like focus in that api.setFocusObject is used, plus a gainFocus event will be fired. However, the foreground object is still updated with api.setForegroundObject for use with speak title etc, but it is not ever used for anything else.
This is to really unify the code between foreground and focus as they do share a lot in common.
This does again mean that foreground events may be fired on wx dialogs before the dialog is ready, however, simply by ignoring the invisible state on focus announcement should be enough to solve this problem.
*event_menuEnd in the IAccessible NVDA object only fakes a foreground/focus change after calling api.processPendingEvents, and only if the current focus object has a role of menu item / popup menu.
*Ignore invisible state when announcing focus.
*IAccessibleHandler.focus_manageEvent ignores foreground/focus to the parent windows of the desktop and taskbar (progman and shell_trayWnd). Previously event_foreground was silenced for special NVDA objects for these windows. These NVDA objects have now been removed as they are not needed. 

------------------------------------------------------------------------
r1264 | mdcurran | 2007-10-22 18:30:23 +1100 (Mon, 22 Oct 2007) | 1 line

Re-implemented support for announcing group boxes in common windows dialogs when focus enters them. IAccessibleHandler.handleFocusEvent checks the previous windows of each ancestor, plus the focus object, for a window with a class of button, and a style of bs_groupbox, if it finds one, then an IAccessible NVDA object is retreaved for this window, and if it has an IAccessible role of grouping, then it is inserted in to the ancestor chain at the position above the object being tested. It would be good to come up with some logic to stop previous windows being fetched for *all* objects, but I can't quite think of any at this point in time, plus  navigating the window structure is much faster thanusing full-blone IAccessibles.
------------------------------------------------------------------------
r1263 | mdcurran | 2007-10-22 18:24:29 +1100 (Mon, 22 Oct 2007) | 1 line

Like with IA2 NVDA objects, check the memory addresses of the IAccessible COM objects when comparing IAccessible NVDA objects. If they match then return true straight away. This is done before checking IAccIdentity as this should be a fter operation.
------------------------------------------------------------------------
r1262 | jteh | 2007-10-22 14:51:23 +1100 (Mon, 22 Oct 2007) | 1 line

Improve accuracy when moving by character/word/line/paragraph by first waiting for the cursor to move. The wait will timeout after 30 ms or when another script is waiting to be processed. With the exception of backspace, the unit at the cursor will still be spoken even if the cursor doesn't move so that the current unit will be read again. In order for isKeyWaiting() to return a correct value, speakSelection is now queued to the event queue on a caret event instead of the interactive queue.
------------------------------------------------------------------------
r1261 | mdcurran | 2007-10-22 12:15:15 +1100 (Mon, 22 Oct 2007) | 1 line

Stop focus being set to the desktop if the current focus object is destroyed.  This caused a bug when deleting messages in outlook express etc, with focus ancestors. Now When deleting a message, NVDA only announces the next list item again, rather than announcing the  foreground window and the list.
------------------------------------------------------------------------
r1260 | mdcurran | 2007-10-22 10:41:01 +1100 (Mon, 22 Oct 2007) | 1 line

In IAccessibleHandler.handleFocusEvent: when collecting the focus ancestors, rather than just checking each parent against the most bottom old ancestor (in order to speed up same-level changes) it now compaires the parent against each of the old ancestors, from top to bottom. Even though this might look like more work, it allows the code to not have to request the parent of an object unless it really has to. Getting parent is still more exspensive then equality.
------------------------------------------------------------------------
r1259 | mdcurran | 2007-10-21 22:49:54 +1100 (Sun, 21 Oct 2007) | 1 line

Cache IAccessibleRole and IAccIdeneityString to make sure that these do not have to be called more than once when comparing an object against multiple others. Role and IAccIdentityString are not supposed to change over the life of an object so its ok to cache them.
------------------------------------------------------------------------
r1258 | mdcurran | 2007-10-21 19:40:38 +1100 (Sun, 21 Oct 2007) | 1 line

Re-wrote code for NVDA objects that tests equality of two objects. Rather than using hash, we now have a _isEuqla method which is called by __eq__. The general pattern is that first the python addresses are checked to see if they are the same, if not, then we start checking specific properties in the particular API for that object. For instance with IAccessible we use IAccIdentity, but failing that we use role, name, child ID, and of course also call the super class's _isEuql to check window handle. IAccessible2 uses its uniqueID property, plus window handle, JAB uses its isSameObject method. Although NVDA is still a bit slow after the additions of focus ancestors, this equality change does make things quite more efficient in that not all properties now have to be hashed if one of them doesn't match. Also for now IAccessible and IA2 use windowFromAccessibleObject from oleacc.dll to work out their window handle, even if it was given. Even though again this is a little slow some times, its more acurate and stops some bad focus ancestor announcement in Firefox 3 etc. Eventually when Firefox 3 fixes its IA2 windowHandle property, we can disable that peace of code again.
------------------------------------------------------------------------
r1257 | jteh | 2007-10-20 18:45:35 +1100 (Sat, 20 Oct 2007) | 1 line

Fix logic when leaving menus so that foreground and focus events are handled correctly; e.g. NVDA About dialog not getting a foreground event. Also, remove IAccessibleHandler.correctFocus(), which was old code that caused some double speaking with this change.
------------------------------------------------------------------------
r1256 | mdcurran | 2007-10-20 13:59:46 +1100 (Sat, 20 Oct 2007) | 1 line

No longer fire a foreground event from IAccessibleHandler.handleForegroundEvent, but if we find the foreground object while moving up the new focus ancestors, fire a foreground event on that object, rather than a focus entered. Seems that some NVDA dialogs don't cope too well with this change, but equality will be fixed up soon to handle this.
------------------------------------------------------------------------
r1255 | mdcurran | 2007-10-19 08:29:48 +1100 (Fri, 19 Oct 2007) | 1 line

In AccessibleHandler.handleFocusEvent: when calculating the focus ancestors, check each parent to see if its the most bottom old ancestor, if so, then stop claculating and simply use the old ancestors instead. This makes performance better at least for moving between objects on the same level.
------------------------------------------------------------------------
r1254 | mdcurran | 2007-10-19 02:43:09 +1100 (Fri, 19 Oct 2007) | 1 line

Don't speak certain focus ancestors under certain conditions, e.g. panels with out a name, panes, windows etc. More logic can be added latter, but for now works ok with common windows dialogs.. also supressed using window class as an object name, if the object didn't actually have a name.
------------------------------------------------------------------------
r1253 | mdcurran | 2007-10-18 19:43:55 +1100 (Thu, 18 Oct 2007) | 1 line

Woops, break should be continue. ancestors go from top to bottom, not bottom to top.
------------------------------------------------------------------------
r1252 | mdcurran | 2007-10-18 19:40:31 +1100 (Thu, 18 Oct 2007) | 1 line

Rather than tcalling api.setFocusObject in api.setForegroundObject (so that the foreground object is not announced as a focus ancestor, as its already been announced), instead in eventHandler.manageEvent, check if the focus ancestor is also the foreground object, if so, don't fire the event_focusEntered event, as foreground has already been announced. This fixes the bug where dos windows would no longer work after last revision.
------------------------------------------------------------------------
r1251 | mdcurran | 2007-10-18 19:19:18 +1100 (Thu, 18 Oct 2007) | 1 line

api.setFocusObject now takes an optional argument of ancestors, which can be a list of the object's ancestors. If not given, setFocusObject will calculate this itself. The reason for allowing it to be given manually is so that the API setting the focus can have a chance to look at the ancestors before calling set focus object. IAccessibleHandler.handleFocusEvent now calculates the ancestors for setFocusObject itself, and while calculating, finds out whether the object, or any of its ancestors has the focus state set. If so it allows the focus to be set, and the gainFocus event to be fired, if not, then it ignores it all together. This change makes it no longer necessary for the hacks in the IAccessible NVDA objects to do with the reportFocusNeedsIAccessibleFocusState property. This now means that some odd focus events such as the gain focus to the explorer pane in vista windows explorer when focusing on a command module toolbar button, or the am pm list in the date and time properties dialog when focusing on many of the dialog's controls, is no longer announced nore tracked as a focus change. For now though the focus state is not checked on objects in Mozilla window class windows as the focus state is still rather broken on some controls in xul.
------------------------------------------------------------------------
r1250 | jteh | 2007-10-13 16:52:53 +1100 (Sat, 13 Oct 2007) | 5 lines

Update dependencies:
	* Include specific version number of Comtypes and note that NVDA will not function with later versions.
	* Mention that the unicode version of WX Python is required.
* Remove pyHook.

------------------------------------------------------------------------
r1249 | pvagner | 2007-10-13 02:43:57 +1100 (Sat, 13 Oct 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1248 | pvagner | 2007-10-12 23:39:33 +1100 (Fri, 12 Oct 2007) | 1 line

* updated spanish language file (sorry guys about miranda32.py strings - I have removed them all, but I am keeping your changes as a backup in case they have to be put back)
------------------------------------------------------------------------
r1247 | pvagner | 2007-10-12 20:12:34 +1100 (Fri, 12 Oct 2007) | 1 line

* Removed labeling of the toolbar buttons by their control IDs from the Miranda-Im app module. Move mouse pointer to the object instead and read the tooltip associated. For this to work report tooltips in the object presentation settings dialog has to be turned on.
------------------------------------------------------------------------
r1246 | pvagner | 2007-10-12 07:51:08 +1100 (Fri, 12 Oct 2007) | 2 lines

* added support for other custom controls to the Miranda-IM app module. This includes buttons and hyperlinks. Also named SRMM, Scriver and some TabSRMM toolbar buttons by their control IDs.
* mapped RICHEDIT window class to the edit NVDA object
------------------------------------------------------------------------
r1245 | jteh | 2007-10-12 00:14:55 +1100 (Fri, 12 Oct 2007) | 1 line

Fix NVDAObjects.IAccessible._get_parent().
------------------------------------------------------------------------
r1244 | mdcurran | 2007-10-11 14:44:35 +1100 (Thu, 11 Oct 2007) | 1 line

_get_parent of the IAccessible NVDAObject class  will try using accParent on a window object to move up to the parent client, and only if this fails then use the super class's _get_parent. This fixes a bug where getting the parent of a firefox 3 document would not work due to some problem with window handles.
------------------------------------------------------------------------
r1243 | mdcurran | 2007-10-11 14:41:58 +1100 (Thu, 11 Oct 2007) | 1 line

Add an event_focusEntered to the base virtual buffer class just so that objects do not get announced when focus moves with in them, if they are part of a virtual buffer.
------------------------------------------------------------------------
r1242 | mdcurran | 2007-10-11 12:35:12 +1100 (Thu, 11 Oct 2007) | 1 line

In IAccessibleHandler.handleFocusEvent, after instanciating an NVDA object, check if it is not equal to the old focus object before setting it as focus and firing an event. This stops double speaking of some focus objects, such as the task bar, and some toolbar controls in Vista.
------------------------------------------------------------------------
r1241 | mdcurran | 2007-10-11 12:33:08 +1100 (Thu, 11 Oct 2007) | 1 line

When a toolbar gets focus, rather than just searching for the child control with focus and announcing that, firstly announce the toolbar itself. This solves a problem with many toolbars in vista where only a control on a toolbar would be announced twice, but the actual toolbar itself would not be.
------------------------------------------------------------------------
r1240 | mdcurran | 2007-10-11 11:11:33 +1100 (Thu, 11 Oct 2007) | 1 line

When setting the focus object in NVDA, apisetFocusObject now works out the focus object's ancestors, and comparing them with the last focus's ancestors, calculates the highest ancestor that is different. Meaning that now NVDA can tell the ancestors of a focus object which are new. eventHandler.manageEvent now ffires a focusEntered event on all ancestors of the focus object that are different from the last focus, if a gainFocus event is currently being fired. This now means that appModuels and NVDA objects etc can be notified to announce when the focus is set as a decendant of the  object in question. Also event_focusEntered has been added to the base NVDA object. This simply speaks the object. What all this means is now a lot more context is given when moving focus around the operating system. For example when tabbing from a tab control in a dialog to the first real control, you'll proabably hear 'property page' first as all the main controls in a dialog are with in a property page, where as the tab control, and the ok/cancel buttons are not.
------------------------------------------------------------------------
r1239 | mdcurran | 2007-10-11 10:59:08 +1100 (Thu, 11 Oct 2007) | 1 line

Improve the __hash__ method on IAccessible NVDAObjects. No longer use location in the hash as its already done in the base NVDA object. Also if possible, use the accIdeneityString as part of the hash. Also for now temporarily diable the groupName property, plus no longer automatically read all objects in dialog boxes. A new much improved way of reading context in dialogs etc is being implemented.
------------------------------------------------------------------------
r1238 | mdcurran | 2007-10-11 10:54:48 +1100 (Thu, 11 Oct 2007) | 1 line

Added getIAccIdeneityString function to IAccessibleHandler.py. This can fetch a special unique string from an IAccessible object that can be used to ideneity it from other objects. Most IAccessible objects support the IAccIdeneity interface, though objects in Internet Explorer, Mozilla Firefox, Lotus Notes etc, do not.
------------------------------------------------------------------------
r1237 | pvagner | 2007-10-11 04:20:11 +1100 (Thu, 11 Oct 2007) | 2 lines

* added ability to retrieve clist nicer status messages to Miranda-IM app module
* update to Winamp app module: simulate name property rather than value in playlist editor window
------------------------------------------------------------------------
r1236 | pvagner | 2007-10-10 07:10:54 +1100 (Wed, 10 Oct 2007) | 2 lines

* reintroduced Miranda-IM app module. This time it adds working caret navigation for the contact list window. Window messages are extracted from the SVN sources. It has been tested with unicode version of Miranda-IM. Most importantly BClist is no longer required and this should work with all other contact list plugins using CListControl.
* mapped some more window classes to the edit NVDA object.
------------------------------------------------------------------------
r1235 | pvagner | 2007-10-07 17:23:00 +1100 (Sun, 07 Oct 2007) | 1 line


------------------------------------------------------------------------
r1234 | mdcurran | 2007-10-03 22:51:17 +1000 (Wed, 03 Oct 2007) | 1 line

Fix canceling of speech when moving around menus, was commented out for debugging purposes - forgot to  uncomment
------------------------------------------------------------------------
r1233 | mdcurran | 2007-10-03 22:44:42 +1000 (Wed, 03 Oct 2007) | 1 line

Make sre that if a IAccessible client object has no name, that the window class name is used instead.
------------------------------------------------------------------------
r1232 | mdcurran | 2007-10-03 22:13:19 +1000 (Wed, 03 Oct 2007) | 1 line

Improved the logic of next, previous, parent, firstChild and lastChild properties for IAccessible NVDA objects. Now you can move to the system menu, title bar, menu bar, or scroll bars of a window if they exist. If a window does have any of these objects, then the window is treeted as a window object, and then children containing the title bar, scroll bars etc, and the client object, though by default it has a role of pane rather than client as it sounds a bit nicer. The new logic also makes it possible to navigate by object with in Windows live messenger etc, where before it seemed that every object did not have any next or previous siblings. The one major change that willb e noticed is that for some foreground changes, they will be announced as pane, rather than window. This is because it is now important to differenciate between a window object and a client object, in MSAA terms. As this is rather new logic, there may be some bugs. However these changes do now give the user access to much more when navigating by object.
------------------------------------------------------------------------
r1231 | mdcurran | 2007-10-02 10:38:17 +1000 (Tue, 02 Oct 2007) | 1 line

_getWordOffsets in the base NVDAObject textInfo class now gets the line offsets at the given offset, gets the text between these offsets, and then finds the word offsets at the given offset using the line text for searching. Previously it used storyText (the entire text of the object). This now means that by overriding _getLineOffsets in a sub class, getWordOffsets will also be improved as it won't have to search the entire text.
------------------------------------------------------------------------
r1230 | mdcurran | 2007-10-01 12:39:16 +1000 (Mon, 01 Oct 2007) | 1 line

Added an actionStrings property and a doAction method to NVDAObjects. actionStrings is a list of action names (such as select, click, open) that you can perform on the object. doAction takes an index (an index of the action you want) and performs that action. So far IAccessible (using defaultAction) and IAccessible2 (using its IAccessibleActions interface) has been implemented. Nothing really uses actions in NVDA yet, but it may be possible in future to pop up a dialog or something to ask what action you would like to perform on an object.
------------------------------------------------------------------------
r1229 | pvagner | 2007-10-01 07:06:58 +1000 (Mon, 01 Oct 2007) | 1 line

* Added polish readme (by Dorota Czajka)
------------------------------------------------------------------------
r1228 | pvagner | 2007-09-30 15:14:37 +1000 (Sun, 30 Sep 2007) | 1 line


------------------------------------------------------------------------
r1227 | mdcurran | 2007-09-30 12:11:43 +1000 (Sun, 30 Sep 2007) | 1 line

Added a specific event_mouseMove method to IAccessible2 NVDA objects. The method checks to see if this object has an IAccessibleText interface, if not it searches up the ancestor chain until it finds one that does. Once it has found one, it uses this object instead. On each subsiquent call it remembers the found object and uses it again. This is to fix problems caused by Mozilla Gecko 1.9 where it still makes MSAA text node objects, even though the parent IA2 object contains the text in its own IAccessibleText interface. This usually isn't a problem accept that accHitTest hits the text nodes, not the parent IA2 object so therefore never interacts with the best object for getting words and such. This all means that now you should be able to move the mouse around a Firefox 3 document and the word under the mouse will be spoken. Also put a try except block inside _getWordOffsets in the IA2TextInfo class.
------------------------------------------------------------------------
r1226 | mdcurran | 2007-09-29 22:52:14 +1000 (Sat, 29 Sep 2007) | 1 line

Protect code in _getLineOffsets, in the IAccessible2 text info class, with a try accept block
------------------------------------------------------------------------
r1225 | mdcurran | 2007-09-29 22:31:16 +1000 (Sat, 29 Sep 2007) | 1 line

In IA2Handler.IA2FromMSAA, rather than only trying to query interface to IAccessible2, firstly check if the given object is an IAccessible2 or sub class of IAccessible2 already, if so, just return the object. Also, if its not, then try a direct query interface to IAccessible2, and return the new object. If none of these work, then fall back to the query Service method. This in theory should speed up interaction with IAccesible2 objects as a lot of the time, we already have an IAccessible2 or dirivitive.
------------------------------------------------------------------------
r1224 | mdcurran | 2007-09-29 21:53:23 +1000 (Sat, 29 Sep 2007) | 1 line

When getting an IAccessible object by IAccessible functions such as accParent, accNavigate, accChild, accessibleChildren etc, rather than just Checking if the object is strictly an IAccessible, or checking if its strictly an IDispatch and querying to an IAccessible, check if it is an IAccessible or sub class of IAccessible, or check to see if its an IDispatch, or  iunknown or sub class of IUnknown and query to an IAccessible.  This fixes some bugs with Lotus Symphony documents where it seemed impossible to navigate to parent or children of a node in the document (such as a paragraph). I'm not sure if they should be doing this, but  all their IAccessible functions are returning an IMAccessible pointer, which is a IBM-specific sub class of IAccessible2 (IAccessible2 is a sub class of IAccessible).
------------------------------------------------------------------------
r1223 | mdcurran | 2007-09-29 21:47:30 +1000 (Sat, 29 Sep 2007) | 1 line

Put try accept blocks around IAccessibleText.Text and IAccessibleText.TextAtOffset for _getTextRange and _getSentenceOffsets in the IA2 textInfo class, as in both firefox and Lotus Symphony these seem to cause COM exceptions at various times.
------------------------------------------------------------------------
r1222 | mdcurran | 2007-09-29 18:43:08 +1000 (Sat, 29 Sep 2007) | 1 line

Fixed up the focusGained JABHandler event so it only instanciates an NVDA object if it has to. It just compares java context objects, rahter than NVDA objects. Also added event_caretChange, which fires a focusGained event if its the first time the caret enters the object in question. Most java apps probably do fire a focus event, but this is just to pretect against some apps that may not.
------------------------------------------------------------------------
r1221 | mdcurran | 2007-09-29 18:41:00 +1000 (Sat, 29 Sep 2007) | 1 line

Added a pythoncom.PumpWaitingMessages() to api.processPendingEvents, which seems to fix some bugs with moving around documents in java apps, where focus wouldn't change in time when reading the next character or line. It seems that wx.Yield must only process its own events, but not actualy pump the native windows message queue.
------------------------------------------------------------------------
r1220 | mdcurran | 2007-09-28 21:59:11 +1000 (Fri, 28 Sep 2007) | 1 line

Moved much of the logic out of the XMLFieldParser so all it does is generate an exact field list as according to the xml passed to it. newSpeakFormattedText now handles the detection of common fields, and the closing of previous fields etc. Also added speakFormat which only speaks the initial fields of the xml given to it, will be used for the insert+f speak formatting script etc.
------------------------------------------------------------------------
r1219 | mdcurran | 2007-09-28 20:43:48 +1000 (Fri, 28 Sep 2007) | 1 line

Fixed speech.speakFormattedXML so that it ignores the closing of a field if an exact duplicate is opened straight after.
------------------------------------------------------------------------
r1218 | mdcurran | 2007-09-28 18:37:30 +1000 (Fri, 28 Sep 2007) | 1 line

Added speakFormattedXML function to speech.py. This function speaks xml that is retreaved from the new virtual buffer code, and also eventually  all formated text will use this xml as well. The funciton first parses the xml with the Python xml expat parser, generating a list of fields and text. However, it also remembers all the initially opened fields between function calls, so it can mark fields as being common (as in this field has been announced previously). Also it closes any fields when no longer initially in them, and marks them as wasCommon. This means that when moving around and announcing fields and text, rather than announcing all fields all the time, it only announces fields that are being moved in to our out of initially, or it announces all fields after the initial ones. The end result is really that this function has the power to announce fields at their start, or their end etc. Logic for spefific roles has not been added yet, but it will be easy enough. This function is not yet used anywhere spefifically in NVDA.
------------------------------------------------------------------------
r1217 | pvagner | 2007-09-28 04:40:32 +1000 (Fri, 28 Sep 2007) | 1 line

* fixed a bug where NVDA was using iaccessible state name instead our own for a radiobutton being checked (thanks Simone for the report)
------------------------------------------------------------------------
r1216 | pvagner | 2007-09-27 04:36:43 +1000 (Thu, 27 Sep 2007) | 1 line

* added appmodule for audacity. At the moment it makes some checkboxes and radio buttons accessible. Object navigation does not work at all with these buggy controls.
------------------------------------------------------------------------
r1215 | pvagner | 2007-09-25 23:12:00 +1000 (Tue, 25 Sep 2007) | 1 line

* updated polish language strings for the NVDA installer
------------------------------------------------------------------------
r1214 | mdcurran | 2007-09-25 11:00:34 +1000 (Tue, 25 Sep 2007) | 1 line

speech.speakObjectProperties now takes another keyword argument of 'textInfo'. If true, and if this object has a custom text info interface, then the reading chunk of text at the caret, or the text that is selected, is also spoken along with the other properties of the object. 'selected' is also announced if it is announcing selected text, as opposed to a chunk of text at the caret. Previously either reportFocus was hacked to announce this text, or the value property was overridden to contain the appropriate text. This change now means that any object with a custom text info interface will automatically get its text at the cursor announced properly.
------------------------------------------------------------------------
r1213 | pvagner | 2007-09-20 02:54:16 +1000 (Thu, 20 Sep 2007) | 1 line

* polish language strings for NVDA installer corrected
------------------------------------------------------------------------
r1212 | mdcurran | 2007-09-19 16:04:13 +1000 (Wed, 19 Sep 2007) | 1 line

When trying to get an IAccessible2 interface from an IAccessible ith QueryService, give IAccessible's IID as the first parameter, and IAccessible2's as the second, rather than IAccessible2's for oth. The previous way seemed to work ok for Mozilla Gecko, but not for IBM apps.
------------------------------------------------------------------------
r1211 | mdcurran | 2007-09-19 15:28:46 +1000 (Wed, 19 Sep 2007) | 1 line

For any IAccessible NVDAObject in a gecko window, ignore whether state_focused is set when reporting focus changes. Seems a lot of xul dialogs don't set the focus state right.
------------------------------------------------------------------------
r1210 | mdcurran | 2007-09-19 15:20:30 +1000 (Wed, 19 Sep 2007) | 1 line

Added support for getGUIThreadInfo to winUser. Not that useful for most modern apps, but may be needed later on with display hooks.
------------------------------------------------------------------------
r1209 | mdcurran | 2007-09-19 14:05:11 +1000 (Wed, 19 Sep 2007) | 1 line

in winUser imported * from ctypes, and * from ctypes.wintypes, to cut down on having to type ctypes. and ctypes.wintypes. all the time. Also removed POINT and MSG variables as they arn't needed, the wintypes ones can be sed.
------------------------------------------------------------------------
r1208 | mdcurran | 2007-09-19 13:45:10 +1000 (Wed, 19 Sep 2007) | 1 line

Put a try accept block around IAccessibleTextObject.CaretOffset in the IAccessible2 textInfo class. It seems in ff3 this simply causes a COM exception if the object in question has no caret.
------------------------------------------------------------------------
r1207 | pvagner | 2007-09-19 13:15:28 +1000 (Wed, 19 Sep 2007) | 2 lines

* updated polish docummentation
* added polish language strings to the nvda installer
------------------------------------------------------------------------
r1206 | mdcurran | 2007-09-19 03:49:33 +1000 (Wed, 19 Sep 2007) | 1 line

Changed the logic of how TextInfo classes are set for NVDA objects. Rather than setting them on the class itself, they are all set in __init__. However, each __init__ first checks if it has a self.TextInfo, if not, then it sets its own one. Also, after its possible set a TextInfo class, and also called all super __init__s, it then sets its reviewPosition, if of course it set a TextInfo class, if it didn't then a ssuper __init__ would have already set the review position. This fixes problems where in IA2  many objects according to the review cursor did not have an IAccessibleText interface.
------------------------------------------------------------------------
r1199 | mdcurran | 2007-09-15 21:43:56 +1000 (Sat, 15 Sep 2007) | 1 line

Check to see if Java Access Bridge is actually running before trying to find out if the window at the current mouse point when it moves is in fact a java window. This fixes a bug where report object under mouse did not work for anyone who did not have Java Access Bridge installed as it would cause errors in the mouse move code.
------------------------------------------------------------------------
r1198 | pvagner | 2007-09-15 21:33:07 +1000 (Sat, 15 Sep 2007) | 2 lines

* revised finish language for 0.5 branch

------------------------------------------------------------------------
r1197 | pvagner | 2007-09-15 05:24:11 +1000 (Sat, 15 Sep 2007) | 1 line


------------------------------------------------------------------------
r1196 | mdcurran | 2007-09-14 23:12:30 +1000 (Fri, 14 Sep 2007) | 1 line

Fixed some problems with the groupName property of NVDA objects not being spoken in some situations by moving most of the logic for the groupName property in to the base NVDA object. Changed the logic to use role, and controlTypes roles, checking for role_dialog and role_grouping, rather than IAccessible specific roles. Also made the logic move previous and parent in parallel, as in it goes one previous, and one parent, checks those two to see if they are a grouping, if not, does it again. This means that it will find a grouping object if its previous on this level, or it is an ancestor. Also created a few more delphy NVDA objects: TFormOptions for dialog, TGroupBox for grouping, TTabPage for propertyPage, and also created TRxRichEdit, and remapped TRxRichEdit to this one, rather than just pointing to RichEdit20A directly. All these changes have made things a little nicer in Delphi apps such as Bible Seeker. The main edit area is now announced properly as an edit control, all controls inside groupboxes have their group name announced etc.
------------------------------------------------------------------------
r1195 | mdcurran | 2007-09-14 23:05:18 +1000 (Fri, 14 Sep 2007) | 1 line

Formatted vkCodes.py quite a bit nicer.
------------------------------------------------------------------------
r1194 | pvagner | 2007-09-14 17:59:33 +1000 (Fri, 14 Sep 2007) | 1 line

* Added italian guide translators to the contributors file. Thanks Simone for pointing it out.
------------------------------------------------------------------------
r1193 | mdcurran | 2007-09-14 08:58:21 +1000 (Fri, 14 Sep 2007) | 1 line

Remapped the TRxRichEdit window class to RichEdit20A. This fixes a problem where it was impossible to arrow around the main edit field of Bible Seeker.
------------------------------------------------------------------------
r1192 | pvagner | 2007-09-14 07:23:42 +1000 (Fri, 14 Sep 2007) | 1 line

* updated hungarian language and readme files
------------------------------------------------------------------------
r1191 | pvagner | 2007-09-12 23:20:38 +1000 (Wed, 12 Sep 2007) | 2 lines

* updated finish language file
* updated finish user guide
------------------------------------------------------------------------
r1190 | pvagner | 2007-09-12 19:50:37 +1000 (Wed, 12 Sep 2007) | 1 line

* added polish user guide by DOROTA CZAJKA
------------------------------------------------------------------------
r1188 | pvagner | 2007-09-11 05:39:12 +1000 (Tue, 11 Sep 2007) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1186 | mdcurran | 2007-09-10 20:24:18 +1000 (Mon, 10 Sep 2007) | 1 line

keyUtils should not import pyhook anymore, its no longer needed or used.
------------------------------------------------------------------------
r1184 | pvagner | 2007-09-10 02:30:06 +1000 (Mon, 10 Sep 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1183 | pvagner | 2007-09-09 17:41:07 +1000 (Sun, 09 Sep 2007) | 1 line


------------------------------------------------------------------------
r1182 | mdcurran | 2007-09-09 13:42:15 +1000 (Sun, 09 Sep 2007) | 1 line

Added support for tables and formatting back in to the MS Word (winword) NVDA object module. How when navigating word documents, tables will be announced, plus control+alt+left/right and control+alt+up/down can now move you between rows and columns in an MS Word table.  Also formatting such as style, font name, size, attributes etc can also be announced with insert+f again, or if you have it set to automatically announce when arrowing though.
------------------------------------------------------------------------
r1181 | mdcurran | 2007-09-09 13:40:04 +1000 (Sun, 09 Sep 2007) | 1 line

Changed the format command types in textHandler from  singleton, on, off, to change, inField, outOfField, switchOn, switchOff. Change is used for things liek font names, or page numbers or line numbers, where the value changes, but the attribute always exists. inField and outOfField are used for things like tables, or lists. SwitchedOn and switchedOff are for boolean modes, such as  bold, italic, underline etc.
------------------------------------------------------------------------
r1180 | mdcurran | 2007-09-08 15:22:01 +1000 (Sat, 08 Sep 2007) | 1 line

Moving the mouse with in a java window not only announces the object under the mouse pointer, but now announces the word under the mouse pointer also.
------------------------------------------------------------------------
r1179 | mdcurran | 2007-09-08 13:28:53 +1000 (Sat, 08 Sep 2007) | 1 line

Scintilla does not take wrapped lines in to account when calculating line numbers. Therefore NVDA receives incorrect line offsets if a line is split in to more than one to fit on the screen. Now _getLineOffsets finds out the y coordinate of the offset, then gets the start and end offsets of the line by asking for the position at the points 0,y and 32768,y. Scintilla andles invalid points, giving the position nearist to the point. This now fixes a bug where if arrowing over wrapped lines, extra info would be announced.
------------------------------------------------------------------------
r1178 | mdcurran | 2007-09-08 12:22:16 +1000 (Sat, 08 Sep 2007) | 1 line

Open Office sometimes can give incorrect line offsets via java access bridge. In getAccessibleTextLineBounds in JABHandler, keep narrowing down the line offsets until they are no longer different no matter if you ask for them using the start or the end offset of the last time you asked for them. This fixes bugs where when arrowing through an Open Office document, info would be repeated because the offsets were probably too wide for the current line and therefore grabbed text from the next line also.
------------------------------------------------------------------------
r1177 | mdcurran | 2007-09-08 12:14:23 +1000 (Sat, 08 Sep 2007) | 1 line

Make sure that JABTextInfo objects don't give offsets less than 0 for caretOffset or selection offsets.
------------------------------------------------------------------------
r1176 | mdcurran | 2007-09-08 12:12:57 +1000 (Sat, 08 Sep 2007) | 1 line

Fix bug where NVDA has an error when focusing the system menu with in java windows. the IAcessible NVDA object assumed the focus was an IAccessible.
------------------------------------------------------------------------
r1173 | mdcurran | 2007-09-06 13:00:12 +1000 (Thu, 06 Sep 2007) | 1 line

Added support for announcing the current word under the mouse pointer when it moves, in edit, rich edit, and scintila controls. Also added a RichEdit30 and RichEdit50 classes to NVDAObjects/IAccessible/Edit.py, and mapped the respective window classes to them. These are simply to make sure that the editAPIVersion is correct, as there are some differences between richEdit2 and richEdit 3 etc.
------------------------------------------------------------------------
r1172 | mdcurran | 2007-09-06 12:57:20 +1000 (Thu, 06 Sep 2007) | 1 line

Now when the mouse is moved, event_mouseMove is called on the mouseObject, no matter if its the first time the mouse has entered the objct previously or not. This means that each object can announce when the mouse enteres, but also have the ability to announce other things with in the object, as the mouse passes over them. However, its up to that object's event_mouseMove to keep track of where the mouse has been with in the object, to prevent double speaking things. Aso made a small change to the mouse audio coordinates feature so that it doesn't try asking for pixels past the bottom and right limits of the screen. Previously if you moved the mouse all the way to the right, it  would sound really bright, as it was receiving some invalid pixels on the limit.
------------------------------------------------------------------------
r1171 | jteh | 2007-09-05 14:15:41 +1000 (Wed, 05 Sep 2007) | 1 line

Set svn:ignore for nvda.mo.
------------------------------------------------------------------------
r1170 | pvagner | 2007-09-04 05:10:35 +1000 (Tue, 04 Sep 2007) | 2 lines

* updated finish language file
* updated spanish language file
------------------------------------------------------------------------
r1169 | mdcurran | 2007-09-03 22:46:49 +1000 (Mon, 03 Sep 2007) | 1 line

Fixed bug where speechMode beeps did not work, nore did percentage beeps.
------------------------------------------------------------------------
r1168 | pvagner | 2007-09-03 22:25:09 +1000 (Mon, 03 Sep 2007) | 2 lines

* updated russian language file
* updated traditional chinese language file
------------------------------------------------------------------------
r1167 | mdcurran | 2007-09-03 17:15:19 +1000 (Mon, 03 Sep 2007) | 1 line

Fixed a bug with tones.beep where pitch was being locked to a resolution of 1 hz. How it properly handles floating point values, there fore with the mouse movement code, there is greater resolution of the y axis.
------------------------------------------------------------------------
r1166 | mdcurran | 2007-09-03 16:24:10 +1000 (Mon, 03 Sep 2007) | 1 line

Fixed the logic for move NVDA object to mouse, and move mouse to NVDAObject. This seems to fix a few bugs where these functions would sometimes cause an error in Java windows etc.
------------------------------------------------------------------------
r1165 | mdcurran | 2007-09-03 16:22:15 +1000 (Mon, 03 Sep 2007) | 1 line

Wen report object under mouse is on, and when moving the mouse with in a Java window, Java objects now get announced. However, getAccessibleContextAt in Java Access bridge 2.01 is broken, so this feature will only work with Access Bridge 2.0 and below.
------------------------------------------------------------------------
r1164 | mdcurran | 2007-09-03 16:19:38 +1000 (Mon, 03 Sep 2007) | 1 line

Added a getAccessibleContextAt method to JABContext objects in JABHandler. This allows to get a descendant object of a java object, at given x and y coordinates.
------------------------------------------------------------------------
r1163 | mdcurran | 2007-09-03 16:17:24 +1000 (Mon, 03 Sep 2007) | 1 line

in the JAB NVDA object class, overrode _get_location, so that JAB NVDAObjects can now give their actual location.
------------------------------------------------------------------------
r1162 | mdcurran | 2007-09-02 20:05:02 +1000 (Sun, 02 Sep 2007) | 1 line

Stopped beeps from clicking and distorting a little at start and end.
------------------------------------------------------------------------
r1161 | mdcurran | 2007-09-02 20:04:08 +1000 (Sun, 02 Sep 2007) | 1 line

Fixed bug where mouse shape changes would not get announced. It was still sing mouseQueue, now it uses eventQueue. Also improved the logic of when to announce mouse shape changes.
------------------------------------------------------------------------
r1160 | mdcurran | 2007-09-01 20:26:19 +1000 (Sat, 01 Sep 2007) | 1 line

Increase the base amplitude for tones to 14000, but set the default beep left/right volume to 50%, rather than 100. Also fixed a miss-calculation in mouseHandler that kept the opposite channel to the side the mouse was currently on, at the minimum volume, and not 0.
------------------------------------------------------------------------
r1159 | pvagner | 2007-09-01 03:05:45 +1000 (Sat, 01 Sep 2007) | 6 lines

* added IsWindowUnicode check to the test_navigatorWindow script in the default app module
* updated french language file,
* updated finish language file,
* updated russian language file,
* speak underline in place of '_' sign instead of line. This is better for some translators. Sorry guys; I see you would like to have it as short as possible but it is really silly to have reporting of line numbers producing "underline #1" ETC... Refer to nvda-dev archives for better explanation
* updated slovak language file
------------------------------------------------------------------------
r1158 | mdcurran | 2007-09-01 00:28:14 +1000 (Sat, 01 Sep 2007) | 1 line

Lock the audio coordinates on mouse move code to stay with in the rectangle of the desktop window. Most likely 0,0 screenSizeX,screenSizeY.  The mouse can go past these coordinates, but when you sto moving it it always snaps back to these limits. So, we may as well only play these limits anyway. This stops it trying to ask for pixels not on the screen (which are always black anyway), and it stops the pitch either  slightly going up or down and then snapping back to what it should be.
------------------------------------------------------------------------
r1157 | mdcurran | 2007-08-31 23:44:22 +1000 (Fri, 31 Aug 2007) | 1 line

When moving the mouse, not only does the pitch and left/right position of the beeps change, but now depending on the brightness of the screen at that point, the beeps will either be louder or softer. This gets the 64 pixels around these coordinates (8 by 8), works out an average grey scale  brightness for that square. Then it uses that brightness in the volume calculation. This may not be that useful to some, though for testing purposes, you could open a dos window, and maximise it, and move the mouse around the screen. You should easily be able to tell when you're inside the window as it black, so the beeps are vry quiet. In fact, if you move carefully enough, you may eve be able to hear the brightness of the characters on the lines o the console, if there is any.
------------------------------------------------------------------------
r1156 | mdcurran | 2007-08-31 15:11:10 +1000 (Fri, 31 Aug 2007) | 1 line

Added a new config option, found in the mouse settings dialog. Play audio when mouse moves, when checked, plays a 40 ms beep each time the mouse moves, with its pitch (between 220 and 1760 hz) representing the y axis, and left/right volume, representing the x axis. This enables a blind person to get a rough idea of where the mouse is on the screen as its being moved. This feature also depends on reportObjectUnderMouse also being turned on. So this means that if you qickly need to disable both beeps and announcing of objects, then just press insert+m.
------------------------------------------------------------------------
r1155 | mdcurran | 2007-08-31 15:06:48 +1000 (Fri, 31 Aug 2007) | 1 line

Added two keyword arguments to tones.beep, left=100 and right=100. These are so that  the left and right volume of a beep can be set independently of each other.
------------------------------------------------------------------------
r1154 | mdcurran | 2007-08-31 13:36:47 +1000 (Fri, 31 Aug 2007) | 1 line

Missed a reference to mouseQueue. Now on mouse clicks, a spech.cancelSpeech gets queued on the interactiveQueue. Stops NVDA giving errors when the mouse is clicked.
------------------------------------------------------------------------
r1153 | mdcurran | 2007-08-31 13:25:58 +1000 (Fri, 31 Aug 2007) | 1 line

Again improved the mouse handler code, so that if the mouse is constantly moved lots, it won't lock up NVDA for a long time until it finnishes processing the mouse move events. Instead of just adding mouseMoveEvents to a mouse queue, when the mouse is moved, a variable is updated with the current mouse coordinates, and another variable is set to true to say that the mouse has recently moved. A pumpAll function has been added to mouseHandler, which gets executed on each NVDA core cycle. If pumpAll sees that the mouse has been moved, then it sets the mouseMoved varialbe to False and then executes the mouseMovedEvent. This means that a maximum of one mouse move event will be processed on each NVDA core cycle, rather than up to posibly 500. Also moved event_mouseMove from the IAccessible NVDA object, and in to the base NVDA object. Also changed the arguments it takes to just x,y, it used to be isEntering, x, y, oldX, oldY. Plans were that an object could track the mouse as it moved around the object, but fore now this is way to time consuming.
------------------------------------------------------------------------
r1152 | mdcurran | 2007-08-30 23:51:20 +1000 (Thu, 30 Aug 2007) | 1 line

Improved the reporting of object under mouse code by using MSAA's accHitTest, so that a new IAccessible is instanciated only if it really neds to be. This should improve performance a bit when moving the mouse, plus it should stop some double speaking of some objects. The logic over all has been much improved.
------------------------------------------------------------------------
r1151 | mdcurran | 2007-08-30 23:49:04 +1000 (Thu, 30 Aug 2007) | 1 line

Cleaned up IAccessibleHandler.accHitTest. Removed some debugging code.
------------------------------------------------------------------------
r1149 | mdcurran | 2007-08-28 22:02:56 +1000 (Tue, 28 Aug 2007) | 1 line

Fix problems caused when moving to use keyHook. NVDA modifier key didn't work, and probably other scripts didn't either. keyUtils still used pyHook, but now it uses vkCodes instead. All keyNames in NVDA keyPresses are in lower case now, this makes the logic that makes sure keys are comparible is a bit simpler.  If a name for a vkCode can't be found in vkCodes, then it checks if the code is in the printible ascii range, and if so, then  sets the name to the lower case version of the character.  Hopefully now NVDA should again function like it did before keyHook, but no longer relying on pyHook, and hopefully all scripts work again.
------------------------------------------------------------------------
r1148 | mdcurran | 2007-08-28 20:00:15 +1000 (Tue, 28 Aug 2007) | 1 line

Last commit committed more than it should have. However, this commit, and last one, has added support for charHook, keyHook and mouseHook in to NVDA. Also added vkCodes.py to NVDA which contains names and codes of all virtual keys for Windows. This now means that NVDA finally no longer depends on pyHook what so ever. All keyboard and mouse support is handled by the keyHook and mouseHook dlls. Also removed NVWH as its no longer needed.
------------------------------------------------------------------------
r1147 | mdcurran | 2007-08-28 19:52:42 +1000 (Tue, 28 Aug 2007) | 1 line

Added the mouseHook library. This enables a program to register a callback function, that will be executed each time the mouse moves or is clicked. This can act as a replacement for pyHook, if used from Pythong with ctypes.
------------------------------------------------------------------------
r1144 | pvagner | 2007-08-26 20:00:28 +1000 (Sun, 26 Aug 2007) | 1 line

* updated french language file
------------------------------------------------------------------------
r1142 | mdcurran | 2007-08-26 14:36:36 +1000 (Sun, 26 Aug 2007) | 1 line

Improved the logic that fixes the bug in Notepad++ where focus is constantly given to some strange list while the program is in the foreground. Rather than checking getForegroundWindow for notepad++'s window class, we get the root owner ancestor of the window being focused, to see if its the notepad++ window class. This not only stops the list being focused all the time while notepad++ is in the foreground, but it also fixes another problem where  if you are in notepad++ and then alt tab away, there is a chance that that list could get focused for a little while again. This was especially annoying for alt tabbing from notepad++ to a dos console window, since NVDA wouldn't realize the dos console window had focus, and therefore it was unusable.
------------------------------------------------------------------------
r1141 | mdcurran | 2007-08-26 12:30:22 +1000 (Sun, 26 Aug 2007) | 1 line

Fix bug in Scintilla textInfo class, where _getWordOffsets would sometimes return an incorrect start offset (it would be the start of the previous word). This would cause information to be announced twice when moving around by word. It seems that Scintilla's wordStartPos window message returns the start of the previous word, if you give it the start offset of the word in question. NVDA now double checks the offsets Scintilla gives back, and if one is wrong, then it asks for the end of the previous word, and uses that as the start of this word instead.
------------------------------------------------------------------------
r1140 | mdcurran | 2007-08-26 12:17:21 +1000 (Sun, 26 Aug 2007) | 1 line

_getWordOffsets in the Edit textInfo class, when dealing with plane edit controls (not rich edit) no longer uses selections to work out the offsets of a word, but just moves the collapsed caret. This actually seems to be more accurate, plus this code became quite unusable when NVDA was changed so that selecting text was automatically announced, rather than increasing selection announcment being bound to a key/script.
------------------------------------------------------------------------
r1139 | pvagner | 2007-08-25 23:15:19 +1000 (Sat, 25 Aug 2007) | 1 line


------------------------------------------------------------------------
r1137 | jteh | 2007-08-22 13:30:18 +1000 (Wed, 22 Aug 2007) | 1 line

Move the mouse out of the way when focusing on a toolbar button. Also, when a toolbar receives focus, check for a child with focused state and redirect the focus to that child if one is found. This should make life nicer when navigating the system tray in Windows XP. Note that when leaving a tray context menu, focus will jump to the toolbar instead of the previously focused item, which is annoying. Also, buttons are sometimes spoken twice. Closes #10.
------------------------------------------------------------------------
r1136 | mdcurran | 2007-08-17 21:30:29 +1000 (Fri, 17 Aug 2007) | 1 line

Revert r1133, use comtypes_gen instead of comInterfaces in setup.py. No longer appropriate since we have reverted the comtypes changes.
------------------------------------------------------------------------
r1135 | mdcurran | 2007-08-17 21:28:12 +1000 (Fri, 17 Aug 2007) | 1 line

Revert the change to how NVDA uses comtypes (r1125) because although it did allow NVDA to work with comtypes 0.3.2 when running from source, comtypes 0.3.2 has problems when compiled with py2exe 0.6.5/0.6.6. NVDA from now on can only really use comtypes 0.2.1, unless we get parts of comtypes re-written to properly handle movement of the gen module.
------------------------------------------------------------------------
r1134 | pvagner | 2007-08-16 17:23:05 +1000 (Thu, 16 Aug 2007) | 1 line

* updated traditional chinese language file
------------------------------------------------------------------------
r1133 | jteh | 2007-08-16 17:18:57 +1000 (Thu, 16 Aug 2007) | 1 line

Update setup.py to use comtypes_gen instead of comInterfaces.
------------------------------------------------------------------------
r1132 | mdcurran | 2007-08-16 13:27:13 +1000 (Thu, 16 Aug 2007) | 1 line

Fix bug where disabling the announcing of object position info would not stop announcing it.
------------------------------------------------------------------------
r1131 | mdcurran | 2007-08-15 20:25:50 +1000 (Wed, 15 Aug 2007) | 1 line

Fix revert to saved configuration, it would just give errors and make NVDA unusable. core.resetConfiguration needs to import config, languageHandler and debug. Also gui should execute core.resetConfiguration inside the interactiveQueue, rather than executing it directly.
------------------------------------------------------------------------
r1130 | mdcurran | 2007-08-15 20:23:55 +1000 (Wed, 15 Aug 2007) | 1 line

Added a pause method to the silence synth driver. This stops errors when pressing the control key when using the silence synth driver.
------------------------------------------------------------------------
r1129 | pvagner | 2007-08-15 20:05:17 +1000 (Wed, 15 Aug 2007) | 1 line

* "configuration saved" message is now spoken again
------------------------------------------------------------------------
r1128 | mdcurran | 2007-08-15 10:11:47 +1000 (Wed, 15 Aug 2007) | 1 line

Fix broken sapi4 activeVoice driver. In comtypes version 0.3.2 no longer has a sink keyword argument for comtypes.client.CreateObject, so instead now do comtypes.client.GetEvents.
------------------------------------------------------------------------
r1127 | mdcurran | 2007-08-15 10:00:52 +1000 (Wed, 15 Aug 2007) | 1 line

Don't import the original comtypes.gen when remapping it to comtypes_gen. It doesn't sometimes seem to exist.
------------------------------------------------------------------------
r1126 | pvagner | 2007-08-15 04:48:01 +1000 (Wed, 15 Aug 2007) | 1 line

* new totally revised hungarian readme file for both branches
------------------------------------------------------------------------
r1125 | mdcurran | 2007-08-14 22:40:32 +1000 (Tue, 14 Aug 2007) | 12 lines

Changed the way that NVDA caches comtypes COM interfaces. This needed to be done because of changes in versions of comtypes after 0.2.1, that caused NVDA's previous code to render totaly blank COM interface modules. This also now means that NVDA does not contain any comtypes code itself, but just completely uses the version of comtypes currently on the user's system.
 *Renamed comInterfaces module to comtypes_gen
*Added a function (setAsComtypesGenModule) to comtypes_gen.__init__.py, which remaps comtypes.gen to comtypes_gen, by importing comtypes and comtypes_gen, and assigning comtypes_gen to comtypes.gen and sys.modules['comtypes.gen'].
This is probably a bit hackish, but its the only way that I can think of to make sure that any code that uses comtypes.gen, actually uses comtypes_gen.
This means that if you've imported comtypes_gen, and you've called comtypes_gen.setAsComtypesGenModule(), any COM interfaces that comtypes generates from then on will be stored in comtypes_gen, rather than in comtypes's system gen dir.
*Import comtypes_gen and call comtypes_gen.setAsComtypesGenModule() in core.py and generate.py.
*Rename any occurences of comtypesClient to comtypes.client, and any occurences of comtypes.client._ to comtypes.client.dynamic._.
This stops NVDA from using its own hacked version of comtypes.client, reverting back to using the official comtypes.client. 
*Removed comtypesClient.py, This is no longer needed.

Its a good idea to re-run generate.py if you run this revision of the code for the first time as all the COM interfaces will need to be regenerated.

------------------------------------------------------------------------
r1124 | pvagner | 2007-08-14 20:01:59 +1000 (Tue, 14 Aug 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1123 | pvagner | 2007-08-14 18:51:56 +1000 (Tue, 14 Aug 2007) | 1 line

* tweaked that copyCurrent script not to raise errors when name or value is none
------------------------------------------------------------------------
r1122 | pvagner | 2007-08-14 17:07:21 +1000 (Tue, 14 Aug 2007) | 1 line

* added navigatorObject_copyCurrent script bound to Control+NVDA+Clear (Control+NVDA+numpad5) which copies name and value of the current navigator object to the windows clipboard
------------------------------------------------------------------------
r1121 | pvagner | 2007-08-14 15:46:02 +1000 (Tue, 14 Aug 2007) | 1 line

* updated spanish language file
------------------------------------------------------------------------
r1120 | mdcurran | 2007-08-14 14:09:31 +1000 (Tue, 14 Aug 2007) | 1 line

allow window NVDA objects to be initialized with a window handle of 0 (invalid). There are just too many MSAA objects and broken IA2 objects with invalid window handles.
------------------------------------------------------------------------
r1119 | mdcurran | 2007-08-14 14:08:12 +1000 (Tue, 14 Aug 2007) | 1 line

Fixed an error in the generation of IA2 role constants. They were all off by one (role_unknown is 0, not 0x401). Also overode _get_role for IA2 NVDA objects, so now NVDA reports the proper IA2 roles. IA2 role support used to be broken in Firefox 3, but now with alpha8 it seems to be working ok. You'll only notice a difference for object navigation and focus though, virtual buffers do not use IA2 at all... not at least until they're finnished being  re-written.
------------------------------------------------------------------------
r1118 | pvagner | 2007-08-14 06:26:42 +1000 (Tue, 14 Aug 2007) | 2 lines

* updated the list of contributors
* update to french language file
------------------------------------------------------------------------
r1117 | pvagner | 2007-08-14 05:09:54 +1000 (Tue, 14 Aug 2007) | 2 lines

* updated portuguese language file
* updated russian language file
------------------------------------------------------------------------
r1116 | mdcurran | 2007-08-13 10:44:01 +1000 (Mon, 13 Aug 2007) | 1 line

Don't announce blank lines when speaking the content of a dos console window for the first time when it receives focus.
------------------------------------------------------------------------
r1115 | mdcurran | 2007-08-13 10:23:55 +1000 (Mon, 13 Aug 2007) | 1 line

Added polish language file by DOROTA CZAJKA and friends.
------------------------------------------------------------------------
r1114 | pvagner | 2007-08-12 17:05:38 +1000 (Sun, 12 Aug 2007) | 1 line

* updated finish language files for trunk as well as for 0.5 branches
------------------------------------------------------------------------
r1113 | pvagner | 2007-08-12 05:10:50 +1000 (Sun, 12 Aug 2007) | 1 line

* now the synth ring script modifiers are finally ok
------------------------------------------------------------------------
r1112 | pvagner | 2007-08-12 03:57:59 +1000 (Sun, 12 Aug 2007) | 1 line

* Fixed the order of key modifiers for synth ring scripts bindings
------------------------------------------------------------------------
r1111 | pvagner | 2007-08-12 03:49:37 +1000 (Sun, 12 Aug 2007) | 4 lines

* slightly modified patch from Rui Batista adding synth settings ring resembling window eyes behaviour
* updated brazilian portuguese language file
* updated german language file
* updated russian language file
------------------------------------------------------------------------
r1110 | mdcurran | 2007-08-10 20:22:54 +1000 (Fri, 10 Aug 2007) | 1 line

_get_bookmark of the winword textInfo class should pass self.__class__ as the first argument to textHandler.Bookmark, not the data tuple should be the second parameter. I must have overlooked this fhile when changing how textHandler.Bookmark should be used. This should hopefully stop an error in NVDA when trying to do a say all in MS Word.
------------------------------------------------------------------------
r1109 | pvagner | 2007-08-06 17:43:17 +1000 (Mon, 06 Aug 2007) | 1 line

* traditional chinese language file updated
------------------------------------------------------------------------
r1108 | pvagner | 2007-08-06 07:56:18 +1000 (Mon, 06 Aug 2007) | 3 lines

* global update to the finish language files including documentation
* hungarian language file updated
* slovak language file updated
------------------------------------------------------------------------
r1107 | pvagner | 2007-08-05 17:16:08 +1000 (Sun, 05 Aug 2007) | 2 lines

* added a check for controlTypes.ROLE_PASSWORDEDIT to api.isTypingProtected(). It shal make typing in java password edits produce a star instead of saying all the typed characters.
* mapped TEdit window class to the edit.Edit NVDA object. (another one found and tested in total commander).
------------------------------------------------------------------------
r1106 | pvagner | 2007-08-05 03:41:53 +1000 (Sun, 05 Aug 2007) | 1 line

* fixed reporting objects under mouse bug. when all initialization parameters were consolidated In R1089 this one has been forgotten
------------------------------------------------------------------------
r1105 | mdcurran | 2007-08-04 11:27:33 +1000 (Sat, 04 Aug 2007) | 1 line

event_valueChange on Edit NVDA objects now update the last selection position variable so that in edit combo box fields etc, when changing choices, such as in the run dialog box, NVDA doesn't announce funny selection changes due to the length of the choice changing. e.g. "cmd" is written in the run edit combo, then you down arrow to "python" NVDA would announce "selected thon" because the selection was seemed to be expanded by 4 characters. Then if you up arrowed to cmd again it would say "cmd selection deleted" because the selection was reduced by 4 characters, plus those 4 characters actually don't exist anymore. Now NVDA doesn't announce any selection info when arrowing up and down.
------------------------------------------------------------------------
r1104 | mdcurran | 2007-08-04 00:34:16 +1000 (Sat, 04 Aug 2007) | 1 line

Seemed to have fixed a long-standing bug where NVDA freezes / crashes when focusing on a consoleWindow for more than 3 times. This was fixed by not calling disConnectConsole directly from the monitor thread, but instead queuing it in the eventQueue. Also by using threading.Thread, rather than the thread module. We also when disconnecting the console  set keepMonitoring to False and then join the monitor thread as it stops, rather than just doing a time.sleep and hoping for the best. Also in IAccessibleHandler.py, with MSAA events, we check if a window isvalid, if not we ignore the event. We do this both in the actual eventHook, and also in handleFocusEvent/handleForegroundEvent/manageEvent (as this is executed in the main thread after being in the eventQueue, and the window in question may have been destroyed by then).
------------------------------------------------------------------------
r1103 | pvagner | 2007-08-03 23:53:18 +1000 (Fri, 03 Aug 2007) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1102 | pvagner | 2007-08-03 18:41:11 +1000 (Fri, 03 Aug 2007) | 4 lines

* copyed english user guide from 0.5 branch into trunk
* renamed all readme and user guide files to user guide.html and readme.txt respectivelly
All the readme and user guide authors should check their files and make changes or send a note that html documentation from 0.5 should also be used for trunk for a while.
NVDA installer will be modified to look for the files mentioned above.
------------------------------------------------------------------------
r1101 | pvagner | 2007-08-03 04:13:31 +1000 (Fri, 03 Aug 2007) | 1 line

* fixed small typo in winword.py; should compile again (thx John)
------------------------------------------------------------------------
r1100 | mdcurran | 2007-08-02 23:45:31 +1000 (Thu, 02 Aug 2007) | 13 lines

*When an MSAA event is received that has an object ID of OBJID_CARET, and an event type of locationChange, and the window matches the window of the current focus object, then the object ID and child ID are changed to match the focus object's, and the event type is changed to caret.
This means that when the operating system communicates through MSAA that the system caret has moved, the focusObject will be notified with an event_caret.
*Moved most of the code from script_changeSelection in the base NVDA object in to its own function, speech.speakSelectionChange.
 This function takes two textInfo objects, one representing the old selection, and one representing the new selection.
It also takes a few optional keyword arguments, to state whether it should announce such things as selection, unselection and selection deletion.
*speech.speakSelectionChange can now announce when the selection, or part of the selection, has been deleted. It first detects it as text being unselected, but if it finds that it can't actually access the text that was unselected (as in the edit control isn't that large anymore) then it announces selection deletion.
*implemented an event_caret method for the Edit textInfo object. This grabs the current selection, and also the old selection, and calls speech.speakSelectionChange, but telling it not to speak unselected text. Then it updates the old selection with the current.
Also script_changeSelection is overridden for Edit textInfo objects, so that when it calls speech.speakSelectionChange, it only will speak unselected text, not selected text (as this is handled by the caret event).
*reportFocus for Edit NVDAObjects now announces itself, with speakObjectProperties by its name, role, keyboardShortcut, and positionString, rather than just using speech.speakObject, since we no longer want to announce the value on focus. After announcing the object properties, it then either announces the current line/chunk of text at the caret, or announces the current selection (saying selected before it). This means now that when tabbing to an edit field who's text is already selected, such as the run dialog box, you can tell that its selected straight away.

All these changes were necessary so that automatic selection (with out keyboard interaction) could be spoken. This happens in auto complete edit fields, such as  in Outlook Express. So now if you start typing an email address in one of these fields, and Windows auto-completes it, NVDA will announce the auto completed text because its been selected by windows.


------------------------------------------------------------------------
r1099 | mdcurran | 2007-08-02 17:31:10 +1000 (Thu, 02 Aug 2007) | 1 line

Removed a try except block from around the code in WavePlayer.feed in nvwave. As all it was doing on exception was writing  it to the debug log. However, since nvwave is separate from nvda, and debug wasn't even imported anyway, there was no point. put a try except block around the code in the callback function in _espeak, and if there is an exception, then its  written to the ebug log. This was the only place where nvwave.WavePlayer.feed exceptions would have been missed, the rest are in the GUI thread anyway.
------------------------------------------------------------------------
r1098 | mdcurran | 2007-08-02 14:02:05 +1000 (Thu, 02 Aug 2007) | 1 line

If an IAccessible NVDA object is being instanciated with an invalid windowHandle, or it can't get a windowHandle from its MSAA object, then return None from __new__. This should fix an error in the Outlook 2003 message list.
------------------------------------------------------------------------
r1097 | mdcurran | 2007-08-02 13:39:24 +1000 (Thu, 02 Aug 2007) | 1 line

If a textInfo object is initialized with a bookmark that came from a different textInfo class, then raise TypeError, rather than RuntimeError.
------------------------------------------------------------------------
r1096 | mdcurran | 2007-08-02 13:20:47 +1000 (Thu, 02 Aug 2007) | 1 line

Fix the statusBar property of IAccessible NVDA objects. There was a typo. It caused reportStatusLine script  to have an error.
------------------------------------------------------------------------
r1095 | mdcurran | 2007-08-02 11:35:31 +1000 (Thu, 02 Aug 2007) | 1 line

Added an infoClass parameter to the textHandler.Bookmark class. This should be set to the class of the textInfo object who generated the bookmark. All textInfo classes have been changed so that they set the class on the bookmark, and also so that they check the infoClass of the bookmark against their own. If its wrong then they rase a RuntimeError. Also Cleaned up textHandler.py quite a bit, deleted many classes and constants that are no longer used, and updated all classes and functions with correct docstrings.
------------------------------------------------------------------------
r1094 | mdcurran | 2007-08-02 09:36:50 +1000 (Thu, 02 Aug 2007) | 1 line

Added an isCollapsed property to all textInfo objects. Also changed sayAllhandler.readText so that if the textInfo object passed to it is collapsed, then sayAll should happen until the textInfo object can't move anymore. If the textInfo object is expanded, like previous revisions, sayAll will only happen  until the end of the textInfo object's current range. Changed the review and caret sayAll scripts in the default appModule to give a collapsed textInfo object. This now stops the need for having to expand from the current position to the end of the story (document etc) which in some cases may take a bit of  calculating. Also added an includeBlankText boolean keyword argument to speech.speakFormattedText. It is true by default, but if false, it will not speak strings that will be announced a blank. sayAllHandler.readText now  calls speakFormattedText with includeBlankText=False. This also now stops the need of sayAllHandler.readText from having to se the text property of the textInfo object just to work out of its blank before calling speakFormattedText which will grab the text anyway.
------------------------------------------------------------------------
r1093 | vtsaran | 2007-08-02 09:03:51 +1000 (Thu, 02 Aug 2007) | 2 lines

Minor changes: commented PlaySound function since we are not using it at the moment.
Removed NVDA_Welcome and NVDA_Please_Wait sound files and all the refernces to them since they are no longer used.
------------------------------------------------------------------------
r1092 | jteh | 2007-08-02 08:12:42 +1000 (Thu, 02 Aug 2007) | 5 lines

Clean up this code quite a bit:
Use ctypes errcheck mechanism instead of checking the return code everywhere.
getVoiceList(): Iterate through the voice list using a 'for' loop.
stop(): When consuming the queue, don't even bother checking queue.empty(); just let the Queue.Empty exception break us out of the loop. This saves a pointless check.

------------------------------------------------------------------------
r1091 | mdcurran | 2007-08-01 11:42:21 +1000 (Wed, 01 Aug 2007) | 1 line

Mapped a few more Mozilla html roles (div, rom, tbody) to NVDA roles.
------------------------------------------------------------------------
r1090 | mdcurran | 2007-07-31 23:38:51 +1000 (Tue, 31 Jul 2007) | 1 line

added reason_sayAll to speech.py and now ayAllHandler.readObjects uses this reason for speakObject. Also for now reason_sayall does the same as reason_focus in that it cuts down how much info ot speaks for each object (e.g. doesn't say listItem for list item objects in a list). This should speed up object navigation sayAll quite a bit.
------------------------------------------------------------------------
r1089 | mdcurran | 2007-07-31 20:25:22 +1000 (Tue, 31 Jul 2007) | 10 lines

*Standardized the way NVDAObject classes take initialization parameters.
All parameters are now keyword arguments, all subClasses take all the parameters of any superClass, and all parameters are in order of class (from super to sub).
For example: the Window NVDAObject takes a keyword argument of windowHandle. This means now that any subClass of Window, such as JAB, or IAccessible etc, also have to take windowHandle as a keyword argument. Of course in JAB and IAccessible, windowHandle is optional, if not given  it will be calculated anyway, but it has to at least accept windowHandle as an argument. 
This makes it easier for subClasses to interact with their super classes because they can predict what arguments they will take. It also means that any subClass can be treeted just like a superClass. E.g. you can now initialize an IAccessible NVDA object just using a windowHandle. You'll get back the client IAccessible object if you do this (window,OBJID_CLIENT,0).
*renamed the JABHandler.JABObjectWrapper class to JABHandler.JABContext.
*Implemented the parent property for window NVDA objects and also changed IAccessible's parent property to use the window parent property if there doesn't seem to be a parent according to MSAA. This fixes some problems where you are deep down in an MSAA object tree and apparently the object you're on has no parents, so there fore you can't get back up to the desktop window.

There may be a few bugs from this change because it is quite large, however it does greatly improve the way that all the different APIs can deal with each other through NVDA Objects.


------------------------------------------------------------------------
r1088 | pvagner | 2007-07-31 16:42:28 +1000 (Tue, 31 Jul 2007) | 3 lines

* allow output device selection work with more than 3 sound devices
* added outputDeviceNumber parameter to WavePlayer.__init__ in order to keep nvwave separated thus usable for other projects. (thx Jamie)
* updated espeak synth driver and tones.py script reflecting this change
------------------------------------------------------------------------
r1087 | mdcurran | 2007-07-31 14:11:53 +1000 (Tue, 31 Jul 2007) | 1 line

Fixed a bug where NVDA could get errors if a list in outlook express / windows mail didn't have an active child. We now check to see if the activeChild is None or not, before trying to speak it and give focus to it. This code is for things like deleting message. Simetimes if you were using imap on a slow connection a dialog would come up while deleting and NVDA would then have the error.
------------------------------------------------------------------------
r1086 | mdcurran | 2007-07-31 12:52:14 +1000 (Tue, 31 Jul 2007) | 1 line

Added a navigator object sayAll script to the default appModule (insert+add). This automatically moves through and speaks all the  NVDA objects in flow order after the current navigator object, also updating the navigator object as it goes. It also beeps to let you know when it's speaking the next object, it also beeps lower or higher tones to say whether its going up or down levels in the tree. This script could be used to read web content by object, or other complex structures of objects. renamed sayAllHandler.read to sayAllHandler.readText. Added an index keyword argument to speech.speakObject and speech.speakObjectProperties.
------------------------------------------------------------------------
r1085 | mdcurran | 2007-07-31 11:04:37 +1000 (Tue, 31 Jul 2007) | 1 line

change tones.beep to use a multiple of 2, not 3 for  flattening. Hopefully this is a good enough comprimize between nice sounding and ease of hearing.
------------------------------------------------------------------------
r1084 | mdcurran | 2007-07-31 10:55:47 +1000 (Tue, 31 Jul 2007) | 1 line

More improvement to the sound of tones.beep. This time its back to a sine wave, but flattened off for the top of the peaks, so that its a bit more squarish. Rather more like how a PC speaker would produce sound.
------------------------------------------------------------------------
r1083 | pvagner | 2007-07-31 04:50:57 +1000 (Tue, 31 Jul 2007) | 1 line

* added output device selection combobox to the synthesizer dialog. This is a global setting which synths can make some use of. Currently both sapi4, sapi5 drivers and nvwave player can handle it. This means all synths and tones produced by NVDA can now be sent to the specified output device.
------------------------------------------------------------------------
r1082 | mdcurran | 2007-07-31 00:25:15 +1000 (Tue, 31 Jul 2007) | 1 line

Changed tones.beep to use a triangle waveform rather than a sine waveform. This makes it a little easier to hear as its a little more... crunchy, rather than a pure sine wave. Also turned up the amplitude to 10000.
------------------------------------------------------------------------
r1081 | jteh | 2007-07-30 22:17:21 +1000 (Mon, 30 Jul 2007) | 1 line

Implemented nvwave.WavePlayer.pause() and use this in the espeak synth driver instead of our own home brewed solution. I have no idea why I didn't think of this before...
------------------------------------------------------------------------
r1080 | mdcurran | 2007-07-30 19:11:15 +1000 (Mon, 30 Jul 2007) | 1 line

Disallow navigating to the individual text items of msctls_statusbar32 statusbar objects as  all the text appears in the value of the statusbar object anyway. Now that object navigation may be used a bit more by people, this is to cleanup the logic a bit.
------------------------------------------------------------------------
r1079 | mdcurran | 2007-07-30 17:57:53 +1000 (Mon, 30 Jul 2007) | 1 line

the lastChild property on generic MSAA NVDAObjects who's window is a Java Window now also returns the root Java object in the window. Previously, only firstChild was implemented. Also implemented the lastChild property for JAB NVDAObjects.  This means that previousInFlow works properly for JAB NVDA objects.
------------------------------------------------------------------------
r1078 | mdcurran | 2007-07-30 17:48:45 +1000 (Mon, 30 Jul 2007) | 1 line

in the JAB NVDAObject, rather than checking if parent is None, to return with out doing things like getting  position info etc, check if parent is not of type JAB, since now it is possible that the parent can be an MSAA NVDAObject, not just a JAB one. This stops a few errors when traversing some Java apps.
------------------------------------------------------------------------
r1077 | mdcurran | 2007-07-30 17:33:25 +1000 (Mon, 30 Jul 2007) | 1 line

The firstChild, and only child in the children property, of an MSAA NVDAObject who's role is client (a generic MSAA object) and who's window is a javaWindow, is now the root Java object in that window. Also the parent of a Java object who has no parents according to Java, is the generic MSAA object NVDA object for that window. This means that now you can navigate in and out of Java windows with object navigation.
------------------------------------------------------------------------
r1076 | mdcurran | 2007-07-30 15:25:34 +1000 (Mon, 30 Jul 2007) | 11 lines

*Added a lastChild property to NVDA objects (actually implemented property for MSAA NVDA objects, not for JAB yet).
This is mainly used when having to traverse a tree backwards.
*Added getNextInFlow and getPreviousInFlow methods to NVDA objects. These methods find the next or previous object in the flow of the tree, rather than being limited to the current level. It is possible to walk the entire tree of objects by just using one of these methods, rather than having to manually keep going child next next child parent etc.
These methods also take two optional lists (up and down) that when the method is finnished, will hold any objects that were passed down in to, or up out of, to get to the object that the method returns. For instance if you do getPreviousInFlow and there is no more objects on the current level, it might go to the parent (so the starting object will be put in the up list), then it might go previous and dive right down through all the lastChilds till it gets to the bottom, in this case all the objects it passed through will get put in the down list.
getNextInFlow and getPreviousInFlow, depending on the NVDA object, may ot just do a simple tree traversal, but may be overridden to do specific flowTo/flowFrom movements for that API. Example in ARIA with IA2, it is possible for a web developer to show that one control flows to another.
*Added nextInFlow and previousInFlow properties to NVDA objects. These properties simply call getNextInFlow and getPreviousInFlow respectively.
*Added nextInFlow and previousInFlow object navigation scripts to the default appModule (shift+insert+numpad6 and shift+insert+numpad4). These scripts move the navigator object next or previous in the flow, but, they also communicate whether or not a level was jumped, whether its up or down, and how many levels exactly, through short beeps, in intervals of a third.
Example if you're on a list, and you go nextInFlow it will fall to the first list item, and at the same time give two short beeps, one at 660 hz and one a third below. If it fell two or more levels, then there would be more beeps, at lower thirds. This is the same for going up levels.
*tones.beep now uses an amplitude of 7000, used to be 5000.


------------------------------------------------------------------------
r1075 | jteh | 2007-07-30 08:50:36 +1000 (Mon, 30 Jul 2007) | 1 line

Add copyright headers to a few files that were missing them.
------------------------------------------------------------------------
r1074 | pvagner | 2007-07-30 05:37:26 +1000 (Mon, 30 Jul 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1073 | mdcurran | 2007-07-30 00:09:23 +1000 (Mon, 30 Jul 2007) | 1 line

Improved the logic of pausing and unPausing with the control key. All speech.speak functions, if speech is paused, cancel speech. This means that pressing control will pause, but if new text needs to be spoken, it still will be, canceling any paused speech at the same time.
------------------------------------------------------------------------
r1072 | mdcurran | 2007-07-29 23:58:04 +1000 (Sun, 29 Jul 2007) | 9 lines

These changes allow NVDA to pause and resume speech with the control key, such as is done in the Voice Over screen reader for the Mac.
When NVDA is speaking anything, whether it be the focus, arrowing around, or say all, if you press control, like normal speech will stop, but if you press control again, with out pressing anything else, speech will start from where it left off.
This works so far with eSpeak, sapi4activeVoice and sapi4Serotek. Sapi5 for now just stops, and doesn't resume. It does have a Pause method, but doesn't seem to work for me.
*Added a pause function to speech.py. It takes a boolean parameter, to say if it should pause or unPause. A part from actually calling pause() on the synthDriver, it also sets speech.isPaused to an appropriate value
*Changed keyboardHandler so that if the control key is pressed down, and speech is not currently paused, it pauses the speech. If the control key is pressed down and speech is paused already, it sets a global variable which if set when the control key is released, speech is unPaused. Any other key press resets this global variable, so that only pressing the control key down  and then letting it up, pressing it down again and letting it up, pauses and unPauses. Also globalVars.keyCounter is only updated for keys other than control, as control only really pauses and unpauses now, it doesn't do other things by itself. This makes sure that sayAl is not completely canceled when pressing control.
*Changed sayAllHandler.read so that while speech is paused, it continues to yield and do nothing else. This means that pausing speech pauses sayAll with out actually canceling it. Once speech is unPaused, sayAll will continue where it left off.
*Added a pause method (that takes a boolean parameter) to sapi4Serotek, sapi4ActiveVoice, sapi5 and eSpeak synth drivers. The sapi drivers handle pausing themselves, but espeak had to have quite a bit of changes in _espeak.py to enable pausing. _espeak now has a global variable called paused, which is set to true when paused, and false when not. the espeak synth callback now caches the last, and second last audio buffers, so that they can be replayd when speech is unpaused. while the callback knows speech is paused, it just waits itself, with a while loop (probably should improve the loop a bit to lessen cpu load).


------------------------------------------------------------------------
r1071 | pvagner | 2007-07-29 21:32:37 +1000 (Sun, 29 Jul 2007) | 1 line

* spanish language file updated
------------------------------------------------------------------------
r1070 | pvagner | 2007-07-29 21:02:02 +1000 (Sun, 29 Jul 2007) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1069 | mdcurran | 2007-07-29 15:52:18 +1000 (Sun, 29 Jul 2007) | 1 line

Unknown objects in MS Outlook message/contact lists are now reported as icons, not unknown objects. Also fixed the bug in the Outlook Address book where moving up and down addresses would not announce them. This window has rather limited MSAA support, so IAccessibleHandler.handleFocusEvent now doesn't bother ignoring focus events if they come from this particular window class (OUTEXVLB), even though it seems that the window, objectID and childID are the same as the last focus.
------------------------------------------------------------------------
r1068 | mdcurran | 2007-07-29 14:45:27 +1000 (Sun, 29 Jul 2007) | 1 line

Only make the new Microsofot Outlook code work with Outlook 2000. I found out that xp/2002 doesn't need it, plus it causes Outlook to ask the user if NVDA is alloud to access the address list in later versions.
------------------------------------------------------------------------
r1067 | mdcurran | 2007-07-29 14:06:16 +1000 (Sun, 29 Jul 2007) | 1 line

Fixed bug where focusing on a dos console window and then navigating away and back again with object navigation and then trying to review the text caused  errors. _get_basicTextLineLength needed to check if consoleHandle existed, if not, then just do what the base NVDAObject's basicTextLineLength does.
------------------------------------------------------------------------
r1066 | mdcurran | 2007-07-29 12:41:17 +1000 (Sun, 29 Jul 2007) | 1 line

Improve logic for finding the status bar (insert+end). It now asks the focus object, rather than the foreground object, and it tries to find the status bar, if not, then moves to the parent window and tries again, and it keeps doing this until there are no more parent windows left. Also improved the logic of how the text of the statusbar is retreaved. This ixes a problem where some window class names were being reported in the MS Outlook statusbar.
------------------------------------------------------------------------
r1065 | mdcurran | 2007-07-29 12:38:59 +1000 (Sun, 29 Jul 2007) | 1 line

support reading of the next highlighted message when pressing the delete key in an outlook 2000/xp message/contact list.
------------------------------------------------------------------------
r1064 | mdcurran | 2007-07-29 11:56:28 +1000 (Sun, 29 Jul 2007) | 1 line

The code supporting Microsoft Outlook 2000 message lists is now also used for any version of Outlook below 2003 (so this is both 2000 and xp). Hopweuflly now people using 2000/xp Outlook versions can read message lists, and contact lists. No support for calandar lists has been wwritten yet. Outlook 2000 / XP has no way of comunicating to NVDA exactly what fields are showing for a view, so message lists for now just announce senderName, subject, and received time. Contact lists announce fullName, company, job title, email addres. This should be enough info at least to be able to find a contact, if you want more, actually go in to that particular one.
------------------------------------------------------------------------
r1063 | mdcurran | 2007-07-28 14:07:46 +1000 (Sat, 28 Jul 2007) | 1 line

Added an appModule for Microsoft Outlook. For now this is really only test code to see how scripting Outlook is possible, it simply makes the MS Outlook 2000 message list accessible. 2003 etc seem to already have ok MSAA support for the message list. Before mor work with NVDA and the outlook object model can be done, there is an issue with Outook where when its processing (checking mail etc) it blocks keyboard input to NVDA. This must be solved first.
------------------------------------------------------------------------
r1061 | pvagner | 2007-07-26 20:55:54 +1000 (Thu, 26 Jul 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1059 | pvagner | 2007-07-25 09:59:20 +1000 (Wed, 25 Jul 2007) | 2 lines

* updated hungarian language file
* added simple winamp app module. At the moment it enables reading by items in the playlist editor window. Winamp 5.22 or newer is required.
------------------------------------------------------------------------
r1058 | pvagner | 2007-07-25 02:57:44 +1000 (Wed, 25 Jul 2007) | 1 line

* updated finish, french and slovak language files
------------------------------------------------------------------------
r1057 | pvagner | 2007-07-25 01:26:16 +1000 (Wed, 25 Jul 2007) | 1 line


------------------------------------------------------------------------
r1056 | pvagner | 2007-07-25 00:09:11 +1000 (Wed, 25 Jul 2007) | 1 line

* updated russian language file
------------------------------------------------------------------------
r1055 | pvagner | 2007-07-24 16:24:27 +1000 (Tue, 24 Jul 2007) | 1 line

* russian language file updated
------------------------------------------------------------------------
r1054 | pvagner | 2007-07-23 16:42:33 +1000 (Mon, 23 Jul 2007) | 1 line

* Mapped TTntStatusBar.UnicodeClass to statusbar iaccessible object and also search for this window class when trying to find a statusbar within _get_statusBar method
------------------------------------------------------------------------
r1053 | mdcurran | 2007-07-23 10:52:21 +1000 (Mon, 23 Jul 2007) | 1 line

Fixed bug where NVDA would no longer read with RichEdit20A window classes, such as in Popcorn and apparently Text Pal. There was a typo in the CharFormat struct for ascii rich edit fields.
------------------------------------------------------------------------
r1052 | jteh | 2007-07-23 08:49:33 +1000 (Mon, 23 Jul 2007) | 1 line

Fix support for Microsoft Excel.
------------------------------------------------------------------------
r1051 | pvagner | 2007-07-22 21:43:26 +1000 (Sun, 22 Jul 2007) | 1 line

* updated traditional chinese language file
------------------------------------------------------------------------
r1050 | pvagner | 2007-07-22 04:02:31 +1000 (Sun, 22 Jul 2007) | 1 line

* updated hungarian language file
------------------------------------------------------------------------
r1049 | mdcurran | 2007-07-21 21:01:59 +1000 (Sat, 21 Jul 2007) | 1 line

Renamed the review_reportPresentation script to reportFormatting. Its still bound to insert+f, but now it grabs a textInfo object representing the caret position of the focus object, expands it to character, and then fetches its formattedText, asking for fontName, size, bold, italic and underline. It then speaks these format values.
------------------------------------------------------------------------
r1048 | pvagner | 2007-07-21 21:00:12 +1000 (Sat, 21 Jul 2007) | 1 line

* updated german language file
------------------------------------------------------------------------
r1047 | mdcurran | 2007-07-21 21:00:11 +1000 (Sat, 21 Jul 2007) | 1 line

Added an isFormatEndabled function to textHandler.py. It takes a role  argument, and includes and excludes keyword arguments. All this function does is use logic to work out whether a format is enabled, according to the includes and or excludes sets passed to it. All textInfo objects with formatting support have been changed to use this function. Also added support for detecing italic and underline to the Edit textInfo object, so for richEdit controls.
------------------------------------------------------------------------
r1046 | mdcurran | 2007-07-21 18:10:26 +1000 (Sat, 21 Jul 2007) | 1 line

Added a searchRange keyword argument to the getFormattedText method of textInfo objects. If set to true, then this allows the text info object to use any laggy technique to actually return the formatting over the entire range, rather than just the formatting at the start of the range. For offset-based textInfo objects, when searchRange is set to true, it keeps calling _getFormatAndOffses until it reaches the end of the range. Also added a conig option in documentFormatting, detectFormatAfterCursor boolean. This can be configured with the announce formatting changes after cursor checkbox in the document formatting dialog in the NVDA preferences menu. This config option is used by speech.speakFormattedText to work out whether it should set searchRange to true. This all means now that if announce formatting changes after cursor is on, and reportFontName / reportFontAttributes etc, font name or bold will be announced as it changes, not just at the start of a line, but also with in it. Font name and bold are only added so far to the edit NVDA object. Also a bug with richEdit and bold where bold is apparently turned on and off one character after it really is.
------------------------------------------------------------------------
r1045 | pvagner | 2007-07-21 17:38:26 +1000 (Sat, 21 Jul 2007) | 3 lines

* Added russian language file
* added russian language strings to the NVDA installer
both are created by Dmitry Kaslin
------------------------------------------------------------------------
r1044 | pvagner | 2007-07-21 16:33:43 +1000 (Sat, 21 Jul 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1043 | pvagner | 2007-07-21 09:44:12 +1000 (Sat, 21 Jul 2007) | 2 lines

* fix: "with %s items" was not alvais translatable in gecko and adobe virtual buffers
* updated slovak language file
------------------------------------------------------------------------
r1042 | pvagner | 2007-07-21 00:48:15 +1000 (Sat, 21 Jul 2007) | 1 line

* updated italian language file
------------------------------------------------------------------------
r1041 | pvagner | 2007-07-21 00:47:02 +1000 (Sat, 21 Jul 2007) | 1 line

* french language file updated
------------------------------------------------------------------------
r1040 | mdcurran | 2007-07-20 21:15:20 +1000 (Fri, 20 Jul 2007) | 1 line

Added support for fontName and bold attribute, for the edit NVDAObject.  the edit text info object is unable currently to give all the font changes with in a range, but it does give fontName and bold at least from the start of the range. Like line numbers, you need to check reportFontAttributes in the document formatting dialog on the preferences menu to hear bold. reportFontName for font name. Also majorly cut down the use of openProcess by doing that on NVDAObject initialization and closeHandle on NVDAObject distruction. Now all the edit textInfo methods that need to to play with internal process memory use this process handle rather than opening their own each time.
------------------------------------------------------------------------
r1039 | mdcurran | 2007-07-20 21:11:56 +1000 (Fri, 20 Jul 2007) | 1 line

speakFormattedText in speech.py now uses a string rather than a tuple as the format item key when caching them in the NVDA object for net time.  It now updates initialSpokenFormats after looping through formattedText, rather than updating on each loop. This fixes a bug where if there was more than one format but only one of them changed, the second one would always get spken no matter if it changed or not.  It now also checks all the 'on' formatCommands from last time and sees if a key from this time matches, if not, it speaks an format off statement.
------------------------------------------------------------------------
r1038 | mdcurran | 2007-07-20 15:28:49 +1000 (Fri, 20 Jul 2007) | 1 line

Changed the formattedText property of textInfo objects to a getFormattedText method, which takes two optional keyword arguments of includes and excludes. Both of these are sets of format roles which it should either include or exclude. Still, only line numbers are supported, more will be added soon.
------------------------------------------------------------------------
r1037 | mdcurran | 2007-07-20 13:12:12 +1000 (Fri, 20 Jul 2007) | 1 line

The base NVDA object textInfo object's copy method now only copes variables starting with a _ (underline) character. This makes sure that the basePosition property is not copied. Also, _getWordOffsets in the Edit text info class now uses the caret to work out the offsets of a word if the text info object was initialized with position_caret orposition_selection. This way is a little bit slower than the generic way, but it fixes a bug in NVDA with edit controls where moving next and previous word it wouldn't read the entire word if there was punctuation in it, due to NVDA having a different idea of what the offsets were to the application.  Reviewing by word in edit controls still uses the faster way.
------------------------------------------------------------------------
r1036 | mdcurran | 2007-07-19 22:42:55 +1000 (Thu, 19 Jul 2007) | 1 line

the delete script in the base NVDAObject should tell speakFormattedText to handle one-character strings as symbols.
------------------------------------------------------------------------
r1035 | mdcurran | 2007-07-19 22:00:27 +1000 (Thu, 19 Jul 2007) | 1 line

Make the formattedText property of textInfo objects by default just return a list containing the text from the text property. text info objects that are not based on offset-based textInfo classes and do have formatting info to give, should replace _get_formattedText. This fixes errors when compsing mail in Outlook Express and possibly other windows like MS Word etc. .. from the last few revisions.
------------------------------------------------------------------------
r1034 | pvagner | 2007-07-19 21:43:40 +1000 (Thu, 19 Jul 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r1033 | pvagner | 2007-07-19 18:47:24 +1000 (Thu, 19 Jul 2007) | 3 lines

* corrected a few typos in english user guide
* added slovak user guide (translated by Bozenka Gogolakova)
* consolidated slovak language files to use some new terms introduced in the slovak user guide (including load of corrections from Marek Macko)
------------------------------------------------------------------------
r1032 | mdcurran | 2007-07-19 18:22:34 +1000 (Thu, 19 Jul 2007) | 1 line

Added a handleSymbols keyword to speakFormattedText. This should be set to true if you want speakFormattedText to speak any one character strings as symbols, rather than normal text.  All the movement and review scripts dealing with single characters set handleSymbols to True. This fixes a bug in the last revision where blank lines would be announced as cariage return etc. Also converted more scripts in the dfault appModule to use speakFormattedText, plus sayAllHandler also uses speakFormattedText as well.
------------------------------------------------------------------------
r1031 | mdcurran | 2007-07-19 17:50:30 +1000 (Thu, 19 Jul 2007) | 1 line

Added a speakFormattedText function to speech.py. This takes a textInfo object and uses its formattedText property to speak some formatted text. It also remembers the initial formatting so that the next time it has to speak formatted text from the same NVDAObject, it doesn't repeate things. Also made all offset-based textInfo objects, have a formattedText property, that so far includes the current line number. Other formatting types will be added soon. All movement and review scripts now use speakFormattedText, rather than speakText. To hear line numbers, you can check the reportLineNumbers check box in the document formatting settings in the NVDA preferences menu.
------------------------------------------------------------------------
r1030 | mdcurran | 2007-07-19 17:45:28 +1000 (Thu, 19 Jul 2007) | 1 line

Capitalized the start of the FormatCommand class in textHandler.py. Also added a uniqueID property to textHandler.Format, and made the value and contains properties empty strings by default, and states, an empty set.
------------------------------------------------------------------------
r1029 | mdcurran | 2007-07-19 17:43:36 +1000 (Thu, 19 Jul 2007) | 1 line

the Edit textInfo class should implement and use _getLineNumFromOffset, rather than using its own _lineNumFromOffset. Probably was a typo anyway.
------------------------------------------------------------------------
r1028 | mdcurran | 2007-07-19 14:52:45 +1000 (Thu, 19 Jul 2007) | 1 line

Renamed text.py to textHandler.py to allow variables called text exist while textHandler is imported.  It was ok to get around this before now, but now that textHandler is going to be soon imported in to speech.py for formatting, there would be way too many fiddly changes. Hopefully I havn't broken too much, I've renamed text.py to textHandler.py, changed all occurences of import text to import textHandler, and text all occurences of "text.", that do not have an alphanumeric character directly preceding them,  and must have either an uppercase letter, or an f, after them. To "textHandler.". The only thing that may have broken is if there are any variables called text, where their find method is used. However, I can't see any.
------------------------------------------------------------------------
r1027 | mdcurran | 2007-07-19 11:16:32 +1000 (Thu, 19 Jul 2007) | 1 line

Added some classes and constants to text.py which will be used to represent formats and fields in formatted text. Also added more roles to controlTypes.py for things like fontName, fontSize, bold, italic, underline, subscript, superscript etc.
------------------------------------------------------------------------
r1026 | pvagner | 2007-07-19 03:50:46 +1000 (Thu, 19 Jul 2007) | 1 line

* spanish language file updated
------------------------------------------------------------------------
r1025 | pvagner | 2007-07-18 23:29:58 +1000 (Wed, 18 Jul 2007) | 1 line

* updated french language file
------------------------------------------------------------------------
r1024 | pvagner | 2007-07-18 22:54:15 +1000 (Wed, 18 Jul 2007) | 4 lines

* updated traditional chinese language file
* updated italian language file
* added mapping from TInEdit.UnicodeClass window to the edit.Edit NVDA object. This will enable speaking in some editable fields in total commander.

------------------------------------------------------------------------
r1023 | mdcurran | 2007-07-18 19:37:02 +1000 (Wed, 18 Jul 2007) | 1 line

make sure that the hook ID the registered getMessage hook in nvwh for characters, is stored in a shared data segment so that it can be used for callNextHookEx each time the hook is executed in any thread.
------------------------------------------------------------------------
r1022 | mdcurran | 2007-07-17 17:23:18 +1000 (Tue, 17 Jul 2007) | 1 line

Removed a test script to do with embedded objects in edit fields. No longer needed.
------------------------------------------------------------------------
r1021 | mdcurran | 2007-07-17 14:36:29 +1000 (Tue, 17 Jul 2007) | 10 lines

The following changes should make it now possible to properly read the addresses in the to/from/cc/bcc (etc) fields in an Outlook Express or Windows mail message.

*Added oleTypes.py which contains some useful COM interfaces for low-level OLE support (IOleObject etc).
*speech.speakSymbol now reverts to speakText if the given string is more than one character long (i.e. its not really a symbol)
*Added support to the Edit NVDAObject for embedded OLE objects. the text property in the EditTextInfo class will detect embedded objects and expand them to a useful text representation of the object.
The Edit NVDA object now has a property called editAPIHasITextDocument, which if true tells the EditTextInfo class its aloud to use ITextDocument to deal with embedded objects. Collecting embedded objects may be a little bit of a performance loss so this should only be set to True when its necessary to read embedded objects.
To get these embedded objects, NVDA must get the text using ITextDocument, then search the text for any embedded object characters, request the embedded object at that point, and then through various COM interfaces (with both comtypes and pywin32) ask for the text that would be copied to the clipboard if this object was in fact to be copied.
*Added an editValueUnit property to the edit NVDAObject. This property contains the text unit that should be used when retreaing text for the NVDAObject's value property. As in, the text you will hear when focus is set to this object. By default its set to line, but for some small multi-line fields it may be better set to story (the whole text).
*The appModule for Outlook Express / Windows Mail, if it has detected a mail envelope field (such as to/cc/bcc/from), will set editAPIHasITextDocument to True, and editValueUnit to text.UNIT_STORY, on the NVDAObject for that field.

------------------------------------------------------------------------
r1020 | jteh | 2007-07-17 13:38:25 +1000 (Tue, 17 Jul 2007) | 1 line

JAB panels or labels that are children of lists or trees are now treated as list items or tree view items, respectively. This means that 'label' or 'panel' and the selected state won't be read for list and tree items any more.
------------------------------------------------------------------------
r1019 | jteh | 2007-07-16 16:31:13 +1000 (Mon, 16 Jul 2007) | 1 line

Strip simple xml tags from JAB control descriptions. This is just a simple removal of all tags enclosed in '<' and '>' symbols for now and doesn't consider more advanced tags with values or entities. Also removed a duplicate import.
------------------------------------------------------------------------
r1018 | mdcurran | 2007-07-15 14:27:01 +1000 (Sun, 15 Jul 2007) | 1 line

Seemed to have fixed the bug where backspacing the only character in an outlook Express message edit window wouldn't get spoken. The problem was that a different position is returned when asking for the start of the document when there is nothing in it as apposed to one or more characters. So now offsetBias and lineNumBias (values needed to decode internet explorer_server bookmarks) are calculated once in the NVDA object, rather than being calculated by each text info object. This means that they will be the same for all text info instances of the same NVDA object, therefore proper comparisons can be made.
------------------------------------------------------------------------
r1017 | mdcurran | 2007-07-15 13:32:43 +1000 (Sun, 15 Jul 2007) | 1 line

Sort of fixed bug in Outlook Express mesage edit windows where backspace would not read the character being deleted. It seems that internet explorer_server textRange objects get mutated if a character before the range its representing gets deleted. So it seems that they are based more on where they are relative to another character. To get around this annoyence, the backspace script in the base NVDAObject now compares the caret position to the position of the character that is expected to be deleted, and if the comparison is 0 (the same) it speaks the character. Previously it would compare the new caret position to the old caret position and speak if the comparison was not 0. But the problem was that outlook express would mutate what we thought was the old caret position behind our backs. This solution still isn't quite complete. It works for all other windows, and for outlook express message edit windows it speaks all backspaced characters, but ocassionally has trouble speaking a backsapced character if it is the only one in the document.
------------------------------------------------------------------------
r1016 | mdcurran | 2007-07-15 11:59:02 +1000 (Sun, 15 Jul 2007) | 1 line

Fixed logic with MSHTML NVDAObjects when dealing with a DOM element that is editable. with a gainFocus event,  if the node is editable, virtualBuffer pass-through mode is turned on, i its not editable its turned off. This should fix a problem when opening an outlook express message in html where virtual buffer pas-through mode was accidentilly turned on even if it wasn't editable.
------------------------------------------------------------------------
r1015 | mdcurran | 2007-07-15 11:22:37 +1000 (Sun, 15 Jul 2007) | 1 line

Save the msn appModule properly in utf8 again. Fixes errors with MSN again.
------------------------------------------------------------------------
r1014 | mdcurran | 2007-07-14 23:32:11 +1000 (Sat, 14 Jul 2007) | 1 line

Fixed a bug with Outlook Express where replying to a message lands you in the message edit window but it seems to be completely blank. This bug was caused by another fix which was to stop NVDA saying edit like 3 times du to exsessive gainFocus events on that message window from Outlook Express. These exessive gainFocus events are now delt with in a ifferent way, this time by simply not speaking them if they happen more than once with in 300 ms. However, though they are not spoken, NVDA still does the necessary work to make the window readable (assigning the right textInfo class etc).
------------------------------------------------------------------------
r1013 | mdcurran | 2007-07-14 22:50:46 +1000 (Sat, 14 Jul 2007) | 1 line

Hopefully fix broken support for MSN history window for Italian users. I believe no matter what word the window name is, it does start with a capital letter. The Italian word, plus another one, wasn't capitalized.
------------------------------------------------------------------------
r1012 | mdcurran | 2007-07-14 18:31:42 +1000 (Sat, 14 Jul 2007) | 1 line

JAB buttons no longer have their value announced, as its always usually 0, which is quite meaningless. Buttons in the Java Control panel are examples of this.
------------------------------------------------------------------------
r1011 | mdcurran | 2007-07-14 17:23:33 +1000 (Sat, 14 Jul 2007) | 1 line

Converted MS Word support to the new (new) text API. NVDA should be able to read in MS Word now. At least text will read, support for tables and formatting etc isn't back yet until we re-structure all the formatting code for NVDA.
------------------------------------------------------------------------
r1010 | mdcurran | 2007-07-14 14:55:17 +1000 (Sat, 14 Jul 2007) | 1 line

SayAll (insert+downArrow) also moves the review cursor as it moves the caret. However, if caretMovesReviewCursor (insert+6) is off, then the review cursor will not be moved.
------------------------------------------------------------------------
r1009 | mdcurran | 2007-07-14 13:04:47 +1000 (Sat, 14 Jul 2007) | 1 line

Other than pressing an NVDA modifier key twice, to send it through to the application, it is also now necessary to press the second time with in 500 ms (half a second) of the first. For example, if you use capslock as a modifier key, but you wish to actually turn caps lock on, you have to press it twice with in half a second. If youwait for more than half a second, it will only again act like an NVDA modifier key. Previously you could press an NVDA modifier key, leave the keyboard for half an hour and then come back and press it again and it would go through to the application.
------------------------------------------------------------------------
r1008 | mdcurran | 2007-07-14 12:31:16 +1000 (Sat, 14 Jul 2007) | 1 line

Fixed a typo in _eSpeak.py which would cause NVDA to play the error sound if eSpeak for some reason couldn't stop properly ... queue.Empty should be Queue.Empty (exception).
------------------------------------------------------------------------
r1007 | mdcurran | 2007-07-14 12:29:21 +1000 (Sat, 14 Jul 2007) | 1 line

Fix bug where trying to review next line  with the review cursor, when there are no more lines left, wouldn't say bottom but just repeate the line. To fix this moveByUnit's logic had to be changed slightly so that if you're only moving the end, not the start, it is possible to move to the position past the final unit.
------------------------------------------------------------------------
r1006 | mdcurran | 2007-07-14 00:48:47 +1000 (Sat, 14 Jul 2007) | 1 line

map the TRichEdit window class to edit.Edit, rather than edit.RichEdit20. This window class is used in such programs as TLB Viewer (NVDA was reporting just lots of symbols, rather than text due to it not being unicode).
------------------------------------------------------------------------
r1005 | mdcurran | 2007-07-14 00:44:17 +1000 (Sat, 14 Jul 2007) | 10 lines

*Fixed reportCurrentLine (insert+upArrow). It always uses a text info object to get the line, no matter what type of object it is. If you want to actually hear properties of the object, rather than the text, use insert+tab.
*Added a sentence unit to text info objects. For APIs that don't support sentences, line is used instead.
*Added a readingChunk unit to text info objects. This unit should be used in sayAll as the readingChunk unit should map to the most appropriate physical unit. Mostly readingChunk is mapped to sentence, but if not, line.
*Fixed sayAll (system caret) and sayAll (review cursor). 
sayAllhandler.read takes a text info object whos start and end are set to the range that you actually wish to speak, and it also takes a cursor constant (either CURSOR_CARET or CURSOR_REVIEW).
It then registeres readHelper_generator in queueHandler. 
readHelper_generator copies the info object, collapses it to the start, and then moves by readingChunk unit, speaking the text,  until it reaches the end of the original info object. Each time it speaks, it grabs a bookmark representing the current position, and sends a hash of the bookmark as the speech index. It also records the bookmark in a dictionary, using the hash value as the key.
  The generator also continualy asks for the index of the last peace of text spoken, and looks up the index in the bookmark map, and uses the bookmark to create a new text info object and update the caret / review cursor.
Apart from using the new text API, this algorithm improves on the last by stopping the generator once its received the final index, rather than continuing to loop for ever. Its also much easier to use, in that it only takes an info object and a cursor constant, rather than 5 or so lamdas and some offsets.

------------------------------------------------------------------------
r1004 | mdcurran | 2007-07-13 15:29:28 +1000 (Fri, 13 Jul 2007) | 8 lines

*Added _setSelOffsets to all offset-based textInfo objects. this method can be used to set the selection to given start and end offsets.
*In all offset-based textInfo objects, renamed _getSelOffsets and _setSelOffsets to _getSelectionOffsets and _setSelectionOffsets respectivly.
*In all Offset-based textInfo objects, added _getCaretOffset and _setCaretOffset methods. The text info objects now use these to get and set the caret, rather than just using _getSelectionOffsets / _setSelectionOfsets collapsed to one offset. In quite a few accessibility APIs, selection is managed separate from the caret, so this makes it more accurate.
*Added a basicCaretOffset property to the base NVDA object. This is used now in things like the dos console NVDAObject to get the caret position, rather than using basicSelectionOffsets. 
*Added updateCaret and updateSelection methods to all textInfo objects. These set the caret and selection respectivly to the current position of the textInfo object being used.
*Added a review_moveCaretHere script (control+numpadSubtract). This moves the caret to the current review position in the current navigator object.
*Added a bookmark property to all textInfo objects, plus allowed all textInfo objects to be initialized by a bookmark. A bookmark is used to record the absolute position of a textInfo object with out having to actually hold the textInfo object itself. For example for offset-based textInfo objects the bookmark is just a tuple containing the start and end offsets, but for MSHTML textInfo objects, the bookmark is one of MSHTML's textRange bookmark strings. You should usually just hold a textInfo object if you're going to be moving it a lot, but you should use bookmarks if you need to remember many positions. Bookmarks have been primarily implemented for use in sayAll (when its re-written).

------------------------------------------------------------------------
r1003 | mdcurran | 2007-07-12 21:17:01 +1000 (Thu, 12 Jul 2007) | 1 line

Fix bug where list items in the open with dialog in Windows explorer would keep saying not selected when moving up and down them. This bug was caused because the selected state is removed from the list item before the actual focus is removed. It wasn't evident before though because the base NVDAObject's stateChange event had an error anyway. For now SysListView32 list items  will only speak their state if they also have the focus state, and they are the focus object.
------------------------------------------------------------------------
r1002 | mdcurran | 2007-07-12 20:06:08 +1000 (Thu, 12 Jul 2007) | 1 line

Added two NVDAObjects (IAccessible.delphi,TRichView and IAccessible.delphi.TRichViewEdit). This so far are used in Skype for text chats etc. This really just are Edit NVDAObjects, but the role  is corrected to edit and the name is suppressed (since its the same as the text). Also TRichView binds the arrow keys to the review scripts so that you can review the text chat history in skype with the arrow keys again.
------------------------------------------------------------------------
r1001 | mdcurran | 2007-07-12 20:02:49 +1000 (Thu, 12 Jul 2007) | 1 line

_getLineOffsets method in the EditTextInfo class now tries calculating line offsets manually with the base NVDAObject text info class if what it receives from the operating system is invalid. Specifically, if the start of the line is 0 or negative, and the length of the line is 0 characters, and the line number is 0 or negative, and the line count is 0 or negative. This code is for certain edit controls in Skype etc that might implement part of the edit API such as caret offets etc, but not line offsets.
------------------------------------------------------------------------
r1000 | mdcurran | 2007-07-12 18:06:05 +1000 (Thu, 12 Jul 2007) | 1 line

Fix up a typo in JABHandler.py. state changes that were not for the focus object were being sent to the focus object. Also event_stateChange in the base NVDAObject now only tries speaking states if this object is in deed the focus object (as in the memory addresses are the same). This is rather than just checking self.hasFocus which may not be correct in Java Access Brdige objects.
------------------------------------------------------------------------
r999 | mdcurran | 2007-07-12 17:09:04 +1000 (Thu, 12 Jul 2007) | 1 line

When interacting with a non-unicode rich edit control, convert any text to unicode, from the user's current locale's character set.
------------------------------------------------------------------------
r998 | mdcurran | 2007-07-12 14:55:30 +1000 (Thu, 12 Jul 2007) | 1 line

Collected up all the different names for the MSN / Windows Live Messenger history window in various languages and changed the appModule to check for a window with any of these names. The msnmgr appModule has to be always now saved in utf8 so that the history window names are correctly preserved. So far I can see it works for English, feedback needed on other languages.
------------------------------------------------------------------------
r997 | mdcurran | 2007-07-12 13:14:18 +1000 (Thu, 12 Jul 2007) | 1 line

Edit NVDAObject now supports both unicode and ascii. Created RichEdit20A NVDAObject which is just RichEdit20 but with editAPIUnicode set to False, so the EditTextInfo object knows to not use unicode. Mapped the richEdit20A window class to the RichEdit20A NVDAObject. This fixes some bugs where certain rich edit controls seemed to just contain symbols and other junk, rather than text. E.g. the Popcorn email client.
------------------------------------------------------------------------
r996 | mdcurran | 2007-07-12 10:54:00 +1000 (Thu, 12 Jul 2007) | 1 line

Fixed support for Windows Live Messenger to work with the new text API again. However, this still will only work with the English version, unless translators translate the "History" string to what it is in their language for Windows Live Messenger.
------------------------------------------------------------------------
r995 | mdcurran | 2007-07-12 10:46:42 +1000 (Thu, 12 Jul 2007) | 1 line

Ignore Java Access Bridge focus events if the java window they're coming from isn't currently the foreground window, or contained in the foreground window. This fixes a bug in NVDA where after closing, or alt tabbing from, a java window, the navigator object can sometimes report as unknown object, and dos windows, and rich edit documents sometimes won't read properly since they don't seem to have focus. Seems that Java was firing some focus events after it went to the background. This also seems to fix a bug where Open Office calc would crash when exiting the options dialog.
------------------------------------------------------------------------
r994 | mdcurran | 2007-07-12 09:42:06 +1000 (Thu, 12 Jul 2007) | 1 line

A hack to fix a bug in some java apps where changing tabs doesn't fire a focus or activeDescendant changed event. For now like with open office menus, we watch for state changes and if we see the selected state being added on a tab, we fire our own gainFocus sevent.
------------------------------------------------------------------------
r993 | pvagner | 2007-07-12 03:07:07 +1000 (Thu, 12 Jul 2007) | 2 lines

* finish language file updated
* portuguese language file updated
------------------------------------------------------------------------
r992 | mdcurran | 2007-07-11 22:55:20 +1000 (Wed, 11 Jul 2007) | 1 line

Implement the children property for JAB NVDAObjects. on foreground events for Java Access Bridge also try and speak all the objects in the window (this doesn't always work yet, it seems the foreground event fires before all the objects are created perhaps). Also change speakDescendantObjects in the base NVDAObject to use the children property, not use firstChild and next.
------------------------------------------------------------------------
r991 | mdcurran | 2007-07-11 22:32:59 +1000 (Wed, 11 Jul 2007) | 1 line

Cache the parent of JAB NVDAObjects as its used so much.
------------------------------------------------------------------------
r990 | mdcurran | 2007-07-11 22:27:37 +1000 (Wed, 11 Jul 2007) | 1 line

Focus is no longer announced for edit fields and lists inside Java Access Bridge combo boxes. This is because the focus always goes from the combo box to the edit field to the list and then to the item. We only want to hear about the comobo box and the item.
------------------------------------------------------------------------
r989 | mdcurran | 2007-07-11 22:21:37 +1000 (Wed, 11 Jul 2007) | 1 line

don't report values for JAB check boxes, radio buttons, menus or menu items, even if they apparently have an accessibleValue interface.
------------------------------------------------------------------------
r988 | mdcurran | 2007-07-11 22:16:14 +1000 (Wed, 11 Jul 2007) | 1 line

Fixed bug with Java Access Bridge support where particular menus would not read in Open Office programs. Fixed by watching for state changes on menus and menu items where the focus state was being set, then if according to NVDA that menu item or menu didn't have focus yet, then  fire a gainFocus event. Also added a __ne__ (not equal) method to JAB objects. Previously there was only a __eq__. This means that != will now work properly for JAB objects.
------------------------------------------------------------------------
r987 | mdcurran | 2007-07-11 21:07:55 +1000 (Wed, 11 Jul 2007) | 1 line

Added stateChanged event to JABHandler.py so that Java Access Bridge support now can announce state changes (such as checking or unchecking a check box).
------------------------------------------------------------------------
r986 | mdcurran | 2007-07-11 20:33:17 +1000 (Wed, 11 Jul 2007) | 1 line

JAB support announces position information for objects that have a valid parent, the object itself has no children, and its parent is a list or a treview, or the object itself is a radio button. The reason the logic is rather picky is because JAB gives position info for pretty much anything, so it needs to be massivly filtered.
------------------------------------------------------------------------
r985 | mdcurran | 2007-07-11 20:00:44 +1000 (Wed, 11 Jul 2007) | 1 line

properly mapped JAB role of statusbar to controlTypes.ROLE_STATUSBAR. Stops status bars in Open Office from reporting as unknown object.
------------------------------------------------------------------------
r984 | mdcurran | 2007-07-11 19:47:00 +1000 (Wed, 11 Jul 2007) | 1 line

added __eq__ and __ne__ methods to the JABObject class in JABHandler.py that use the isSameObject API call from Java Access Bridge. This allows you to work out if two JAB objects arequal or not (even though they may have a different memory address).  Also added __eq__ and __ne__ methods to the JAB NVDAObject that checks whether the JAB objects are the same. This all means now that JAB NVDAObjects can be compared with == and != etc. the event_gainFocus in JABHandler.py now checks to see if the new object is equal to the current focus object acording to NVDA, and if so then ignores the event. This stops double speaking when changing the selection in Java combo boxes etc.
------------------------------------------------------------------------
r983 | mdcurran | 2007-07-11 19:18:13 +1000 (Wed, 11 Jul 2007) | 1 line

Java Access Bridge support now announces an object's value, according to the accessibleValue interface. However, if the object has both an accessibleText and an accessibleValue interface, accessibleText takes presidence. This makes sure that in spread sheets such as in Open Office Calc, NVDA doesn't say 0.0 for all blank cells.
------------------------------------------------------------------------
r982 | mdcurran | 2007-07-11 17:46:46 +1000 (Wed, 11 Jul 2007) | 1 line

Don't ire an NVDA event_gainFocus on a java propertySelectionChanged event. This was some debugging code that shouldn't have been committed. Removing this stops NVDA from announcing some weird things in java, especially some list when moving betweencells in Open Office Calc.
------------------------------------------------------------------------
r981 | mdcurran | 2007-07-11 16:51:56 +1000 (Wed, 11 Jul 2007) | 1 line

Added an appModule (soffice.py) for Open Office. It is here so that when arrowing up and down through edit fields in a document canvas (such as Open Office writer) NVDA doesn't speak the focus change, but only the line etc. We may eventaully do this a different way as selecting text over multiple lines can't read all that way, plus reviewing text is limited to one line, but for now it works.
------------------------------------------------------------------------
r980 | mdcurran | 2007-07-11 16:49:09 +1000 (Wed, 11 Jul 2007) | 1 line

Cache JAB vm ID to window handle mapings when ever a window handle is used to find a vm ID and accContext. This is so that when other java events are received that do not provide a window handle, the vmID can be used to find it. Window handles are mportant so that appModules can work properly with Java Access Bridge.
------------------------------------------------------------------------
r979 | mdcurran | 2007-07-11 14:55:37 +1000 (Wed, 11 Jul 2007) | 17 lines

*IAccessible now passes a foreground event on to JAB if that window is found to be a java window. JAB then processes it as a foreground event with Java Access Bridge support. This means that now when you first open, or alt-tab to, a java window, it will properly be announced as a frame or dialog etc, rather than just a window.
*getAccessibleTextRange in JABHandler.py  needs to handle start and end of ranges as start being the position of the first character, and end being position of the last, rather than position of one past the last. length therefore is (end+1)-start, rather than end-start.
*if getAccessibleTextRange in JABHandler.py is given a range that is completely collapsed, it will return "\n" (to denote blank) so things don't badly crash.
*If getAccessibleTextLineBounds in JABHandler.py gets positions less than 0 from Java, it corrects them to 0.
*Need to return the value of ctypes ints, not the ctypes ints themselves, in getAccessibleTextLineBounds (JABHandler.py)
*make sure to release any java objects in the Java Access Bridge callback functions (internal_event_*) in JABHandler.py, not forwarded on via queueHandler to be used later.
*the JAB event_activeDescendantChange now uses the newDescendant parameter as the object to set focus to, rather than just using the source parameter and then fetching  its active descendent manually. This fixes a bug with Open Office Calc (spread sheet program) where cells would not be announced when arrowed to.
*in the JABTextInfo object, _getSelOffsets checks if the offsets received from Java are less than 0, if so, it corrects them to 0.
*_getStoryText, in JABTextInfo, ask for the full story range (0,storyLength) rather than (0,storyLength-1). True that this did break java, but now _getTextRange handles all ranges so that Java understands them.
*_getTextRange in JABTextInfo now gives java start and end so that end is the position of the last character, not one past the last character. This is different from other accessibility APIs.
*_getLineOffsets in JABTextInfo now checks the offsets received from java to see if they both equal 0. If they do, then it reverts to the base _getLineOffsets which will just analize the text to find the line offsets, rather than depending on what Java says, since it was invalid.
 *_getLineOffsets in JABTextInfo changes the start and end offsets received from java so that they conform to how NVDA deals with offsets (end is one past the position of the last character, not the position of the last character).
*the JAB NVDAObject uses the special JABTextInfo class if this Java Object supports its text interface. This is fine for reviewing text etc, but now JAB NVDAObject only binds caret navigation keys (arrows etc) if the role is one of text, password text, edit bar, view port, or paragraph. This fixes a problem where arrowing across a menu bar or from cell to cell in a table tries reading the first character of the text. Of cource reviewing text with the review commands will still work on any object with the text interface no matter what the role is.
*the JAB NVDAObject now sets its reviewPosition to the caret on initialization meaning that reviewing in the object now works properly
*The JAB NVDAObject's value property now returns the current line (if the text interface is supported), but also only if the text isn't the same as what the name is.
*Fix a bug with the IAccessible NVDAObject's groupName property where it assumed the foregroundObject was an IAccessible object.

------------------------------------------------------------------------
r978 | mdcurran | 2007-07-11 10:30:32 +1000 (Wed, 11 Jul 2007) | 1 line

Created a JABObject which now wraps most Java Access Bridge API calls. It also acts as a holder for a vmID and accContext java object identifier, and releases the internal java object if deleted. the JAB NVDAObject has been changed to use this new object, rather than use Java Access Bridge calls directly. This change makes sure that there can be no memory leaks with Java Access Bridge (at least as far as coding goes).
------------------------------------------------------------------------
r977 | pvagner | 2007-07-11 06:18:35 +1000 (Wed, 11 Jul 2007) | 3 lines

* french language file updated with jab roles and states
* fixed some typos in JABTextInfo class
* added preliminary support for reading java text controls. It's still very buggy; only reading and selecting by characters and words is working so far.
------------------------------------------------------------------------
r976 | pvagner | 2007-07-11 04:19:57 +1000 (Wed, 11 Jul 2007) | 2 lines

* wrapped some more java access bridge functions
* preparation for jab textInfo
------------------------------------------------------------------------
r975 | mdcurran | 2007-07-10 20:50:11 +1000 (Tue, 10 Jul 2007) | 1 line

Handle activeDescendantChanged and documentContentChanged from IAccessible2. So far Gecko etc doesn't seem to use these, but we'll support them for when they do.
------------------------------------------------------------------------
r974 | mdcurran | 2007-07-10 16:40:26 +1000 (Tue, 10 Jul 2007) | 1 line

r972 (previous commit) also committed some changes to java access bridge support: move more of the JAB event logic in to the event queue ealier. no NVDA objects are created before going in to the queue. This commit removes some debugging code that made JAB support announce some numbers when the active descendent changes, plus it fixes a bug where java would crash when the active descendent changes, due to NVDA querying the wrong java object in an event.
------------------------------------------------------------------------
r973 | mdcurran | 2007-07-10 16:18:26 +1000 (Tue, 10 Jul 2007) | 1 line

Updated Spanish language file
------------------------------------------------------------------------
r972 | pvagner | 2007-07-10 06:02:42 +1000 (Tue, 10 Jul 2007) | 2 lines

* updated slovak language file
* corrected Peter Vagner's email address in the contributers.txt file
------------------------------------------------------------------------
r971 | mdcurran | 2007-07-09 15:42:55 +1000 (Mon, 09 Jul 2007) | 1 line

Fix bug where reviewing a basic NVDAObject's text causes an error. Now the basicText of a base NVDAObject contains a single line feed if there's no name/value/description to be shown.
------------------------------------------------------------------------
r970 | mdcurran | 2007-07-09 13:07:33 +1000 (Mon, 09 Jul 2007) | 10 lines

Java Access Bridge support now announces an object's active descendent object as it changes, plus announces an objects active descendant after it gets focus. e.g. tabbing to, or interacting with, a combo box. Also implemented parent, next, previous and firstChild object navigation for Java Access Bridge support.







d

------------------------------------------------------------------------
r969 | mdcurran | 2007-07-08 18:52:13 +1000 (Sun, 08 Jul 2007) | 1 line

Fix bug with Java Access Bridge support where NVDA would interupt the speaking of focus changes. JABHandler was not properly queuing the focus event, rather only executing it in its own thread.
------------------------------------------------------------------------
r968 | mdcurran | 2007-07-08 18:13:13 +1000 (Sun, 08 Jul 2007) | 1 line

Fix bug with Java Access Bridge support where focus changes would cause an error.
------------------------------------------------------------------------
r967 | mdcurran | 2007-07-07 22:45:10 +1000 (Sat, 07 Jul 2007) | 1 line

Converted Java Access Bridge support to use the new roles and states code (controlTypes.py etc). All Java Access Bridge roles have been mapped, but only a few states so far have been mapped. Its possible to tab around a java application and hear the focus, though state changes, and object navigation etc is not complete.
------------------------------------------------------------------------
r966 | mdcurran | 2007-07-07 22:42:41 +1000 (Sat, 07 Jul 2007) | 1 line

Re-mapped a few IAccessible2 roles to more specific roles from controlTypes.py. Previously some like "color chooser" were mapped to generic roles like "dialog" but since Java Access Bridge also uses some of these, its best to keep them specific.
------------------------------------------------------------------------
r965 | mdcurran | 2007-07-07 22:40:59 +1000 (Sat, 07 Jul 2007) | 1 line

Added more roles to controlTypes.py, used mostly by Java Access Bridge.
------------------------------------------------------------------------
r964 | mdcurran | 2007-07-07 17:36:17 +1000 (Sat, 07 Jul 2007) | 1 line

Updated Traditional Chinese language file
------------------------------------------------------------------------
r963 | mdcurran | 2007-07-07 17:31:13 +1000 (Sat, 07 Jul 2007) | 1 line

Updated eSpeak to 1.27.
------------------------------------------------------------------------
r962 | mdcurran | 2007-07-07 14:23:31 +1000 (Sat, 07 Jul 2007) | 1 line

Converted IAccessible2 support to use the new text API.
------------------------------------------------------------------------
r961 | mdcurran | 2007-07-07 13:13:04 +1000 (Sat, 07 Jul 2007) | 1 line

Updated pt_BR language file
------------------------------------------------------------------------
r960 | mdcurran | 2007-07-07 13:00:34 +1000 (Sat, 07 Jul 2007) | 1 line

Updated Vietnamese language file
------------------------------------------------------------------------
r959 | mdcurran | 2007-07-06 20:41:13 +1000 (Fri, 06 Jul 2007) | 1 line

Converted support for Scintilla windows to the new  text API.  This means NVDA can again work with Scintilla edit controls (Notepad++ etc). Of course because the new text API hasn't got complete support for formatting yet, no formatting info is included just yet.
------------------------------------------------------------------------
r958 | mdcurran | 2007-07-06 18:09:55 +1000 (Fri, 06 Jul 2007) | 1 line

Converted the outlook express / internet explorer_server  edit text info object to the new (new) text API. In short, navigating in  editable outlook express messages and internet explorer edit fields works again.
------------------------------------------------------------------------
r957 | mdcurran | 2007-07-06 13:27:01 +1000 (Fri, 06 Jul 2007) | 1 line

Updated Hungarian language file
------------------------------------------------------------------------
r956 | mdcurran | 2007-07-06 10:31:23 +1000 (Fri, 06 Jul 2007) | 1 line

Updated Italian language file
------------------------------------------------------------------------
r955 | mdcurran | 2007-07-06 09:55:17 +1000 (Fri, 06 Jul 2007) | 1 line

Updated finnish language file
------------------------------------------------------------------------
r954 | mdcurran | 2007-07-05 19:23:48 +1000 (Thu, 05 Jul 2007) | 1 line

Updated French language file
------------------------------------------------------------------------
r953 | mdcurran | 2007-07-04 21:38:35 +1000 (Wed, 04 Jul 2007) | 1 line

Applied patch from David Parduhn and Ali Savas that makes quite a few more spoken messages be translatable.
------------------------------------------------------------------------
r952 | mdcurran | 2007-07-04 20:30:55 +1000 (Wed, 04 Jul 2007) | 1 line

Added a html user guide in Finnish for trunk
------------------------------------------------------------------------
r950 | mdcurran | 2007-07-04 20:18:09 +1000 (Wed, 04 Jul 2007) | 1 line

Updated German documentation, also mentioned David Parduhn in contributers.txt for German language files, documentation etc.
------------------------------------------------------------------------
r949 | mdcurran | 2007-07-04 20:01:45 +1000 (Wed, 04 Jul 2007) | 1 line

Updated German language file
------------------------------------------------------------------------
r948 | mdcurran | 2007-07-04 19:53:27 +1000 (Wed, 04 Jul 2007) | 1 line

Added support again to the base NVDAObject text info object to handle text with a set line length (like in terminals/consoles). Removed some duplicate code from the EditTextInfo object  where it can realy just use the base NVDAObject text info class. Fixed up support for dos console windows again with the new text info API. And like before, it doesn't need its own text info object, only need to override the NVDA object properties: basicText, basicTextLineLength, and basicSelectionOffsets.
------------------------------------------------------------------------
r947 | mdcurran | 2007-07-04 16:50:14 +1000 (Wed, 04 Jul 2007) | 1 line

Removed the textRepresentation property from the base NVDAObject. Added a _getTextRepresentation method to the base NVDAObject text info object, and told other methods in there to use this method rather  than the property on the NVDAObject. also removed _get_caretPosition and _get_selectionOffsets from the base NVDAObject, the idea is that only text info objects should be used anyway.
------------------------------------------------------------------------
r946 | mdcurran | 2007-07-04 15:41:20 +1000 (Wed, 04 Jul 2007) | 1 line

Again completely re-wrote the new text API, this time being much more careful to take braille in to account once we aready to add support for it.  The text API now looks much more like an MS Word range object, please look at text.py for the base abstract textInfo class for more details. So far the base NVDA object text info class and the edit / rich edit text info classes have been changed, dos, Outllok Express / IE edit controls, Scintilla, MS Word are all broken until we re-write them.
------------------------------------------------------------------------
r945 | mdcurran | 2007-07-04 08:17:46 +1000 (Wed, 04 Jul 2007) | 1 line

Added Africaans (af_ZA) language file, translated by Willem van der Walt.
------------------------------------------------------------------------
r944 | mdcurran | 2007-07-03 10:33:48 +1000 (Tue, 03 Jul 2007) | 1 line

Added code from Jason Custer that allows NVDA to beep when speaking a capital letter. This can be turned on and off with a check box in the voice settings dialog. Also added a raise pitch for caitals check box to configure whether NVDA should actually do its normal pitch raise for capitals. So now you can have either raise pitch, say cap, or beep, for capitals.
------------------------------------------------------------------------
r943 | pvagner | 2007-07-02 18:03:48 +1000 (Mon, 02 Jul 2007) | 1 line

* updated slovak language file
------------------------------------------------------------------------
r942 | mdcurran | 2007-07-01 13:12:26 +1000 (Sun, 01 Jul 2007) | 1 line

Updated finnish documentation for trunk, readme.txt and user guide.txt, removed the old readme
------------------------------------------------------------------------
r941 | mdcurran | 2007-07-01 13:04:38 +1000 (Sun, 01 Jul 2007) | 1 line

Updated Hungarian language file
------------------------------------------------------------------------
r939 | mdcurran | 2007-06-30 16:18:25 +1000 (Sat, 30 Jun 2007) | 1 line

Added Italian user guide to trunk
------------------------------------------------------------------------
r936 | mdcurran | 2007-06-28 10:52:57 +1000 (Thu, 28 Jun 2007) | 1 line

Updated Spannish language file
------------------------------------------------------------------------
r935 | mdcurran | 2007-06-28 10:39:08 +1000 (Thu, 28 Jun 2007) | 1 line

Suppress announcement of the program manager window which contains the Windows Desktop, plus suppress the announcement of the window which contains the windows taskbar. In after 0.5 the way to suppress these types of foreground/focus announcements changed, so change these particular windows to use the newer way.
------------------------------------------------------------------------
r934 | mdcurran | 2007-06-27 21:39:46 +1000 (Wed, 27 Jun 2007) | 1 line

The window name the msn messenger appModule checks for when finding the history window is now translatable. This should be translated to the window's name in each specific language.
------------------------------------------------------------------------
r933 | mdcurran | 2007-06-27 21:02:46 +1000 (Wed, 27 Jun 2007) | 1 line

Updated finnish language file
------------------------------------------------------------------------
r932 | mdcurran | 2007-06-27 09:56:35 +1000 (Wed, 27 Jun 2007) | 1 line

Updated Traditional Chinese language file
------------------------------------------------------------------------
r931 | jteh | 2007-06-27 09:07:14 +1000 (Wed, 27 Jun 2007) | 1 line

Don't try to convert exception messages to unicode if they are already unicode. Attempting to do so causes an error.
------------------------------------------------------------------------
r930 | mdcurran | 2007-06-25 18:03:36 +1000 (Mon, 25 Jun 2007) | 1 line

Updated french language file
------------------------------------------------------------------------
r929 | mdcurran | 2007-06-25 17:48:42 +1000 (Mon, 25 Jun 2007) | 1 line

Re-ordered all the roles in IAccessibleHandler.py in to a correct assending order. Also added role_IPADDRESS and mapped it from the IAccessible IP Address role.
------------------------------------------------------------------------
r928 | jteh | 2007-06-25 16:55:33 +1000 (Mon, 25 Jun 2007) | 1 line

Changed all occurrences of insert to NVDA in the default keyboard map. Changed the Keyboard shortcut for the Keyboard Settings dialog to Control+K.
------------------------------------------------------------------------
r927 | mdcurran | 2007-06-25 16:53:45 +1000 (Mon, 25 Jun 2007) | 1 line

Fixed bug in the espeak synth driver where rate would not be set to a suitable value the first time this driver is used. the rate parameter is now set last, after setting the language etc.
------------------------------------------------------------------------
r926 | mdcurran | 2007-06-25 16:25:04 +1000 (Mon, 25 Jun 2007) | 7 lines

This commit allows the capslock, numpad insert and extended insert to all be used as the NVDA modifier key. Also if one of these keys is used, pressing the key twice with out pressing any other keys will send the key through to the operating system, just like you'd pressed the key with out NVDA running.
*Removed unneeded variables from keyboardHandler.py
*Added useCapsLockAsNVDAModifierKey, useNumpadInsertAsNVDAModifierKey, useExtendedInsertAsModifierKey to NVDA's config, boolean values in the keyboard section of nvda.ini.
*Renamed the keyboard echo dialog and menu item in the NVDA interface to Keyboard Settings.
*Added three checkboxes to the keyboard settings dialog that allow you to configure whether NVDA uses caps lock, numpad Insert or extended insert as NVDA modifier keys.
*Changed keyboardHandler.py to handle the new way NVDA modifier keys work.

------------------------------------------------------------------------
r925 | mdcurran | 2007-06-25 11:57:59 +1000 (Mon, 25 Jun 2007) | 1 line

add a REASON_MOUSE constant to speech.py. Also make sure that all speech.speakObject and speech.speakObjectProperties in the IAccessible NVDAObject   have a reason parameter. This stops a small bug where some menus may announce the focus state since the reason was not REASON_FOCUS.
------------------------------------------------------------------------
r924 | mdcurran | 2007-06-22 13:09:45 +1000 (Fri, 22 Jun 2007) | 1 line

If focus is moved to the current foreground object (e.g. dos console windows are both focus and foreground), focus is not reported, since the foreground was already reported due to the foreground event. This fixes a bug where dos console windows are announced twice when moving to them. Also limited the announcing of name, value and description changes in the base NVDA object to only announce if the object in question is the current focus object (as in the memory address for both NVDA objects are the same.
------------------------------------------------------------------------
r923 | mdcurran | 2007-06-22 11:42:50 +1000 (Fri, 22 Jun 2007) | 1 line

The reportObjectPositionInformation and reportKeyboardShortcuts settings if turned off only affect the announcement of focus. So if keyboardShortcuts are turned off, but you interactivly find out the current NVDA object or current focus, they will still be announced. But when just listening to focus changes they won't be.
------------------------------------------------------------------------
r922 | mdcurran | 2007-06-22 10:19:11 +1000 (Fri, 22 Jun 2007) | 1 line

Recompiled the eSpeak  dll with no optimisations (same as the dlls before 1.26). Hopefully this should stop crashes some people are reporting.
------------------------------------------------------------------------
r921 | mdcurran | 2007-06-21 21:02:24 +1000 (Thu, 21 Jun 2007) | 1 line

Added a report object position information checkbox to the object presentation settings dialog. When checked position info such as 1 of 4 is announced for objects, when unchecked its not.
------------------------------------------------------------------------
r920 | mdcurran | 2007-06-21 20:50:06 +1000 (Thu, 21 Jun 2007) | 1 line

list items in the task list (while alt tabbing) now have a role of icon and no longer say unselected.
------------------------------------------------------------------------
r919 | mdcurran | 2007-06-21 20:39:49 +1000 (Thu, 21 Jun 2007) | 1 line

Fixed bug where an object's state would always be announced after the name, role and value, even if the say object state first checkbox was checked in the Object Presentation settings dialog.
------------------------------------------------------------------------
r918 | mdcurran | 2007-06-21 20:32:07 +1000 (Thu, 21 Jun 2007) | 1 line

Fixed bug where keyboard shortcuts would always be announced even if report keyboard shortcuts us unchecked, in object presentation settings.
------------------------------------------------------------------------
r917 | mdcurran | 2007-06-21 16:46:10 +1000 (Thu, 21 Jun 2007) | 1 line

Fixed bugs in the MSN Messenger / Windows Live Messenger appModule. Hopefully it should now work again like it did in 0.5.
------------------------------------------------------------------------
r916 | mdcurran | 2007-06-21 16:31:49 +1000 (Thu, 21 Jun 2007) | 1 line

Removed NVDAObjects/IAccessible/richEdit.py as its no longer used, the Edit NVDA object handles rich edit controls now.
------------------------------------------------------------------------
r915 | mdcurran | 2007-06-21 16:29:41 +1000 (Thu, 21 Jun 2007) | 1 line

Moved all the review scripts back in to the base NVDA object, and just keeping wrapper scripts in appModules/_default.py. This needed to happen because MSN messenger / Windows Live Messenger needs to bind the review scripts to the arriws sometimes. Also fixed review_moveToCaret so it works again, and now all the caret movement scripts update the review position. Also renamed all occurences of reviewOffset to reviewPosition, which is more accurate now.
------------------------------------------------------------------------
r914 | mdcurran | 2007-06-21 15:36:17 +1000 (Thu, 21 Jun 2007) | 1 line

Stopped SysLink windows in Vista dialogs from speaking when getting focus since the link inside them gets focus anyway.
------------------------------------------------------------------------
r913 | mdcurran | 2007-06-21 15:28:03 +1000 (Thu, 21 Jun 2007) | 1 line

Removed some debugging code that set inflection to 0 each time the voice was changed in eSpeak.
------------------------------------------------------------------------
r912 | mdcurran | 2007-06-21 15:18:03 +1000 (Thu, 21 Jun 2007) | 1 line

Added an inflection property to synthesizers. eSpeak supports this property. The voice settings dialog also now has an inflection control if the current synth supports it.
------------------------------------------------------------------------
r911 | mdcurran | 2007-06-21 14:31:08 +1000 (Thu, 21 Jun 2007) | 7 lines

*Added properties to all synth drivers that state whether features such as pitch, rate, voice or volume exist. hasVoice, hasRate, hasPitch and hasVolume can either be true or false.
*synthDriverHandler now only tries setting or getting parameters of a synthesizer, if the synthesizer says it actually supports that parameter.
*The voice settings dialog only shows a certain control (e.g. voice combo box, rate slider etc) if the current synthesizer says it supports that parameter
*Added a variant parameter to the silence synthesizer (_get_variant, _set_variant and _get_variantCount). Also a hasVariant property.
*Added a variant combo box to the voice settings dialog, that allows you to select a variant from 0 to variant count (0 being no variant). Of course if the synth doesn't support variant (hasVariant is False) then it isn't shown.
*Added support for variant in the eSpeak synth driver. Currently variants are from 0 to 14, hard-coded, eventaully variantCount and variant will probably be managed better by _espeak so that the gap between mail and female (7 through 10) can be removed.

------------------------------------------------------------------------
r909 | mdcurran | 2007-06-21 11:35:28 +1000 (Thu, 21 Jun 2007) | 1 line

Updated to eSpeak 1.26. Trying some new optimisation settings, plus no longer compiling to support windows9x - cuts down file size.
------------------------------------------------------------------------
r908 | mdcurran | 2007-06-21 10:49:15 +1000 (Thu, 21 Jun 2007) | 1 line

Updated pt_BR language file.
------------------------------------------------------------------------
r907 | vtsaran | 2007-06-21 10:29:32 +1000 (Thu, 21 Jun 2007) | 5 lines

Modified installer as follows:
- removed audio messages from the installer.
- updated startup procedure so that installer first extracts temporary copy of NVDA and then starts speaking as soon as possible.
Note, NSIS compiler may throw warnings at you when you try to compile installation script next time. This is OK since I did not remove all the PlaySound functions, to be used later, once we decide on the startup audio we want to play while installer extracts temp copy of NVDA.

------------------------------------------------------------------------
r905 | mdcurran | 2007-06-20 21:42:14 +1000 (Wed, 20 Jun 2007) | 1 line

selecting text in MS Word NVDA objects is now announced.
------------------------------------------------------------------------
r904 | mdcurran | 2007-06-20 21:35:21 +1000 (Wed, 20 Jun 2007) | 1 line

Converted the MS Word NVDA object to the new text API. Still having to select text for line calculation, the GetPoint method seems to not work with pythoncom. However, moving around with the caret, or reivew cursor seems to work ok. Support for announcing selections isn't there yet.
------------------------------------------------------------------------
r903 | mdcurran | 2007-06-20 15:05:35 +1000 (Wed, 20 Jun 2007) | 1 line

Fixed bug with Adobe Acrobat virtual buffers where you would have to alt tab away and back again to read the document. Fixed bug where the document would be loaded twice in a row, instead of only once. Fixed bug where the document would not reload when changing pages or following links etc.
------------------------------------------------------------------------
r902 | mdcurran | 2007-06-20 13:34:10 +1000 (Wed, 20 Jun 2007) | 1 line

IAccessible virtual buffers now test against the first object they are given when updating, rather than only using its window and then getting the object yet again. However of course if this object isn't valid, it continues going up by window like normal. Also added an adobe virtual buffer class. This is just a hacked gecko virtual buffer class, but surprisingly it does work rather well with Acrobat reader 8, though you may need to alt tab away and back again sometimes for it to work.
------------------------------------------------------------------------
r901 | mdcurran | 2007-06-20 12:32:33 +1000 (Wed, 20 Jun 2007) | 1 line

Mapped role string "page" to controlTypes.role_page for IAccessible NVDA objects. Adobe Acrobat uses this role for the root of the DOM when reading by page.
------------------------------------------------------------------------
r898 | jteh | 2007-06-19 21:09:18 +1000 (Tue, 19 Jun 2007) | 1 line

Added Hungarian readme and updated Hungarian language file thanks to Tamas Geczy and Szabolcs Forgacs.
------------------------------------------------------------------------
r897 | mdcurran | 2007-06-19 20:58:59 +1000 (Tue, 19 Jun 2007) | 1 line

Fixed bug in nvwh that caused NVDA to speak a character twice, when typing a character with speak typed characters on. This was solved by only allowing a wm_char message to notify NVDA of a typed character if it is the first wm_char after a wm_keydown message to the same window.
------------------------------------------------------------------------
r896 | mdcurran | 2007-06-19 19:24:20 +1000 (Tue, 19 Jun 2007) | 1 line

Updated Finnish language file.
------------------------------------------------------------------------
r895 | mdcurran | 2007-06-19 11:38:27 +1000 (Tue, 19 Jun 2007) | 1 line

Finally mapped all posible IAccessible and IAccessible2 roles to NVDA roles in controlTypes.py. This should mean that now no objects should have a role of "unknown object" unless of course they really do according to the specific accessibility API. There are now over 110 roles in controlTypes.py.
------------------------------------------------------------------------
r894 | mdcurran | 2007-06-18 23:25:35 +1000 (Mon, 18 Jun 2007) | 1 line

Better handle the situation where the cursor is in the extra space at the end of a IAccessible2 text field. This fixes a bug where backsapcing the last character from this endposition wouldn't speak the character being deleted since the offsets were all wrong.
------------------------------------------------------------------------
r893 | mdcurran | 2007-06-18 23:22:38 +1000 (Mon, 18 Jun 2007) | 1 line

the backspace script in the base NVDA object now only sets delChar to "" (unknown character being deleted) if the text.E_noRelatedUnit exception is thrown, rather than doing it for any exception.
------------------------------------------------------------------------
r892 | mdcurran | 2007-06-18 23:20:21 +1000 (Mon, 18 Jun 2007) | 1 line

Updated Italian language file.
------------------------------------------------------------------------
r891 | mdcurran | 2007-06-18 18:22:01 +1000 (Mon, 18 Jun 2007) | 1 line

Make editable internet explorer_server panes report as having a role of edit again. Plus also again supress the value property of these objects since it contains info not appropriate to the user.
------------------------------------------------------------------------
r890 | mdcurran | 2007-06-18 18:13:26 +1000 (Mon, 18 Jun 2007) | 1 line

Updated french language file.
------------------------------------------------------------------------
r889 | mdcurran | 2007-06-18 16:48:17 +1000 (Mon, 18 Jun 2007) | 1 line

Updated German language file and added German translations for readme.txt and user guide.txt.
------------------------------------------------------------------------
r888 | mdcurran | 2007-06-18 16:43:17 +1000 (Mon, 18 Jun 2007) | 1 line

Added more constants to IA2Handler.py. Converted NVDA's IAccessible2 text support to use the new text API. This means that navigating an editable message in Thunderbird, and navigating edit fields in Firefox works again. (Assuming ia2.dll is registered, and you're using Firefox/Thunderbird 3 with IAccessible2 support).
------------------------------------------------------------------------
r887 | mdcurran | 2007-06-18 10:54:59 +1000 (Mon, 18 Jun 2007) | 1 line

Rather than using a window message to fetch the top level document of an internet explorer_server window, MSHTML NVDA objects now queryService from  the NVDA object's IAccessible to an IHTMLElement, and then access the document from there. Also fixed up MSHTML NVDA objects to again work with Internet Explorer edit fields.
------------------------------------------------------------------------
r886 | mdcurran | 2007-06-15 20:36:58 +1000 (Fri, 15 Jun 2007) | 8 lines

*Removed text.OffsetPosition and text.PointPosition and text.RectPosition and now only text.OffsetsPosition (which can take one or two offsets) and text.PointsPosition (which can take one or two points) exists.
*Added compareStart and compareEnd methods to text.Position, which enables you to compare the start and end of two position objects.
*textInfo objects now have a position property, which can be any text.Position object, including a custom Position specific to the particular textInfo class.
*All review scripts, and backspace script etc uses position rather than offsets.
*TextInfo objects now have a calculateSelectionChangedInfo method, which can calculate the selection difference between two textInfo objects. A special class is returned that states whether something has been selected or unselected, plus it contains a text property.
*Converted the internet explorer_server (IE edit controls and Outlook Express message editor window) to use the new text API. Backspace still isn't working quite right yet, and there is an exception when the control gets focus -- will look at that very soon.
However, character, word and line navigation with both arrows and review, and selection are working quite ok.

------------------------------------------------------------------------
r885 | mdcurran | 2007-06-13 20:13:50 +1000 (Wed, 13 Jun 2007) | 16 lines

Major changes to use the new text API for both review and normal editing (arrows etc).
Please be aware that these changes are not complete, MS Word, Scintilla, InternetExplorer_server, and IAccessible2 have not been converted yet and therefore will cause errors if used. Also reading formatting etc is completely missing for now, it will be slowly added back in later.

*Removed NVDAObjects/IAccessible/richEdit.py
*Renamed NVDAObjects/IAccessible/winEdit.py to edit.py
*Renamed the WinEdit NVDA object to Edit
*Added paragraph support to the Edit TextInfo class
*Added RichEdit and RichEdit20 NVDA object classes to NVDAObjects/IAccessible/edit.py. These are pretty much the edit NVDA object but the editAPIVersion property is set to 1 and 2 respectivly, so that the Edit textInfo object knows what EM_* window messages it can use.
*Remapped all windows using the RichEdit NVDA object to use the edit.RichEdit20 NVDA object.
*Remapped all windows using the winEdit.WinEdit NVDA object to use the edit.Edit NVDA object
*Added new moveByCharacter|Word|Line|Paragraph,  changeSelection, delete and backspace scripts to the base NVDA object that use the new text API.
*NVDA objects no longer inherit from textBuffer.TextBufferObject (the old text API).
*Fixed up the winConsole NVDA object to work with the new text API.

Changes so far show a major performance increase when navigating large documents in rich edit controls (as no object models are needed). Also logic for reading selected text is some what improved, plus all arrow/selecting/delete/backspace scripts now take in to account the possibility that the focus may change due to the script executing.

------------------------------------------------------------------------
r884 | mdcurran | 2007-06-13 12:10:27 +1000 (Wed, 13 Jun 2007) | 1 line

Remove test code to do with oleTypes. Shouldn't have been committed.
------------------------------------------------------------------------
r883 | mdcurran | 2007-06-13 10:22:45 +1000 (Wed, 13 Jun 2007) | 1 line

Added support for detecting correct word boundaries with rich edit window messages in the winEdit TextInfo object. So now when reviewing text, the word NVDA says is the same as the word the rich edit control thinks.
------------------------------------------------------------------------
r882 | mdcurran | 2007-06-13 09:59:08 +1000 (Wed, 13 Jun 2007) | 1 line

Extended the winEdit NVDA object to support the extended edit (rich edit) window messages. For now, the rich Edit NVDA object uses the winEdit textInfo object and sets APIVersion to 2, eventually the rich edit NVDA object will be taken out and will only be an empty class that simply instructs the winEdit textInfo object to be version 2 or above. Perhaps richEdit 20, richEdit40 and richEdit50 classes will be made so that its clear what messages are supported when mapping classes.
------------------------------------------------------------------------
r881 | mdcurran | 2007-06-13 09:50:33 +1000 (Wed, 13 Jun 2007) | 1 line

Fix some errors in winUser.py accidentily made with last commit. NVDA should be able to start again.
------------------------------------------------------------------------
r880 | mdcurran | 2007-06-12 21:51:21 +1000 (Tue, 12 Jun 2007) | 1 line

Removed the sayDefaultButton script, and the winamp appModule by request of the author.
------------------------------------------------------------------------
r879 | mdcurran | 2007-06-12 14:15:35 +1000 (Tue, 12 Jun 2007) | 1 line

Remove the typeString property from MSHTML NVDA objects.
------------------------------------------------------------------------
r878 | mdcurran | 2007-06-12 14:14:18 +1000 (Tue, 12 Jun 2007) | 1 line

Remove the typeString property from Window NVDA objects. Make properties in window NVDA objects (such as windowClassName, and windowControlID) cache with a private member variable, since values such as these do not change over the life time of the object. Also make the windowProcessID property only return the process ID, and add a new windowThreadID property. Change winControl NVDA object to use the windowProcessID property in the new way.
------------------------------------------------------------------------
r877 | mdcurran | 2007-06-12 14:11:24 +1000 (Tue, 12 Jun 2007) | 1 line

Change setForegroundObject in api.py to not print an object's typeString to the debug log (typeString no longer exists), instead use role etc.
------------------------------------------------------------------------
r876 | mdcurran | 2007-06-10 11:23:50 +1000 (Sun, 10 Jun 2007) | 1 line

Add a time.sleep(0.1) and a pythoncom.PumpWaitingMessages() at the end of connectConsole in the winConsole NVDA object, which tries yet again to stop crashes when giving focus to a dos console window.
------------------------------------------------------------------------
r875 | mdcurran | 2007-06-10 11:09:04 +1000 (Sun, 10 Jun 2007) | 1 line

Added some more winuser.h constants to winUser.py. Fixes a crash with keyboard help and speak command keys in r874.
------------------------------------------------------------------------
r874 | mdcurran | 2007-06-09 21:00:13 +1000 (Sat, 09 Jun 2007) | 1 line

When keyboard help is on, or speak command keys is on, NVDA now speaks keys as their character equivilent if they have one. e.g. / is spoken as slash, not oem_2 etc. Also, if speak command keys is on and speak typed characters is on, character keys are only spoken once, rather than twice.
------------------------------------------------------------------------
r873 | mdcurran | 2007-06-09 20:10:33 +1000 (Sat, 09 Jun 2007) | 1 line

When keyboard help is on, or speak command keys is on, NVDA announces the keys being pressed.
------------------------------------------------------------------------
r872 | mdcurran | 2007-06-09 19:51:12 +1000 (Sat, 09 Jun 2007) | 1 line

Fix broken code where the message list in outlook express was being announced again when deleting a message. Also fix bug where deleting the second last message in the list would not cause the next undeleted message to be announced.
------------------------------------------------------------------------
r871 | mdcurran | 2007-06-09 19:10:03 +1000 (Sat, 09 Jun 2007) | 1 line

IAccessibleHandler.updateFocusFromEvent should execute eventHandler.manageEvent, passing the object it set as focus, rather than executing IAccessibleHandler.manageEvent, causing the object to be instanciated again. Same for updateForegroundFromEvent.
------------------------------------------------------------------------
r870 | mdcurran | 2007-06-09 17:51:05 +1000 (Sat, 09 Jun 2007) | 1 line

Take out a debug function call in queueHandler that was called on every event queue flush. Also fix the debug function call in api.setFocusObject to properly print the object with focus again.
------------------------------------------------------------------------
r869 | mdcurran | 2007-06-09 17:49:21 +1000 (Sat, 09 Jun 2007) | 1 line

Fixed bug where moving focus to the message editor control in Outlook Express would cause the focus to be announced more than once. Also now this edit control (editable Internet Explorer_Server window) now has a role of edit, rather than panel.
------------------------------------------------------------------------
r868 | mdcurran | 2007-06-09 17:46:42 +1000 (Sat, 09 Jun 2007) | 1 line

Fixed a bug in IAccessibleHandler.py where a focus event would still fire if the focus was supposed to be ignored due to the object getting focus already being the object with focus. Now IAccessibleHandler.updateFocusFromEvent sets the focus and fires the event, if the set was ok, otherwise it doesn't. This stops a few double focus announcements.
------------------------------------------------------------------------
r867 | mdcurran | 2007-06-09 12:24:14 +1000 (Sat, 09 Jun 2007) | 1 line

Added option to the user interface settings dialog that allows the user to specifiy whether or not trying to exit NVDA will give the standard exit dialog, or will just quietly exit with out asking.
------------------------------------------------------------------------
r866 | mdcurran | 2007-06-08 21:15:48 +1000 (Fri, 08 Jun 2007) | 1 line

Added Winamp appModule from Sean Farrow which stops NVDA announcing the title of the main window when controling Winamp.
------------------------------------------------------------------------
r865 | jteh | 2007-06-07 23:12:37 +1000 (Thu, 07 Jun 2007) | 1 line

Handle a rare case where the queue is empty even after queue.empty() returns False.
------------------------------------------------------------------------
r864 | mdcurran | 2007-06-07 15:52:21 +1000 (Thu, 07 Jun 2007) | 1 line

Fix bug introduced in a recent commit where the name of the address list and message list windows weren't being announced. This was due to the code that stops the message list being announced when deleting a message. Now the window handle of the list and previous list item are checked to be the same, before ignoring the focus event.
------------------------------------------------------------------------
r861 | mdcurran | 2007-06-07 15:06:02 +1000 (Thu, 07 Jun 2007) | 1 line

Added appModule for Windows Mail (Windows Vista replacement for Outlook Express). This simply imports the outlook Express appModule as they are basically the same program.
------------------------------------------------------------------------
r860 | mdcurran | 2007-06-07 15:02:25 +1000 (Thu, 07 Jun 2007) | 1 line

The proboem with deleteing messages in Outlook Express was a little bit worse, in that the focus event for the next undeleted message was being fired before the actual message was deleted, therefore making the child IDs be possibly offset by one. Now event_gainFocus in the msimn (outlook Express) app module now checks to see if the  object gaining focus has its IAccessible state_system_focus state set, if not, and it has a child ID greater than 1, it tries to get the previous NVDA object, and if that has the focus state, then sets that object to ahve focus, and fires another gain focus event. Please give feedback on whether this always stays accurate.
------------------------------------------------------------------------
r859 | mdcurran | 2007-06-07 14:18:44 +1000 (Thu, 07 Jun 2007) | 1 line

Fixed long-standing bug with Outlook Express where deleting a message in the message list would cause the list itself to be announced before announcing the next undeleted item in the list. Also fixed a bug where sometimes the next undeleted item wouldn't get announced because Outlook Express failed to set the state_system_focused state on the next list item.
------------------------------------------------------------------------
r858 | mdcurran | 2007-06-07 14:16:31 +1000 (Thu, 07 Jun 2007) | 1 line

Change the reportFocus method in the base NVDA object to always speak the object, it no longer checks the hasFocus property. However, now the base IAccessible NVDA object's reportFocus method checks to see if the reportFocusNeedsIAccessibleFocusState property is true, and if state_system_focused is not set in the IAccessible states, then it does not speak the object.  This doesn't change the way NVDA works for users, but does again allow appModules and sub classes to easily disable or enable reporting of focus.
------------------------------------------------------------------------
r857 | mdcurran | 2007-06-06 22:05:11 +1000 (Wed, 06 Jun 2007) | 6 lines

*Added position classes to text.py for use with the position parameter when instanciating TextInfo objects. OffsetPosition, OffsetsPosition, PointPosition and RectPosition have been added.
*EndPosition is no longer a valid parameter when instanciating textInfo objects. To instruct a TextInfo object to represent a range, now use OffsetsPosition or RectPosition, or POSITION_SELECTION. Use the OffsetPosition class for a normal single offset.
*Fixed some bugs in the text position util functions in text.py.
*Fixed a problem with line lengths in the TextInfo class for generic edit controls.When retreaving the text for a line, it uses the reported line length, but then also tests to see if further offsets report having the same line number, and if so, extends the line with a line break prepended by possible padding characters.
 

------------------------------------------------------------------------
r856 | jteh | 2007-06-06 20:14:12 +1000 (Wed, 06 Jun 2007) | 1 line

Use nvwave to play generated tones.
------------------------------------------------------------------------
r855 | mdcurran | 2007-06-06 11:20:51 +1000 (Wed, 06 Jun 2007) | 1 line

Changed the text info object for generic edit controls to grab the text of the line when dealing with lines or anything smaller, rather than always retreaving the entire text of the control.
------------------------------------------------------------------------
r854 | mdcurran | 2007-06-05 20:44:08 +1000 (Tue, 05 Jun 2007) | 1 line

Accidentily committed a change to the Outlook Express appModule in 852. Reverting to 851.
------------------------------------------------------------------------
r853 | mdcurran | 2007-06-05 20:14:10 +1000 (Tue, 05 Jun 2007) | 5 lines

*Added caretOffset and selectionOffsets properties to the base NVDA object. These are here for design purposes only, they must be overridden in sub classes, they throw a NotImplementedError exception by default.
*Moved the em_* generic edit control window message constants in to the module for the WinEdit NVDAObject. They used to be in winUser.py.
*Added a textInfo class for winEdit NVDA objects. This now means that generic edit controls can now be reviewed properly again with the review commands.


------------------------------------------------------------------------
r852 | mdcurran | 2007-06-05 13:56:12 +1000 (Tue, 05 Jun 2007) | 9 lines

This commit adds a completely new text navigation API for NVDA (which will be used for both reviewing text, and navigating with the caret).
The base textInfo class is found in text.py.
The functions in textPositionUtils have now been moved in to text.py, and for now imported in to textPositionUtils until that can be deleted.
The base NVDAObject now uses this new text API. Also so do the review scripts in the default appModule.
Eventually textInfo classes will be written for edit controls, Scintilla controls, rich edit controls, the MS Word document control, the Internet Explorer / Outlook Express edit control, and the IAccessible2 Editible text objects.
The new API should make navigating text much more efficient since it can cache information rather than fetching it more than once.
Once the API is complete, NVDAObjects will no longer inherit from textBuffer.


------------------------------------------------------------------------
r851 | pvagner | 2007-06-05 00:59:48 +1000 (Tue, 05 Jun 2007) | 2 lines

* updated spanish language file
* updated italian language file
------------------------------------------------------------------------
r850 | jteh | 2007-06-04 14:55:07 +1000 (Mon, 04 Jun 2007) | 1 line

Use a lock when using WavePlayer._prev_whdr to stop a possible race condition when WavePlayer.sync() is called from two threads simultaneously. This could sometimes occur when WavePlayer.stop() was called.
------------------------------------------------------------------------
r849 | pvagner | 2007-06-02 18:58:18 +1000 (Sat, 02 Jun 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r848 | pvagner | 2007-06-02 17:50:38 +1000 (Sat, 02 Jun 2007) | 1 line

* updated french language file
------------------------------------------------------------------------
r847 | mdcurran | 2007-06-02 17:18:46 +1000 (Sat, 02 Jun 2007) | 1 line

Further updates to msimn.py (Outlook express app module) by Michel Such to label more news group fields.
------------------------------------------------------------------------
r846 | pvagner | 2007-06-02 17:05:56 +1000 (Sat, 02 Jun 2007) | 1 line

* updated czech language file
------------------------------------------------------------------------
r845 | pvagner | 2007-06-02 16:35:23 +1000 (Sat, 02 Jun 2007) | 3 lines

* updated hungarian language file
* made messages in say_default_button script by Sean Farrow translatable
* updated slovak language file
------------------------------------------------------------------------
r844 | mdcurran | 2007-06-02 12:19:29 +1000 (Sat, 02 Jun 2007) | 1 line

Updated IAccessible2 IDL and typelib. The IDL had an error where the actual IAccessible2 interface itself wasn't included in the typelib. It didn't seem to cause issues for NVDA, yet, but TLB viewers weren't seeing that interface.
------------------------------------------------------------------------
r843 | mdcurran | 2007-06-02 10:34:18 +1000 (Sat, 02 Jun 2007) | 1 line

Added patch from Sean Farrow that adds a say dfault button script (insert+e) to the default appModule, that announces the default control in dialog boxes.
------------------------------------------------------------------------
r842 | mdcurran | 2007-06-02 09:48:36 +1000 (Sat, 02 Jun 2007) | 1 line

Added patch for Outlook Express appModule from Michel Such that properly labels the 'news group' and 'organisation' mail fields in messages.
------------------------------------------------------------------------
r841 | mdcurran | 2007-06-02 09:41:36 +1000 (Sat, 02 Jun 2007) | 1 line

Fix bug in children property of IAccessible NVDA objects. It should not return children if IAccessibleChildID is greater than 0. Also if it fails to find any children, it no longer tries using firstChild/next -- accessibleChildren should always be correct.
------------------------------------------------------------------------
r840 | pvagner | 2007-06-01 21:10:31 +1000 (Fri, 01 Jun 2007) | 3 lines

* updated traditional chinese language file
* added vietnamese language file
* updated contributers.txt in trunk
------------------------------------------------------------------------
r839 | mdcurran | 2007-06-01 17:50:24 +1000 (Fri, 01 Jun 2007) | 1 line

Fixed bug where right arrow would not speak in winConsole NVDA objects. This was fixed by putting all new text events and speak typed character events from winConsole in to the eventQueue, rather than the interactiveQueue, since isKeyWaiting depends on the fact that the interactive queue should really only contain scripts. Also fixed the backspace issue with speak typed characters on, winConsole NVDA objects only speak a typed character if it is before the current caret position on the x axis, or on the same line, or one above, on the y axis.
------------------------------------------------------------------------
r838 | mdcurran | 2007-06-01 17:47:12 +1000 (Fri, 01 Jun 2007) | 1 line

Updated nvwh to the latest compilation. Now nvwh uses win events to communicate the typed character between threads, so NVDA no longer needs to constantly pump keyboardHandler.
------------------------------------------------------------------------
r836 | mdcurran | 2007-06-01 08:57:11 +1000 (Fri, 01 Jun 2007) | 1 line

Tree view items (with the SysTreeView32 window class) now announce the amount of items with inside a branch when moving to the branch, also when expanding it.
------------------------------------------------------------------------
r835 | pvagner | 2007-05-31 23:29:31 +1000 (Thu, 31 May 2007) | 2 lines

* updated finish language file
*updated italian language file
------------------------------------------------------------------------
r834 | mdcurran | 2007-05-31 18:41:25 +1000 (Thu, 31 May 2007) | 1 line

Tree views (with the SysTreeView32 class) now announce correct position information (e.g. 1 of 10) taking in to account how many items are in the current branch of the tree. Also NVDA object navigation now works with in these tree views, meaning that moving to paretn, next, previous or first child objects will actually move to particular leaves and branches in the tree.
------------------------------------------------------------------------
r833 | jteh | 2007-05-31 17:28:45 +1000 (Thu, 31 May 2007) | 1 line

Ignore *.pyc files.
------------------------------------------------------------------------
r832 | mdcurran | 2007-05-31 17:27:42 +1000 (Thu, 31 May 2007) | 1 line

Change the size of fontNameBuf in _get_fontName method of the scintilla NVDA object to 32, rather than 100. Also use len(fontNameBuf) rather than continuously typing out the size in the other win32 api calls.
------------------------------------------------------------------------
r831 | mdcurran | 2007-05-31 15:22:26 +1000 (Thu, 31 May 2007) | 1 line

Added support for font name and size and attributes for Scintilla controls. Peter Vagner wrote most of it, though we had to do some hackish stuff with copying text across processes to make sure that font name worked.
------------------------------------------------------------------------
r830 | pvagner | 2007-05-31 05:03:35 +1000 (Thu, 31 May 2007) | 1 line

* updated user guide with a note that numlock has to be turned of to make object navigation and review scripts keys working
------------------------------------------------------------------------
r829 | mdcurran | 2007-05-30 21:27:00 +1000 (Wed, 30 May 2007) | 1 line

Added a scintilla NVDA Object, in NVDAObjects/IAccessible/scintilla.py. This now allows scintilla edit controls (such as in notepad++) to be navigated and edited while using NVDA. So far only basic text navigation commands have been implemented. It will be posible in future to add style and font info as well.
------------------------------------------------------------------------
r828 | pvagner | 2007-05-30 18:25:59 +1000 (Wed, 30 May 2007) | 1 line

* update to traditional chinese language file by Eric Yip
------------------------------------------------------------------------
r827 | pvagner | 2007-05-30 16:12:36 +1000 (Wed, 30 May 2007) | 1 line

* hungarian language file updated
------------------------------------------------------------------------
r826 | mdcurran | 2007-05-30 14:15:22 +1000 (Wed, 30 May 2007) | 1 line

Updated IAccessible2 proxy dll. No need to re-register it, the interface uuids havn't changed, at least as far as I can tell. Eventually I will start building my own dlls from the idl... this one was sent to me.
------------------------------------------------------------------------
r825 | mdcurran | 2007-05-30 07:44:22 +1000 (Wed, 30 May 2007) | 1 line

IAccessibleHandler now registers to listen for IAccessible2 text_caret_moved event. NVDAObjects.IAccessible.IAccessible2 class IA2 now overrides the moveByLine, moveByCharacter and moveByWord scripts, using code that grabs caret offset and text from the objWithCaret, rather than working on itself. event_caret in the IA2 class also updates objWithCaret.  This all means that now it is possible to arrow around a reply in an html compersition window in Thunderbird 3. Tis is a little bit of a hack, but perhaps we may take this code in to consideration when we eventually re-think the entire text api.
------------------------------------------------------------------------
r824 | mdcurran | 2007-05-30 07:22:59 +1000 (Wed, 30 May 2007) | 1 line

Updated IAccessible2 IDL and typelib.
------------------------------------------------------------------------
r823 | pvagner | 2007-05-30 06:42:00 +1000 (Wed, 30 May 2007) | 2 lines

* fixed bug where time from 0:00 to 0:59 was reported wrong
* minor update to slovak language file
------------------------------------------------------------------------
r822 | pvagner | 2007-05-29 20:42:16 +1000 (Tue, 29 May 2007) | 1 line

* updated finish language file
------------------------------------------------------------------------
r821 | mdcurran | 2007-05-29 19:08:03 +1000 (Tue, 29 May 2007) | 1 line

Finally changed copyright of all files, and NVDA copyright message, to NVDA Contributors, rather than Michael Curran. The NVDA project url is also after NVDA Contributors, since all contributors are listed clearly on the home page at the bottom.
------------------------------------------------------------------------
r820 | pvagner | 2007-05-29 18:23:20 +1000 (Tue, 29 May 2007) | 1 line

* added new french user guide (by Pierre Beauchamp)
------------------------------------------------------------------------
r819 | pvagner | 2007-05-29 17:04:45 +1000 (Tue, 29 May 2007) | 1 line

* updated slovak language file
------------------------------------------------------------------------
r818 | mdcurran | 2007-05-29 17:02:25 +1000 (Tue, 29 May 2007) | 1 line

Fix bug where role/state names were not being translated to different languages.  I put import speech at the top of coure.py in a previous revision to fix the revert to saved configuration feature. Now import speech is actually inside core.resetConfig. Also no longer import characterSymbols in languageHandler.py, no need for reloading anymore since its not imported before the language changes anymore.
------------------------------------------------------------------------
r817 | pvagner | 2007-05-29 15:48:54 +1000 (Tue, 29 May 2007) | 1 line

* updated brazilian portuguese language file
------------------------------------------------------------------------
r816 | mdcurran | 2007-05-29 15:32:23 +1000 (Tue, 29 May 2007) | 10 lines

*Removed the ID constants and queueList from queueHandler, and  added eventQueue, mouseQueue and interactiveQueue. 
*queueHandler.queueFunction now takes a queue, rather than an ID.
*queueHandler.isPendingEvent now takes either no parameters (to work on all queues), or a queue, Rather than a list of IDs.
*Added queueHandler.flushQueue. This function takes a queue as a parameter, and gets and executes items from the queue until either it has processed the amount of items equal to  the amount of items when this function started, or until the queue is empty. This means that if there are 10 items in the queue, it will process all 10, but if any more were added while this function was running, they will not get processed. It also means that if one of the items itself wishes to take items from the queue, it can do so with out crashing this function.
*queueHandler.pumpAll now calls flushQueue for interactiveQueue, mouseQueue and eventQueue (in this order). 
*Changed IDs to queues in any files using queueHandler.

These changes now allow us to easily flush the event queue from a script if necessary. It also should make things a little more efficient because a queueList no longer has to get iterated.


------------------------------------------------------------------------
r815 | pvagner | 2007-05-29 03:24:05 +1000 (Tue, 29 May 2007) | 1 line


------------------------------------------------------------------------
r814 | pvagner | 2007-05-28 01:50:28 +1000 (Mon, 28 May 2007) | 1 line

* updated czech language file
------------------------------------------------------------------------
r813 | mdcurran | 2007-05-27 21:32:20 +1000 (Sun, 27 May 2007) | 1 line

Improve reading by line in IAccessible2 text objects by providing a text_getLineOffsets method for IAccessible2 text objects.
------------------------------------------------------------------------
r812 | mdcurran | 2007-05-27 21:16:21 +1000 (Sun, 27 May 2007) | 1 line

Map the Alert IAccessible role, to role_dialog.
------------------------------------------------------------------------
r811 | mdcurran | 2007-05-27 21:10:33 +1000 (Sun, 27 May 2007) | 1 line

Added support for text selections in IAccessible2. This now makes it possible to hear what you are doing when you select text in Fiefox 3 / Thunderbird 3.
------------------------------------------------------------------------
r810 | pvagner | 2007-05-27 19:03:40 +1000 (Sun, 27 May 2007) | 2 lines

* updated french language file
* updated finish language file
------------------------------------------------------------------------
r809 | pvagner | 2007-05-27 17:30:07 +1000 (Sun, 27 May 2007) | 1 line

* in prewious commit I have accidentally added dutch language strings into NVDA installer. Reverting it back until dutch translation of NVDA is ready
------------------------------------------------------------------------
r808 | pvagner | 2007-05-27 17:16:32 +1000 (Sun, 27 May 2007) | 1 line

* renamed spanish user guide file excluding native spanish characters. Hopefully it's still some meaning
------------------------------------------------------------------------
r807 | mdcurran | 2007-05-27 15:03:57 +1000 (Sun, 27 May 2007) | 1 line

Added an IAccessible NVDA object for IAccessibles of role 'client'. This overrides the name property so that if the IAccessible's name is None, or just blank space, then use the window class as the name. This now means that any objects NVDA used to report as just window, will now have their window class name reported as the name. This makes navigating with object navigation a little less confusing when navigating around applications with lots of default IAccessible client objects.
------------------------------------------------------------------------
r806 | mdcurran | 2007-05-27 14:48:49 +1000 (Sun, 27 May 2007) | 1 line

Added role_grouping and role_propertyPage to controlTypes.py. Mapped to these roles from IAcessible.
------------------------------------------------------------------------
r805 | mdcurran | 2007-05-27 13:36:46 +1000 (Sun, 27 May 2007) | 1 line

Temporarily make an IAccessible NVDAObject's groupName property return None, if the object in question does not have the focus. GroupName is most useful only for when tabbing around dialog boxes, rather than moving with object navigation. For now this fixes the big problem where when a dialog box becomes active, NVDA would lock up for a second or so.
------------------------------------------------------------------------
r804 | mdcurran | 2007-05-27 13:28:20 +1000 (Sun, 27 May 2007) | 1 line

Shouldn't have committed a change to _default.py in appModules.
------------------------------------------------------------------------
r803 | mdcurran | 2007-05-27 13:25:10 +1000 (Sun, 27 May 2007) | 7 lines

*Fixed bug where a state was either spoken more than once, or, the old state was spoken first, when a state change occurs on an object. There was an if, instead of an elif, in speech.speakObjectProperties.
This now means that check boxes etc speak their new state correctly when changing.
*Fixed possible bug where an event for the object with focus would actually create an new object and pass the event to that, rather than the focus object. An example is in Thunderbird, where it was reported that a checkbox being checked or unchecked, wouldn't speak correctly.
This was fixed by properly recording the original child ID from the event, in the object. When calling accessibleObjectEvent from oleacc.dll, it is possible that the child ID of the object received, can actually have a different child ID than was given. So for normal MSAA methods, the new child ID is used, but for comparison of events and objects, we make sure to use the original child ID.
*In virtualBuffers.IAccesible.gecko, when the actual document gets focus, after possibly loading the document, the focus event is sent further along the event chain, so the actual NVDA object with focus receives the event.  This means that when focus moves to the document, the navigator object will also be correctly placed on the document.


------------------------------------------------------------------------
r802 | pvagner | 2007-05-27 04:54:53 +1000 (Sun, 27 May 2007) | 3 lines

* another patch from Tomas Valusek. This one converts key comands in menu item's names to upper case to make it consistent with other standard windows applications.
* merged czech language file allowing it to work after these 2 commits
* updated slovak language file (stupid me; I had to do this in one go)
------------------------------------------------------------------------
r801 | pvagner | 2007-05-27 04:13:43 +1000 (Sun, 27 May 2007) | 2 lines

* added patch from Tomas Valusek enhancing all WX controls within settings dialog with the accelerator keys (note for translators: respective strings will have to be retranslated or merged at least)
* updated slovak language file reflecting this addition
------------------------------------------------------------------------
r800 | mdcurran | 2007-05-26 23:25:16 +1000 (Sat, 26 May 2007) | 1 line

Added a bindKey_runtime method to all scriptable objects. This allows the binding of keys to scripts at runtime, so the binding is made on the instance, not on the class. IAccessible 2 needs this since it has to bind keys at runtime depending on what interfaces it is found to support. For instance, if it has the IAccessibleEditableText interface, then all common text editing keys must be bound.
------------------------------------------------------------------------
r799 | mdcurran | 2007-05-26 22:32:52 +1000 (Sat, 26 May 2007) | 10 lines

Adding very basic IAccessible2 text support.
This now allows you to arrow around edit fields in Firefox/Thunderbird  3 latest trunk.
*Added lib/IA2.dll. You must register this dll with the operating system for IAccessible 2 support to work. Not sure what we will do about this in future.
*Added IA2Handler.py. For now this only includes an IA2FromMSAA function.
*Added NVDAObjects.IAccessible.IA2 package, __init__.py contains an IA2 NVDAObject class, which so far only support IAccessibleText and IAccessibleEditableText. character count, get caret offset, and get text between any offsets, are so far supported. Eventually things like getLineOffsets will be added. However, so far NVDA copes surprisingly well with out.
*The normal MSAA IAccessible NVDAObject now checks each MSAA object to see if its support IAccessible2, and if so, passes along to the IA2 NVDAObject.
*IAccessible objects checked for virtual buffer support  now must have the IAccessible state_system_readonly state set if they are to be classed as a virtual buffer. If they don't then obviously they are editable and will use other means to gain access to the information.
This now stops Thunderbird documents from being classed as virtual buffer objects.


------------------------------------------------------------------------
r793 | pvagner | 2007-05-26 06:53:58 +1000 (Sat, 26 May 2007) | 1 line

* CRLF file endings for czech language files in trunk
------------------------------------------------------------------------
r792 | pvagner | 2007-05-26 06:51:28 +1000 (Sat, 26 May 2007) | 3 lines

* added czech documentation into trunk
* added czech language file for trunk (by Tomas Valusek with help from Jaromir Vit)
* updated contributers.txt file for trunk with names of czech translators
------------------------------------------------------------------------
r790 | pvagner | 2007-05-26 00:18:02 +1000 (Sat, 26 May 2007) | 2 lines

* new spanish documentation for 0.5.x
* spanish language strings for the NVDA installer
------------------------------------------------------------------------
r789 | pvagner | 2007-05-25 19:52:28 +1000 (Fri, 25 May 2007) | 2 lines

* post 0.5 update to finish language file
* updated finish language strings for the NVDA installer
------------------------------------------------------------------------
