From 6cb2d0ede8e2a467c0a3a3f65f46b74f5537afde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20O=2E=20Cordero=20P=C3=A9rez?= Date: Sat, 29 Mar 2025 17:38:25 -0400 Subject: [PATCH 1/2] fix: Check whether script needs to be saved before opening a new one --- src/gui/scriptpanel.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gui/scriptpanel.cpp b/src/gui/scriptpanel.cpp index 107c1cb0..be36b273 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; From 7c2bd135ae44d52264065ddd561e302039b53d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20O=2E=20Cordero=20P=C3=A9rez?= Date: Sat, 29 Mar 2025 17:39:17 -0400 Subject: [PATCH 2/2] feat: Add New, Open, and Save shortcuts to Script Panel --- src/gui/mainwindow.cpp | 22 +++++++++++++++------- src/gui/scriptpanel.cpp | 6 ++++++ src/gui/scriptpanel.h | 6 +++--- 3 files changed, 24 insertions(+), 10 deletions(-) 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 be36b273..4b576c45 100644 --- a/src/gui/scriptpanel.cpp +++ b/src/gui/scriptpanel.cpp @@ -432,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();