diff options
Diffstat (limited to 'kradio3/src/include/plugins.h')
-rw-r--r-- | kradio3/src/include/plugins.h | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/kradio3/src/include/plugins.h b/kradio3/src/include/plugins.h deleted file mode 100644 index 426ff99..0000000 --- a/kradio3/src/include/plugins.h +++ /dev/null @@ -1,192 +0,0 @@ -/*************************************************************************** - plugins.h - description - ------------------- - begin : Mon Mär 10 2003 - copyright : (C) 2003 by Martin Witte - email : witte@kawo1.rwth-aachen.de - ***************************************************************************/ - -/*************************************************************************** - * * - * 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. * - * * - ***************************************************************************/ - -///////////////////////////////////////////////////////////////////////////// - -#ifndef KRADIO_PLUGINS_INTERFACES_H -#define KRADIO_PLUGINS_INTERFACES_H - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <kglobal.h> - -#include "errorlog-interfaces.h" -#include <tqstring.h> -#include <tqobject.h> -#include <tqptrlist.h> - -class PluginManager; -class PluginBase; -class TQWidget; -class TDEConfig; - -typedef TQPtrList<PluginBase> PluginList; -typedef TQPtrListIterator<PluginBase> PluginIterator; - -/* PluginBase must be inherited from Interface so that a plugin can be used - in Interface::connect functions. - - PluginBase must not be inherited from TQObject, because derived classes may - be inherited e.g. from TQWidget (multiple inheritance is not possible with - OBjects). But we must be able to receive destroy messages e.g. from - configuration pages. Thus we need the special callback member - m_destroyNotifier. - - PluginBase is derived from Interface to provide connection facilities. - In case of multiple inheritance from interface classes, connect and disconnect - methods have to be reimplemented in order to call all inherited - connect/disconnect methods. - -*/ - - -class WidgetPluginBase; - -struct ConfigPageInfo -{ - ConfigPageInfo () : page(NULL) {} - ConfigPageInfo (TQWidget *p, - const TQString &in, - const TQString &ph, - const TQString &icon) - : page (p), - itemName(in), - pageHeader(ph), - iconName(icon) - {} - - TQWidget *page; - TQString itemName, - pageHeader, - iconName; -}; - -typedef ConfigPageInfo AboutPageInfo; - - -class PluginBase : public IErrorLogClient -{ -friend class PluginManager; -public : - PluginBase(const TQString &name, const TQString &description); - virtual ~PluginBase(); - - virtual TQString pluginClassName() const = 0; - - const TQString &name() const { return m_name; } - TQString &name() { return m_name; } - - const TQString &description() const { return m_description; } - - // workaround for compiler bugs - bool destructorCalled() const { return m_destructorCalled; } - - // interaction with pluginmanager -protected: - bool setManager (PluginManager *); - void unsetManager (); - bool isManagerSet () const; - -public: - - // these two methods will request a configuration page or - // plugin page from plugin manager - // they will be deleted automatically when this plugin - // is deleted, because we disconnect from pluginmanager - // and the plugin manager will delete all associated gui elements - virtual ConfigPageInfo createConfigurationPage () = 0; - virtual AboutPageInfo createAboutPage () = 0; - - // save/restore status, window position, etc... - - virtual void saveState (TDEConfig *) const = 0; - virtual void restoreState (TDEConfig *) = 0; - virtual void startPlugin(); - - virtual void aboutToQuit(); - - // - - virtual void noticeWidgetPluginShown(WidgetPluginBase *, bool /*shown*/) {} - virtual void noticePluginsChanged(const PluginList &) {} - -protected : - TQString m_name; - TQString m_description; - PluginManager *m_manager; - bool m_destructorCalled; -}; - - -#define PLUGIN_LIBRARY_FUNCTIONS(class_name, i18nName, description) \ -extern "C" void TDERadioPlugin_LoadLibrary() \ -{ \ - TDEGlobal::locale()->insertCatalogue(i18nName); \ -} \ - \ -extern "C" void TDERadioPlugin_UnloadLibrary() \ -{ \ - TDEGlobal::locale()->removeCatalogue(i18nName); \ -} \ - \ -extern "C" void TDERadioPlugin_GetAvailablePlugins(TQMap<TQString, TQString> &info) \ -{ \ - info.insert(#class_name, (description)); \ -} \ - \ -extern "C" PluginBase *TDERadioPlugin_CreatePlugin(const TQString &type, const TQString &object_name) \ -{ \ - if (type == #class_name) { \ - return new class_name(object_name); \ - } else { \ - return NULL; \ - } \ -} - - -#define PLUGIN_LIBRARY_FUNCTIONS2(class_name1, i18nName, description1, class_name2, description2) \ -extern "C" void TDERadioPlugin_LoadLibrary() \ -{ \ - TDEGlobal::locale()->insertCatalogue(i18nName); \ -} \ - \ -extern "C" void TDERadioPlugin_UnloadLibrary() \ -{ \ - TDEGlobal::locale()->removeCatalogue(i18nName); \ -} \ - \ -extern "C" void TDERadioPlugin_GetAvailablePlugins(TQMap<TQString, TQString> &info) \ -{ \ - info.insert(#class_name1, (description1)); \ - info.insert(#class_name2, (description2)); \ -} \ - \ -extern "C" PluginBase *TDERadioPlugin_CreatePlugin(const TQString &type, const TQString &object_name) \ -{ \ - if (type == #class_name1) { \ - return new class_name1(object_name); \ - } else if (type == #class_name2) { \ - return new class_name2(object_name); \ - } else { \ - return NULL; \ - } \ -} - - -#endif |