2 new commits in eMule:
https://bitbucket.org/nvdaaddonteam/emule/commits/2fef83afe423/
Changeset: 2fef83afe423
Branch: None
User: norrumar
Date: 2019-11-16 19:02:05+00:00
Summary: Version 4.0, for NVDA 2019.3 or later
Affected #: 4 files
diff --git a/addon/appModules/emule.py b/addon/appModules/emule.py
index 2b94b23..9d47f69 100644
--- a/addon/appModules/emule.py
+++ b/addon/appModules/emule.py
@@ -1,57 +1,54 @@
# -*- coding: UTF-8 -*-
# eMule app module
-#Copyright (C) 2012-2018 Noelia Ruiz Martínez, Alberto Buffolino
+#Copyright (C) 2012-2019 Noelia Ruiz Martínez, Alberto Buffolino
# Released under GPL 2
import appModuleHandler
import addonHandler
import eventHandler
-import os
import api
import ui
import speech
import oleacc
import winUser
import windowUtils
-import wx
-import gui
-import textInfos
import controlTypes
import NVDAObjects.IAccessible
-from NVDAObjects.IAccessible import IAccessible
-from NVDAObjects.IAccessible.sysListView32 import List
-from ctypes import * # for c_int
from NVDAObjects.behaviors import RowWithFakeNavigation
from cursorManager import CursorManager
from NVDAObjects.window.edit import EditTextInfo
+from scriptHandler import script
addonHandler.initTranslation()
class EmuleRowWithFakeNavigation(RowWithFakeNavigation):
- scriptCategory =
unicode(addonHandler.getCodeAddon().manifest["summary"])
+ scriptCategory = addonHandler.getCodeAddon().manifest["summary"]
def initOverlayClass(self):
modifiers = ("control", "shift")
- for n in xrange(10):
+ for n in range(10):
for modifier in modifiers:
gesture =
"kb:NVDA+{mod}+{num}".format(mod=modifier, num=n)
self.bindGesture(gesture, "readColumn")
self.bindGesture("kb:NVDA+shift+c", "copyColumn")
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Reads the specified column for the current list
item.")
+ )
def script_readColumn(self, gesture):
- try:
- col = int(gesture.keyName[-1])
- except AttributeError:
- col = int(gesture.mainKeyName[-1])
+ col = int(gesture.mainKeyName[-1])
if col == 0:
col += 10
if "shift" in gesture.modifierNames:
col += 10
self._moveToColumnNumber(col)
- # Translators: Message presented in input help mode.
- script_readColumn.__doc__ = _("Reads the specified column for the
current list item.")
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Copies the last read column of the selected list
item to clipboard.")
+ )
def script_copyColumn(self, gesture):
try:
col = api.getNavigatorObject().columnNumber
@@ -66,17 +63,6 @@ class EmuleRowWithFakeNavigation(RowWithFakeNavigation):
if api.copyToClip(column):
# Translators: Message presented when the current
column of the list item is copied to clipboard.
ui.message(_("%s copied to clipboard") % column)
- # Translators: Message presented in input help mode.
- script_copyColumn.__doc__ = _("Copies the last read column of the
selected list item to clipboard.")
-
-class FixedList(List):
-
- def _get__columnOrderArray(self):
- limit=super(FixedList, self).columnCount
- myCoa = (c_int *limit)()
- for n in range(0, limit):
- myCoa[n] = n
- return myCoa
class RichEditCursorManager(CursorManager):
@@ -86,20 +72,19 @@ class RichEditCursorManager(CursorManager):
class AppModule(appModuleHandler.AppModule):
- scriptCategory =
unicode(addonHandler.getCodeAddon().manifest["summary"])
+ scriptCategory = addonHandler.getCodeAddon().manifest["summary"]
def chooseNVDAObjectOverlayClasses(self, obj, clsList):
if obj.role == controlTypes.ROLE_LISTITEM:
clsList.insert(0, EmuleRowWithFakeNavigation)
- elif obj.role==controlTypes.ROLE_LIST:
- clsList.insert(0, FixedList)
elif obj.windowClassName == "RichEdit20W":
clsList.insert(0, RichEditCursorManager)
+
def getToolBar(self):
try:
obj = NVDAObjects.IAccessible.getNVDAObjectFromEvent(
-
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
visible=True, controlID=16127),
- winUser.OBJID_CLIENT, 0)
+
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
visible=True, controlID=16127
+ ), winUser.OBJID_CLIENT, 0)
except LookupError:
return None
return obj
@@ -115,25 +100,31 @@ class AppModule(appModuleHandler.AppModule):
def getName(self):
where = self.getWhere()
- if where:
+ if where is not None:
return where.name
def getHeader(self):
obj=api.getFocusObject()
- if not (obj and obj.windowClassName == 'SysListView32' and
obj.IAccessibleRole==oleacc.ROLE_SYSTEM_LISTITEM): return
+ if not (obj and obj.windowClassName == 'SysListView32' and
obj.IAccessibleRole==oleacc.ROLE_SYSTEM_LISTITEM):
+ return
obj=obj.parent
- location=obj.location
- if location and (len(location)==4):
- (left,top,width,height)=location
+ try:
+ (left,top,width,height) = obj.location
obj=NVDAObjects.IAccessible.getNVDAObjectFromPoint(left, top)
return obj
- return None
+ except:
+ return None
def statusBarObj(self, pos):
statusBar = api.getStatusBar()
if statusBar:
return statusBar.getChild(pos).name
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Moves the system focus and mouse to the main
Tool Bar."),
+ gesture="kb:control+shift+h"
+ )
def script_toolBar(self, gesture):
obj = self.getToolBar()
if obj is not None:
@@ -143,23 +134,29 @@ class AppModule(appModuleHandler.AppModule):
if not controlTypes.STATE_FOCUSED in obj.states:
obj.setFocus()
eventHandler.queueEvent("gainFocus", obj)
- # Translators: Message presented in input help mode
- script_toolBar.__doc__=_("Moves the system focus and mouse to the main
Tool Bar.")
+ @script(
+ # Translators: Message presented in input help mode.
+ # For instance: reads the search window, Statistics, IRC, etc.
+ description=_("Reports the current window."),
+ gesture="kb:control+shift+t"
+ )
def script_where(self, gesture):
name = self.getName()
if name is None:
return
ui.message("%s" % name)
- # Translators: Message presented in input help mode.
- # For instance: reads the search window, Statistics, IRC, etc.
- script_where.__doc__=_("Reports the current window.")
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Moves the system focus to the Name field of the
Search window."),
+ gesture="kb:control+shift+n"
+ )
def script_name(self, gesture):
try:
obj = NVDAObjects.IAccessible.getNVDAObjectFromEvent(
-
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
visible=True, controlID=2183),
- winUser.OBJID_CLIENT, 0)
+
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
visible=True, controlID=2183
+ ), winUser.OBJID_CLIENT, 0)
except LookupError:
return
if obj != api.getFocusObject():
@@ -167,17 +164,20 @@ class AppModule(appModuleHandler.AppModule):
api.setMouseObject(obj)
winUser.mouse_event(winUser.MOUSEEVENTF_LEFTDOWN,0,0,None,None)
winUser.mouse_event(winUser.MOUSEEVENTF_LEFTUP,0,0,None,None)
- # Translators: Message presented in input help mode.
- script_name.__doc__=_("Moves the system focus to the Name field of the
Search window.")
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Moves the system focus and mouse to the search
parameters list or Edit field for each option, in the Search window."),
+ gesture="kb:control+shift+p"
+ )
def script_searchList(self, gesture):
where = self.getWhere()
if not hasattr(where, "IAccessibleChildID") or
where.IAccessibleChildID != 6:
return
try:
obj = NVDAObjects.IAccessible.getNVDAObjectFromEvent(
-
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
controlID=2833),
- winUser.OBJID_CLIENT, 0)
+
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
controlID=2833
+ ), winUser.OBJID_CLIENT, 0)
except LookupError:
return
if obj != api.getFocusObject():
@@ -185,14 +185,17 @@ class AppModule(appModuleHandler.AppModule):
api.setMouseObject(obj)
winUser.mouse_event(winUser.MOUSEEVENTF_LEFTDOWN,0,0,None,None)
winUser.mouse_event(winUser.MOUSEEVENTF_LEFTUP,0,0,None,None)
- # Translators: Message presented in input help mode.
- script_searchList.__doc__=_("Moves the system focus and mouse to the
search parameters list or Edit field for each option, in the Search window.")
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Moves the system focus to the first list in the
current window. For example the results list in the Search window, downloads in
Transfer, etc."),
+ gesture="kb:control+shift+b"
+ )
def script_list(self, gesture):
try:
obj = NVDAObjects.IAccessible.getNVDAObjectFromEvent(
-
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
visible=True, className="SysListView32"),
- winUser.OBJID_CLIENT, 0)
+
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
visible=True, className="SysListView32"
+ ), winUser.OBJID_CLIENT, 0)
except LookupError:
return
if obj != api.getFocusObject():
@@ -200,9 +203,12 @@ class AppModule(appModuleHandler.AppModule):
api.setMouseObject(obj)
winUser.mouse_event(winUser.MOUSEEVENTF_LEFTDOWN,0,0,None,None)
winUser.mouse_event(winUser.MOUSEEVENTF_LEFTUP,0,0,None,None)
- # Translators: Message presented in input help mode.
- script_list.__doc__=_("Moves the system focus to the first list in the
current window. For example the results list in the Search window, downloads in
Transfer, etc.")
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Moves the system focus to read-only edit boxes
in the current window. For example the IRC received messages."),
+ gesture="kb:control+shift+o"
+ )
def script_readOnlyEdit(self, gesture):
where = self.getWhere()
if hasattr(where, "IAccessibleChildID") and
where.IAccessibleChildID == 9:
@@ -211,8 +217,8 @@ class AppModule(appModuleHandler.AppModule):
cID = None
try:
obj = NVDAObjects.IAccessible.getNVDAObjectFromEvent(
-
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
visible=True, className="RichEdit20W", controlID=cID),
- winUser.OBJID_CLIENT, 0)
+
windowUtils.findDescendantWindow(api.getForegroundObject().windowHandle,
visible=True, className="RichEdit20W", controlID=cID
+ ), winUser.OBJID_CLIENT, 0)
except LookupError:
return
if obj != api.getFocusObject():
@@ -220,9 +226,12 @@ class AppModule(appModuleHandler.AppModule):
api.setMouseObject(obj)
winUser.mouse_event(winUser.MOUSEEVENTF_LEFTDOWN,0,0,None,None)
winUser.mouse_event(winUser.MOUSEEVENTF_LEFTUP,0,0,None,None)
- # Translators: Message presented in input help mode.
- script_readOnlyEdit.__doc__=_("Moves the system focus to read-only edit
boxes in the current window. For example the IRC received messages.")
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Moves the navigator object and mouse to the
current list headers."),
+ gesture="kb:control+shift+l"
+ )
def script_header(self, gesture):
obj = self.getHeader()
if obj is None:
@@ -231,47 +240,39 @@ class AppModule(appModuleHandler.AppModule):
api.moveMouseToNVDAObject(obj)
api.setMouseObject(obj)
speech.speakObject(obj)
- # Translators: Message presented in input help mode.
- script_header.__doc__=_("Moves the navigator object and mouse to the
current list headers.")
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Reports first object of the Status Bar."),
+ gesture="kb:control+shift+q"
+ )
def script_statusBarFirstChild(self, gesture):
- if self.statusBarObj(0) is None:
- return
- ui.message(self.statusBarObj(0))
- # Translators: Message presented in input help mode.
- script_statusBarFirstChild.__doc__=_("Reports first object of the
Status Bar.")
+ if self.statusBarObj(0) is not None:
+ ui.message(self.statusBarObj(0))
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Reports second object of the Status Bar."),
+ gesture="kb:control+shift+w"
+ )
def script_statusBarSecondChild(self, gesture):
- if self.statusBarObj(1) is None:
- return
- ui.message(self.statusBarObj(1))
- # Translators: Message presented in input help mode.
- script_statusBarSecondChild.__doc__=_("Reports second object of the
Status Bar.")
+ if self.statusBarObj(1) is not None:
+ ui.message(self.statusBarObj(1))
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Reports third object of the Status Bar."),
+ gesture="kb:control+shift+e"
+ )
def script_statusBarThirdChild(self, gesture):
- if self.statusBarObj(2) is None:
- return
- ui.message(self.statusBarObj(2))
- # Translators: Message presented in input help mode.
- script_statusBarThirdChild.__doc__=_("Reports third object of the
Status Bar.")
+ if self.statusBarObj(2) is not None:
+ ui.message(self.statusBarObj(2))
+ @script(
+ # Translators: Message presented in input help mode.
+ description=_("Reports fourth object of the Status Bar."),
+ gesture="kb:control+shift+r"
+ )
def script_statusBarForthChild(self, gesture):
- if self.statusBarObj(3) is None:
- return
- ui.message(self.statusBarObj(3))
- # Translators: Message presented in input help mode.
- script_statusBarForthChild.__doc__=_("Reports fourth object of the
Status Bar.")
-
- __gestures = {
- "kb:control+shift+h": "toolBar",
- "kb:control+shift+t": "where",
- "kb:control+shift+n": "name",
- "kb:control+shift+p": "searchList",
- "kb:control+shift+b": "list",
- "kb:control+shift+o": "readOnlyEdit",
- "kb:control+shift+l": "header",
- "kb:control+shift+q": "statusBarFirstChild",
- "kb:control+shift+w": "statusBarSecondChild",
- "kb:control+shift+e": "statusBarThirdChild",
- "kb:control+shift+r": "statusBarForthChild",
- }
+ if self.statusBarObj(3) is not None:
+ ui.message(self.statusBarObj(3))
diff --git a/buildVars.py b/buildVars.py
index 863f901..bfe2867 100644
--- a/buildVars.py
+++ b/buildVars.py
@@ -22,7 +22,7 @@ eMule is a P2P program to search and share files.
You can get more information about eMule at
http://www.emule-project.net""";),
# version
- "addon_version" : "3.21",
+ "addon_version" : "4.0-dev",
# Author(s)
"addon_author" : u"Noelia <nrm1977@xxxxxxxxx>, Chris
<llajta2012@xxxxxxxxx>, Alberto <a.buffolino@xxxxxxxxx>",
# URL for the add-on documentation support
@@ -30,9 +30,9 @@ http://www.emule-project.net""";),
# Documentation file name
"addon_docFileName" : "readme.html",
# Minimum NVDA version supported (e.g. "2018.3")
- "addon_minimumNVDAVersion" : "2017.3.0",
+ "addon_minimumNVDAVersion" : "2019.3",
# Last NVDA version supported/tested (e.g. "2018.4", ideally more
recent than minimum version)
- "addon_lastTestedNVDAVersion" : "2019.2.0",
+ "addon_lastTestedNVDAVersion" : "2019.3",
# Add-on update channel (default is stable or None)
"addon_updateChannel" : None,
}
diff --git a/readme.md b/readme.md
index bb21ef3..c90fa5d 100644
--- a/readme.md
+++ b/readme.md
@@ -1,9 +1,10 @@
# eMule #
* Authors: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.2
+* NVDA compatibility: 2019.3 or later
* download [stable version][1]
* download [development version][3]
+* download [version compatible with NVDA 2017.3][4]
This add-on helps to improve accessibility of eMule with nVDA.
It also provides additional keyboard commands for moving in different windows
and gives Useful information about eMule.
@@ -36,6 +37,9 @@ In this Add-on the following key commands are also available:
* nvda+shift+1-0: Reads columns 11 to 20.
* nvda+shift+C: Copies the contents of the last read column to the
clipboard.
+## Changes for 4.0 ##
+* Reqires NVDA 2019.3 or later.
+
## Changes for 3.0 ##
* To search text in the readonly edit boxes, the find dialog can be
used, such as nvda+control+f to activate the find dialog.
@@ -61,3 +65,4 @@ In this Add-on the following key commands are also available:
[3]: http://addons.nvda-project.org/files/get.php?file=em-dev
+[4]: http://addons.nvda-project.org/files/get.php?file=em-o
diff --git a/sconstruct b/sconstruct
index d1e3c76..e890d97 100644
--- a/sconstruct
+++ b/sconstruct
@@ -3,7 +3,6 @@
#This file is covered by the GNU General Public License.
#See the file COPYING.txt for more details.
-import codecs
import gettext
import os
import os.path
@@ -19,7 +18,7 @@ def md2html(source, dest):
lang = os.path.basename(os.path.dirname(source)).replace('_', '-')
localeLang = os.path.basename(os.path.dirname(source))
try:
- _ = gettext.translation("nvda", localedir=os.path.join("addon",
"locale"), languages=[localeLang]).ugettext if sys.version_info.major == 2 else
gettext.translation("nvda", localedir=os.path.join("addon", "locale"),
languages=[localeLang]).gettext
+ _ = gettext.translation("nvda", localedir=os.path.join("addon",
"locale"), languages=[localeLang]).gettext
title=u"{0}".format(_(buildVars.addon_info["addon_summary"]))
except:
title="{0}".format(buildVars.addon_info["addon_summary"])
@@ -27,20 +26,18 @@ def md2html(source, dest):
"[[!meta title=\"": "# ",
"\"]]": " #",
}
- with codecs.open(source, "r", "utf-8") as f:
+ with open(source, 'r', encoding="utf-8") as f:
mdText = f.read()
- headerList = headerDic.iteritems () if sys.version_info.major
== 2 else list(headerDic.items())
- for k, v in headerList:
+ for k, v in headerDic.items():
mdText = mdText.replace(k, v, 1)
htmlText = markdown.markdown(mdText)
- with codecs.open(dest, "w", "utf-8") as f:
- f.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
- "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0
Strict//EN\"\n" +
- "
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\";>\n" +
- "<html xmlns=\"http://www.w3.org/1999/xhtml\" ;
xml:lang=\"%s\" lang=\"%s\">\n" % (lang, lang) +
+ with open(dest, 'w', encoding="utf-8") as f:
+ f.write("<!DOCTYPE html>\n" +
+ "<html lang=\"%s\">\n" % lang +
"<head>\n" +
- "<meta http-equiv=\"Content-Type\" content=\"text/html;
charset=UTF-8\"/>\n" +
- "<link rel=\"stylesheet\" type=\"text/css\"
href=\"../style.css\" media=\"screen\"/>\n" +
+ "<meta charset=\"UTF-8\">\n" +
+ "<meta name=\"viewport\" content=\"width=device-width,
initial-scale=1.0\">\n" +
+ "<link rel=\"stylesheet\" type=\"text/css\"
href=\"../style.css\" media=\"screen\">\n" +
"<title>%s</title>\n" % title +
"</head>\n<body>\n"
)
@@ -109,21 +106,27 @@ def createAddonBundleFromPath(path, dest):
return dest
def generateManifest(source, dest):
- with codecs.open(source, "r", "utf-8") as f:
+ with open(source, 'r', encoding="utf-8") as f:
manifest_template = f.read()
manifest = manifest_template.format(**buildVars.addon_info)
- with codecs.open(dest, "w", "utf-8") as f:
+ with open(dest, 'w', encoding="utf-8") as f:
f.write(manifest)
def generateTranslatedManifest(source, language, out):
- _ = gettext.translation("nvda", localedir=os.path.join("addon",
"locale"), languages=[language]).ugettext if sys.version_info.major == 2 else
gettext.translation("nvda", localedir=os.path.join("addon", "locale"),
languages=[language]).gettext
+ _ = gettext.translation("nvda", localedir=os.path.join("addon",
"locale"), languages=[language]).gettext
vars = {}
for var in ("addon_summary", "addon_description"):
- vars[var] = _(buildVars.addon_info[var])
- with codecs.open(source, "r", "utf-8") as f:
+ if isinstance(buildVars.addon_info[var], str):
+ vars[var] = _(buildVars.addon_info[var])
+ elif isinstance(buildVars.addon_info[var], list):
+ vars[var] = ''.join([_(l) for l in
buildVars.addon_info[var]])
+ else:
+ raise TypeError("Error with %s key in buildVars" % var)
+
+ with open(source, 'r', encoding="utf-8") as f:
manifest_template = f.read()
result = manifest_template.format(**vars)
- with codecs.open(out, "w", "utf-8") as f:
+ with open(out, 'w', encoding="utf-8") as f:
f.write(result)
def expandGlobs(files):
@@ -167,10 +170,10 @@ for dir in langDirs:
translatedManifest =
env.NVDATranslatedManifest(dir.File("manifest.ini"), [moFile,
os.path.join("manifest-translated.ini.tpl")])
env.Depends(translatedManifest, ["buildVars.py"])
env.Depends(addon, [translatedManifest, moFile])
- #Convert markdown files to html
- for mdFile in env.Glob(os.path.join('addon', 'doc', '*', '*.md')):
- htmlFile = env.markdown(mdFile)
- env.Depends(htmlFile, [mdFile, moFile])
- env.Depends(addon, htmlFile)
+#Convert markdown files to html
+for mdFile in env.Glob(os.path.join('addon', 'doc', '*', '*.md')):
+ htmlFile = env.markdown(mdFile)
+ env.Depends(htmlFile, mdFile)
+ env.Depends(addon, htmlFile)
env.Default(addon)
env.Clean (addon, ['.sconsign.dblite', 'addon/doc/en/'])
https://bitbucket.org/nvdaaddonteam/emule/commits/1abb645b710b/
Changeset: 1abb645b710b
Branch: 2019.3
User: norrumar
Date: 2019-11-16 19:03:29+00:00
Summary: Merge branch 'stable' into 2019.3
Affected #: 22 files
diff --git a/addon/doc/ar/readme.md b/addon/doc/ar/readme.md
index 405ee45..4921820 100644
--- a/addon/doc/ar/readme.md
+++ b/addon/doc/ar/readme.md
@@ -1,7 +1,7 @@
# eMule #
* مطورو الإضافة: Noelia, Chris, Alberto
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* تحميل [الإصدار النهائي][1]
* تحميل [الإصدار التجريبي][3]
diff --git a/addon/doc/bg/readme.md b/addon/doc/bg/readme.md
index 88554bd..987d4c7 100644
--- a/addon/doc/bg/readme.md
+++ b/addon/doc/bg/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Автори: Noelia, Chris, Alberto.
-* Съвместимост с NVDA: от 2017.3 до 2019.1
+* Съвместимост с NVDA: от 2017.3 до 2019.2
* Изтегляне на [стабилна версия][1]
* Изтегляне на [тестова версия][3]
diff --git a/addon/doc/da/readme.md b/addon/doc/da/readme.md
index d8ef3db..3b2a7a6 100644
--- a/addon/doc/da/readme.md
+++ b/addon/doc/da/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Forfattere: Noelia, Chris, Alberto.
-* NVDA-kompatibilitet: 2017.3 til 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* download [stabil version][1]
* download [udviklingsversion][3]
diff --git a/addon/doc/de/readme.md b/addon/doc/de/readme.md
index 95a8f55..a68323f 100644
--- a/addon/doc/de/readme.md
+++ b/addon/doc/de/readme.md
@@ -3,7 +3,7 @@
[[!meta title="eMule 0.50A"]]
* Authoren: Noelia, Chris, Alberto.
-* NVDA-Kompatibilität: 2017.3 bis 2019.1
+* NVDA-Kompatibilität: 2017.3 bis 2019.2
* [Stabile Version herunterladen][1]
* [Entwicklerversion herunterladen][3]
diff --git a/addon/doc/es/readme.md b/addon/doc/es/readme.md
index c8b2770..7d76ad2 100644
--- a/addon/doc/es/readme.md
+++ b/addon/doc/es/readme.md
@@ -1,9 +1,9 @@
# eMule #
* Autores: Noelia, Chris, Alberto.
-* Compatibilidad con NVDA: de 2017.3 a 2019.1
+* Compatibilidad con NVDA: de 2017.3 a 2019.2
* descarga [versión estable][1]
-* Descargar [versión de desarrollo][3]
+* descargar [versión de desarrollo][3]
Este complemento te ayuda a mejorar la accesibilidad de eMule con
NVDA. También proporciona comandos de teclado adicionales para moverse en
@@ -49,9 +49,9 @@ Cuando estés dentro de una lista, puedes mover el cursor
entre las filas y
las columnas utilizando alt+control+Flechas. En este complemento también
están disponibles las siguientes órdenes de teclado:
-* NVDA+control+1-0: Lee las primeras 10 columnas.
-* NVDA+shift+1-0: Lee las columnas 11 a 20.
-* NVDA+shift+C: Copia el contenido de la última columna leída al
+* nvda+control+1-0: Lee las primeras 10 columnas.
+* nvda+shift+1-0: Lee las columnas 11 a 20.
+* nvda+shift+C: Copia el contenido de la última columna leída al
portapapeles.
## Cambios para 3.0 ##
diff --git a/addon/doc/fi/readme.md b/addon/doc/fi/readme.md
index c09df58..58b57ee 100644
--- a/addon/doc/fi/readme.md
+++ b/addon/doc/fi/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Tekijät: Noelia, Chris, Alberto.
-* NVDA-yhteensopivuus: 2017.3-2019.1
+* Yhteensopivuus: NVDA 2017.3-2019.2
* Lataa [vakaa versio][1]
* Lataa [kehitysversio][3]
diff --git a/addon/doc/fr/readme.md b/addon/doc/fr/readme.md
index db94e24..5d4a459 100644
--- a/addon/doc/fr/readme.md
+++ b/addon/doc/fr/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autheurs : Noelia, Chris, Alberto.
-* Compatibilité NVDA: 2017.3 à 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* Télécharger [version stable][1]
* Télécharger [version de développement][3]
diff --git a/addon/doc/gl/readme.md b/addon/doc/gl/readme.md
index 046fdd7..a422054 100644
--- a/addon/doc/gl/readme.md
+++ b/addon/doc/gl/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autores: Noelia, Chris, Alberto.
-* Compatibilidade con NVDA: da 2017.3 á 2019.1
+* Compatibilidade con NVDA: da 2017.3 á 2019.2
* descarga [versión estable][1]
* Descargar [versión de desenvolvemento][3]
diff --git a/addon/doc/hr/readme.md b/addon/doc/hr/readme.md
index bed7c40..18efd1c 100644
--- a/addon/doc/hr/readme.md
+++ b/addon/doc/hr/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autori: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* preuzmite [Stabilnu inačicu][1]
* preuzmite [razvojnu inačicu][3]
diff --git a/addon/doc/hu/readme.md b/addon/doc/hu/readme.md
index 113d507..13a030e 100644
--- a/addon/doc/hu/readme.md
+++ b/addon/doc/hu/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Készítők: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* Letöltés [stabil verzió][1]
* Letöltés [fejlesztői verzió][3]
diff --git a/addon/doc/it/readme.md b/addon/doc/it/readme.md
index 800d00c..765fdcd 100644
--- a/addon/doc/it/readme.md
+++ b/addon/doc/it/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autori: Noelia, Chris, Alberto.
-* Compatibilità con NVDA: dalla 2017.3 alla 2019.1
+* Compatibilità con NVDA: dalla 2017.3 alla 2019.2
* Scarica la [versione stabile][1]
* Scarica la [versione in sviluppo][3]
diff --git a/addon/doc/nl/readme.md b/addon/doc/nl/readme.md
index 19cdd1e..f64c056 100644
--- a/addon/doc/nl/readme.md
+++ b/addon/doc/nl/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Auteurs: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* download [stabiele versie][1]
* download [ontwikkelversie][3]
diff --git a/addon/doc/pl/readme.md b/addon/doc/pl/readme.md
index dda4838..f223ff6 100644
--- a/addon/doc/pl/readme.md
+++ b/addon/doc/pl/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autorzy: Noelia, Chris, Alberto.
-* Zgodność z NVDA: 2017.3 do 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* Pobierz [wersja stabilna][1]
* Pobierz [wersja rozwojowa][3]
diff --git a/addon/doc/pt_BR/readme.md b/addon/doc/pt_BR/readme.md
index c9268f6..788f511 100644
--- a/addon/doc/pt_BR/readme.md
+++ b/addon/doc/pt_BR/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autores: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* baixe a [versão estável][1]
* baixe a [versão de desenvolvimento][3]
diff --git a/addon/doc/pt_PT/readme.md b/addon/doc/pt_PT/readme.md
index 7f700ab..9c95adb 100644
--- a/addon/doc/pt_PT/readme.md
+++ b/addon/doc/pt_PT/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autores: Noelia, Chris, Alberto.
-* Compatibilidade com o NVDA: 2017.3 até 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* baixar [versão estável] [1]
* baixar [versão de desenvolvimento] [3]
diff --git a/addon/doc/ro/readme.md b/addon/doc/ro/readme.md
index 9557c7d..071180e 100644
--- a/addon/doc/ro/readme.md
+++ b/addon/doc/ro/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autori: Noelia, Chris, Alberto.
-* Compatibilitate NVDA: 2017.3 - 2019.1
+* Compatibilitate NVDA: 2017.3 - 2019.2
* Descărcați [versiunea stabilă][1]
* Descărcați [versiunea în dezvoltare][3]
diff --git a/addon/doc/ru/readme.md b/addon/doc/ru/readme.md
index 1149029..c7bd502 100644
--- a/addon/doc/ru/readme.md
+++ b/addon/doc/ru/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Авторы: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* загрузить [стабильную версию][1]
* загрузить [разрабатываемую версию][3]
diff --git a/addon/doc/sk/readme.md b/addon/doc/sk/readme.md
index 27fbc94..7206eb4 100644
--- a/addon/doc/sk/readme.md
+++ b/addon/doc/sk/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autori: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* Stiahnuť [stabilná verzia][1]
* Stiahnuť [Vývojová verzia][3]
diff --git a/addon/doc/sr/readme.md b/addon/doc/sr/readme.md
index 48d3a1e..7bf8e5e 100644
--- a/addon/doc/sr/readme.md
+++ b/addon/doc/sr/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Autori: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* Preuzmi[stabilnu verziju][1]
* Preuzmi[verziju u razvoju][3]
diff --git a/addon/doc/tr/readme.md b/addon/doc/tr/readme.md
index 00b1698..b738771 100644
--- a/addon/doc/tr/readme.md
+++ b/addon/doc/tr/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Yazarlar: Noelia, Chris, Alberto.
-* NVDA compatibility: 2017.3 to 2019.1
+* NVDA compatibility: 2017.3 to 2019.2
* İndir [kararlı versiyon][1]
* İndir [geliştirme sürümü][3]
diff --git a/addon/doc/vi/readme.md b/addon/doc/vi/readme.md
index 22f2fb7..5c28dae 100644
--- a/addon/doc/vi/readme.md
+++ b/addon/doc/vi/readme.md
@@ -1,7 +1,7 @@
# eMule #
* Tác giả: Noelia, Chris, Alberto.
-* NVDA tương thích: 2017.3 đến 2019.1
+* NVDA tương thích: 2017.3 đến 2019.2
* tải về [phiên bản chính thức][1]
* tải về [phiên bản thử nghiệm][3]
diff --git a/addon/doc/zh_CN/readme.md b/addon/doc/zh_CN/readme.md
index cee10af..39f3e64 100644
--- a/addon/doc/zh_CN/readme.md
+++ b/addon/doc/zh_CN/readme.md
@@ -1,7 +1,7 @@
# eMule-NVDA电骡支持插件 #
* 作者: Noelia, Chris, Alberto.
-* NVDA兼容版本: 2017.3至2019.1
+* NVDA兼容版本: 2017.3至2019.2
* 下载[稳定版本][1]
* 下载[开发版本][3]
@@ -13,15 +13,15 @@
## 快捷键: ##
-* CTRL加SHIFT加H,移动鼠标和焦点到”主工具栏
-* CTRL加SHIFT加T:朗读当前窗口。
+* CTRL加SHIFT加H: 移动鼠标和焦点到”主工具栏
+* CTRL加SHIFT加T: 朗读当前窗口。
* CTRL加SHIFT加N: 移动焦点到“查找”窗口的“名称”编辑区。
* CTRL加SHIFT加P: 切换焦点和鼠标到“搜索”窗口的搜索参数列表和编辑区选项。
* control + shift + b:将焦点移动到当前窗口的列表中。例如,可在“搜索”窗口中使用,在“传输”窗口中下载等。
* control + shift + o:将焦点移动到当前窗口中的只读编辑框。例如,IRC收到消息,可用服务器等。
* control + NVDA + f:如果插入符号位于只读编辑框中,则打开查找对话框以使用命令搜索NVDA中可用的文本。
-* CTRL加SHIFT加L:移动鼠标和浏览对象到当前列表的表头。
-* CTRL加SHIFT加L:朗读状态栏的第一个对象,提供最近一次活动的信息。
+* CTRL加SHIFT加L: 移动鼠标和浏览对象到当前列表的表头。
+* CTRL加SHIFT加L: 朗读状态栏的第一个对象,提供最近一次活动的信息。
* CTRL加SHIFT加W: 朗读状态栏的第二个对象,提供当前服务器的用户和文件的数目信息。
* CTRL加SHIFT加E: 查看第三个状态栏的对象,常用来了解上传和下载速度。
* CTRL加SHIFT加R: 查看状态栏的第四个对象,用来了解 ED2K 和 KAD 网络的连接情况。
Repository URL: https://bitbucket.org/nvdaaddonteam/emule/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.