summaryrefslogtreecommitdiff
path: root/plugin.h
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2002-05-09 16:26:56 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2002-05-09 16:26:56 +0200
commitb527b2770868bccde05ad47393951fde5d51f79a (patch)
treec939c1b42f0be0840d7cdbfc61af4c182a955cbf /plugin.h
parentbf4a5a678d56f3fca45110f1536ce2c3c8f3b816 (diff)
downloadvdr-b527b2770868bccde05ad47393951fde5d51f79a.tar.gz
vdr-b527b2770868bccde05ad47393951fde5d51f79a.tar.bz2
Implemented plugin interface1.1.0
Diffstat (limited to 'plugin.h')
-rw-r--r--plugin.h81
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