Added support for setting multiple script directories

p4#: 21393
This commit is contained in:
Magne Sjaastad 2013-04-24 07:35:31 +02:00
parent 30ad1216b6
commit b3c30c1b21
6 changed files with 26 additions and 22 deletions

View File

@ -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());
}

View File

@ -109,7 +109,7 @@ public:
bool showPerformanceInfo() const;
RINavigationPolicy navigationPolicy() const;
QString scriptDirectory() const;
QString scriptDirectories() const;
QString scriptEditorPath() const;
QString octavePath() const;

View File

@ -28,8 +28,8 @@ RiaPreferences::RiaPreferences(void)
{
CAF_PDM_InitField(&navigationPolicy, "navigationPolicy", caf::AppEnum<RiaApplication::RINavigationPolicy>(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<caf::PdmUiFilePathEditorAttribute*>(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);

View File

@ -34,7 +34,7 @@ public:
public: // Pdm Fields
caf::PdmField<caf::AppEnum< RiaApplication::RINavigationPolicy > > navigationPolicy;
caf::PdmField<QString> scriptDirectory;
caf::PdmField<QString> scriptDirectories;
caf::PdmField<QString> scriptEditorExecutable;
caf::PdmField<QString> octaveExecutable;

View File

@ -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);
}
}
}

View File

@ -39,7 +39,7 @@ public:
caf::PdmField<RimScriptCollection*> scriptCollection;
caf::PdmField<QString> treeViewState;
void setUserScriptPath(const QString& path);
void setScriptDirectories(const QString& scriptDirectories);
QString projectFileVersionString() const;