//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimUiTreeModelPdm::slotRefreshScriptTree(QString path) { RimProject* proj = RIApplication::instance()->project(); if (!proj || !proj->scriptCollection()) return; RimScriptCollection* changedSColl = proj->scriptCollection()->findScriptCollection(path); if (changedSColl) { changedSColl->readContentFromDisc(); this->rebuildUiSubTree(changedSColl); } }
//-------------------------------------------------------------------------------------------------- /// Support list of multiple script paths divided by ';' //-------------------------------------------------------------------------------------------------- void RimProject::setScriptDirectories(const QString& scriptDirectories) { scriptCollection->calcScripts().deleteAllChildObjects(); scriptCollection->subDirectories().deleteAllChildObjects(); QStringList pathList = scriptDirectories.split(';'); foreach(QString path, pathList) { QDir dir(path); if (!path.isEmpty() && dir.exists() && dir.isReadable()) { RimScriptCollection* sharedScriptLocation = new RimScriptCollection; sharedScriptLocation->directory = path; sharedScriptLocation->setUiName(dir.dirName()); sharedScriptLocation->readContentFromDisc(); scriptCollection->subDirectories.push_back(sharedScriptLocation); } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimScriptCollection::readContentFromDisc() { calcScripts.deleteAllChildObjects(); if (directory().isEmpty()) { for (size_t i = 0; i < subDirectories.size(); ++i) { if (subDirectories[i]) subDirectories[i]->readContentFromDisc(); } return; } QDir myDir(this->directory()); if (!myDir.isReadable()) { return; } // Build a list of all scripts in the specified directory { QString filter = "*.m"; QStringList fileList = caf::Utils::getFilesInDirectory(directory, filter, true); int i; for (i = 0; i < fileList.size(); i++) { QString fileName = fileList.at(i); QFileInfo fi(fileName); if (fi.exists()) { RimCalcScript* calcScript = new RimCalcScript; calcScript->absolutePath = fileName; calcScript->setUiName(fi.baseName()); calcScripts.push_back(calcScript); } } } // Add subfolders { QDir dir(directory); QFileInfoList fileInfoList = dir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Readable); subDirectories.deleteAllChildObjects(); QStringList retFileNames; QListIterator<QFileInfo> it(fileInfoList); while (it.hasNext()) { QFileInfo fi = it.next(); RimScriptCollection* scriptLocation = new RimScriptCollection; scriptLocation->directory = fi.absoluteFilePath(); scriptLocation->setUiName(fi.baseName()); scriptLocation->readContentFromDisc(); subDirectories.push_back(scriptLocation); } } }