Source code for sas.qtgui.Utilities.ModelEditor

from PyQt5 import QtCore
from PyQt5 import QtWidgets

from sas.qtgui.Utilities.UI.ModelEditor import Ui_ModelEditor
from sas.qtgui.Utilities import GuiUtils

[docs]class ModelEditor(QtWidgets.QDialog, Ui_ModelEditor): """ Class describing the "advanced" model editor. This is a simple text browser allowing for editing python and supporting simple highlighting. """ modelModified = QtCore.pyqtSignal()
[docs] def __init__(self, parent=None, is_python=True): super(ModelEditor, self).__init__(parent) self.setupUi(self) # disable the context help icon self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint) self.is_python = is_python self.setupWidgets() self.addSignals()
[docs] def setupWidgets(self): """ Set up dialog widgets. Here - just the highlighter connected to the text edit. """ # Weird import location - workaround for a bug in Sphinx choking on # importing QSyntaxHighlighter # DO NOT MOVE TO TOP from sas.qtgui.Utilities.PythonSyntax import PythonHighlighter self.highlight = PythonHighlighter(self.txtEditor.document(), is_python=self.is_python) self.txtEditor.setFont(GuiUtils.getMonospaceFont())
[docs] def addSignals(self): """ Respond to signals in the widget """ self.txtEditor.textChanged.connect(self.onEdit)
[docs] def onEdit(self): """ Respond to changes in the text browser. """ # We have edited the model - notify the parent. if self.txtEditor.toPlainText() != "": self.modelModified.emit()
[docs] def getModel(self): """ Return the current model, as displayed in the window """ model = {'text':self.txtEditor.toPlainText()} model['filename'] = "" return model