diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2008-01-13 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2008-01-13 18:00:00 +0100 |
commit | fc4c8740a72e6c7cea5a001e19fdacb63c3cc538 (patch) | |
tree | 6ab0ae16b8d588e34d86f8a1a69c101ce8ba2809 /PLUGINS/src/pictures/pictures.c | |
parent | 29b2d48bb53df75f1cb978e72bc709a6658d6e5c (diff) | |
download | vdr-patch-lnbsharing-fc4c8740a72e6c7cea5a001e19fdacb63c3cc538.tar.gz vdr-patch-lnbsharing-fc4c8740a72e6c7cea5a001e19fdacb63c3cc538.tar.bz2 |
Version 1.5.13vdr-1.5.13
- Fixed the declaration of cSubtitleObject::Decode8BppCodeString() (thanks to
Gregoire Favre).
- The new setup option "Miscellaneous/Emergency exit" can be used to turn off
the automatic restart of VDR in case a recording fails for some reason.
- The kInfo key is now propagated to any open menu, so that it can react to it
in a context sensitive manner (suggested by Andreas Brugger). If there is
no menu open it will show the info of the current broadcast or replay.
- cTimeMs now uses the monotonic clock, if available (thanks to Petri Hintukainen).
- Fixed cVector::Clear() and cStringList::Clear().
- Added cString::Truncate().
- Fixed the "i18n:" target in the "newplugin" script, so that it can create the
initial *.pot file.
- Fixed handling the '-l' option.
- Fixed error handling in cCuttingThread::Action() (thanks to Udo Richter).
- Fixed a loss of the date display in the "classic" skin's main menu (reported by
Andreas Brugger).
- Added a missing setting of lastFreeMB in cMenuMain::Update() (reported by
Andreas Brugger).
- Added '-Wno-parentheses' to the compiler options in order to avoid silly compiler
warnings for expressions like 'a || b && c', where GCC 4.3 wants to force the
programmer to write 'a || (b && c)', while everybody knows that '&&' links
stronger than '||' (reported by Tobias Grimm).
- Updated the Hungarian language texts (thanks to István Füley).
- Fixed displaying weekday names in the Schedule menu if the system uses UTF-8
(reported by Jiri Dobry).
- The new plugin "pictures" implements a simple picture viewer.
See PLUGINS/src/pictures/README for details.
- The automatic shutdown is now suppressed if the remote control is currently
disabled (suggested by Helmut Auer, implemented by Udo Richter).
- Added a section about "Logging" to PLUGINS.html (suggested by Torsten Kunkel).
- Enhanced the SVDRP command CLRE to allow clearing the EPG data of a particular
channel (thanks to Benjamin Hess).
Diffstat (limited to 'PLUGINS/src/pictures/pictures.c')
-rw-r--r-- | PLUGINS/src/pictures/pictures.c | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/PLUGINS/src/pictures/pictures.c b/PLUGINS/src/pictures/pictures.c new file mode 100644 index 0000000..aa06c98 --- /dev/null +++ b/PLUGINS/src/pictures/pictures.c @@ -0,0 +1,124 @@ +/* + * pictures.c: A plugin for the Video Disk Recorder + * + * See the README file for copyright information and how to reach the author. + * + * $Id: pictures.c 1.1 2008/01/12 14:46:52 kls Exp $ + */ + +#include <getopt.h> +#include <vdr/plugin.h> +#include "menu.h" +#include "player.h" + +static const char *VERSION = "0.0.1"; +static const char *DESCRIPTION = trNOOP("A simple picture viewer"); +static const char *MAINMENUENTRY = trNOOP("Pictures"); + +// --- cMenuSetupPictures ---------------------------------------------------- + +class cMenuSetupPictures : public cMenuSetupPage { +private: + char newPictureDirectory[PATH_MAX]; + int newSlideShowDelay; +protected: + virtual void Store(void); +public: + cMenuSetupPictures(void); + }; + +cMenuSetupPictures::cMenuSetupPictures(void) +{ + strn0cpy(newPictureDirectory, PictureDirectory, sizeof(newPictureDirectory)); + newSlideShowDelay = SlideShowDelay; + Add(new cMenuEditStrItem(tr("Picture directory"), newPictureDirectory, sizeof(newPictureDirectory))); + Add(new cMenuEditIntItem(tr("Slide show delay (s)"), &newSlideShowDelay)); +} + +void cMenuSetupPictures::Store(void) +{ + SetupStore("PictureDirectory", strn0cpy(PictureDirectory, newPictureDirectory, sizeof(PictureDirectory))); + SetupStore("SlideShowDelay", SlideShowDelay = newSlideShowDelay); +} + +// --- cPluginPictures ------------------------------------------------------- + +class cPluginPictures : public cPlugin { +private: + // Add any member variables or functions you may need here. +public: + cPluginPictures(void); + virtual ~cPluginPictures(); + 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 const char *MainMenuEntry(void) { return tr(MAINMENUENTRY); } + virtual cOsdObject *MainMenuAction(void); + virtual cMenuSetupPage *SetupMenu(void); + virtual bool SetupParse(const char *Name, const char *Value); + }; + +cPluginPictures::cPluginPictures(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! +} + +cPluginPictures::~cPluginPictures() +{ + // Clean up after yourself! +} + +const char *cPluginPictures::CommandLineHelp(void) +{ + // Return a string that describes all known command line options. + return " -d DIR, --dir=DIR set the picture directory to DIR\n"; +} + +bool cPluginPictures::ProcessArgs(int argc, char *argv[]) +{ + // Implement command line argument processing here if applicable. + static struct option long_options[] = { + { "dir", required_argument, NULL, 'd' }, + { NULL } + }; + + int c; + while ((c = getopt_long(argc, argv, "d:s:", long_options, NULL)) != -1) { + switch (c) { + case 'd': strn0cpy(PictureDirectory, optarg, sizeof(PictureDirectory)); + break; + default: return false; + } + } + return true; +} + +cOsdObject *cPluginPictures::MainMenuAction(void) +{ + // Perform the action when selected from the main VDR menu. + if (*PictureDirectory) + return cPictureMenu::CreatePictureMenu(); + Skins.Message(mtWarning, tr("No picture directory has been defined!")); + return NULL; +} + +cMenuSetupPage *cPluginPictures::SetupMenu(void) +{ + // Return a setup menu in case the plugin supports one. + return new cMenuSetupPictures; +} + +bool cPluginPictures::SetupParse(const char *Name, const char *Value) +{ + // Parse your own setup parameters and store their values. + if (!strcasecmp(Name, "PictureDirectory")) strn0cpy(PictureDirectory, Value, sizeof(PictureDirectory)); + else if (!strcasecmp(Name, "SlideShowDelay")) SlideShowDelay = atoi(Value); + else + return false; + return true; +} + +VDRPLUGINCREATOR(cPluginPictures); // Don't touch this! |