-
Allen, Bruce (CIV) authoredAllen, Bruce (CIV) authored
spellcheck_whitelist_dialog_wrapper.py 2.19 KiB
# wrapper from https://stackoverflow.com/questions/2398800/linking-a-qtdesigner-ui-file-to-python-pyqt
from PySide6.QtCore import Qt
from PySide6.QtCore import Slot # for signal/slot support
from PySide6.QtWidgets import QDialog, QPlainTextEdit
from PySide6.QtGui import QKeyEvent
from spellcheck_whitelist_dialog import Ui_SpellcheckWhitelistDialog
from spellcheck import user_whitelist
class SpellcheckWhitelistView(QPlainTextEdit):
def __init__(self):
super().__init__()
# intercept keyPress to prohibit select ascii text
@Slot(QKeyEvent)
def keyPressEvent(self, e):
text = e.text()
if text != '' \
and text in '0123456789!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~':
print("text dropped: '%s'"%text)
# drop the text
return
else:
# keep the text
super().keyPressEvent(e)
class SpellcheckWhitelistDialogWrapper(QDialog):
def __init__(self, parent_window, spellcheck_manager):
super().__init__(parent_window)
self.spellcheck_manager = spellcheck_manager
self.ui = Ui_SpellcheckWhitelistDialog()
self.ui.setupUi(self) # we refine this further below
self.setFixedSize(self.width(), self.height())
self.setWindowFlags(self.windowFlags() | Qt.Tool)
self.setAttribute(Qt.WA_MacAlwaysShowToolWindow)
self.setWindowTitle("MP Code Spellcheck Whitelist")
self.ui.copy_pb.setDisabled(True)
# the QPlainTextEdit view
self.view = SpellcheckWhitelistView()
self.ui.layout.addWidget(self.view)
self.document = self.view.document()
self.document.setPlainText(user_whitelist())
# connect buttons
self.view.textChanged.connect(self._text_changed)
self.ui.copy_pb.clicked.connect(self.view.copy)
self.ui.close_pb.clicked.connect(self.close) # superclass close
self.view.copyAvailable.connect(self._copy_available)
@Slot()
def _text_changed(self):
text = self.document.toPlainText()
self.spellcheck_manager.set_user_whitelist(text)
@Slot(bool)
def _copy_available(self, copy_is_available):
self.ui.copy_pb.setDisabled(not copy_is_available)