Salome HOME
fix conflict between stadard mode and salome_on_demand mode
[modules/gui.git] / src / SalomeApprc_utils / SalomeApprc_utils.cxx
1 #include "SalomeApprc_utils.h"
2
3 void UpdateCompInfo_with_salomeappdir(const QDir& salomeappdir, SUIT_ResourceMgr* ResMgr)
4 {
5         // Remove module list and  module_root_dirs list
6         ResMgr->remove("launch", "user_modules");
7         ResMgr->remove("user_modules");
8
9         QFileInfoList salomexd_list = salomeappdir.entryInfoList(QStringList() << "*.salomexd",QDir::Files);
10         foreach(QFileInfo filename, salomexd_list)
11     {
12                 QFile file( filename.filePath() );
13         if ( !file.open( QFile::ReadOnly ) )
14         {
15             qWarning() << "file " << filename.fileName() << " is not accessible";
16             continue;
17         }
18
19         QJsonDocument document = QJsonDocument::fromJson( file.readAll() );
20         if ( document.isNull() )
21         {
22             qWarning() << "invalid json file. Filename: " << filename.fileName();
23             continue;
24         }
25         QJsonObject salomexd_dict = document.object();
26         QJsonValue components = salomexd_dict.value( "components");
27
28                 QString root(salomeappdir.path() + "/__SALOME_EXT__");
29                 if ( components.isArray() )
30                 {
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())
33                         {
34                                 AddGuiComponent(comp.toString(), root, ResMgr);
35                         }
36                 }
37                 else
38                 {
39                         // In the case that we have a dict of several component group
40                         QJsonObject compObj = components.toObject();
41                         foreach ( QString key, compObj.keys() )
42                     {
43                                 if ( QString::compare(key, ITERACTIVE_EXTCOMPONENT_KEY) == 0 )
44                                 {
45                                         foreach (auto comp, compObj.value(key).toArray() )
46                                                 AddGuiComponent(comp.toString(), root, ResMgr);
47                                 }
48                         }
49                 }
50     }
51 }
52
53 void UpdateCompInfo_with_salomemodules(const QString& salomemodules, const QDir& salomeappdir, SUIT_ResourceMgr* ResMgr)
54 {
55         // Remove module list and  module_root_dirs list
56         ResMgr->remove("launch", "user_modules");
57         ResMgr->remove("user_modules");
58
59         QRegularExpression sep(":|,");
60         QStringList components_list = salomemodules.split(sep,QString::SkipEmptyParts);
61         foreach (QString comp, components_list)
62         {
63                 QString comp_root_dir = Qtx::getenv(comp + "_ROOT_DIR");
64
65                 qWarning() << comp;
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);
70         }
71
72 }
73 void AddGuiComponent(const QString& comp, const QString& CompRoot, SUIT_ResourceMgr* ResMgr)
74 {
75         QStringList CompsResMgr = ResMgr->stringValue("launch", "user_modules").split(";", QString::SkipEmptyParts);
76         ResMgr->setValue( "user_modules", comp, CompRoot );
77
78         CompsResMgr << comp;
79         CompsResMgr.removeDuplicates();
80     ResMgr->setValue( "launch", "user_modules", CompsResMgr.join( ";" ) );
81 }