From 6e29bfe525edc5c631dc636986a150b649558e43 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Mon, 18 Jul 2016 15:36:53 +0200 Subject: [PATCH] #649 New script feature : Create empty file before opening text editor --- .../RicNewScriptFeature.cpp | 47 ++++++++++++++----- .../RimContextCommandBuilder.cpp | 1 + 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/ApplicationCode/Commands/OctaveScriptCommands/RicNewScriptFeature.cpp b/ApplicationCode/Commands/OctaveScriptCommands/RicNewScriptFeature.cpp index cb1654f7ef..247cff4d26 100644 --- a/ApplicationCode/Commands/OctaveScriptCommands/RicNewScriptFeature.cpp +++ b/ApplicationCode/Commands/OctaveScriptCommands/RicNewScriptFeature.cpp @@ -29,7 +29,10 @@ #include #include +#include +#include #include +#include "RicRefreshScriptsFeature.h" CAF_CMD_SOURCE_INIT(RicNewScriptFeature, "RicNewScriptFeature"); @@ -38,8 +41,7 @@ CAF_CMD_SOURCE_INIT(RicNewScriptFeature, "RicNewScriptFeature"); //-------------------------------------------------------------------------------------------------- bool RicNewScriptFeature::isCommandEnabled() { - std::vector selection = RicScriptFeatureImpl::selectedScripts(); - return selection.size() > 0; + return true; } //-------------------------------------------------------------------------------------------------- @@ -55,7 +57,7 @@ void RicNewScriptFeature::onActionTriggered(bool isChecked) QString fullPathNewScript; - if (calcScript ) + if (calcScript) { QFileInfo existingScriptFileInfo(calcScript->absolutePath()); fullPathNewScript = existingScriptFileInfo.absolutePath(); @@ -79,19 +81,40 @@ void RicNewScriptFeature::onActionTriggered(bool isChecked) num++; } - RiaApplication* app = RiaApplication::instance(); - QString scriptEditor = app->scriptEditorPath(); - if (!scriptEditor.isEmpty()) + bool ok; + fullPathFilenameNewScript = QInputDialog::getText(NULL, "Specify new script file", "File name", QLineEdit::Normal, fullPathFilenameNewScript, &ok); + + if (ok && !fullPathFilenameNewScript.isEmpty()) { - QStringList arguments; - arguments << fullPathFilenameNewScript; + QFile file(fullPathFilenameNewScript); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + { + QMessageBox::warning(RiuMainWindow::instance(), "Script editor", "Failed to create file\n" + fullPathFilenameNewScript); + + return; + } + + RicRefreshScriptsFeature::refreshScriptFolders(); - QProcess* myProcess = new QProcess(this); - myProcess->start(scriptEditor, arguments); + if (calcScript) + { + RiuMainWindow::instance()->selectAsCurrentItem(calcScript); + } - if (!myProcess->waitForStarted(1000)) + RiaApplication* app = RiaApplication::instance(); + QString scriptEditor = app->scriptEditorPath(); + if (!scriptEditor.isEmpty()) { - QMessageBox::warning(RiuMainWindow::instance(), "Script editor", "Failed to start script editor executable\n" + scriptEditor); + QStringList arguments; + arguments << fullPathFilenameNewScript; + + QProcess* myProcess = new QProcess(this); + myProcess->start(scriptEditor, arguments); + + if (!myProcess->waitForStarted(1000)) + { + QMessageBox::warning(RiuMainWindow::instance(), "Script editor", "Failed to start script editor executable\n" + scriptEditor); + } } } } diff --git a/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp b/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp index be3652d855..e5d25587b9 100644 --- a/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp +++ b/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp @@ -216,6 +216,7 @@ QStringList RimContextCommandBuilder::commandsFromSelection() { commandIds << "RicAddScriptPathFeature"; commandIds << "RicDeleteScriptPathFeature"; + commandIds << "RicNewScriptFeature"; commandIds << "Separator"; commandIds << "RicRefreshScriptsFeature"; }