2SPDX-FileCopyrightText: 2017 Eliakin Costa <eliakim170@gmail.com>
4SPDX-License-Identifier: GPL-2.0-or-later
10 QLabel, QVBoxLayout, QMessageBox,
11 QSplitter, QSizePolicy)
16 QLabel, QVBoxLayout, QMessageBox,
17 QSplitter, QSizePolicy)
18from .ui_scripter.syntax
import syntax, syntaxstyles
19from .ui_scripter.editor
import pythoneditor
20from .
import scripterdialog, utils
22from builtins
import i18n
24from scripter
import resources_rc
26KEY_GEOMETRY =
"geometry"
27DEFAULT_GEOMETRY = QRect(600, 200, 400, 500)
37 self.setMinimumWidth(self.fontMetrics().horizontalAdvance(
"..."))
38 self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
45 self.setText(self.fontMetrics().elidedText(self.
mainText, Qt.TextElideMode.ElideRight, self.width()))
52 documentModifiedText =
""
53 documentStatusBarText =
"untitled"
61 self.
menu_bar.setObjectName(
'menuBar')
65 self.
mainWidget.setWindowModality(Qt.WindowModality.NonModal)
68 self.
editor = pythoneditor.CodeEditor(scripter)
73 self.
splitter.setOrientation(Qt.Orientation.Vertical)
74 self.
highlight = syntax.PythonHighlighter(self.
editor.document(), syntaxstyles.DefaultSyntaxStyle())
76 p.setColor(QPalette.ColorRole.Base, syntaxstyles.DefaultSyntaxStyle()[
'background'].foreground().color())
77 p.setColor(QPalette.ColorRole.Text, syntaxstyles.DefaultSyntaxStyle()[
'foreground'].foreground().color())
96 self.
mainWidget.setWindowTitle(i18n(
"Scripter"))
104 self.
addMenu(i18n(
'File'), i18n(
'File'))
107 parent = self.
menu_bar.findChild(QObject, parentName)
111 self.
newMenu = parent.addMenu(menuName)
115 self.
newMenu.setObjectName(menuName)
120 module_path =
'scripter.ui_scripter.actions'
121 actions_module = importlib.import_module(module_path)
124 for class_path
in actions_module.action_classes:
125 _module = class_path[:class_path.rfind(
".")]
126 _klass = class_path[class_path.rfind(
".") + 1:]
127 modules.append(dict(module=
'{0}.{1}'.format(module_path, _module),
130 for module
in modules:
131 m = importlib.import_module(module[
'module'])
132 action_class = getattr(m, module[
'klass'])
134 obj_parent = obj.parent
135 for name
in obj_parent:
136 parent = self.
mainWidget.findChild(QObject, i18n(name))
137 self.
actions.append(dict(action=obj, parent=parent))
140 action[
'parent'].addAction(action[
'action'])
143 modulePath =
'scripter.ui_scripter.tabwidgets'
144 widgetsModule = importlib.import_module(modulePath)
147 for class_path
in widgetsModule.widgetClasses:
148 _module = class_path[:class_path.rfind(
".")]
149 _klass = class_path[class_path.rfind(
".") + 1:]
150 modules.append(dict(module=
'{0}.{1}'.format(modulePath, _module),
153 for module
in modules:
154 m = importlib.import_module(module[
'module'])
155 widgetClass = getattr(m, module[
'klass'])
157 self.
tabWidget.addTab(obj, obj.objectName())
161 if action[
'action'].objectName() == actionName:
162 method = getattr(action[
'action'], actionName)
167 for index
in range(self.
tabWidget.count()):
169 if widget.objectName() == widgetName:
171 widget = widget.findChild(QObject, childName)
175 QMessageBox.critical(self.
editor, i18n(
"Error Running Script"), str(exception))
179 self.
editor.moveCursor(QTextCursor.MoveOperation.Start)
180 self.
editor._documentModified =
False
181 self.
editor.setPlainText(document.data)
182 self.
editor.moveCursor(QTextCursor.MoveOperation.End)
190 if (self.
editor._documentModified
is True):
213 """ _writeSettings is a method invoked when the scripter starts, making
214 control inversion. Actions can implement a writeSettings method to
215 save your own settings without this method to know about it. """
217 self.
scripter.settings.beginGroup(
'scripter')
219 document = self.
scripter.documentcontroller.activeDocument
221 self.
scripter.settings.setValue(
'activeDocumentPath', document.filePath)
223 self.
scripter.settings.setValue(
'activeDocumentPath',
'')
225 self.
scripter.settings.setValue(
'editorFontSize', self.
editor.fontInfo().pointSize())
228 writeSettings = getattr(action[
'action'],
"writeSettings",
None)
229 if callable(writeSettings):
234 self.
scripter.settings.setValue(KEY_GEOMETRY, rect)
239 """ It's similar to _writeSettings, but reading the settings when the ScripterDialog is closed. """
241 self.
scripter.settings.beginGroup(
'scripter')
243 activeDocumentPath = self.
scripter.settings.value(
'activeDocumentPath',
'')
245 if activeDocumentPath:
246 if QFileInfo(activeDocumentPath).exists():
247 document = self.
scripter.documentcontroller.openDocument(activeDocumentPath)
252 readSettings = getattr(action[
'action'],
"readSettings",
None)
253 if callable(readSettings):
256 pointSize = self.
scripter.settings.value(
'editorFontSize', str(self.
editor.fontInfo().pointSize()))
257 self.
editor.setFontSize(int(pointSize))
260 rect = self.
scripter.settings.value(KEY_GEOMETRY, DEFAULT_GEOMETRY)
__init__(self, parent=None)
setMainText(self, text=str())
findTabWidget(self, widgetName, childName='')
showException(self, exception)
setDocumentEditor(self, document)
setActiveWidget(self, widgetName)
invokeAction(self, actionName)
str documentStatusBarText
addMenu(self, menuName, parentName)
initialize(self, scripter)
setStatusBar(self, value='untitled')
rgba palette[MAX_PALETTE]