27 LINFO <<
"AmosePluginsManager::loadPlugins" << configDirs;
31 QStringList forbiddenPlugins;
32 QStringList alreadyLoaded;
37 if (configDirsList.isEmpty())
43 for(
auto it = configDirsList.begin(); it != configDirsList.end(); ++it)
46 QString stdPluginsDir(*it);
47 stdPluginsDir.append(
"/plugins");
48 QDir pluginsDir(stdPluginsDir);
49 LINFO <<
"AmosePluginsManager::loadPlugins in folder" << stdPluginsDir;
52 QStringList pluginsFiles = pluginsDir.entryList(QDir::Files);
53 Q_FOREACH(QString pluginsFile, pluginsFiles)
55 LINFO <<
"AmosePluginsManager::loadPlugins loading plugins file "
56 << pluginsDir.path()+
"/"+pluginsFile.toUtf8().data();
58 QFile file(pluginsDir.path() +
"/" + pluginsFile);
59 if (!file.open(QIODevice::ReadOnly))
62 LERROR <<
"AmosePluginsManager::loadPlugins: cannot open plugins file "
63 << pluginsFile.toUtf8().data();
64 std::cerr <<
"AmosePluginsManager::loadPlugins: cannot open plugins file "
65 << pluginsFile.toUtf8().data();
73 QString line = QString(file.readLine()).trimmed();
76 if ( !line.isEmpty() && !line.startsWith(
'#')
77 && !forbiddenPlugins.contains(line)
78 && !alreadyLoaded.contains(line)
81 LDEBUG <<
"AmosePluginsManager::loadPlugins loading plugin '" << line.toStdString().c_str() <<
"'";
83 if (!DynamicLibrariesManager::changeable().loadLibrary(line.toStdString().c_str()))
85 LERROR <<
"AmosePluginsManager::loadLibrary(\""
86 << line.toStdString() <<
"\") failed while handling"
87 << (pluginsDir.path() +
"/" + pluginsFile) <<
".";
88 std::cerr <<
"AmosePluginsManager::loadLibrary(\""
89 << line.toStdString() <<
"\") failed while handling"
90 << (pluginsDir.path() +
"/" + pluginsFile).toStdString() <<
".";
95 alreadyLoaded << line;
98 else if (alreadyLoaded.contains(line))
100 LDEBUG <<
"AmosePluginsManager::loadLibrary plugin" << line
101 <<
"was alreadyLoaded in another plugins dir. Plugins file:"
102 << pluginsDir.path() +
"/" + pluginsFile;
104 else if (forbiddenPlugins.contains(line))
106 LDEBUG <<
"AmosePluginsManager::loadLibrary plugin" << line
107 <<
"was set to be forbidden in anothe plugins dir. Plugins file:"
108 << pluginsDir.path() +
"/" + pluginsFile;
110 else if (line.startsWith(
'#'))
113 LDEBUG <<
"AmosePluginsManager::loadLibrary plugin" << line
114 <<
"forbidden from now on. Plugins file:"
115 << pluginsDir.path() +
"/" + pluginsFile;
116 forbiddenPlugins << line;