diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 53de9a1e..a9b14c3a 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -357,10 +357,14 @@ void MainWindow::showEvent(QShowEvent *event) void MainWindow::openProject() { - auto path = QFileDialog::getExistingDirectory(this, tr("Open project"), QDir::currentPath()); - if (!path.isEmpty()) { - Core::Project::instance()->setRoot(path); - initProject(path); + if (m_scriptPanel->hasFocus()) + m_scriptPanel->openScript(); + else { + auto path = QFileDialog::getExistingDirectory(this, tr("Open project"), QDir::currentPath()); + if (!path.isEmpty()) { + Core::Project::instance()->setRoot(path); + initProject(path); + } } } @@ -510,9 +514,13 @@ void MainWindow::reloadDocuments() void MainWindow::saveDocument() { - auto document = Core::Project::instance()->currentDocument(); - if (document) - document->save(); + if (m_scriptPanel->hasFocus()) + m_scriptPanel->saveScript(); + else { + auto document = Core::Project::instance()->currentDocument(); + if (document) + document->save(); + } } void MainWindow::closeDocument(int closeIndex) diff --git a/src/gui/scriptpanel.cpp b/src/gui/scriptpanel.cpp index 107c1cb0..4b576c45 100644 --- a/src/gui/scriptpanel.cpp +++ b/src/gui/scriptpanel.cpp @@ -142,6 +142,9 @@ bool ScriptPanel::hasScript() const void ScriptPanel::openScript() { + if (!checkNeedToSaveScript()) + return; + const QString fileName = QFileDialog::getOpenFileName(this, tr("Open Script"), "", "Script files (*.qml *.js)"); if (fileName.isEmpty()) return; @@ -429,6 +432,12 @@ void ScriptPanel::keyPressEvent(QKeyEvent *event) } return; } + case Qt::Key_N: + if (event->modifiers() & Qt::ControlModifier) { + newScript(); + return; + } + break; case Qt::Key_F1: interfaceSettings = new InterfaceSettings(); QString documentationUrl; diff --git a/src/gui/scriptpanel.h b/src/gui/scriptpanel.h index 99442164..d7e0d8e0 100644 --- a/src/gui/scriptpanel.h +++ b/src/gui/scriptpanel.h @@ -32,6 +32,9 @@ class ScriptPanel : public QPlainTextEdit bool hasScript() const; void runScript(); + void openScript(); + void newScriptDialog(); + void saveScript(); signals: void newScriptCreated(); @@ -42,11 +45,8 @@ class ScriptPanel : public QPlainTextEdit void mouseReleaseEvent(QMouseEvent *mouseEvent) override; private: - void openScript(); void newScript(); - void newScriptDialog(); bool checkNeedToSaveScript(); - void saveScript(); void editDialog(); void checkEditDialogButton(); QString createDialogFile();