kwin/scripting/genericscriptedconfig.h
Martin Gräßlin 0c4aaaf4ad [scripting] Support loading translations for UI loaded configs
Scripts and scripted effects can provide a ui file which gets loaded at
runtime. Obviously such a ui file is not translated. This introduces
quite a hack to load the translated strings.

In the metadata.desktop file the scripted component can provide a key
X-KWin-Config-TranslationDomain. The genericscriptedconfig tries to
locate the metadata.desktop file and reads this entry. If it is present
we extract all string properties of the loaded UI and pass them through
ki18nd.

REVIEW: 118585
2014-06-10 15:49:19 +02:00

99 lines
2.7 KiB
C++

/*
* KWin - the KDE window manager
* This file is part of the KDE project.
*
* Copyright (C) 2013 Martin Gräßlin <mgraesslin@kde.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef KWIN_GENERICSCRIPTEDCONFIG_H
#define KWIN_GENERICSCRIPTEDCONFIG_H
#include <KCModule>
#include <KPluginFactory>
#include <KConfigGroup>
namespace KWin
{
class KLocalizedTranslator;
class GenericScriptedConfigFactory : public KPluginFactory
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.kde.KPluginFactory" FILE "genericscriptedconfig.json" )
Q_INTERFACES(KPluginFactory)
protected:
QObject *create(const char *iface, QWidget *parentWidget, QObject *parent, const QVariantList &args, const QString &keyword) override;
};
class GenericScriptedConfig : public KCModule
{
Q_OBJECT
public:
GenericScriptedConfig(const QString &componentName, const QString &keyword, QWidget *parent, const QVariantList &args);
virtual ~GenericScriptedConfig();
public Q_SLOTS:
virtual void save();
protected:
const QString &packageName() const;
void createUi();
virtual QString typeName() const = 0;
virtual KConfigGroup configGroup() = 0;
virtual void reload();
private:
QString m_packageName;
KLocalizedTranslator *m_translator;
};
class ScriptedEffectConfig : public GenericScriptedConfig
{
Q_OBJECT
public:
ScriptedEffectConfig(const QString &componentName, const QString &keyword, QWidget *parent, const QVariantList &args);
virtual ~ScriptedEffectConfig();
protected:
virtual QString typeName() const;
virtual KConfigGroup configGroup();
virtual void reload();
};
class ScriptingConfig : public GenericScriptedConfig
{
Q_OBJECT
public:
ScriptingConfig(const QString &componentName, const QString &keyword, QWidget *parent, const QVariantList &args);
virtual ~ScriptingConfig();
protected:
virtual QString typeName() const;
virtual KConfigGroup configGroup();
virtual void reload();
};
inline
const QString &GenericScriptedConfig::packageName() const
{
return m_packageName;
}
}
#endif // KWIN_GENERICSCRIPTEDCONFIG_H