diff --git a/ApplicationCode/Application/RiaPreferences.cpp b/ApplicationCode/Application/RiaPreferences.cpp index 9a29da1777..3e4a99cd75 100644 --- a/ApplicationCode/Application/RiaPreferences.cpp +++ b/ApplicationCode/Application/RiaPreferences.cpp @@ -105,6 +105,7 @@ RiaPreferences::RiaPreferences(void) CAF_PDM_InitField(&pythonExecutable, "pythonExecutable", QString("python"), "Python Executable Location", "", "", ""); pythonExecutable.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); pythonExecutable.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP); + CAF_PDM_InitField(&showPythonDebugInfo, "pythonDebugInfo", false, "Show Python Debug Info", "", "", ""); CAF_PDM_InitField(&ssihubAddress, "ssihubAddress", QString("http://"), "SSIHUB Address", "", "", ""); ssihubAddress.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP); @@ -318,8 +319,9 @@ void RiaPreferences::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& #ifdef ENABLE_GRPC caf::PdmUiGroup* pythonGroup = uiOrdering.addNewGroup("Python"); pythonGroup->add(&enableGrpcServer); + pythonGroup->add(&showPythonDebugInfo); pythonGroup->add(&defaultGrpcPortNumber); - pythonGroup->add(&pythonExecutable); + pythonGroup->add(&pythonExecutable); #endif caf::PdmUiGroup* scriptGroup = uiOrdering.addNewGroup("Script files"); scriptGroup->add(&scriptDirectories); diff --git a/ApplicationCode/Application/RiaPreferences.h b/ApplicationCode/Application/RiaPreferences.h index 08598df29b..67fb53af80 100644 --- a/ApplicationCode/Application/RiaPreferences.h +++ b/ApplicationCode/Application/RiaPreferences.h @@ -89,6 +89,7 @@ public: // Pdm Fields caf::PdmField octaveShowHeaderInfoWhenExecutingScripts; caf::PdmField pythonExecutable; + caf::PdmField showPythonDebugInfo; caf::PdmField ssihubAddress; diff --git a/ApplicationCode/Commands/OctaveScriptCommands/RicExecuteScriptFeature.cpp b/ApplicationCode/Commands/OctaveScriptCommands/RicExecuteScriptFeature.cpp index b01fb43976..83d49846ba 100644 --- a/ApplicationCode/Commands/OctaveScriptCommands/RicExecuteScriptFeature.cpp +++ b/ApplicationCode/Commands/OctaveScriptCommands/RicExecuteScriptFeature.cpp @@ -21,9 +21,12 @@ #include "RicScriptFeatureImpl.h" -#include "RimCalcScript.h" #include "RiaApplication.h" +#include "RiaLogging.h" +#include "RiaPreferences.h" +#include "RimCalcScript.h" #include "RiuMainWindow.h" +#include "RiuProcessMonitor.h" #include "cafSelectionManager.h" #include "cvfAssert.h" @@ -31,6 +34,8 @@ #include #include +#include + CAF_CMD_SOURCE_INIT(RicExecuteScriptFeature, "RicExecuteScriptFeature"); //-------------------------------------------------------------------------------------------------- @@ -71,7 +76,35 @@ void RicExecuteScriptFeature::onActionTriggered(bool isChecked) if (!pythonPath.isEmpty()) { QStringList arguments = RimCalcScript::createCommandLineArguments(calcScript->absoluteFileName()); - RiaApplication::instance()->launchProcess(pythonPath, arguments, app->pythonProcessEnvironment()); + QProcessEnvironment penv = app->pythonProcessEnvironment(); + + RiuProcessMonitor* processMonitor = RiuMainWindow::instance()->processMonitor(); + if (RiaApplication::instance()->preferences()->showPythonDebugInfo() && processMonitor) + { + QStringList debugInfo; + debugInfo << "----- Launching Python interpreter -----"; + debugInfo << "Python interpreter path: " + pythonPath; + debugInfo << "Using arguments: "; + for (QString argument : arguments) + { + debugInfo << "* " + argument; + } + QStringList envList = penv.toStringList(); + debugInfo << "Using environment: "; + for (QString envVariable : envList) + { + debugInfo << "* " + envVariable; + } + + debugInfo << "------------------------------------"; + + for (QString debugString : debugInfo) + { + std::cout << debugString.toStdString() << std::endl; + processMonitor->addStringToLog(debugString + "\n"); + } + } + RiaApplication::instance()->launchProcess(pythonPath, arguments, penv); } } }