Home

Dokumentation

Impressum

Dokumentation VDR
 

Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

plugin.h

Go to the documentation of this file.
00001 
00010 #ifndef __PLUGIN_H
00011 #define __PLUGIN_H
00012 
00013 #include "i18n.h"
00014 #include "menuitems.h"
00015 #include "osd.h"
00016 #include "tools.h"
00017 
00018 #define VDRPLUGINCREATOR(PluginClass) extern "C" void *VDRPluginCreator(void) { return new PluginClass; }
00019 
00021 class cPlugin {
00022   friend class cDll;
00023 private:
00024   static char *configDirectory;
00025   const char *name;
00026   void SetName(const char *s);
00027 public:
00028   cPlugin(void);
00029   virtual ~cPlugin();
00030 
00031   const char *Name(void) { return name; }
00032   virtual const char *Version(void) = 0;
00033   virtual const char *Description(void) = 0;
00034   virtual const char *CommandLineHelp(void);
00035 
00036   virtual bool ProcessArgs(int argc, char *argv[]);
00037   virtual bool Start(void);
00038   virtual void Housekeeping(void);
00039 
00040   virtual const char *MainMenuEntry(void);
00041   virtual cOsdObject *MainMenuAction(void);
00042 
00043   virtual cMenuSetupPage *SetupMenu(void);
00044   virtual bool SetupParse(const char *Name, const char *Value);
00045   void SetupStore(const char *Name, const char *Value = NULL);
00046   void SetupStore(const char *Name, int Value);
00047 
00048   void RegisterI18n(const tI18nPhrase * const Phrases);
00049 
00050   static void SetConfigDirectory(const char *Dir);
00051   static const char *ConfigDirectory(const char *PluginName = NULL);
00052   };
00053 
00055 class cDll : public cListObject {
00056 private:
00057   char *fileName;
00058   char *args;
00059   void *handle;
00060   cPlugin *plugin;
00061 public:
00062   cDll(const char *FileName, const char *Args);
00063   virtual ~cDll();
00064   bool Load(bool Log = false);
00065   cPlugin *Plugin(void) { return plugin; }
00066   };
00067 
00069 class cDlls : public cList<cDll> {};
00070 
00072 class cPluginManager {
00073 private:
00074   static cPluginManager *pluginManager;
00075   char *directory;
00076   time_t lastHousekeeping;
00077   int nextHousekeeping;
00078   cDlls dlls;
00079 public:
00080   cPluginManager(const char *Directory);
00081   virtual ~cPluginManager();
00082   void SetDirectory(const char *Directory);
00083   void AddPlugin(const char *Args);
00084   bool LoadPlugins(bool Log = false);
00085   bool StartPlugins(void);
00086   void Housekeeping(void);
00087   static bool HasPlugins(void);
00088   static cPlugin *GetPlugin(int Index);
00089   static cPlugin *GetPlugin(const char *Name);
00090   void Shutdown(bool Log = false);
00091   };
00092 
00093 #endif //__PLUGIN_H
00094 

Generated on Wed Feb 5 23:30:11 2003 for VDR by doxygen1.3-rc2