From b3c30c1b2190feb34d3bd058905d3b2db252e2b2 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 24 Apr 2013 07:35:31 +0200 Subject: [PATCH] Added support for setting multiple script directories p4#: 21393 --- .../Application/RiaApplication.cpp | 6 ++--- ApplicationCode/Application/RiaApplication.h | 2 +- .../Application/RiaPreferences.cpp | 9 ++++--- ApplicationCode/Application/RiaPreferences.h | 2 +- .../ProjectDataModel/RimProject.cpp | 27 ++++++++++--------- ApplicationCode/ProjectDataModel/RimProject.h | 2 +- 6 files changed, 26 insertions(+), 22 deletions(-) diff --git a/ApplicationCode/Application/RiaApplication.cpp b/ApplicationCode/Application/RiaApplication.cpp index 67b1c04617..05ff7560e9 100644 --- a/ApplicationCode/Application/RiaApplication.cpp +++ b/ApplicationCode/Application/RiaApplication.cpp @@ -901,9 +901,9 @@ bool RiaApplication::parseArguments() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString RiaApplication::scriptDirectory() const +QString RiaApplication::scriptDirectories() const { - return m_preferences->scriptDirectory(); + return m_preferences->scriptDirectories(); } //-------------------------------------------------------------------------------------------------- @@ -1069,7 +1069,7 @@ void RiaApplication::applyPreferences() if (this->project()) { - this->project()->setUserScriptPath(m_preferences->scriptDirectory()); + this->project()->setScriptDirectories(m_preferences->scriptDirectories()); RimUiTreeModelPdm* treeModel = RiuMainWindow::instance()->uiPdmModel(); if (treeModel) treeModel->rebuildUiSubTree(this->project()->scriptCollection()); } diff --git a/ApplicationCode/Application/RiaApplication.h b/ApplicationCode/Application/RiaApplication.h index 3984724af0..48087fddd3 100644 --- a/ApplicationCode/Application/RiaApplication.h +++ b/ApplicationCode/Application/RiaApplication.h @@ -109,7 +109,7 @@ public: bool showPerformanceInfo() const; RINavigationPolicy navigationPolicy() const; - QString scriptDirectory() const; + QString scriptDirectories() const; QString scriptEditorPath() const; QString octavePath() const; diff --git a/ApplicationCode/Application/RiaPreferences.cpp b/ApplicationCode/Application/RiaPreferences.cpp index 703f72d630..91c79c87ac 100644 --- a/ApplicationCode/Application/RiaPreferences.cpp +++ b/ApplicationCode/Application/RiaPreferences.cpp @@ -28,8 +28,8 @@ RiaPreferences::RiaPreferences(void) { CAF_PDM_InitField(&navigationPolicy, "navigationPolicy", caf::AppEnum(RiaApplication::NAVIGATION_POLICY_CAD), "Navigation mode", "", "", ""); - CAF_PDM_InitFieldNoDefault(&scriptDirectory, "scriptDirectory", "Shared Script Folder", "", "", ""); - scriptDirectory.setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); + CAF_PDM_InitFieldNoDefault(&scriptDirectories, "scriptDirectory", "Shared Script Folder(s)", "", "", ""); + scriptDirectories.setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); CAF_PDM_InitField(&scriptEditorExecutable, "scriptEditorExecutable", QString("kate"), "Script Editor", "", "", ""); scriptEditorExecutable.setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); @@ -69,12 +69,13 @@ RiaPreferences::~RiaPreferences(void) //-------------------------------------------------------------------------------------------------- void RiaPreferences::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) { - if (field == &scriptDirectory) + if (field == &scriptDirectories) { caf::PdmUiFilePathEditorAttribute* myAttr = static_cast(attribute); if (myAttr) { myAttr->m_selectDirectory = true; + myAttr->m_appendUiSelectedFolderToText = true; } } } @@ -87,7 +88,7 @@ void RiaPreferences::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering.add(&navigationPolicy); caf::PdmUiGroup* scriptGroup = uiOrdering.addNewGroup("Script configuration"); - scriptGroup->add(&scriptDirectory); + scriptGroup->add(&scriptDirectories); scriptGroup->add(&scriptEditorExecutable); scriptGroup->add(&octaveExecutable); diff --git a/ApplicationCode/Application/RiaPreferences.h b/ApplicationCode/Application/RiaPreferences.h index f968f71156..098fa7d458 100644 --- a/ApplicationCode/Application/RiaPreferences.h +++ b/ApplicationCode/Application/RiaPreferences.h @@ -34,7 +34,7 @@ public: public: // Pdm Fields caf::PdmField > navigationPolicy; - caf::PdmField scriptDirectory; + caf::PdmField scriptDirectories; caf::PdmField scriptEditorExecutable; caf::PdmField octaveExecutable; diff --git a/ApplicationCode/ProjectDataModel/RimProject.cpp b/ApplicationCode/ProjectDataModel/RimProject.cpp index 011fb85e7b..77f6d0c9d0 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationCode/ProjectDataModel/RimProject.cpp @@ -86,9 +86,9 @@ void RimProject::initAfterRead() // TODO : Must store content of scripts in project file and notify user if stored content is different from disk on execute and edit // RiaApplication* app = RiaApplication::instance(); - QString scriptDirectory = app->scriptDirectory(); + QString scriptDirectories = app->scriptDirectories(); - this->setUserScriptPath(scriptDirectory); + this->setScriptDirectories(scriptDirectories); } @@ -101,24 +101,27 @@ void RimProject::setupBeforeSave() } //-------------------------------------------------------------------------------------------------- -/// +/// Support list of multiple script paths divided by ';' //-------------------------------------------------------------------------------------------------- -void RimProject::setUserScriptPath(const QString& scriptDirectory) +void RimProject::setScriptDirectories(const QString& scriptDirectories) { scriptCollection->calcScripts().deleteAllChildObjects(); scriptCollection->subDirectories().deleteAllChildObjects(); - - QDir dir(scriptDirectory); - if (!scriptDirectory.isEmpty() && dir.exists() && dir.isReadable()) + QStringList pathList = scriptDirectories.split(';'); + foreach(QString path, pathList) { - RimScriptCollection* sharedScriptLocation = new RimScriptCollection; - sharedScriptLocation->directory = scriptDirectory; - sharedScriptLocation->setUiName(dir.dirName()); + QDir dir(path); + if (!path.isEmpty() && dir.exists() && dir.isReadable()) + { + RimScriptCollection* sharedScriptLocation = new RimScriptCollection; + sharedScriptLocation->directory = path; + sharedScriptLocation->setUiName(dir.dirName()); - sharedScriptLocation->readContentFromDisc(); + sharedScriptLocation->readContentFromDisc(); - scriptCollection->subDirectories.push_back(sharedScriptLocation); + scriptCollection->subDirectories.push_back(sharedScriptLocation); + } } } diff --git a/ApplicationCode/ProjectDataModel/RimProject.h b/ApplicationCode/ProjectDataModel/RimProject.h index 6763277e79..af18f82f11 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.h +++ b/ApplicationCode/ProjectDataModel/RimProject.h @@ -39,7 +39,7 @@ public: caf::PdmField scriptCollection; caf::PdmField treeViewState; - void setUserScriptPath(const QString& path); + void setScriptDirectories(const QString& scriptDirectories); QString projectFileVersionString() const;