From 1b04d9ea457b570ea05c59946918a9d757ff8349 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Mon, 13 Mar 2023 14:46:41 +0100 Subject: [PATCH] Add open in text editor feature --- ApplicationExeCode/Resources/ResInsight.qrc | 1 + .../Resources/open-text-editor.svg | 7 ++ .../CMakeLists_files.cmake | 2 + .../RicOpenInTextEditorFeature.cpp} | 95 ++++++++++--------- .../RicOpenInTextEditorFeature.h} | 8 +- .../RicEditScriptFeature.cpp | 24 +---- .../RicNewOctaveScriptFeature.cpp | 19 +--- .../RicNewPythonScriptFeature.cpp | 19 +--- .../CMakeLists_files.cmake | 2 - .../RimContextCommandBuilder.cpp | 2 +- .../WellLog/RimWellLogRftCurve.cpp | 1 + .../WellLog/RimWellLogRftCurve.h | 1 - 12 files changed, 76 insertions(+), 105 deletions(-) create mode 100644 ApplicationExeCode/Resources/open-text-editor.svg rename ApplicationLibCode/Commands/{PlotTemplateCommands/RicEditPlotTemplateFeature.cpp => ApplicationCommands/RicOpenInTextEditorFeature.cpp} (51%) rename ApplicationLibCode/Commands/{PlotTemplateCommands/RicEditPlotTemplateFeature.h => ApplicationCommands/RicOpenInTextEditorFeature.h} (85%) diff --git a/ApplicationExeCode/Resources/ResInsight.qrc b/ApplicationExeCode/Resources/ResInsight.qrc index 6b0602db66..31dd7c6572 100644 --- a/ApplicationExeCode/Resources/ResInsight.qrc +++ b/ApplicationExeCode/Resources/ResInsight.qrc @@ -273,6 +273,7 @@ info.png DataVector.svg DataVectorCalculated.svg + open-text-editor.svg fs_CellFace.glsl diff --git a/ApplicationExeCode/Resources/open-text-editor.svg b/ApplicationExeCode/Resources/open-text-editor.svg new file mode 100644 index 0000000000..b9b5a14e37 --- /dev/null +++ b/ApplicationExeCode/Resources/open-text-editor.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + \ No newline at end of file diff --git a/ApplicationLibCode/Commands/ApplicationCommands/CMakeLists_files.cmake b/ApplicationLibCode/Commands/ApplicationCommands/CMakeLists_files.cmake index aed4c8023a..9a641063bc 100644 --- a/ApplicationLibCode/Commands/ApplicationCommands/CMakeLists_files.cmake +++ b/ApplicationLibCode/Commands/ApplicationCommands/CMakeLists_files.cmake @@ -19,6 +19,7 @@ set(SOURCE_GROUP_HEADER_FILES ${CMAKE_CURRENT_LIST_DIR}/RicSaveProjectNoGlobalPathsFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicShowClassNamesFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicShowPlotDataCtxFeature.h + ${CMAKE_CURRENT_LIST_DIR}/RicOpenInTextEditorFeature.h ) set(SOURCE_GROUP_SOURCE_FILES @@ -42,6 +43,7 @@ set(SOURCE_GROUP_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/RicSaveProjectNoGlobalPathsFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicShowClassNamesFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicShowPlotDataCtxFeature.cpp + ${CMAKE_CURRENT_LIST_DIR}/RicOpenInTextEditorFeature.cpp ) list(APPEND COMMAND_CODE_HEADER_FILES ${SOURCE_GROUP_HEADER_FILES}) diff --git a/ApplicationLibCode/Commands/PlotTemplateCommands/RicEditPlotTemplateFeature.cpp b/ApplicationLibCode/Commands/ApplicationCommands/RicOpenInTextEditorFeature.cpp similarity index 51% rename from ApplicationLibCode/Commands/PlotTemplateCommands/RicEditPlotTemplateFeature.cpp rename to ApplicationLibCode/Commands/ApplicationCommands/RicOpenInTextEditorFeature.cpp index d83da0d050..103ea61123 100644 --- a/ApplicationLibCode/Commands/PlotTemplateCommands/RicEditPlotTemplateFeature.cpp +++ b/ApplicationLibCode/Commands/ApplicationCommands/RicOpenInTextEditorFeature.cpp @@ -1,6 +1,6 @@ -//////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// // -// Copyright (C) 2022 Equinor ASA +// Copyright (C) 2023- Equinor ASA // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,68 +16,42 @@ // ///////////////////////////////////////////////////////////////////////////////// -#include "RicEditPlotTemplateFeature.h" +#include "RicOpenInTextEditorFeature.h" -#include "RiaApplication.h" +#include "RiaGuiApplication.h" #include "RiaLogging.h" #include "PlotTemplates/RimPlotTemplateFileItem.h" -#include "RimProject.h" +#include "RimPressureDepthData.h" -#include "RiuPlotMainWindow.h" +#include "Riu3DMainWindowTools.h" #include "cafSelectionManager.h" #include -#include -#include -#include -#include -#include -CAF_CMD_SOURCE_INIT( RicEditPlotTemplateFeature, "RicEditPlotTemplateFeature" ); +CAF_CMD_SOURCE_INIT( RicOpenInTextEditorFeature, "RicOpenInTextEditorFeature" ); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -bool RicEditPlotTemplateFeature::isCommandEnabled() +void RicOpenInTextEditorFeature::openFileInTextEditor( const QString& filePath, QObject* parent ) { - std::vector uiItems; - caf::SelectionManager::instance()->selectedItems( uiItems ); - if ( uiItems.size() != 1 ) return false; - - RimPlotTemplateFileItem* file = dynamic_cast( uiItems[0] ); - return ( file != nullptr ); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RicEditPlotTemplateFeature::onActionTriggered( bool isChecked ) -{ - std::vector uiItems; - caf::SelectionManager::instance()->selectedItems( uiItems ); - - if ( uiItems.size() != 1 ) return; - - RimPlotTemplateFileItem* file = dynamic_cast( uiItems[0] ); - if ( file == nullptr ) return; - - RiaApplication* app = RiaApplication::instance(); - QString scriptEditor = app->scriptEditorPath(); - if ( !scriptEditor.isEmpty() ) + RiaApplication* app = RiaApplication::instance(); + QString textEditorExecutablePath = app->scriptEditorPath(); + if ( !textEditorExecutablePath.isEmpty() ) { QStringList arguments; - arguments << file->absoluteFilePath(); + arguments << filePath; - QProcess* myProcess = new QProcess( this ); - myProcess->start( scriptEditor, arguments ); + auto* myProcess = new QProcess( parent ); + myProcess->start( textEditorExecutablePath, arguments ); if ( !myProcess->waitForStarted( 1000 ) ) { - RiaLogging::errorInMessageBox( RiuPlotMainWindow::instance(), + RiaLogging::errorInMessageBox( Riu3DMainWindowTools::mainWindowWidget(), "Text editor", - "Failed to start text editor executable\n" + scriptEditor ); + "Failed to start text editor\n" + textEditorExecutablePath ); } } } @@ -85,7 +59,40 @@ void RicEditPlotTemplateFeature::onActionTriggered( bool isChecked ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicEditPlotTemplateFeature::setupActionLook( QAction* actionToSetup ) +bool RicOpenInTextEditorFeature::isCommandEnabled() { - actionToSetup->setText( "Edit" ); + return true; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicOpenInTextEditorFeature::onActionTriggered( bool isChecked ) +{ + std::vector uiItems; + caf::SelectionManager::instance()->selectedItems( uiItems ); + + QString filePath; + + if ( !uiItems.empty() ) + { + if ( auto templateFileItem = dynamic_cast( uiItems.front() ) ) + { + filePath = templateFileItem->absoluteFilePath(); + } + } + + if ( !filePath.isEmpty() ) + { + RicOpenInTextEditorFeature::openFileInTextEditor( filePath, this ); + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicOpenInTextEditorFeature::setupActionLook( QAction* actionToSetup ) +{ + actionToSetup->setText( "Open in Text Editor" ); + actionToSetup->setIcon( QIcon( ":/open-text-editor.svg" ) ); } diff --git a/ApplicationLibCode/Commands/PlotTemplateCommands/RicEditPlotTemplateFeature.h b/ApplicationLibCode/Commands/ApplicationCommands/RicOpenInTextEditorFeature.h similarity index 85% rename from ApplicationLibCode/Commands/PlotTemplateCommands/RicEditPlotTemplateFeature.h rename to ApplicationLibCode/Commands/ApplicationCommands/RicOpenInTextEditorFeature.h index e348d29a27..513cd616d7 100644 --- a/ApplicationLibCode/Commands/PlotTemplateCommands/RicEditPlotTemplateFeature.h +++ b/ApplicationLibCode/Commands/ApplicationCommands/RicOpenInTextEditorFeature.h @@ -1,6 +1,6 @@ -//////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// // -// Copyright (C) 2022 Equinor ASA +// Copyright (C) 2023- Equinor ASA // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -23,10 +23,12 @@ //================================================================================================== /// //================================================================================================== -class RicEditPlotTemplateFeature : public caf::CmdFeature +class RicOpenInTextEditorFeature : public caf::CmdFeature { CAF_CMD_HEADER_INIT; + static void openFileInTextEditor( const QString& filePath, QObject* parent ); + protected: bool isCommandEnabled() override; void onActionTriggered( bool isChecked ) override; diff --git a/ApplicationLibCode/Commands/OctaveScriptCommands/RicEditScriptFeature.cpp b/ApplicationLibCode/Commands/OctaveScriptCommands/RicEditScriptFeature.cpp index 63fef01976..32b4925b26 100644 --- a/ApplicationLibCode/Commands/OctaveScriptCommands/RicEditScriptFeature.cpp +++ b/ApplicationLibCode/Commands/OctaveScriptCommands/RicEditScriptFeature.cpp @@ -19,6 +19,7 @@ #include "RicEditScriptFeature.h" +#include "ApplicationCommands/RicOpenInTextEditorFeature.h" #include "RicScriptFeatureImpl.h" #include "RiaApplication.h" @@ -40,7 +41,7 @@ CAF_CMD_SOURCE_INIT( RicEditScriptFeature, "RicEditScriptFeature" ); bool RicEditScriptFeature::isCommandEnabled() { std::vector selection = RicScriptFeatureImpl::selectedScripts(); - return selection.size() > 0; + return !selection.empty(); } //-------------------------------------------------------------------------------------------------- @@ -49,28 +50,11 @@ bool RicEditScriptFeature::isCommandEnabled() void RicEditScriptFeature::onActionTriggered( bool isChecked ) { std::vector selection = RicScriptFeatureImpl::selectedScripts(); - CVF_ASSERT( selection.size() > 0 ); + CVF_ASSERT( !selection.empty() ); RimCalcScript* calcScript = selection[0]; - RiaApplication* app = RiaApplication::instance(); - QString scriptEditor = app->scriptEditorPath(); - if ( !scriptEditor.isEmpty() ) - { - QStringList arguments; - arguments << calcScript->absoluteFileName; - - QProcess* myProcess = new QProcess( this ); - myProcess->setProcessEnvironment( app->pythonProcessEnvironment() ); - myProcess->start( scriptEditor, arguments ); - - if ( !myProcess->waitForStarted( 1000 ) ) - { - RiaLogging::errorInMessageBox( Riu3DMainWindowTools::mainWindowWidget(), - "Script editor", - "Failed to start script editor executable\n" + scriptEditor ); - } - } + RicOpenInTextEditorFeature::openFileInTextEditor( calcScript->absoluteFileName, this ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Commands/OctaveScriptCommands/RicNewOctaveScriptFeature.cpp b/ApplicationLibCode/Commands/OctaveScriptCommands/RicNewOctaveScriptFeature.cpp index bb650f963e..1a747b948d 100644 --- a/ApplicationLibCode/Commands/OctaveScriptCommands/RicNewOctaveScriptFeature.cpp +++ b/ApplicationLibCode/Commands/OctaveScriptCommands/RicNewOctaveScriptFeature.cpp @@ -22,6 +22,7 @@ #include "RiaApplication.h" #include "RiaLogging.h" +#include "ApplicationCommands/RicOpenInTextEditorFeature.h" #include "RicRefreshScriptsFeature.h" #include "RicScriptFeatureImpl.h" @@ -115,23 +116,7 @@ void RicNewOctaveScriptFeature::onActionTriggered( bool isChecked ) Riu3DMainWindowTools::selectAsCurrentItem( calcScript ); } - RiaApplication* app = RiaApplication::instance(); - QString scriptEditor = app->scriptEditorPath(); - if ( !scriptEditor.isEmpty() ) - { - QStringList arguments; - arguments << fullPathFilenameNewScript; - - QProcess* myProcess = new QProcess( this ); - myProcess->start( scriptEditor, arguments ); - - if ( !myProcess->waitForStarted( 1000 ) ) - { - RiaLogging::errorInMessageBox( Riu3DMainWindowTools::mainWindowWidget(), - "Script editor", - "Failed to start script editor executable\n" + scriptEditor ); - } - } + RicOpenInTextEditorFeature::openFileInTextEditor( fullPathFilenameNewScript, this ); } } diff --git a/ApplicationLibCode/Commands/OctaveScriptCommands/RicNewPythonScriptFeature.cpp b/ApplicationLibCode/Commands/OctaveScriptCommands/RicNewPythonScriptFeature.cpp index f1d75cf5f7..fe06f4cca5 100644 --- a/ApplicationLibCode/Commands/OctaveScriptCommands/RicNewPythonScriptFeature.cpp +++ b/ApplicationLibCode/Commands/OctaveScriptCommands/RicNewPythonScriptFeature.cpp @@ -23,6 +23,7 @@ #include "RiaLogging.h" #include "RiaPreferences.h" +#include "ApplicationCommands/RicOpenInTextEditorFeature.h" #include "RicRefreshScriptsFeature.h" #include "RicScriptFeatureImpl.h" @@ -125,23 +126,7 @@ void RicNewPythonScriptFeature::onActionTriggered( bool isChecked ) Riu3DMainWindowTools::selectAsCurrentItem( calcScript ); } - RiaApplication* app = RiaApplication::instance(); - QString scriptEditor = app->scriptEditorPath(); - if ( !scriptEditor.isEmpty() ) - { - QStringList arguments; - arguments << fullPathFilenameNewScript; - - QProcess* myProcess = new QProcess( this ); - myProcess->start( scriptEditor, arguments ); - - if ( !myProcess->waitForStarted( 1000 ) ) - { - RiaLogging::errorInMessageBox( Riu3DMainWindowTools::mainWindowWidget(), - "Script editor", - "Failed to start script editor executable\n" + scriptEditor ); - } - } + RicOpenInTextEditorFeature::openFileInTextEditor( fullPathFilenameNewScript, this ); } } diff --git a/ApplicationLibCode/Commands/PlotTemplateCommands/CMakeLists_files.cmake b/ApplicationLibCode/Commands/PlotTemplateCommands/CMakeLists_files.cmake index 667b6c1e0d..9293f3529a 100644 --- a/ApplicationLibCode/Commands/PlotTemplateCommands/CMakeLists_files.cmake +++ b/ApplicationLibCode/Commands/PlotTemplateCommands/CMakeLists_files.cmake @@ -7,7 +7,6 @@ set(SOURCE_GROUP_HEADER_FILES ${CMAKE_CURRENT_LIST_DIR}/RicSaveMultiPlotTemplateFeatureSettings.h ${CMAKE_CURRENT_LIST_DIR}/RicCreateMultiPlotFromSelectionFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicRenamePlotTemplateFeature.h - ${CMAKE_CURRENT_LIST_DIR}/RicEditPlotTemplateFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicDeletePlotTemplateFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicSetAsDefaultTemplateFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicCreateNewPlotFromTemplateFeature.h @@ -23,7 +22,6 @@ set(SOURCE_GROUP_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/RicSaveMultiPlotTemplateFeatureSettings.cpp ${CMAKE_CURRENT_LIST_DIR}/RicCreateMultiPlotFromSelectionFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicRenamePlotTemplateFeature.cpp - ${CMAKE_CURRENT_LIST_DIR}/RicEditPlotTemplateFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicDeletePlotTemplateFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicSetAsDefaultTemplateFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicCreateNewPlotFromTemplateFeature.cpp diff --git a/ApplicationLibCode/ProjectDataModel/RimContextCommandBuilder.cpp b/ApplicationLibCode/ProjectDataModel/RimContextCommandBuilder.cpp index 0b2365085d..1bc768fff3 100644 --- a/ApplicationLibCode/ProjectDataModel/RimContextCommandBuilder.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimContextCommandBuilder.cpp @@ -1036,7 +1036,7 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection() menuBuilder << "Separator"; menuBuilder << "RicRenamePlotTemplateFeature"; menuBuilder << "RicDeletePlotTemplateFeature"; - menuBuilder << "RicEditPlotTemplateFeature"; + menuBuilder << "RicOpenInTextEditorFeature"; menuBuilder << "Separator"; menuBuilder << "RicSetAsDefaultTemplateFeature"; menuBuilder << "Separator"; diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogRftCurve.cpp b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogRftCurve.cpp index c1354cc3ae..6f3a67b21d 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogRftCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogRftCurve.cpp @@ -45,6 +45,7 @@ #include "RimEclipseResultCase.h" #include "RimMainPlotCollection.h" #include "RimObservedFmuRftData.h" +#include "RimPressureDepthData.h" #include "RimProject.h" #include "RimRftTools.h" #include "RimSummaryCase.h" diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogRftCurve.h b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogRftCurve.h index b5780210f6..3a9da8bfc8 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogRftCurve.h +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogRftCurve.h @@ -18,7 +18,6 @@ #pragma once -#include "RimPressureDepthData.h" #include "RimWellLogCurve.h" #include "RifEclipseRftAddress.h"