405518c41d
Summary: as the plasmapkg2 utility is dead, scripts and tabboxes couldn't be installed anymore, as plasmapkg2 was launched with an hardcoded package type (and had a bunch of custom code for it) and no packagestructure for the relevant package types existed. the port of scripts and tabboxes to kpackage in kwin is quite incomplete and somewhat strange (given the fact that was started by looking manually for the file as it couldn't link to libplasma) this makes things a bit better as now scripts and tabboxes have an actual package structure, making it installable by kpackagetool5. in the future, the port should be completed and replace all the manual lookup of files with package::filePath as it should work now given that valid structures exist BUG:374766 Test Plan: tabbox plugins and kwin scripts can be installed from knewstuff again and can be successfully loaded Reviewers: #plasma, graesslin, subdiff Reviewed By: #plasma, graesslin Subscribers: graesslin, plasma-devel, kwin, #kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D4202
62 lines
2.7 KiB
C++
62 lines
2.7 KiB
C++
/******************************************************************************
|
|
* Copyright 2017 by Marco Martin <mart@kde.org> *
|
|
* *
|
|
* This library is free software; you can redistribute it and/or *
|
|
* modify it under the terms of the GNU Library General Public *
|
|
* License as published by the Free Software Foundation; either *
|
|
* version 2 of the License, or (at your option) any later version. *
|
|
* *
|
|
* This library is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
|
* Library General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU Library General Public License *
|
|
* along with this library; see the file COPYING.LIB. If not, write to *
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
|
|
* Boston, MA 02110-1301, USA. *
|
|
*******************************************************************************/
|
|
|
|
#include "scripts.h"
|
|
|
|
#include <KLocalizedString>
|
|
|
|
void ScriptsPackage::initPackage(KPackage::Package *package)
|
|
{
|
|
package->setDefaultPackageRoot(QStringLiteral("kwin/scripts/"));
|
|
|
|
package->addDirectoryDefinition("config", QStringLiteral("config"), i18n("Configuration Definitions"));
|
|
QStringList mimetypes;
|
|
mimetypes << QStringLiteral("text/xml");
|
|
package->setMimeTypes("config", mimetypes);
|
|
|
|
package->addDirectoryDefinition("ui", QStringLiteral("ui"), i18n("User Interface"));
|
|
|
|
package->addDirectoryDefinition("code", QStringLiteral("code"), i18n("Executable Scripts"));
|
|
|
|
package->addFileDefinition("mainscript", QStringLiteral("code/main.js"), i18n("Main Script File"));
|
|
package->setRequired("mainscript", true);
|
|
|
|
mimetypes.clear();
|
|
mimetypes << QStringLiteral("text/plain");
|
|
package->setMimeTypes("scripts", mimetypes);
|
|
}
|
|
|
|
void ScriptsPackage::pathChanged(KPackage::Package *package)
|
|
{
|
|
if (package->path().isEmpty()) {
|
|
return;
|
|
}
|
|
|
|
KPluginMetaData md(package->metadata().metaDataFileName());
|
|
QString mainScript = md.value("X-Plasma-MainScript");
|
|
|
|
if (!mainScript.isEmpty()) {
|
|
package->addFileDefinition("mainscript", mainScript, i18n("Main Script File"));
|
|
}
|
|
}
|
|
|
|
K_EXPORT_KPACKAGE_PACKAGE_WITH_JSON(ScriptsPackage, "kwin-packagestructure-scripts.json")
|
|
|
|
#include "scripts.moc"
|
|
|