1 #include "SalomeApprc_utils.h"
3 void UpdateCompInfo_with_salomeappdir(const QDir& salomeappdir, SUIT_ResourceMgr* ResMgr)
5 // Remove module list and module_root_dirs list
6 ResMgr->remove("launch", "user_modules");
7 ResMgr->remove("user_modules");
9 QFileInfoList salomexd_list = salomeappdir.entryInfoList(QStringList() << "*.salomexd",QDir::Files);
10 foreach(QFileInfo filename, salomexd_list)
12 QFile file( filename.filePath() );
13 if ( !file.open( QFile::ReadOnly ) )
15 qWarning() << "file " << filename.fileName() << " is not accessible";
19 QJsonDocument document = QJsonDocument::fromJson( file.readAll() );
20 if ( document.isNull() )
22 qWarning() << "invalid json file. Filename: " << filename.fileName();
25 QJsonObject salomexd_dict = document.object();
26 QJsonValue components = salomexd_dict.value( "components");
28 QString root(salomeappdir.path() + "/__SALOME_EXT__");
29 if ( components.isArray() )
31 // In the case that we have a list of components. We consider that all of them are GUI module
32 foreach ( auto comp, components.toArray())
34 AddGuiComponent(comp.toString(), root, ResMgr);
39 // In the case that we have a dict of several component group
40 QJsonObject compObj = components.toObject();
41 foreach ( QString key, compObj.keys() )
43 if ( QString::compare(key, ITERACTIVE_EXTCOMPONENT_KEY) == 0 )
45 foreach (auto comp, compObj.value(key).toArray() )
46 AddGuiComponent(comp.toString(), root, ResMgr);
53 void UpdateCompInfo_with_salomemodules(const QString& salomemodules, const QDir& salomeappdir, SUIT_ResourceMgr* ResMgr)
55 // Remove module list and module_root_dirs list
56 ResMgr->remove("launch", "user_modules");
57 ResMgr->remove("user_modules");
59 QRegularExpression sep(":|,");
60 QStringList components_list = salomemodules.split(sep,QString::SkipEmptyParts);
61 foreach (QString comp, components_list)
63 QString comp_root_dir = Qtx::getenv(comp + "_ROOT_DIR");
66 qWarning() << comp_root_dir;
67 if (comp_root_dir.isEmpty())
68 comp_root_dir = salomeappdir.path() + "/__SALOME_EXT__";
69 AddGuiComponent(comp, comp_root_dir, ResMgr);
73 void AddGuiComponent(const QString& comp, const QString& CompRoot, SUIT_ResourceMgr* ResMgr)
75 QStringList CompsResMgr = ResMgr->stringValue("launch", "user_modules").split(";", QString::SkipEmptyParts);
76 ResMgr->setValue( "user_modules", comp, CompRoot );
79 CompsResMgr.removeDuplicates();
80 ResMgr->setValue( "launch", "user_modules", CompsResMgr.join( ";" ) );