diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2002-05-09 16:26:56 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2002-05-09 16:26:56 +0200 |
commit | b527b2770868bccde05ad47393951fde5d51f79a (patch) | |
tree | c939c1b42f0be0840d7cdbfc61af4c182a955cbf /plugin.h | |
parent | bf4a5a678d56f3fca45110f1536ce2c3c8f3b816 (diff) | |
download | vdr-1.1.0.tar.gz vdr-1.1.0.tar.bz2 |
Implemented plugin interface1.1.0
Diffstat (limited to 'plugin.h')
-rw-r--r-- | plugin.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/plugin.h b/plugin.h new file mode 100644 index 00000000..99f330d4 --- /dev/null +++ b/plugin.h @@ -0,0 +1,81 @@ +/* + * plugin.h: The VDR plugin interface + * + * See the main source file 'vdr.c' for copyright information and + * how to reach the author. + * + * $Id: plugin.h 1.1 2002/05/09 10:16:09 kls Exp $ + */ + +#ifndef __PLUGIN_H +#define __PLUGIN_H + +#include "i18n.h" +#include "menuitems.h" +#include "osd.h" +#include "tools.h" + +#define VDRPLUGINCREATOR(PluginClass) extern "C" void *VDRPluginCreator(void) { return new PluginClass; } + +class cPlugin { + friend class cDll; +private: + const char *name; + void SetName(const char *s); +public: + cPlugin(void); + virtual ~cPlugin(); + + const char *Name(void) { return name; } + virtual const char *Version(void) = 0; + virtual const char *Description(void) = 0; + virtual const char *CommandLineHelp(void); + + virtual bool ProcessArgs(int argc, char *argv[]); + virtual void Start(void); + + virtual const char *MainMenuEntry(void); + virtual cOsdMenu *MainMenuAction(void); + + virtual cMenuSetupPage *SetupMenu(void); + virtual bool SetupParse(const char *Name, const char *Value); + void SetupStore(const char *Name, const char *Value = NULL); + void SetupStore(const char *Name, int Value); + + void RegisterI18n(const tI18nPhrase * const Phrases); + }; + +class cDll : public cListObject { +private: + char *fileName; + char *args; + void *handle; + cPlugin *plugin; +public: + cDll(const char *FileName, const char *Args); + virtual ~cDll(); + bool Load(bool Log = false); + cPlugin *Plugin(void) { return plugin; } + }; + +class cDlls : public cList<cDll> {}; + +class cPluginManager { +private: + static cPluginManager *pluginManager; + char *directory; + cDlls dlls; +public: + cPluginManager(const char *Directory); + virtual ~cPluginManager(); + void SetDirectory(const char *Directory); + void AddPlugin(const char *Args); + bool LoadPlugins(bool Log = false); + void StartPlugins(void); + static bool HasPlugins(void); + static cPlugin *GetPlugin(int Index); + static cPlugin *GetPlugin(const char *Name); + void Shutdown(bool Log = false); + }; + +#endif //__PLUGIN_H |