diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/debugcontroller.py b/plugins/extensions/pykrita/plugin/plugins/scripter/debugcontroller.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/debugcontroller.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/debugcontroller.py @@ -51,7 +51,7 @@ return 0 def updateUIDebugger(self): - widget = self.scripter.uicontroller.findStackWidget('Debugger') + widget = self.scripter.uicontroller.findTabWidget('Debugger') exception = self._debuggerException() if exception: 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 @@ -3,4 +3,5 @@ 'saveaction.saveaction.SaveAction', 'runaction.runaction.RunAction', 'settingsaction.settingsaction.SettingsAction', - 'debugaction.debugaction.DebugAction'] + 'debugaction.debugaction.DebugAction', + 'closeaction.closeaction.CloseAction'] diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/__init__.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/closeaction/__init__.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/__init__.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/closeaction/__init__.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/closeaction/closeaction.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/closeaction/closeaction.py new file mode 100644 --- /dev/null +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/closeaction/closeaction.py @@ -0,0 +1,37 @@ +from PyQt5.QtWidgets import QAction, QMessageBox +from PyQt5.QtGui import QKeySequence +from PyQt5.QtCore import Qt + + +class CloseAction(QAction): + + def __init__(self, scripter, parent=None): + super(CloseAction, self).__init__(parent) + self.scripter = scripter + + self.triggered.connect(self.close) + + self.setText('Close') + self.setObjectName('close') + self.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q)) + + @property + def parent(self): + return 'File' + + def close(self): + msgBox = QMessageBox(self.scripter.uicontroller.mainWidget) + + msgBox.setInformativeText("Do you want to save the current document?"); + msgBox.setStandardButtons(QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel); + msgBox.setDefaultButton(QMessageBox.Save); + + ret = msgBox.exec(); + + if ret == QMessageBox.Cancel: + return + if ret == QMessageBox.Save: + if not self.scripter.uicontroller.invokeAction('save'): + return + + self.scripter.uicontroller.closeScripter() diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/debugaction/debugaction.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/debugaction/debugaction.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/debugaction/debugaction.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/debugaction/debugaction.py @@ -25,5 +25,5 @@ if self.scripter.uicontroller.invokeAction('save'): self.scripter.uicontroller.setActiveWidget('Debugger') self.scripter.debugcontroller.start(self.scripter.documentcontroller.activeDocument) - widget = self.scripter.uicontroller.findStackWidget('Debugger') + widget = self.scripter.uicontroller.findTabWidget('Debugger') widget.startDebugger() diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/runaction.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/runaction.py --- a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/runaction.py +++ b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/actions/runaction/runaction.py @@ -14,7 +14,7 @@ self.scripter = scripter self.editor = self.scripter.uicontroller.editor - self.output = self.scripter.uicontroller.findStackWidget('OutPut') + self.output = self.scripter.uicontroller.findTabWidget('OutPut') self.triggered.connect(self.run) @@ -28,6 +28,7 @@ return 'toolBar' def run(self): + self.scripter.uicontroller.setActiveWidget('OutPut') stdout = sys.stdout stderr = sys.stderr output = docwrapper.DocWrapper(self.output.document()) diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/__init__.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/__init__.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/__init__.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/__init__.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/outputwidget/__init__.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/__init__.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/outputwidget/__init__.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/__init__.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/debuggertable.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/debuggertable.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/debuggertable.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/debuggertable.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/debuggerwidget.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/debuggerwidget.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/debuggerwidget.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/debuggerwidget.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/stepaction.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/stepaction.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/stepaction.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/stepaction.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/stopaction.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/stopaction.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/stopaction.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/debuggerwidget/stopaction.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/__init__.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/outputwidget/__init__.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/debuggerwidget/__init__.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/outputwidget/__init__.py diff --git a/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/outputwidget/outputwidget.py b/plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/outputwidget/outputwidget.py rename from plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/stackwidgets/outputwidget/outputwidget.py rename to plugins/extensions/pykrita/plugin/plugins/scripter/ui_scripter/tabwidgets/outputwidget/outputwidget.py 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 @@ -43,7 +43,6 @@ self.mainWidget.resize(400, 500) self.mainWidget.setWindowTitle("Scripter") self.mainWidget.setSizeGripEnabled(True) - self.addMenu('Edit', 'Edit') self.mainWidget.show() self.mainWidget.activateWindow() @@ -85,7 +84,7 @@ action['parent'].addAction(action['action']) def loadWidgets(self): - modulePath = 'scripter.ui_scripter.stackwidgets' + modulePath = 'scripter.ui_scripter.tabwidgets' widgetsModule = importlib.import_module(modulePath) modules = [] @@ -107,7 +106,7 @@ if method: return method() - def findStackWidget(self, widgetName): + def findTabWidget(self, widgetName): for index in range(self.tabWidget.count()): widget = self.tabWidget.widget(index) if widget.objectName() == widgetName: @@ -126,7 +125,7 @@ self.statusBar.setText(value) def setActiveWidget(self, widgetName): - widget = self.findStackWidget(widgetName) + widget = self.findTabWidget(widgetName) if widget: self.tabWidget.setCurrentWidget(widget) @@ -139,3 +138,6 @@ def repaintDebugArea(self): self.editor.repaintDebugArea() + + def closeScripter(self): + self.mainWidget.close()