diff options
Diffstat (limited to 'mousemate.c')
-rw-r--r-- | mousemate.c | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/mousemate.c b/mousemate.c new file mode 100644 index 0000000..daad1da --- /dev/null +++ b/mousemate.c @@ -0,0 +1,137 @@ +/* + * mousemate plugin for VDR + * + * mousemate.c - main plugin class + * + * + * This code is distributed under the terms and conditions of the + * GNU GENERAL PUBLIC LICENSE. See the file COPYING for details. + */ + +#include <getopt.h> +#include <vdr/plugin.h> + +#include "MouseMate.h" +#include "setup.h" + + +static const char *VERSION = "0.1.6"; +static const char *DESCRIPTION = trNOOP("Controls VDR via a mouse"); +static const char *MAINMENUENTRY = NULL; + +class cPluginMousemate : public cPlugin +{ + private: + // Add any member variables or functions you may need here. + public: + cPluginMousemate(void); + virtual ~cPluginMousemate(); + virtual const char *Version(void) { return VERSION; } + virtual const char *Description(void) { return tr(DESCRIPTION); } + virtual const char *CommandLineHelp(void); + virtual bool ProcessArgs(int argc, char *argv[]); + virtual bool Initialize(void); + virtual bool Start(void); + virtual void Housekeeping(void); + virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; } + virtual cOsdObject *MainMenuAction(void); + virtual cMenuSetupPage *SetupMenu(void); + virtual bool SetupParse(const char *Name, const char *Value); +}; + +cPluginMousemate::cPluginMousemate(void) +{ + // Initialize any member variables here. + // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL + // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! +} + + +cPluginMousemate::~cPluginMousemate() +{ + // Clean up after yourself! + delete MouseMate; +} + + +const char *cPluginMousemate::CommandLineHelp(void) +{ + // Return a string that describes all known command line options. + return " -d DEV, --device=DEV use DEV as mouse device (default /dev/input/event1)\n" + " -c DEV, --cdevice=DEV use DEV as console device (default /dev/input/event0)\n"; +} + + +bool cPluginMousemate::ProcessArgs(int argc, char *argv[]) +{ + // Implement command line argument processing here if applicable. + static struct option long_options[] = + { + { "device", required_argument, NULL, 'd' }, + { "cdevice", required_argument, NULL, 'c' }, + { NULL } + }; + int c; + + strcpy(MouseMateSetup.device, "/dev/input/event1"); + strcpy(MouseMateSetup.cdevice, "/dev/input/event0"); + while ((c = getopt_long(argc, argv, "d:c:", long_options, NULL)) != -1) + { + switch (c) + { + case 'd': + strcpy(MouseMateSetup.device, optarg); + break; + case 'c': + strcpy(MouseMateSetup.cdevice, optarg); + break; + default: + return false; + } + } + return true; +} + + +bool cPluginMousemate::Initialize(void) +{ + // Initialize any background activities the plugin shall perform. + return true; +} + + +bool cPluginMousemate::Start(void) +{ + // Start any background activities the plugin shall perform. + MouseMate = new cMouseMate(); + return true; +} + + +void cPluginMousemate::Housekeeping(void) +{ + // Perform any cleanup or other regular tasks. +} + + +cOsdObject *cPluginMousemate::MainMenuAction(void) +{ + // Perform the action when selected from the main VDR menu. + return NULL; +} + + +cMenuSetupPage *cPluginMousemate::SetupMenu(void) +{ + // Return a setup menu in case the plugin supports one. + return new cMouseMateSetupPage(); +} + + +bool cPluginMousemate::SetupParse(const char *Name, const char *Value) +{ + return MouseMateSetup.Parse(Name, Value); +} + + +VDRPLUGINCREATOR(cPluginMousemate); // Don't touch this! |