diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/actionloader.py b/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/actionloader.py deleted file mode 100644 --- a/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/actionloader.py +++ /dev/null @@ -1,10 +0,0 @@ -class ActionLoader(object): - - @property - def importPath(self): - return 'scripter.ui_scripter.actions' - - def addComponents(self, components): - for action in components: - if action['parent']: - action['parent'].addAction(action['component']) diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/menuloader.py b/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/menuloader.py deleted file mode 100644 diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/widgetloader.py b/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/widgetloader.py deleted file mode 100644 diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/scripter.py b/plugins/extensions/pykrita/plugin/plugins/scripter/scripter.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/scripter.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/scripter.py @@ -9,14 +9,14 @@ def __init__(self, parent): super().__init__(parent) - self.uicontroller = uicontroller.UIController(QDialog()) def setup(self): print("Scripter setup") action = Krita.instance().createAction("Scripter") action.triggered.connect(self.initialize) def initialize(self): + self.uicontroller = uicontroller.UIController(QDialog()) self.uicontroller.initialize(self) Krita.instance().addViewExtension(ScripterViewExtension(Krita.instance())) diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/__init__.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/__init__.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/__init__.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/__init__.py @@ -0,0 +1,3 @@ +action_classes = ['openaction.openaction.OpenAction', + 'runaction.runaction.RunAction', + 'settingsaction.settingsaction.SettingsAction'] diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/__init__.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/openaction/__init__.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/loaders/__init__.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/openaction/__init__.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/openaction/openaction.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/openaction/openaction.py new file mode 100644 --- /dev/null +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/openaction/openaction.py @@ -0,0 +1,19 @@ +from PyQt5.QtWidgets import QAction + + +class OpenAction(QAction): + + def __init__(self, scripter, parent=None): + super(OpenAction, self).__init__(parent) + self.scripter = scripter + + self.triggered.connect(self.open) + + self.setText('Open') + + @property + def parent(self): + return 'File' + + def open(self): + print('opening file') diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/__init__.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/__init__.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/__init__.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/__init__.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/editor/docwrapper.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/docwrapper.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/editor/docwrapper.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/docwrapper.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/runaction.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/runaction.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/runaction.py @@ -1,7 +1,7 @@ from PyQt5.QtWidgets import QAction, QMessageBox from PyQt5.QtGui import QIcon import sys -from ..editor import docwrapper +from . import docwrapper class RunAction(QAction): @@ -15,7 +15,8 @@ self.triggered.connect(self.run) self.setText('Run') - self.setIcon(QIcon('/home/eliakincosta/Pictures/play.svg')) + # path to the icon + #self.setIcon(QIcon('/home/eliakincosta/Pictures/play.svg')) @property def parent(self): diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/loaders/__init__.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/__init__.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/loaders/__init__.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/__init__.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/fontscombobox.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/fontscombobox.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/fontscombobox.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/fontscombobox.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/settingsaction.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/settingsaction.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/settingsaction.py @@ -1,6 +1,6 @@ from PyQt5.QtWidgets import QAction from PyQt5.QtCore import Qt -from ..widgets import settingsdialog +from . import settingsdialog class SettingsAction(QAction): diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/settingsdialog.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/settingsdialog.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/settingsdialog.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/settingsdialog.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/settingsdialog.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/settingsdialog.py @@ -2,7 +2,7 @@ from PyQt5.QtWidgets import * -from ..widgets import syntaxstylescombobox, fontscombobox +from . import syntaxstylescombobox, fontscombobox class SettingsDialog(QDialog): diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/syntaxstylescombobox.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/syntaxstylescombobox.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/syntaxstylescombobox.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/settingsaction/syntaxstylescombobox.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/linenumberarea.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/editor/linenumberarea.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/widgets/linenumberarea.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/editor/linenumberarea.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/editor/pythoneditor.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/editor/pythoneditor.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/editor/pythoneditor.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/editor/pythoneditor.py @@ -3,7 +3,7 @@ from PyQt5.QtCore import * from PyQt5.QtWidgets import * -from scripter.ui_scripter.widgets import linenumberarea +from scripter.ui_scripter.editor import linenumberarea from PyQt5.QtGui import * diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/uicontroller.py b/plugins/extensions/pykrita/plugin/plugins/scripter/uicontroller.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/uicontroller.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/uicontroller.py @@ -2,23 +2,22 @@ from PyQt5.QtWidgets import * from PyQt5.QtCore import * from scripter.ui_scripter.syntax import syntax, syntaxstyles -from scripter.ui_scripter import actions from scripter.ui_scripter.editor import pythoneditor -from scripter.loaders import actionloader, menuloader, widgetloader import os import importlib -import inspect + class UIController(object): + def __init__(self, mainWidget): self.mainWidget = mainWidget self.actionToolbar = QToolBar('toolBar', self.mainWidget) self.menu_bar = QMenuBar(self.mainWidget) self.actionToolbar.setObjectName('toolBar') self.menu_bar.setObjectName('menuBar') - self.components = [] + self.actions = [] self.mainWidget.setWindowModality(Qt.NonModal) self.editor = pythoneditor.CodeEditor() @@ -29,7 +28,7 @@ self.scripter = scripter self.loadMenus() - self.loadComponents(actionloader.ActionLoader()) + self.loadActions() vbox = QVBoxLayout(self.mainWidget) vbox.addWidget(self.menu_bar) @@ -61,21 +60,24 @@ return self.newMenu - def loadComponents(self, loader): - component_module = importlib.import_module(loader.importPath) + def loadActions(self): + module_path = 'scripter.ui_scripter.actions' + actions_module = importlib.import_module(module_path) + print(actions_module) + modules = [] - modules = [loader.importPath + '.' + str(module).split('.')[0] - for module in os.listdir(component_module.__path__[0]) - if module.endswith('.py') and (not '__init__' in module)] + for class_path in actions_module.action_classes: + _module, _klass = class_path.rsplit('.', maxsplit=1) + print(_module, _klass) + modules.append(dict(module='{0}.{1}'.format(module_path, _module), + klass=_klass)) for module in modules: - m = importlib.import_module(module) - clsmembers = [klass for klass in inspect.getmembers(m, inspect.isclass) if klass[1].__module__ == module] - print(self.mainWidget.children()) - for klass in clsmembers: - obj = klass[1](self.scripter) - parent = self.mainWidget.findChild(QObject, obj.parent) - print('parent:', parent) - self.components.append(dict(component=obj, parent=parent)) - - loader.addComponents(self.components) + m = importlib.import_module(module['module']) + action_class = getattr(m, module['klass']) + obj = action_class(self.scripter) + parent = self.mainWidget.findChild(QObject, obj.parent) + self.actions.append(dict(action=obj, parent=parent)) + + for action in self.actions: + action['parent'].addAction(action['action'])