Last active
May 26, 2020 07:57
-
-
Save feerrenrut/73ec3ae46dda87effcb20d6e51a28551 to your computer and use it in GitHub Desktop.
A braille display driver for NVDA. Braille is displayed on screen. Save this file to the 'brailleDisplayDrivers' folder in your user config (`%appdata%/nvda/brailleDisplayDrivers`) directory or in `source\brailleDisplayDrivers\` directory in your repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#brailleViewer.py | |
#A part of NonVisual Desktop Access (NVDA) | |
#Copyright (C) 2017 NV Access Limited | |
#This file is covered by the GNU General Public License. | |
#See the file COPYING for more details. | |
import wx | |
import gui | |
import braille | |
NUM_CELLS = 40 | |
class BrailleViewerFrame(wx.MiniFrame): | |
def __init__(self): | |
super(BrailleViewerFrame, self).__init__(gui.mainFrame, wx.ID_ANY, _("NVDA Braille Viewer"), style=wx.CAPTION | wx.RESIZE_BORDER | wx.STAY_ON_TOP) | |
self.Bind(wx.EVT_CLOSE, self.onClose) | |
mainSizer = wx.BoxSizer(wx.VERTICAL) | |
item = self.output = wx.StaticText(self, label=u"\u2800" * NUM_CELLS) | |
font = item.Font | |
font.PointSize = 24 | |
item.Font = font | |
mainSizer.Add(item, proportion=1, flag=wx.EXPAND) | |
mainSizer.Fit(self) | |
self.Sizer = mainSizer | |
self.Show() | |
def onClose(self, evt): | |
if not evt.CanVeto(): | |
self.Destroy() | |
return | |
evt.Veto() | |
class BrailleDisplayDriver(braille.BrailleDisplayDriver): | |
name = "brailleViewer" | |
description = _("Braille viewer") | |
numCells = NUM_CELLS | |
@classmethod | |
def check(cls): | |
return True | |
def __init__(self): | |
super(BrailleDisplayDriver, self).__init__() | |
if gui.mainFrame: | |
self._frame = BrailleViewerFrame() | |
else: | |
# GUI not initialised yet, so we'll initialise later. | |
self._frame = None | |
def display(self, cells): | |
if not self._frame and gui.mainFrame: | |
self._frame = BrailleViewerFrame() | |
if not self._frame: | |
return | |
self._frame.output.Label = u"".join(unichr(0x2800 + cell) for cell in cells) | |
def terminate(self): | |
super(BrailleDisplayDriver, self).terminate() | |
try: | |
self._frame.Destroy() | |
except wx.PyDeadObjectError: | |
# NVDA's GUI has already terminated. | |
pass |
Note: The braille viewer has been integrated with NVDA, find it via the tools menu.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I am not actually a programmer, but I unzipped the file and put it in NVDA/brailleDisplayDrivers. I can see the file in there in Windows Explorers, but Braille Viewer is not listed when I go into NVDA braille displays. What does the %appdata% part of your directions mean? Thanks!