15 new commits in wintenApps:
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/6088ce155f49/
Changeset: 6088ce155f49
Branch: None
User: josephsl
Date: 2016-08-16 16:00:06+00:00
Summary: Store: Never announce 'popup' for search prmopt.
UIA class name says it's a popup, but some are not really popups (for example,
search field in Store app). Thus it might be advisable to grant exceptions for
some popups.
Affected #: 1 file
diff --git a/addon/globalPlugins/wintenObjs.py
b/addon/globalPlugins/wintenObjs.py
index d1b80c5..20996e8 100755
--- a/addon/globalPlugins/wintenObjs.py
+++ b/addon/globalPlugins/wintenObjs.py
@@ -47,7 +47,7 @@ class LoopingSelectorItem(UIA):
letCortanaListen = False
# We know the following elements are dialogs.
-wintenDialogs=("Shell_Dialog", "Credential Dialog Xaml Host", "Popup")
+wintenDialogs=("Shell_Dialog", "Popup")
class GlobalPlugin(globalPluginHandler.GlobalPlugin):
@@ -70,7 +70,9 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
clsList.append(LoopingSelectorItem)
# Windows that are really dialogs.
if obj.UIAElement.cachedClassName in wintenDialogs:
- clsList.insert(0, Dialog)
+ # But some are not dialogs despite what UIA
says (for example, search popup in Store).
+ if obj.UIAElement.cachedAutomationID !=
"SearchPopUp":
+ clsList.insert(0, Dialog)
# Focus announcement hacks.
def event_gainFocus(self, obj, nextHandler):
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/e3a6e8809675/
Changeset: e3a6e8809675
Branch: None
User: josephsl
Date: 2016-08-16 21:25:06+00:00
Summary: Skype Preview: navigator object moves to a message when
Control+NVDA+numrow keys are pressed.
Just like desktop client, move nav object to the message in question when
Control+NVDA+number row keys are pressed. Unfortunately, because the message
isn't announced, add a call to ui.message to announce the message as well.
Affected #: 1 file
diff --git a/addon/appModules/skypeapp.py b/addon/appModules/skypeapp.py
index 3dd6bca..5a7971d 100755
--- a/addon/appModules/skypeapp.py
+++ b/addon/appModules/skypeapp.py
@@ -41,6 +41,8 @@ class AppModule(appModuleHandler.AppModule):
if isinstance(element, UIA) and
element.UIAElement.cachedAutomationID == "chatMessagesListView":
pos = int(gesture.displayName[-1])
if pos == 0: pos += 10
- ui.message(element.getChild(0-pos).name)
+ message = element.getChild(0-pos)
+ api.setNavigatorObject(message)
+ ui.message(message.name)
return
ui.message("Chat history not found")
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/88a3bf61efa2/
Changeset: 88a3bf61efa2
Branch: None
User: josephsl
Date: 2016-08-17 02:43:37+00:00
Summary: Search suggestions: allow users to use up and down arrows to move
between suggestions.
NVDA Core ticket 6241: arrow keys does force suggestion items to fire selection
events. This comes at a cost: suggestion count will no longer be announced.
Affected #: 1 file
diff --git a/addon/globalPlugins/wintenObjs.py
b/addon/globalPlugins/wintenObjs.py
index 20996e8..99964a6 100755
--- a/addon/globalPlugins/wintenObjs.py
+++ b/addon/globalPlugins/wintenObjs.py
@@ -49,6 +49,17 @@ letCortanaListen = False
# We know the following elements are dialogs.
wintenDialogs=("Shell_Dialog", "Popup")
+# General suggestions item handler
+# A testbed for NVDA Core ticket 6241.
+class SuggestionsListItem(UIA):
+
+ def event_UIA_elementSelected(self):
+ focusControllerFor=api.getFocusObject().controllerFor
+ if len(focusControllerFor)>0 and
focusControllerFor[0].appModule is self.appModule and self.name:
+ speech.cancelSpeech()
+ api.setNavigatorObject(self)
+ self.reportFocus()
+
class GlobalPlugin(globalPluginHandler.GlobalPlugin):
def __init__(self):
@@ -69,10 +80,13 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
if obj.role==controlTypes.ROLE_LISTITEM and
"LoopingSelectorItem" in obj.UIAElement.cachedClassName:
clsList.append(LoopingSelectorItem)
# Windows that are really dialogs.
- if obj.UIAElement.cachedClassName in wintenDialogs:
+ elif obj.UIAElement.cachedClassName in wintenDialogs:
# But some are not dialogs despite what UIA
says (for example, search popup in Store).
if obj.UIAElement.cachedAutomationID !=
"SearchPopUp":
clsList.insert(0, Dialog)
+ # Suggestions themselves.
+ elif isinstance(obj.parent, UIA) and
obj.parent.UIAElement.cachedAutomationID == "SuggestionsList":
+ clsList.insert(0, SuggestionsListItem)
# Focus announcement hacks.
def event_gainFocus(self, obj, nextHandler):
@@ -84,24 +98,6 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
api.setNavigatorObject(obj.simpleFirstChild)
nextHandler()
- # Needed to prevent double announcement...
- valueCharCount = -1
-
- def event_valueChange(self, obj, nextHandler):
- # Announce at least suggestions count and the topmost one.
- if isinstance(obj, UIA) and obj.UIAElement.cachedAutomationID
== "TextBox" and obj.UIAElement.cachedClassName == "TextBox":
- if self.valueCharCount != len(obj.value):
- self.valueCharCount = len(obj.value)
- if len(obj.value) > 0:
- try:
- suggestions =
api.getFocusObject().controllerFor
- if len(suggestions) > 0:
-
ui.message("Suggestions: {count}".format(count = suggestions[0].childCount))
-
ui.message(suggestions[0].firstChild.name)
- except AttributeError:
- pass
- nextHandler()
-
def script_voiceActivation(self, gesture):
gesture.send()
if sys.getwindowsversion().major == 10:
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/0503c002e58c/
Changeset: 0503c002e58c
Branch: None
User: josephsl
Date: 2016-08-17 14:59:11+00:00
Summary: Search fields: appearance of suggestions is now detected.
Use controller for event to detect appearance of suggestions list (NvDA Core
ticket 6241). Specifically:
* Force UIA handler to detect controller for event.
* When suggestions appear, NVDA wiol say, 'suggestions'.
Affected #: 1 file
diff --git a/addon/globalPlugins/wintenObjs.py
b/addon/globalPlugins/wintenObjs.py
index 99964a6..a0edc51 100755
--- a/addon/globalPlugins/wintenObjs.py
+++ b/addon/globalPlugins/wintenObjs.py
@@ -8,6 +8,7 @@ import sys
import globalPluginHandler
import appModuleHandler # Huge workaround.
import controlTypes
+import UIAHandler
import ui
from NVDAObjects.UIA import UIA
from NVDAObjects.behaviors import Dialog
@@ -49,6 +50,29 @@ letCortanaListen = False
# We know the following elements are dialogs.
wintenDialogs=("Shell_Dialog", "Popup")
+# Extra UIA constants
+UIA_ControllerForPropertyId = 30104
+
+# Search fields.
+# Some of them raise controller for event, an event fired if another UI
element depends on this control.
+class SearchField(UIA):
+
+ def event_UIA_controllerFor(self):
+ # Only useful if suggestions appear and disappear.
+ focus = api.getFocusObject()
+ focusControllerFor = focus.controllerFor
+ if len(focusControllerFor)>0:
+ ui.message("suggestions")
+ else:
+ # Manually locate live region until NVDA Core
implements this.
+ obj = focus
+ while obj is not None:
+ if isinstance(obj, UIA) and
obj.UIAElement.cachedClassName == "Popup":
+ ui.message(obj.description)
+ return
+ obj = obj.next
+ ui.message("suggestions closed")
+
# General suggestions item handler
# A testbed for NVDA Core ticket 6241.
class SuggestionsListItem(UIA):
@@ -72,6 +96,11 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
self.bindGesture("kb:windows+shift+c",
"voiceActivation")
else:
self.bindGesture("kb:windows+c", "voiceActivation")
+ # Listen for controller for events (to be removed once NVDA
Core itself supports this).
+ if UIA_ControllerForPropertyId not in
UIAHandler.UIAPropertyIdsToNVDAEventNames:
+
UIAHandler.UIAPropertyIdsToNVDAEventNames[UIA_ControllerForPropertyId] =
"UIA_controllerFor"
+ # Unfortunately, UIA handler must be restarted in order
for changes to take effect (ugly hack, but it's a must until a plug-in model is
developed).
+ UIAHandler.initialize()
def chooseNVDAObjectOverlayClasses(self, obj, clsList):
# NVDA Core ticket 5231: Announce values in time pickers.
@@ -84,6 +113,9 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
# But some are not dialogs despite what UIA
says (for example, search popup in Store).
if obj.UIAElement.cachedAutomationID !=
"SearchPopUp":
clsList.insert(0, Dialog)
+ # Search field that does raise controller for event.
+ elif obj.UIAElement.cachedClassName == "TextBox" and
obj.UIAElement.cachedAutomationID in ("TextBox", "SearchTextBox"):
+ clsList.insert(0, SearchField)
# Suggestions themselves.
elif isinstance(obj.parent, UIA) and
obj.parent.UIAElement.cachedAutomationID == "SuggestionsList":
clsList.insert(0, SuggestionsListItem)
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/58f88c46c9d8/
Changeset: 58f88c46c9d8
Branch: None
User: josephsl
Date: 2016-08-17 15:19:47+00:00
Summary: UIA handler: make sure to terminate it before restarting,
otherwise UIA handler thread won't die.
Affected #: 1 file
diff --git a/addon/globalPlugins/wintenObjs.py
b/addon/globalPlugins/wintenObjs.py
index a0edc51..4a1ebe7 100755
--- a/addon/globalPlugins/wintenObjs.py
+++ b/addon/globalPlugins/wintenObjs.py
@@ -100,6 +100,7 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
if UIA_ControllerForPropertyId not in
UIAHandler.UIAPropertyIdsToNVDAEventNames:
UIAHandler.UIAPropertyIdsToNVDAEventNames[UIA_ControllerForPropertyId] =
"UIA_controllerFor"
# Unfortunately, UIA handler must be restarted in order
for changes to take effect (ugly hack, but it's a must until a plug-in model is
developed).
+ UIAHandler.terminate()
UIAHandler.initialize()
def chooseNVDAObjectOverlayClasses(self, obj, clsList):
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/04e861765aed/
Changeset: 04e861765aed
Branch: None
User: josephsl
Date: 2016-08-18 15:55:31+00:00
Summary: WinTenObjs: oops, make sure suggestions is a list item.
Without chekcing for role of suggestions, it'll continue to recurse between
child and parent. This problem was observed as recursion error in Twitter app.
Affected #: 1 file
diff --git a/addon/globalPlugins/wintenObjs.py
b/addon/globalPlugins/wintenObjs.py
index 4a1ebe7..b72f7e4 100755
--- a/addon/globalPlugins/wintenObjs.py
+++ b/addon/globalPlugins/wintenObjs.py
@@ -118,7 +118,7 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
elif obj.UIAElement.cachedClassName == "TextBox" and
obj.UIAElement.cachedAutomationID in ("TextBox", "SearchTextBox"):
clsList.insert(0, SearchField)
# Suggestions themselves.
- elif isinstance(obj.parent, UIA) and
obj.parent.UIAElement.cachedAutomationID == "SuggestionsList":
+ elif obj.role == controlTypes.ROLE_LISTITEM and
isinstance(obj.parent, UIA) and obj.parent.UIAElement.cachedAutomationID ==
"SuggestionsList":
clsList.insert(0, SuggestionsListItem)
# Focus announcement hacks.
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/20405d3fa807/
Changeset: 20405d3fa807
Branch: None
User: josephsl
Date: 2016-08-18 17:58:43+00:00
Summary: Skype Preview: just like Skype for Desktop, make messages less
verbose via regular expressions.
Affected #: 1 file
diff --git a/addon/appModules/skypeapp.py b/addon/appModules/skypeapp.py
index 5a7971d..ba44b85 100755
--- a/addon/appModules/skypeapp.py
+++ b/addon/appModules/skypeapp.py
@@ -4,6 +4,7 @@
# Workarounds for Skype UWP, providing similar features to Skype for Desktop
client support (skype.py found in NVDA Core).
+import re
import appModuleHandler
import ui
from NVDAObjects.UIA import UIA
@@ -16,6 +17,16 @@ class AppModule(appModuleHandler.AppModule):
for pos in xrange(10):
self.bindGesture("kb:control+nvda+%s"%pos,
"readMessage")
+ # Borrowed from Skype for Desktop app module (NVDA Core).
+ RE_MESSAGE = re.compile(r"^From (?P<from>.*), (?P<body>.*), sent on
(?P<time>.*?)(?: Edited by .* at .*?)?(?: Not delivered|New)?$")
+
+ def reportMessage(self, message):
+ # Just like Desktop client, messages are quite verbose.
+ m = self.RE_MESSAGE.match(message)
+ if m:
+ text = "%s, %s" % (m.group("from"), m.group("body"))
+ ui.message(text)
+
def event_nameChange(self, obj, nextHandler):
if isinstance(obj, UIA):
uiElement = obj.UIAElement
@@ -25,7 +36,7 @@ class AppModule(appModuleHandler.AppModule):
if nextElement.cachedClassName == "RichEditBox"
and nextElement.cachedAutomationID == "ChatEditBox":
ui.message(obj.name if obj.name != ""
else "Typing stopped")
elif uiElement.cachedAutomationID == "Message" and
uiElement.cachedClassName == "ListViewItem":
- ui.message(obj.name)
+ self.reportMessage(obj.name)
nextHandler()
def script_readMessage(self, gesture):
@@ -43,6 +54,6 @@ class AppModule(appModuleHandler.AppModule):
if pos == 0: pos += 10
message = element.getChild(0-pos)
api.setNavigatorObject(message)
- ui.message(message.name)
+ self.reportMessage(message.name)
return
ui.message("Chat history not found")
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/a254cc0858ee/
Changeset: a254cc0858ee
Branch: None
User: josephsl
Date: 2016-08-19 18:00:48+00:00
Summary: Skype Preview: NVDA will not play error tones when moving to a
different conversation and in other places.
Once a varaible is assigned, keep it that way, otherwise assignment error is
thrown.
Affected #: 1 file
diff --git a/addon/appModules/skypeapp.py b/addon/appModules/skypeapp.py
index ba44b85..f27b8be 100755
--- a/addon/appModules/skypeapp.py
+++ b/addon/appModules/skypeapp.py
@@ -24,8 +24,8 @@ class AppModule(appModuleHandler.AppModule):
# Just like Desktop client, messages are quite verbose.
m = self.RE_MESSAGE.match(message)
if m:
- text = "%s, %s" % (m.group("from"), m.group("body"))
- ui.message(text)
+ message = "%s, %s" % (m.group("from"), m.group("body"))
+ ui.message(message)
def event_nameChange(self, obj, nextHandler):
if isinstance(obj, UIA):
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/70d54fca692b/
Changeset: 70d54fca692b
Branch: None
User: derekriemer
Date: 2016-08-22 05:40:39+00:00
Summary: weather app, rather than list items, the tabs report as such.
Affected #: 1 file
diff --git a/addon/appModules/microsoft_msn_weather.py
b/addon/appModules/microsoft_msn_weather.py
new file mode 100644
index 0000000..d91670f
--- /dev/null
+++ b/addon/appModules/microsoft_msn_weather.py
@@ -0,0 +1,21 @@
+# WinTenApps/microsoft_msn_weather.py
+# Part of Windows 10 App Essentials collection
+# Copyright 2016 Derek Riemer, released under GPL.
+
+# Provides workarounds for the weather app.
+
+
+import appModuleHandler
+import controlTypes
+import re
+
+#Regexp for deciding whether this ID should be a tab control
+RE_TAB_AUTOMATION_MATCH = re.compile(r"L1NavigationButton_\d+")
+
+class AppModule(appModuleHandler.AppModule):
+ def event_NVDAObject_init(self, obj):
+ if obj.UIAElement.CachedAutomationId == u"SideNavigationBar"
and not obj.role in (controlTypes.ROLE_GROUPING, ):
+ obj.role = controlTypes.ROLE_TABCONTROL
+ theId = obj.UIAElement.CachedAutomationId
+ if RE_TAB_AUTOMATION_MATCH.match(theId):
+ obj.role = controlTypes.ROLE_TAB
\ No newline at end of file
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/f89528cfa6a9/
Changeset: f89528cfa6a9
Branch: None
User: josephsl
Date: 2016-08-22 06:16:11+00:00
Summary: Weather: tabs such as 'forecast' and 'maps' are recognized as tabs
(patch by Derek Riemer)
weather app, rather than list items, the tabs report as such.
Affected #: 1 file
diff --git a/addon/appModules/microsoft_msn_weather.py
b/addon/appModules/microsoft_msn_weather.py
new file mode 100644
index 0000000..d91670f
--- /dev/null
+++ b/addon/appModules/microsoft_msn_weather.py
@@ -0,0 +1,21 @@
+# WinTenApps/microsoft_msn_weather.py
+# Part of Windows 10 App Essentials collection
+# Copyright 2016 Derek Riemer, released under GPL.
+
+# Provides workarounds for the weather app.
+
+
+import appModuleHandler
+import controlTypes
+import re
+
+#Regexp for deciding whether this ID should be a tab control
+RE_TAB_AUTOMATION_MATCH = re.compile(r"L1NavigationButton_\d+")
+
+class AppModule(appModuleHandler.AppModule):
+ def event_NVDAObject_init(self, obj):
+ if obj.UIAElement.CachedAutomationId == u"SideNavigationBar"
and not obj.role in (controlTypes.ROLE_GROUPING, ):
+ obj.role = controlTypes.ROLE_TABCONTROL
+ theId = obj.UIAElement.CachedAutomationId
+ if RE_TAB_AUTOMATION_MATCH.match(theId):
+ obj.role = controlTypes.ROLE_TAB
\ No newline at end of file
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/6eb891a3dee8/
Changeset: 6eb891a3dee8
Branch: None
User: josephsl
Date: 2016-08-22 06:22:25+00:00
Summary: Readme and authors: add Derek Riemer as author, add Weather entry
Affected #: 2 files
diff --git a/buildVars.py b/buildVars.py
index 3d8b609..1e6737d 100755
--- a/buildVars.py
+++ b/buildVars.py
@@ -21,7 +21,7 @@ addon_info = {
# version
"addon_version" : "16.08.1",
# Author(s)
- "addon_author" : u"Joseph Lee <joseph.lee22590@xxxxxxxxx> and others",
+ "addon_author" : u"Joseph Lee <joseph.lee22590@xxxxxxxxx>, Derek Riemer
<driemer.riemer@xxxxxxxxx> and others",
# URL for the add-on documentation support
"addon_url" : "http://addons.nvda-project.org/";,
# Documentation file name
diff --git a/readme.md b/readme.md
index 7d78828..fd6ab9a 100755
--- a/readme.md
+++ b/readme.md
@@ -1,6 +1,6 @@
# Windows 10 App Essentials
-* Author: Joseph Lee
+* Authors: Joseph Lee, Derek Riemer and other Windows 10 users
* Download [stable version][1]
* Download [development version][2]
@@ -18,6 +18,7 @@ The following app modules or support modules for some apps
are included (see eac
* Skype Preview
* Twitter.
* TeamViewer Touch.
+* Weather.
* Miscellaneous modules for controls such as Start Menu tiles.
## General
@@ -64,6 +65,10 @@ The following app modules or support modules for some apps
are included (see eac
* Button labels are now announced.
+## Weather
+
+* Tabs such as "forecast" and "maps" are recognized as proper tabs (patch by
Derek Riemer).
+
[1]: http://addons.nvda-project.org/files/get.php?file=w10
[2]: http://addons.nvda-project.org/files/get.php?file=w10-dev
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/a9f4e42403a3/
Changeset: a9f4e42403a3
Branch: None
User: derekriemer
Date: 2016-08-22 19:31:41+00:00
Summary: Weather: various fixes.
* Settings is a button.
* Feedback is a tab.
* Added .gitignore from the template.
Signed-off-by: Joseph Lee <joseph.lee22590@xxxxxxxxx>
Affected #: 3 files
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4aff587
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,11 @@
+addon/doc/*.css
+addon/doc/en/
+addon/globalPlugins/tips.json
+*_docHandler.py
+*.html
+*.ini
+*.mo
+*.pot
+*.pyc
+*.nvda-addon
+.sconsign.dblite
diff --git a/addon/appModules/microsoft_msn_weather.py
b/addon/appModules/microsoft_msn_weather.py
index d91670f..54f9aec 100644
--- a/addon/appModules/microsoft_msn_weather.py
+++ b/addon/appModules/microsoft_msn_weather.py
@@ -4,18 +4,70 @@
# Provides workarounds for the weather app.
-
-import appModuleHandler
-import controlTypes
import re
+import controlTypes
+import appModuleHandler
+import ui
+import wx
+from NVDAObjects import NVDAObject
#Regexp for deciding whether this ID should be a tab control
-RE_TAB_AUTOMATION_MATCH = re.compile(r"L1NavigationButton_\d+")
+RE_TAB_AUTOMATION_MATCH = re.compile("|".join([
+ r"L1NavigationButton_\d+",
+ r"L1NavigationButton_Feedback",
+]))
+#Regexp for deciding if this should be a button
+RE_BUTTONCONTROL = re.compile("|".join([
+ r"L1NavigationButton_Settings",
+]))
+#Regexp for multiLine List items, whos children need the list class added.
+#This is because the AutomationID for them is non existant, so we check their
parent.
+RE_PARENT_LISTS = re.compile("|".join([
+ r"DailyList",
+ r"HourlyList",
+]))
+
+class WeatherForecastItem(NVDAObject):
+ def initOverlayClass(self):
+ self.curLine = -1 #Start out reading the first thing.
+ self.lines = self.name.split("\r\n")
+
+ def script_nextLine(self, gesture):
+ if self.curLine < len(self.lines)-1:
+ self.curLine += 1
+ ui.message(self.lines[self.curLine])
+ else:
+ ui.message(_("No more weather data for this item."))
+ wx.Bell()
+
+ def script_previousLine(self, gesture):
+ if self.curLine > 0:
+ self.curLine -=1
+ ui.message(self.lines[self.curLine])
+ else:
+ ui.message(_("No more weather data for this item."))
+ wx.Bell()
+
+
+ __gestures = {
+ "kb:downarrow" : "nextLine",
+ "kb:uparrow" : "previousLine",
+ }
class AppModule(appModuleHandler.AppModule):
+
+ def chooseNVDAObjectOverlayClasses(self, obj, clsList):
+ if obj.role == controlTypes.ROLE_LISTITEM and
RE_PARENT_LISTS.match(obj.parent.UIAElement.CachedAutomationID):
+ clsList.insert(0, WeatherForecastItem)
+
def event_NVDAObject_init(self, obj):
+ try:
+ theId = obj.UIAElement.CachedAutomationId
+ except AttributeError:
+ return
if obj.UIAElement.CachedAutomationId == u"SideNavigationBar"
and not obj.role in (controlTypes.ROLE_GROUPING, ):
obj.role = controlTypes.ROLE_TABCONTROL
- theId = obj.UIAElement.CachedAutomationId
if RE_TAB_AUTOMATION_MATCH.match(theId):
- obj.role = controlTypes.ROLE_TAB
\ No newline at end of file
+ obj.role = controlTypes.ROLE_TAB
+ elif RE_BUTTONCONTROL.match(theId):
+ obj.role = controlTypes.ROLE_BUTTON
diff --git a/readme.md b/readme.md
index fd6ab9a..a263b7d 100755
--- a/readme.md
+++ b/readme.md
@@ -68,6 +68,7 @@ The following app modules or support modules for some apps
are included (see eac
## Weather
* Tabs such as "forecast" and "maps" are recognized as proper tabs (patch by
Derek Riemer).
+* when reading a forecast, use the left and right arrows to move between
items. Use the up and down arrows to read the individual items. For example,
pressing the right arrow might report "Monday: 79 degrees, partly cloudy, ..."
pressing the down arrow will say "Monday" Then pressing it again will read the
next item (Like the temperature). This currently works for daily and hourly
forecasts.
[1]: http://addons.nvda-project.org/files/get.php?file=w10
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/132eff2eb8f8/
Changeset: 132eff2eb8f8
Branch: None
User: josephsl
Date: 2016-08-25 01:04:07+00:00
Summary: AppModuleHandler workaround: implement suggestion from NVDA Core
ticket 5323 workaround.
It's better to replace it right away then going through conditionals (noted by
Jamie Teh from NV Access), hence this add-on also takes advantage of this
shortcut.
Affected #: 1 file
diff --git a/addon/globalPlugins/wintenObjs.py
b/addon/globalPlugins/wintenObjs.py
index b72f7e4..ea29689 100755
--- a/addon/globalPlugins/wintenObjs.py
+++ b/addon/globalPlugins/wintenObjs.py
@@ -26,10 +26,8 @@ def getAppModuleFromProcessID(processID):
with appModuleHandler._getAppModuleLock:
mod=appModuleHandler.runningTable.get(processID)
if not mod:
-
appName=appModuleHandler.getAppNameFromProcessID(processID)
# #5323: Certain executables contain dots as part of
its file name.
- if "." in appName:
- appName = appName.replace(".","_")
+
appName=appModuleHandler.getAppNameFromProcessID(processID).replace(".","_")
mod=appModuleHandler.fetchAppModule(processID,appName)
if not mod:
raise RuntimeError("error fetching default
appModule")
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/83a78269520a/
Changeset: 83a78269520a
Branch: None
User: josephsl
Date: 2016-08-25 06:51:37+00:00
Summary: Merge branch 'stable'
Affected #: 8 files
diff --git a/addon/doc/bg/readme.md b/addon/doc/bg/readme.md
index f1f45ee..9d9e92d 100644
--- a/addon/doc/bg/readme.md
+++ b/addon/doc/bg/readme.md
@@ -77,8 +77,11 @@
съобщават двукратно.
## Предварителна версия на Skype (Skype Preview)
+
* Текстът на индикатора за писане бива съобщаван, както това става в Skype
за работен плот.
+* Частично завръщане на клавишните комбинации от Control+NVDA+цифрите от
+ цифровия ред за прочитане на последните 10 съобщения в дискусията.
## Bank of America/Twitter
diff --git a/addon/doc/de/readme.md b/addon/doc/de/readme.md
index a99e9a9..9a692f0 100644
--- a/addon/doc/de/readme.md
+++ b/addon/doc/de/readme.md
@@ -70,7 +70,10 @@ welche inbegriffen sind):
* Progress bar values and other information are no longer announced twice.
## Skype Preview
+
* Typing indicator text is announced just like Skype for Desktop client.
+* Partial return of Control+NvDA+number row commands to read recent chat
+ history.
## Bank of America/Twitter
diff --git a/addon/doc/es/readme.md b/addon/doc/es/readme.md
index 454632f..0df2c88 100644
--- a/addon/doc/es/readme.md
+++ b/addon/doc/es/readme.md
@@ -74,8 +74,11 @@ qué se incluye):
dos veces.
## Previsualización de Skype
+
* Al teclear el indicador de texto se anuncia sólo como cliente Skype para
Escritorio.
+* Partial return of Control+NvDA+number row commands to read recent chat
+ history.
## Bank of America/Twitter
diff --git a/addon/doc/fi/readme.md b/addon/doc/fi/readme.md
index 6922ccc..1567018 100644
--- a/addon/doc/fi/readme.md
+++ b/addon/doc/fi/readme.md
@@ -71,7 +71,10 @@ käytettävissä olevista ominaisuuksista kunkin sovelluksen
kappaleesta):
* Edistymispalkkien arvoja tai muita tietoja ei lueta enää kahdesti.
## Skypen esiversio
+
* Kirjoitusilmaisimen teksti puhutaan kuten Skypen työpöytäversiossa.
+* Osittainen Control+NVDA+numero-komentojen paluu tuoreen
+ keskusteluhistorian lukemiseen.
## Bank of America/Twitter
diff --git a/addon/doc/fr/readme.md b/addon/doc/fr/readme.md
index e5040c2..1b34a7f 100644
--- a/addon/doc/fr/readme.md
+++ b/addon/doc/fr/readme.md
@@ -75,8 +75,11 @@ est inclus) :
plus annoncés deux fois.
## Skype Preview
+
* L'indicateur de frappe de texte est annoncé exactement comme pour le Skype
for Desktop client.
+* Retour partiel de Contrôle+NVDA+commandes numéro de ligne pour lire
+ l'historique de conversation récente.
## Bank of America/Twitter
diff --git a/addon/doc/gl/readme.md b/addon/doc/gl/readme.md
index 7ab0be6..779407f 100644
--- a/addon/doc/gl/readme.md
+++ b/addon/doc/gl/readme.md
@@ -71,8 +71,11 @@ se inclúe):
dúas veces.
## Previsualización de Skype
+
* Ao teclear o indicador de texto anúnciase só coma cliente Skype para
Escritorio.
+* Partial return of Control+NvDA+number row commands to read recent chat
+ history.
## Bank of America/Twitter
diff --git a/addon/doc/it/readme.md b/addon/doc/it/readme.md
index 6ca2303..347cbf6 100644
--- a/addon/doc/it/readme.md
+++ b/addon/doc/it/readme.md
@@ -71,8 +71,11 @@ si veda la relativa sezione per ulteriori informazioni:
volte.
## Anteprima Skype
+
* Viene annunciato quando un utente sta scrivendo, così come accade in Skype
per desktop.
+* Partial return of Control+NvDA+number row commands to read recent chat
+ history.
## Bank of America/Twitter
diff --git a/addon/doc/ru/readme.md b/addon/doc/ru/readme.md
index eaac9c0..b0d0007 100644
--- a/addon/doc/ru/readme.md
+++ b/addon/doc/ru/readme.md
@@ -67,7 +67,10 @@ Windows 10, а также исправлений для некоторых ти
* Progress bar values and other information are no longer announced twice.
## Skype Preview
+
* Typing indicator text is announced just like Skype for Desktop client.
+* Partial return of Control+NvDA+number row commands to read recent chat
+ history.
## Bank of America/Twitter
https://bitbucket.org/nvdaaddonteam/wintenapps/commits/418df9551d7c/
Changeset: 418df9551d7c
Branch: master
User: josephsl
Date: 2016-08-25 07:02:13+00:00
Summary: SConstruct: If build var change is detected, manifest will be
modified (fix from Jamie Teh from Nv Access)
Affected #: 1 file
diff --git a/sconstruct b/sconstruct
index b77cfe6..c28510b 100755
--- a/sconstruct
+++ b/sconstruct
@@ -167,6 +167,8 @@ env.Depends(mergePot, i18nFiles)
# Generate Manifest path
manifest = env.NVDAManifest(os.path.join("addon", "manifest.ini"),
os.path.join("manifest.ini.tpl"))
+# Ensure manifest is rebuilt if buildVars is updated.
+env.Depends(manifest, "buildVars.py")
env.Depends(addon, manifest)
env.Default(addon)
Repository URL: https://bitbucket.org/nvdaaddonteam/wintenapps/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.