void ScriptManager::unloadScriptEntity(const ScriptEntityInfo& entityInfo) { String entityPath = entityInfo.getPath(); unloadScript(entityPath + '/' + entityInfo.getMainScript().script); const ArrayList<ScriptEntityInfo::ScriptInfo>& otherScripts = entityInfo.getScripts(); for(int i=0; i<otherScripts.size(); i++) { unloadScript(entityPath + '/' + otherScripts.get(i).script); } }
LoadScriptList KWin::Scripting::queryScriptsToLoad() { KSharedConfig::Ptr _config = KSharedConfig::openConfig(); static bool s_started = false; if (s_started) { _config->reparseConfiguration(); } else { s_started = true; } QMap<QString,QString> pluginStates = KConfigGroup(_config, "Plugins").entryMap(); KService::List offers = KServiceTypeTrader::self()->query(QStringLiteral("KWin/Script")); LoadScriptList scriptsToLoad; foreach (const KService::Ptr & service, offers) { KPluginInfo plugininfo(service); const QString value = pluginStates.value(plugininfo.pluginName() + QString::fromLatin1("Enabled"), QString()); plugininfo.setPluginEnabled(value.isNull() ? plugininfo.isPluginEnabledByDefault() : QVariant(value).toBool()); const bool javaScript = service->property(QStringLiteral("X-Plasma-API")).toString() == QStringLiteral("javascript"); const bool declarativeScript = service->property(QStringLiteral("X-Plasma-API")).toString() == QStringLiteral("declarativescript"); if (!javaScript && !declarativeScript) { continue; } if (!plugininfo.isPluginEnabled()) { if (isScriptLoaded(plugininfo.pluginName())) { // unload the script unloadScript(plugininfo.pluginName()); } continue; } const QString pluginName = service->property(QStringLiteral("X-KDE-PluginInfo-Name")).toString(); const QString scriptName = service->property(QStringLiteral("X-Plasma-MainScript")).toString(); const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral(KWIN_NAME) + QStringLiteral("/scripts/") + pluginName + QStringLiteral("/contents/") + scriptName); if (file.isNull()) { qDebug() << "Could not find script file for " << pluginName; continue; } scriptsToLoad << qMakePair(javaScript, qMakePair(file, pluginName)); }