Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement braille converter feature #44

Draft
wants to merge 163 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
a2e6420
Initial implementation
AAClause Jan 2, 2020
6e360dd
Various code improvements
AAClause Jan 14, 2020
2195a96
First implementation of HUC converter
AAClause Dec 2, 2019
1674aa1
Attempt to fix cursor positions issues
AAClause Dec 3, 2019
3f84d3f
Updated settings to choose how to display undefined characters + vari…
AAClause Dec 4, 2019
f56d108
Fixes for NVDA 2019.2.1 and earlier
AAClause Dec 4, 2019
c938dc9
Added HUC Braille input, first implementation
AAClause Jan 10, 2020
c66fc03
Fixup: small fixes for Python 2
AAClause Jan 10, 2020
5170826
Disable HUC Braille input in browse mode and during shortcut composit…
AAClause Jan 10, 2020
48af890
'HUC Braille input mode' becomes 'advanced braille input mode'
AAClause Jan 11, 2020
de11b80
Advanced input braille mode now works with a contracted input table
AAClause Jan 12, 2020
6cd7832
fixup: restore browse mode
AAClause Jan 12, 2020
bb3949c
Small fix for Python2
AAClause Jan 12, 2020
14446eb
Advanced braille input mode now works with Python 2
AAClause Jan 12, 2020
fedad45
fixup: small fix for Py3
AAClause Jan 12, 2020
4a8cc61
Fix `git rebase`
AAClause Jan 14, 2020
14d46d7
Added options in settings + update config specs
AAClause Jan 12, 2020
300475a
Implement the first method
AAClause Jan 13, 2020
c01bf0f
Adds the 2nd method
AAClause Jan 13, 2020
8036597
Merge branch 'master' into HUC
AAClause Jan 15, 2020
b57f6d4
Merge branch 'master' into HUC
AAClause Jan 15, 2020
993e0f9
Merge branch 'master' into oneHandMode
AAClause Jan 15, 2020
93602c6
Merge branch 'master' into HUC
AAClause Jan 16, 2020
738e24f
Merge branch 'master' into oneHandMode
AAClause Jan 16, 2020
b6afcf4
Added gestures to enable/disable one-handed mode
AAClause Jan 16, 2020
14e72aa
Fix gesture for FS displays
AAClause Jan 16, 2020
34b179e
Small fixes
AAClause Jan 17, 2020
13a773a
Merge branch 'master' into HUC
AAClause Jan 21, 2020
237caa1
Merge branch 'master' into HUC
AAClause Jan 22, 2020
5e385f7
Merge branch 'master' into HUC
AAClause Jan 22, 2020
0de7baa
Merge branch 'master' into oneHandMode
AAClause Jan 22, 2020
d5f6379
Merge branch 'master' into HUC
AAClause Jan 22, 2020
2e991b6
Merge branch 'master' into oneHandMode
AAClause Jan 22, 2020
702ff07
Merge branch 'master' into HUC
AAClause Jan 22, 2020
351354e
Merge branch 'master' into oneHandMode
AAClause Jan 22, 2020
be4cfee
Merge branch 'master' into HUC
AAClause Jan 22, 2020
0066795
Merge branch 'master' into oneHandMode
AAClause Jan 22, 2020
24258e1
Merge branch 'master' into HUC
AAClause Jan 22, 2020
4b391ca
Merge branch 'master' into oneHandMode
AAClause Jan 22, 2020
1be39b9
Added HUC representations for current character description feature
AAClause Jan 23, 2020
40408e4
Merge branch 'master' into HUC
AAClause Jan 30, 2020
d4501f3
Undefined characters can be displayed with their description
AAClause Feb 8, 2020
23e8efb
Merge branch 'oneHandMode' into dev
AAClause Feb 8, 2020
fc3de29
Fix merge
AAClause Feb 8, 2020
46b1386
Separate 'undefined characters descriptions' options into another dialog
AAClause Feb 8, 2020
97cf476
Merge branch 'HUC' into dev
AAClause Feb 8, 2020
c8c87d4
Add a script to enable/disable description of undefined character
AAClause Feb 8, 2020
37a9e88
Merge branch 'HUC' into dev
AAClause Feb 8, 2020
fd5f43b
Merge branch 'master' into HUC
AAClause Feb 8, 2020
63ab154
Merge branch 'master' into oneHandMode
AAClause Feb 8, 2020
b9d4c07
Merge branch 'master' into dev
AAClause Feb 8, 2020
e011398
Fix merge
AAClause Feb 8, 2020
7129cae
Merge branch 'oneHandMode' into dev
AAClause Feb 8, 2020
c92018e
Merge branch 'master' into dev
AAClause Feb 8, 2020
35313ce
Merge branch 'master' into dev
AAClause Feb 8, 2020
6433448
Add accelerators
AAClause Feb 8, 2020
4c79f94
Merge branch 'HUC' into dev
AAClause Feb 8, 2020
e189355
getTableOverview: small fix
AAClause Feb 8, 2020
d3cf670
Merge branch 'HUC' into dev
AAClause Feb 8, 2020
6637358
Fix merge
AAClause Feb 8, 2020
2f964f6
Merge branch 'master' into dev
AAClause Feb 8, 2020
e0f868e
Removed more Python2 code
AAClause Feb 8, 2020
cd0920a
Merge branch 'HUC' into dev
AAClause Feb 8, 2020
db688c3
Merge branch 'master' into oneHandMode
AAClause Feb 8, 2020
1bb4008
Added 3rd method
AAClause Feb 8, 2020
be6b50f
Merge branch 'oneHandMode' into dev
AAClause Feb 8, 2020
1305dac
Fix merge
AAClause Feb 8, 2020
e1f63f6
Merge branch 'master' into dev
AAClause Feb 8, 2020
195ff53
Merge branch 'master' into HUC
AAClause Feb 9, 2020
04003ad
Merge branch 'HUC' into dev
AAClause Feb 9, 2020
28d48a6
Merge branch 'master' into dev
AAClause Feb 14, 2020
cd9a656
Apply patches before loading dictionaries
AAClause Feb 15, 2020
b7dfb03
Merge branch 'master' into dev
AAClause Feb 15, 2020
3feb229
Dictionaries/checktable: fix an issue with non ASCII characters in fi…
AAClause Feb 25, 2020
5e7b2a1
Merge branch 'master' into dev
AAClause Feb 25, 2020
ac9cb25
Update documentation
AAClause Mar 18, 2020
f319f4d
Merge branch 'master' into dev
AAClause Mar 18, 2020
0db5a0a
Merge branch 'master' into dev
AAClause Mar 18, 2020
9d8da52
Merge branch 'master' into HUC
AAClause Mar 19, 2020
fbb4b8d
Fixes #49
AAClause Mar 19, 2020
cc60c07
Merge branch 'HUC' into dev
AAClause Mar 19, 2020
750a42f
Fixes
AAClause Mar 19, 2020
a3bb8e3
Merge branch 'master' into dev
AAClause Mar 19, 2020
d54f187
Merge branch 'documentation' into dev
AAClause Mar 19, 2020
6568bb1
fixup: bug fix with undefined chars description
AAClause Mar 20, 2020
8b39120
Fixes #51
AAClause Mar 21, 2020
004f83c
Advanced input mode: possibility to quit the mode after typing one char
AAClause Apr 4, 2020
731de0f
Mention english translator
AAClause Apr 4, 2020
985451c
fixup
AAClause Apr 4, 2020
16f749d
Translators section: Sorts languages in alphabetical order
AAClause Apr 4, 2020
48a7765
Merge branch 'master' into HUC
AAClause Apr 5, 2020
0110866
Implements advanced input mode dictionary
AAClause Apr 5, 2020
7781632
Merge branch 'HUC' into dev
AAClause Apr 5, 2020
2773090
Small update for advanced input mode
AAClause Apr 5, 2020
8e616a5
Undefined characters: emoji on several characters are now also described
AAClause Apr 7, 2020
2fd2e03
fixup
AAClause Apr 7, 2020
65c4c64
Merge branch 'HUC' into dev
AAClause Apr 7, 2020
5c78fba
Refactoring code + small fixes
AAClause Apr 8, 2020
d22711f
Merge branch 'HUC' into dev
AAClause Apr 8, 2020
481d9f4
fixup
AAClause Apr 8, 2020
ff3dc63
Merge branch 'HUc' into dev
AAClause Apr 8, 2020
715cfd0
L10n updates for: da
AAClause Apr 9, 2020
ac81afb
Format code
AAClause Apr 10, 2020
8f3b752
Merge branch 'HUC' into dev
AAClause Apr 10, 2020
137b8a3
Format code
AAClause Apr 10, 2020
b05797f
Merge branch 'HUC' into dev
AAClause Apr 11, 2020
870f49c
Refactor features around braille tables
AAClause Apr 12, 2020
0f8c2f8
settings: fixes on 'representation of undefined characters' and 'brai…
AAClause Apr 13, 2020
3978baf
Prefered tables: more fixes (settings)
AAClause Apr 13, 2020
abd7100
Small fixes
AAClause Apr 13, 2020
8eaebae
settings: progress on 'groups of tables' dialog
AAClause Apr 14, 2020
ec5fd9a
fixup
AAClause Apr 14, 2020
720face
starting to update the localizations, first part, work in progress
zstanecic Apr 15, 2020
abe4c6b
Merge branch 'l10n' into dev
AAClause Apr 15, 2020
529c974
croatian ranslation is completed.
zstanecic Apr 15, 2020
fc468c1
Merge branch 'l10n' into dev
AAClause Apr 15, 2020
4bc3ca3
russian localization beta, not complete yet... work in progress
zstanecic Apr 16, 2020
0afbba8
second russian translation. translated near all things. documentation…
zstanecic Apr 16, 2020
0c9cb8f
Merge branch 'l10n' into dev
AAClause Apr 16, 2020
1f3d5f2
one more updates, then the correcion goes on
zstanecic Apr 17, 2020
e7228f3
L10n updates for: fr
AAClause Apr 18, 2020
b153078
Merge branch 'l10n' into dev
AAClause Apr 18, 2020
4c1aa45
Small fixes
AAClause Apr 18, 2020
de894ad
Merge branch 'documentation' into dev
AAClause Apr 18, 2020
892da18
Fix bad key in a variable
AAClause Apr 18, 2020
b6f6d15
Merge branch 'documentation' into dev
AAClause Apr 18, 2020
809b112
l10n updates for: fr
AAClause Apr 18, 2020
f05f414
fix typo: prefered -> preferred
AAClause Apr 18, 2020
dfb1ee2
Merge branch 'preferedTables' into dev
AAClause Apr 18, 2020
ca88b55
fix typo: prefered -> preferred
AAClause Apr 18, 2020
67a8b50
l10n updates for: fr
AAClause Apr 18, 2020
917f613
Fix a label
AAClause Apr 18, 2020
3cd31e5
Merge branch 'documentation' into dev
AAClause Apr 18, 2020
131469d
Merge branch 'l10n' into dev
AAClause Apr 18, 2020
043f177
l10n updates for: fr
AAClause Apr 18, 2020
a4fc921
Merge branch 'l10n' into dev
AAClause Apr 18, 2020
36812cc
More translatable strings
AAClause Apr 18, 2020
59d7313
Merge branch 'documentation' into dev
AAClause Apr 18, 2020
03fabcc
l10n updates for: fr
AAClause Apr 18, 2020
4739e31
Merge branch 'l10n' into dev
AAClause Apr 18, 2020
73e0677
Merge branch 'preferedTables' into dev
AAClause Apr 18, 2020
90fb6f0
l10n updates for: fr
AAClause Apr 18, 2020
6753fc5
Merge branch 'l10n' into dev
AAClause Apr 18, 2020
e429f5e
new polish update
zstanecic Apr 18, 2020
6936433
Merge branch 'l10n' into dev
AAClause Apr 18, 2020
2b3d28d
updated the full russian translation. It may require correction
zstanecic Apr 19, 2020
296059c
Merge branch 'l10n' into dev
AAClause Apr 20, 2020
0de23c6
russian - fixed spelling error, corrected merits.
zstanecic Apr 22, 2020
dc3a695
we can now select a group
AAClause Apr 22, 2020
9f60494
Merge branch 'preferedTables' into dev
AAClause Apr 22, 2020
f151e1e
Merge branch 'l10n' into dev
AAClause Apr 22, 2020
5cc8c0d
Add the possibility to reorder tables
AAClause Apr 23, 2020
811a71a
Merge branch 'preferedTables' into dev
AAClause Apr 23, 2020
e84e594
Fixup: adds louis/tables to resolve tables
AAClause Apr 23, 2020
e969d54
Merge branch 'preferedTables' into dev
AAClause Apr 23, 2020
ccf57f2
Don't include dictionaries when a group is enabled (temporary)
AAClause Apr 24, 2020
5ca4501
Merge branch 'preferedTables' into dev
AAClause Apr 24, 2020
98cbce1
various fixes and improvements
AAClause Apr 24, 2020
0cbc934
Merge branch 'preferedTables' into dev
AAClause Apr 24, 2020
7b5636e
l10n updates for: da
May 3, 2020
976a7a0
Merge branch 'l10n' into dev
AAClause May 3, 2020
8c82a2f
Try to fix #54
AAClause May 7, 2020
21e614b
Merge branch 'dev' into BRLConverter
AAClause May 8, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,9 @@
reportExtraInfos = b10+b5+b8
getSpeechOutput = b10+b3+b4
addDictionaryEntry = b10+b8+b7+b1+b4+b5

advancedInput = b2+b4+b7+b10
toggleOneHandMode = b2+b7+b9
undefinedCharsDesc = b1+b3+b6+b7+b10

[keyboardLayouts]
[[l1]]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
nextRotor = space+dot5+dot6
getSpeechOutput = space+dot3+dot4
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
advancedInput = space+dot2+dot4+dot7
toggleOneHandMode = space+dot2+dot7
undefinedCharsDesc = space+dot1+dot3+dot6+dot7

[rotor]
nextEltRotor = right
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
getSpeechOutput = space+dot3+dot4
repeatLastShortcut = dot6+dot7+space
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
advancedInput = space+dot2+dot4+dot7
toggleOneHandMode = space+dot2+dot7
undefinedCharsDesc = space+dot1+dot3+dot6+dot7

[rotor]
nextEltRotor = joystick2Right
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
nextRotor = braillespacebar+dot5+dot6
getSpeechOutput = braillespacebar+dot3+dot4
addDictionaryEntry = braillespacebar+dot8+dot7+dot1+dot4+dot5
advancedInput = braillespacebar+dot2+dot4+dot7
toggleOneHandMode = braillespacebar+dot2+dot7
undefinedCharsDesc = braillespacebar+dot1+dot3+dot6+dot7

[rotor]
nextEltRotor = leftwizwheeldown
Expand Down
172 changes: 119 additions & 53 deletions addon/globalPlugins/brailleExtender/__init__.py

Large diffs are not rendered by default.

413 changes: 306 additions & 107 deletions addon/globalPlugins/brailleExtender/addonDoc.py

Large diffs are not rendered by default.

307 changes: 307 additions & 0 deletions addon/globalPlugins/brailleExtender/advancedInputMode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,307 @@
# coding: utf-8
# advancedInputMode.py
# Part of BrailleExtender addon for NVDA
# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
import codecs
import json
from collections import namedtuple

import wx

import addonHandler
import brailleInput
import brailleTables
import config
import gui

from .common import *
from .utils import getTextInBraille

addonHandler.initTranslation()

AdvancedInputModeDictEntry = namedtuple(
"AdvancedInputModeDictEntry", ("abreviation", "replaceBy", "table")
)

entries = None


def getPathDict():
return f"{configDir}/brailleDicts/advancedInputMode.json"


def getDictionary():
return entries if entries else []


def initialize():
global entries
entries = []
fp = getPathDict()
if not os.path.exists(fp):
return
json_ = json.load(codecs.open(fp, "r", "UTF-8"))
for entry in json_:
entries.append(
AdvancedInputModeDictEntry(
entry["abreviation"], entry["replaceBy"], entry["table"]
)
)


def terminate(save=False):
global entries
if save:
saveDict()
entries = None


def setDict(newDict):
global entries
entries = newDict


def saveDict(entries=None):
if not entries:
entries = getDictionary()
entries = [
{
"abreviation": entry.abreviation,
"replaceBy": entry.replaceBy,
"table": entry.table,
}
for entry in entries
]
with codecs.open(getPathDict(), "w", "UTF-8") as outfile:
json.dump(entries, outfile, ensure_ascii=False, indent=2)


def getReplacements(abreviations, strict=False):
if isinstance(abreviations, str):
abreviations = [abreviations]
currentInputTable = brailleInput.handler.table.fileName
out = []
for abreviation in abreviations:
if abreviation.endswith("⠀"):
strict = True
abreviation = abreviation[:-1]
if not strict:
out += [
entry
for entry in getDictionary()
if entry.abreviation.startswith(abreviation)
and entry.table in [currentInputTable, "*"]
]
else:
out += [
entry
for entry in getDictionary()
if entry.abreviation == abreviation
and entry.table in [currentInputTable, "*"]
]
return out


def translateTable(tableFilename):
if tableFilename == "*":
return _("all tables")
else:
for table in brailleTables.listTables():
if table.fileName == tableFilename:
return table.displayName
return tableFilename


class AdvancedInputModeDlg(gui.settingsDialogs.SettingsDialog):

# Translators: title of a dialog.
title = _("Advanced input mode dictionary")

def makeSettings(self, settingsSizer):
self.tmpDict = getDictionary()
self.tmpDict.sort(key=lambda e: e.replaceBy)
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
# Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
entriesLabelText = _("Dictionary &entries")
self.dictList = sHelper.addLabeledControl(
entriesLabelText,
wx.ListCtrl,
style=wx.LC_REPORT | wx.LC_SINGLE_SEL,
size=(550, 350),
)
# Translators: The label for a column in dictionary entries list used to identify comments for the entry.
self.dictList.InsertColumn(0, _("Abbreviation"), width=150)
self.dictList.InsertColumn(1, _("Replace by"), width=150)
self.dictList.InsertColumn(2, _("Input table"), width=150)
self.onSetEntries()
bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
label=_("&Add"),
).Bind(wx.EVT_BUTTON, self.onAddClick)

bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to edit existing entries.
label=_("&Edit"),
).Bind(wx.EVT_BUTTON, self.onEditClick)

bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to remove existing entries.
label=_("Re&move"),
).Bind(wx.EVT_BUTTON, self.onRemoveClick)

sHelper.addItem(bHelper)
bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
label=_("&Open the dictionary file in an editor"),
).Bind(wx.EVT_BUTTON, self.onOpenFileClick)
bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
label=_("&Reload the dictionary"),
).Bind(wx.EVT_BUTTON, self.onReloadDictClick)
sHelper.addItem(bHelper)

def onSetEntries(self):
self.dictList.DeleteAllItems()
for entry in self.tmpDict:
self.dictList.Append(
(entry.abreviation, entry.replaceBy, translateTable(entry.table))
)
self.dictList.SetFocus()

def onAddClick(self, event):
entryDialog = DictionaryEntryDlg(self, title=_("Add Dictionary Entry"))
if entryDialog.ShowModal() == wx.ID_OK:
entry = entryDialog.dictEntry
self.tmpDict.append(entry)
self.dictList.Append(
(entry.abreviation, entry.replaceBy, translateTable(entry.table))
)
index = self.dictList.GetFirstSelected()
while index >= 0:
self.dictList.Select(index, on=0)
index = self.dictList.GetNextSelected(index)
addedIndex = self.dictList.GetItemCount() - 1
self.dictList.Select(addedIndex)
self.dictList.Focus(addedIndex)
self.dictList.SetFocus()
entryDialog.Destroy()

def onEditClick(self, event):
if self.dictList.GetSelectedItemCount() != 1:
return
editIndex = self.dictList.GetFirstSelected()
entryDialog = DictionaryEntryDlg(self)
entryDialog.abreviationTextCtrl.SetValue(
self.tmpDict[editIndex].abreviation)
entryDialog.replaceByTextCtrl.SetValue(
self.tmpDict[editIndex].replaceBy)
if entryDialog.ShowModal() == wx.ID_OK:
entry = entryDialog.dictEntry
self.tmpDict[editIndex] = entry
self.dictList.SetItem(editIndex, 0, entry.abreviation)
self.dictList.SetItem(editIndex, 1, entry.replaceBy)
self.dictList.SetItem(editIndex, 2, translateTable(entry.table))
self.dictList.SetFocus()
entryDialog.Destroy()

def onRemoveClick(self, event):
index = self.dictList.GetFirstSelected()
while index >= 0:
self.dictList.DeleteItem(index)
del self.tmpDict[index]
index = self.dictList.GetNextSelected(index)
self.dictList.SetFocus()

def onOpenFileClick(self, event):
dictPath = getPathDict()
if not os.path.exists(dictPath):
return ui.message(_("File doesn't exist yet"))
try:
os.startfile(dictPath)
except OSError:
os.popen('notepad "%s"' % dictPath)

def onReloadDictClick(self, event):
self.tmpDict = getDictionary()
self.onSetEntries()

def postInit(self):
self.dictList.SetFocus()

def onOk(self, evt):
saveDict(self.tmpDict)
setDict(self.tmpDict)
super(AdvancedInputModeDlg, self).onOk(evt)


class DictionaryEntryDlg(wx.Dialog):
# Translators: This is the label for the edit dictionary entry dialog.
def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
super(DictionaryEntryDlg, self).__init__(parent, title=title)
mainSizer = wx.BoxSizer(wx.VERTICAL)
sHelper = gui.guiHelper.BoxSizerHelper(self, orientation=wx.VERTICAL)
# Translators: This is a label for an edit field in add dictionary entry dialog.
abreviationLabelText = _("&Abreviation")
self.abreviationTextCtrl = sHelper.addLabeledControl(
abreviationLabelText, wx.TextCtrl
)
# Translators: This is a label for an edit field in add dictionary entry dialog.
replaceByLabelText = _("&Replace by")
self.replaceByTextCtrl = sHelper.addLabeledControl(
replaceByLabelText, wx.TextCtrl
)

sHelper.addDialogDismissButtons(
self.CreateButtonSizer(wx.OK | wx.CANCEL))

mainSizer.Add(sHelper.sizer, border=20, flag=wx.ALL)
mainSizer.Fit(self)
self.SetSizer(mainSizer)
self.abreviationTextCtrl.SetFocus()
self.Bind(wx.EVT_BUTTON, self.onOk, id=wx.ID_OK)

def onOk(self, evt):
abreviation = getTextInBraille(self.abreviationTextCtrl.GetValue())
replaceBy = self.replaceByTextCtrl.GetValue()
newEntry = AdvancedInputModeDictEntry(abreviation, replaceBy, "*")
self.dictEntry = newEntry
evt.Skip()


class SettingsDlg(gui.settingsDialogs.SettingsPanel):

# Translators: title of a dialog.
title = _("Advanced input mode")

def makeSettings(self, settingsSizer):
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)

# Translators: label of a dialog.
self.stopAdvancedInputModeAfterOneChar = sHelper.addItem(
wx.CheckBox(
self, label=_(
"E&xit the advanced input mode after typing one pattern")
)
)
self.stopAdvancedInputModeAfterOneChar.SetValue(
config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"]
)
self.escapeSignUnicodeValue = sHelper.addLabeledControl(
_("Escape sign for Unicode values"),
wx.TextCtrl,
value=config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"],
)

def onSave(self):
config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"] = self.stopAdvancedInputModeAfterOneChar.IsChecked()
s = self.escapeSignUnicodeValue.Value
if s:
config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"] = getTextInBraille(
s[0])
Loading