/* * 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; class BrowserInterface { public: virtual Configuration *getConfiguration() const = 0; virtual QPair loadProfile(const QString &id) = 0; virtual const QVector profiles() const = 0; }; 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; void setBrowserInterface(BrowserInterface *browser) { this->browser = browser; } protected: BrowserInterface *browser = nullptr; }; #define PluginInterfaceIid "net.iserlohn-fortress.smolbote.PluginInterface" Q_DECLARE_INTERFACE(PluginInterface, PluginInterfaceIid) #endif // SMOLBOTE_PLUGIN_INTERFACES_H