/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: MIT */ #ifndef SMOLBOTE_PLUGIN_INTERFACES_H #define SMOLBOTE_PLUGIN_INTERFACES_H #include #include #include #include class QString; class QAction; class QDialog; class WebProfile; class Configuration; struct Plugin { QString name; QString author; QKeySequence shortcut; QObject *instance; }; typedef QHash> CommandHash_t; class PluginInterface { public: virtual ~PluginInterface() = default; virtual CommandHash_t commands() = 0; virtual QDialog *createWidget(QWidget *parent = nullptr) = 0; }; class ProfileInterface { public: virtual ~ProfileInterface() = default; virtual void registerProfile(WebProfile *profile) = 0; }; class ConfigurationInterface { public: virtual ~ConfigurationInterface() = default; virtual void setConfiguration(Configuration *cfg) = 0; }; #define PluginInterfaceIid "net.iserlohn-fortress.smolbote.PluginInterface" Q_DECLARE_INTERFACE(PluginInterface, PluginInterfaceIid) #define ProfileInterfaceIid "net.iserlohn-fortress.smolbote.ProfileInterface" Q_DECLARE_INTERFACE(ProfileInterface, ProfileInterfaceIid) #define ConfigurationInterfaceIid "net.iserlohn-fortress.smolbote.ConfigurationInterface" Q_DECLARE_INTERFACE(ConfigurationInterface, ConfigurationInterfaceIid) #endif // SMOLBOTE_PLUGIN_INTERFACES_H