mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.7.30
VDR developer version 1.7.30 is now available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.30.tar.bz2 A 'diff' against the previous version is available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.29-1.7.30.diff MD5 checksums: c6d75f2962bc3e22d9313c0ee4fa113a vdr-1.7.30.tar.bz2 a63098efcc58bc697d6b890097d9c370 vdr-1.7.29-1.7.30.diff WARNING: ======== This is a developer version. Even though I use it in my productive environment. I strongly recommend that you only use it under controlled conditions and for testing and debugging. The default skin "LCARS" displays the signal strengths and qualities of all devices in its main menu. For devices that have an stb0899 frontend chip (like the TT-budget S2-3200) retrieving this information from the driver is rather slow, which results in a sluggish response to user input in the main menu. To speed this up you may want to apply the patches from ftp://ftp.tvdr.de/vdr/Developer/Driver-Patches to the LinuxDVB driver source. From the HISTORY file: - Fixed sorting recordings in the top level video directory. - Fixed handling control characters in SI data in case of UTF-8 encoded strings (thanks to Mehdi Karamnejad for reporting a problem with garbled UTF-8 EPG data and helping to debug it). - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - When checking whether a video directory is empty, file names that start with a dot ('.') are now ignored and will be implicitly removed if the directory contains no other files. This fixes the leftover ".sort" files that were introduced in version 1.7.29. - Added IsUpdate() to the EPG handler interface (thanks to Jörg Wendel). - Fixed detecting transfer mode on full featured DVB cards (thanks to Stefan Huelswitt for reporting a problem with updating CA descriptors in such cases). - Fixed a race condition when zapping in transfer mode (reported by Reinhard Nissl). This involves a slight change in the semantics of the cReceiver::Activate() function, which is now called with 'false' after the receiver has been detached from the device. - The new function cDevice::ReadFilter() can be used by devices to implement their own way of retrieving section filter data (thanks to Deti Fliegl). - The new function cDevice::HasInternalCam() can be implemented by devices that provide encrypted channels in an already decrypted form, without requiring explicit handling of a CAM (thanks to Tobias Grimm). - VDR can now be built according to the FHS ("File system Hierarchy Standard") by activating the line #USEFHS = 1 in a copy of the file Make.config.template (thanks to Dennis Bendlin, as well as Christopher Reimer and Udo Richter for contributing to the patch). - By default (without FHS support) the config directory is now set to the value given in the -v option if only -v and no -c is given. - Fixed a long delay at the end when replaying a recording that has stopped recording less than an hour ago (typically time shift mode or a freshly edited recording). - Fixed getting the file size and number of frames of ongoing recordings (only the timestamp of the recording's directory was checked, while it should have been that of the index file). - Fixed sluggish response when manipulating editing marks while a cutting thread is running (reported by Torsten Lang). - The new setup options "OSD/Color key [0123]" can be used to adjust the sequence of the color buttons displayed in the menus to that of the color keys on your remote control (based on a patch from Oliver Schinagl). Authors of plugins that implement skins may want to adapt their SetButtons() function in order to make use of this new feature. See, for instance, the function cSkinClassicDisplayMenu::SetButtons() in skinclassic.c for details.
This commit is contained in:
parent
046b506748
commit
d34026c18b
24
CONTRIBUTORS
24
CONTRIBUTORS
@ -87,6 +87,8 @@ Deti Fliegl <deti@fliegl.de>
|
|||||||
for fixing setting the OSD size in the 'Confirm' interface call
|
for fixing setting the OSD size in the 'Confirm' interface call
|
||||||
for fixing handling improper buffer lengths in the EIT parser
|
for fixing handling improper buffer lengths in the EIT parser
|
||||||
for a patch that was used to implement StopSectionHandler()
|
for a patch that was used to implement StopSectionHandler()
|
||||||
|
for adding cDevice::ReadFilter() to allow devices to implement their own way of
|
||||||
|
retrieving section filter data
|
||||||
|
|
||||||
Dave Chapman <dave@dchapman.com>
|
Dave Chapman <dave@dchapman.com>
|
||||||
for implementing support for the teletext PID
|
for implementing support for the teletext PID
|
||||||
@ -139,7 +141,7 @@ Andre Valentin <av2000@topmail.de>
|
|||||||
Jørgen Tvedt <pjtvedt@online.no>
|
Jørgen Tvedt <pjtvedt@online.no>
|
||||||
for translating OSD texts to the Norwegian language
|
for translating OSD texts to the Norwegian language
|
||||||
|
|
||||||
Stefan Huelswitt <huels@iname.com>
|
Stefan Huelswitt <s.huelswitt@gmx.de>
|
||||||
for fixing the repeat function with LIRC
|
for fixing the repeat function with LIRC
|
||||||
for making the position of the channel display configurable
|
for making the position of the channel display configurable
|
||||||
for making the width and height of the OSD configurable
|
for making the width and height of the OSD configurable
|
||||||
@ -225,6 +227,8 @@ Stefan Huelswitt <huels@iname.com>
|
|||||||
cStatus::MsgSetVolume() bug to react properly
|
cStatus::MsgSetVolume() bug to react properly
|
||||||
for improving the 'i18n' target in the Makefile to avoid unnecessary work
|
for improving the 'i18n' target in the Makefile to avoid unnecessary work
|
||||||
for a patch that was used to implement the --localedir option
|
for a patch that was used to implement the --localedir option
|
||||||
|
for reporting a problem with updating CA descriptors in transfer mode on full
|
||||||
|
featured DVB cards
|
||||||
|
|
||||||
Ulrich Röder <roeder@efr-net.de>
|
Ulrich Röder <roeder@efr-net.de>
|
||||||
for pointing out that there are channels that have a symbol rate higher than 27500
|
for pointing out that there are channels that have a symbol rate higher than 27500
|
||||||
@ -1317,6 +1321,7 @@ Reinhard Nissl <rnissl@gmx.de>
|
|||||||
receive channels
|
receive channels
|
||||||
for reporting that the Transfer Mode indicator bitmap in the LCARS skin may not
|
for reporting that the Transfer Mode indicator bitmap in the LCARS skin may not
|
||||||
fit with small font sizes
|
fit with small font sizes
|
||||||
|
for reporting a race condition when zapping in transfer mode
|
||||||
|
|
||||||
Richard Robson <richard_robson@beeb.net>
|
Richard Robson <richard_robson@beeb.net>
|
||||||
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
||||||
@ -1751,6 +1756,7 @@ Udo Richter <udo_richter@gmx.de>
|
|||||||
editing mark
|
editing mark
|
||||||
for adding the option --outputonly to the dvbsddevice plugin
|
for adding the option --outputonly to the dvbsddevice plugin
|
||||||
for adding a missing template specification to the c'tor of cSortedTimers
|
for adding a missing template specification to the c'tor of cSortedTimers
|
||||||
|
for contributing to a patch that implements FHS support
|
||||||
|
|
||||||
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
||||||
for his help in keeping 'channels.conf.terr' up to date
|
for his help in keeping 'channels.conf.terr' up to date
|
||||||
@ -2342,6 +2348,9 @@ Tobias Grimm <tobias.grimm@e-tobi.net>
|
|||||||
for avoiding a gcc 4.6 compiler error in the skincurses plugin.
|
for avoiding a gcc 4.6 compiler error in the skincurses plugin.
|
||||||
for suggesting to move setting LC_NUMERIC further up to make sure any floating point
|
for suggesting to move setting LC_NUMERIC further up to make sure any floating point
|
||||||
numbers use a decimal point
|
numbers use a decimal point
|
||||||
|
for implementing cDevice::HasInternalCam(), which can be implemented by devices that
|
||||||
|
provide encrypted channels in an already decrypted form, without requiring explicit
|
||||||
|
handling of a CAM
|
||||||
|
|
||||||
Helge Lenz <h.lenz@gmx.de>
|
Helge Lenz <h.lenz@gmx.de>
|
||||||
for reporting a bug in setting the 'Delta' parameter when calling the shutdown
|
for reporting a bug in setting the 'Delta' parameter when calling the shutdown
|
||||||
@ -2467,6 +2476,7 @@ Ulf Kiener <webmaster@ulf-kiener.de>
|
|||||||
Jörg Wendel <vdr-ml@jwendel.de>
|
Jörg Wendel <vdr-ml@jwendel.de>
|
||||||
for reporting that cPlugin::Active() was called too often
|
for reporting that cPlugin::Active() was called too often
|
||||||
for adding HandledExternally() to the EPG handler interface
|
for adding HandledExternally() to the EPG handler interface
|
||||||
|
for adding IsUpdate() to the EPG handler interface
|
||||||
|
|
||||||
Peter Pinnau <vdr@unterbrecher.de>
|
Peter Pinnau <vdr@unterbrecher.de>
|
||||||
for reporting that 'uint32_t' requires including stdint.h in font.h on some systems
|
for reporting that 'uint32_t' requires including stdint.h in font.h on some systems
|
||||||
@ -2766,6 +2776,7 @@ Luis Fernandes <telping@gmail.com>
|
|||||||
Christopher Reimer <reimer.christopher@freenet.de>
|
Christopher Reimer <reimer.christopher@freenet.de>
|
||||||
for reporting a problem with external Dolby Digital processing via the '-a' option
|
for reporting a problem with external Dolby Digital processing via the '-a' option
|
||||||
in live mode and with TS recordings
|
in live mode and with TS recordings
|
||||||
|
for contributing to a patch that implements FHS support
|
||||||
|
|
||||||
Stefan Huskamp <coca_cola1@gmx.de>
|
Stefan Huskamp <coca_cola1@gmx.de>
|
||||||
for suggesting to make entering characters via the number keys
|
for suggesting to make entering characters via the number keys
|
||||||
@ -2875,6 +2886,8 @@ Torsten Lang <info@torstenlang.de>
|
|||||||
is stored on the video directory file system within the cRecording data
|
is stored on the video directory file system within the cRecording data
|
||||||
for suppressing setting the "broken link" or "TEI" flags when cutting recordings
|
for suppressing setting the "broken link" or "TEI" flags when cutting recordings
|
||||||
if the editing point merges two seamlessly fitting parts of the same stream
|
if the editing point merges two seamlessly fitting parts of the same stream
|
||||||
|
for reporting a sluggish response when manipulating editing marks while a cutting
|
||||||
|
thread is running
|
||||||
|
|
||||||
Christian Ruppert <idl0r@gentoo.org>
|
Christian Ruppert <idl0r@gentoo.org>
|
||||||
for some improvements to the Makefiles
|
for some improvements to the Makefiles
|
||||||
@ -2917,3 +2930,12 @@ Dirk Heiser <dirk-vdr@gmx.de>
|
|||||||
|
|
||||||
Ludi Kaleni <ludi113@hotmail.com>
|
Ludi Kaleni <ludi113@hotmail.com>
|
||||||
for suggesting to add the source character to channel names whenever they are displayed
|
for suggesting to add the source character to channel names whenever they are displayed
|
||||||
|
|
||||||
|
Mehdi Karamnejad <mehdi_karamnejad@sfu.ca>
|
||||||
|
for reporting a problem with garbled UTF-8 EPG data and helping to debug it
|
||||||
|
|
||||||
|
Dennis Bendlin <dennisbendlin@online.de>
|
||||||
|
for a patch that implements FHS support
|
||||||
|
|
||||||
|
Oliver Schinagl <oliver@schinagl.nl>
|
||||||
|
for a patch that was used to implement the setup options "OSD/Color key [0123]"
|
||||||
|
44
HISTORY
44
HISTORY
@ -7190,3 +7190,47 @@ Video Disk Recorder Revision History
|
|||||||
- The new setup option "Miscellaneous/Show channel names with source" can be used to
|
- The new setup option "Miscellaneous/Show channel names with source" can be used to
|
||||||
turn on adding the source character to channel names whenever they are displayed
|
turn on adding the source character to channel names whenever they are displayed
|
||||||
(suggested by Ludi Kaleni).
|
(suggested by Ludi Kaleni).
|
||||||
|
|
||||||
|
2012-09-09: Version 1.7.30
|
||||||
|
|
||||||
|
- Fixed sorting recordings in the top level video directory.
|
||||||
|
- Fixed handling control characters in SI data in case of UTF-8 encoded strings
|
||||||
|
(thanks to Mehdi Karamnejad for reporting a problem with garbled UTF-8 EPG data
|
||||||
|
and helping to debug it).
|
||||||
|
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
|
||||||
|
- When checking whether a video directory is empty, file names that start with a
|
||||||
|
dot ('.') are now ignored and will be implicitly removed if the directory contains
|
||||||
|
no other files. This fixes the leftover ".sort" files that were introduced in
|
||||||
|
version 1.7.29.
|
||||||
|
- Added IsUpdate() to the EPG handler interface (thanks to Jörg Wendel).
|
||||||
|
- Fixed detecting transfer mode on full featured DVB cards (thanks to Stefan Huelswitt
|
||||||
|
for reporting a problem with updating CA descriptors in such cases).
|
||||||
|
- Fixed a race condition when zapping in transfer mode (reported by Reinhard Nissl).
|
||||||
|
This involves a slight change in the semantics of the cReceiver::Activate() function,
|
||||||
|
which is now called with 'false' *after* the receiver has been detached from the
|
||||||
|
device.
|
||||||
|
- The new function cDevice::ReadFilter() can be used by devices to implement their
|
||||||
|
own way of retrieving section filter data (thanks to Deti Fliegl).
|
||||||
|
- The new function cDevice::HasInternalCam() can be implemented by devices that
|
||||||
|
provide encrypted channels in an already decrypted form, without requiring explicit
|
||||||
|
handling of a CAM (thanks to Tobias Grimm).
|
||||||
|
- VDR can now be built according to the FHS ("File system Hierarchy Standard") by
|
||||||
|
activating the line
|
||||||
|
#USEFHS = 1
|
||||||
|
in a copy of the file Make.config.template (thanks to Dennis Bendlin, as well as
|
||||||
|
Christopher Reimer and Udo Richter for contributing to the patch).
|
||||||
|
- By default (without FHS support) the config directory is now set to the value
|
||||||
|
given in the -v option if only -v and no -c is given.
|
||||||
|
- Fixed a long delay at the end when replaying a recording that has stopped recording
|
||||||
|
less than an hour ago (typically time shift mode or a freshly edited recording).
|
||||||
|
- Fixed getting the file size and number of frames of ongoing recordings (only the
|
||||||
|
timestamp of the recording's directory was checked, while it should have been that
|
||||||
|
of the index file).
|
||||||
|
- Fixed sluggish response when manipulating editing marks while a cutting thread
|
||||||
|
is running (reported by Torsten Lang).
|
||||||
|
- The new setup options "OSD/Color key [0123]" can be used to adjust the sequence
|
||||||
|
of the color buttons displayed in the menus to that of the color keys on your
|
||||||
|
remote control (based on a patch from Oliver Schinagl).
|
||||||
|
Authors of plugins that implement skins may want to adapt their SetButtons()
|
||||||
|
function in order to make use of this new feature. See, for instance, the function
|
||||||
|
cSkinClassicDisplayMenu::SetButtons() in skinclassic.c for details.
|
||||||
|
9
INSTALL
9
INSTALL
@ -386,6 +386,15 @@ As a starting point you can copy the 'channels.conf' file that comes with the
|
|||||||
VDR archive into your video directory (or into your config directory,
|
VDR archive into your video directory (or into your config directory,
|
||||||
respectively, in case you have redirected it with the -c option).
|
respectively, in case you have redirected it with the -c option).
|
||||||
|
|
||||||
|
If you prefer to have your system set up according to the FHS
|
||||||
|
("File system Hierarchy Standard") and thus have your files spread
|
||||||
|
all over the place ;-), you can do this by copying the file Make.config.template
|
||||||
|
to Make.config in the VDR source directory, and activating the line
|
||||||
|
|
||||||
|
#USEFHS = 1
|
||||||
|
|
||||||
|
in that file.
|
||||||
|
|
||||||
Setting up DiSEqC:
|
Setting up DiSEqC:
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
8
MANUAL
8
MANUAL
@ -601,6 +601,14 @@ Version 1.6
|
|||||||
characters in a text input field. You may want to set this
|
characters in a text input field. You may want to set this
|
||||||
to "no" if you are using an actual keyboard to control VDR.
|
to "no" if you are using an actual keyboard to control VDR.
|
||||||
|
|
||||||
|
Color key 0 = 0 By default, VDR assumes that the sequence of the color
|
||||||
|
Color key 1 = 1 keys on the remote control is red-green-yellow-blue. If
|
||||||
|
Color key 2 = 2 your remote control has these keys in a different sequence,
|
||||||
|
Color key 3 = 3 you can adjust these parameters to reorder the corresponding
|
||||||
|
color buttons in the menus accordingly. Note that this does
|
||||||
|
not change the functionality of the individual keys; it only
|
||||||
|
changes the sequence in which the color buttons are displayed.
|
||||||
|
|
||||||
EPG:
|
EPG:
|
||||||
|
|
||||||
EPG scan timeout = 5 The time (in hours) of user inactivity after which the
|
EPG scan timeout = 5 The time (in hours) of user inactivity after which the
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# See the main source file 'vdr.c' for copyright information and
|
# See the main source file 'vdr.c' for copyright information and
|
||||||
# how to reach the author.
|
# how to reach the author.
|
||||||
#
|
#
|
||||||
# $Id: Make.config.template 2.8 2012/03/20 11:20:13 kls Exp $
|
# $Id: Make.config.template 2.9 2012/09/01 10:31:33 kls Exp $
|
||||||
|
|
||||||
### The C compiler and options:
|
### The C compiler and options:
|
||||||
|
|
||||||
@ -28,11 +28,22 @@ PREFIX = $(DESTDIR)/usr/local
|
|||||||
MANDIR = $(PREFIX)/man
|
MANDIR = $(PREFIX)/man
|
||||||
BINDIR = $(PREFIX)/bin
|
BINDIR = $(PREFIX)/bin
|
||||||
|
|
||||||
|
# By default locale and plugin files are built under the source directory:
|
||||||
LOCDIR = ./locale
|
LOCDIR = ./locale
|
||||||
PLUGINDIR = ./PLUGINS
|
PLUGINDIR = ./PLUGINS
|
||||||
PLUGINLIBDIR = $(PLUGINDIR)/lib
|
PLUGINLIBDIR = $(PLUGINDIR)/lib
|
||||||
|
# By default VDR requires only one single directory to operate:
|
||||||
VIDEODIR = /video
|
VIDEODIR = /video
|
||||||
CONFDIR = $(VIDEODIR)
|
# Activate the following line to build VDR according to the FHS ("File system Hierarchy Standard"):
|
||||||
|
#USEFHS = 1
|
||||||
|
ifdef USEFHS
|
||||||
|
VIDEODIR = /srv/vdr/video
|
||||||
|
CONFDIR = /var/lib/vdr
|
||||||
|
CACHEDIR = /var/cache/vdr
|
||||||
|
RESDIR = $(PREFIX)/share/vdr
|
||||||
|
LOCDIR = $(PREFIX)/share/locale
|
||||||
|
PLUGINLIBDIR = $(PREFIX)/lib/vdr
|
||||||
|
endif
|
||||||
|
|
||||||
### The remote control:
|
### The remote control:
|
||||||
|
|
||||||
|
32
Makefile
32
Makefile
@ -4,7 +4,7 @@
|
|||||||
# See the main source file 'vdr.c' for copyright information and
|
# See the main source file 'vdr.c' for copyright information and
|
||||||
# how to reach the author.
|
# how to reach the author.
|
||||||
#
|
#
|
||||||
# $Id: Makefile 2.27 2012/04/15 13:21:31 kls Exp $
|
# $Id: Makefile 2.29 2012/09/07 14:11:37 kls Exp $
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
@ -27,8 +27,9 @@ INCLUDES ?= $(shell pkg-config --cflags freetype2 fontconfig)
|
|||||||
PLUGINDIR= ./PLUGINS
|
PLUGINDIR= ./PLUGINS
|
||||||
PLUGINLIBDIR= $(PLUGINDIR)/lib
|
PLUGINLIBDIR= $(PLUGINDIR)/lib
|
||||||
|
|
||||||
|
# By default VDR requires only one single directory to operate:
|
||||||
VIDEODIR = /video
|
VIDEODIR = /video
|
||||||
CONFDIR = $(VIDEODIR)
|
# See Make.config.template if you want to build VDR according to the FHS ("File system Hierarchy Standard")
|
||||||
|
|
||||||
DOXYGEN ?= /usr/bin/doxygen
|
DOXYGEN ?= /usr/bin/doxygen
|
||||||
DOXYFILE = Doxyfile
|
DOXYFILE = Doxyfile
|
||||||
@ -70,9 +71,17 @@ DEFINES += -D_GNU_SOURCE
|
|||||||
|
|
||||||
DEFINES += -DVIDEODIR=\"$(VIDEODIR)\"
|
DEFINES += -DVIDEODIR=\"$(VIDEODIR)\"
|
||||||
DEFINES += -DCONFDIR=\"$(CONFDIR)\"
|
DEFINES += -DCONFDIR=\"$(CONFDIR)\"
|
||||||
|
DEFINES += -DCACHEDIR=\"$(CACHEDIR)\"
|
||||||
|
DEFINES += -DRESDIR=\"$(RESDIR)\"
|
||||||
DEFINES += -DPLUGINDIR=\"$(PLUGINLIBDIR)\"
|
DEFINES += -DPLUGINDIR=\"$(PLUGINLIBDIR)\"
|
||||||
DEFINES += -DLOCDIR=\"$(LOCDIR)\"
|
DEFINES += -DLOCDIR=\"$(LOCDIR)\"
|
||||||
|
|
||||||
|
# Default values for directories:
|
||||||
|
|
||||||
|
CONFDIRDEF = $(firstword $(CONFDIR) $(VIDEODIR))
|
||||||
|
CACHEDIRDEF = $(firstword $(CACHEDIR) $(VIDEODIR))
|
||||||
|
RESDIRDEF = $(firstword $(RESDIR) $(CONFDIRDEF))
|
||||||
|
|
||||||
# The version numbers of VDR and the plugin API (taken from VDR's "config.h"):
|
# The version numbers of VDR and the plugin API (taken from VDR's "config.h"):
|
||||||
|
|
||||||
VDRVERSION = $(shell sed -ne '/define VDRVERSION/s/^.*"\(.*\)".*$$/\1/p' config.h)
|
VDRVERSION = $(shell sed -ne '/define VDRVERSION/s/^.*"\(.*\)".*$$/\1/p' config.h)
|
||||||
@ -109,8 +118,10 @@ $(SILIB):
|
|||||||
vdr.pc: Makefile Make.global
|
vdr.pc: Makefile Make.global
|
||||||
@echo "bindir=$(BINDIR)" > $@
|
@echo "bindir=$(BINDIR)" > $@
|
||||||
@echo "includedir=$(INCDIR)" >> $@
|
@echo "includedir=$(INCDIR)" >> $@
|
||||||
@echo "configdir=$(CONFDIR)" >> $@
|
@echo "configdir=$(CONFDIRDEF)" >> $@
|
||||||
@echo "videodir=$(VIDEODIR)" >> $@
|
@echo "videodir=$(VIDEODIR)" >> $@
|
||||||
|
@echo "cachedir=$(CACHEDIRDEF)" >> $@
|
||||||
|
@echo "resdir=$(RESDIRDEF)" >> $@
|
||||||
@echo "plugindir=$(PLUGINLIBDIR)" >> $@
|
@echo "plugindir=$(PLUGINLIBDIR)" >> $@
|
||||||
@echo "localedir=$(LOCDIR)" >> $@
|
@echo "localedir=$(LOCDIR)" >> $@
|
||||||
@echo "apiversion=$(APIVERSION)" >> $@
|
@echo "apiversion=$(APIVERSION)" >> $@
|
||||||
@ -183,7 +194,7 @@ clean-plugins:
|
|||||||
|
|
||||||
# Install the files:
|
# Install the files:
|
||||||
|
|
||||||
install: install-bin install-conf install-doc install-plugins install-i18n install-includes install-pc
|
install: install-bin install-dirs install-conf install-doc install-plugins install-i18n install-includes install-pc
|
||||||
|
|
||||||
# VDR binary:
|
# VDR binary:
|
||||||
|
|
||||||
@ -193,12 +204,15 @@ install-bin: vdr
|
|||||||
|
|
||||||
# Configuration files:
|
# Configuration files:
|
||||||
|
|
||||||
install-conf:
|
install-dirs:
|
||||||
@mkdir -p $(DESTDIR)$(VIDEODIR)
|
@mkdir -p $(DESTDIR)$(VIDEODIR)
|
||||||
@if [ ! -d $(DESTDIR)$(CONFDIR) ]; then\
|
@mkdir -p $(DESTDIR)$(CONFDIRDEF)
|
||||||
mkdir -p $(DESTDIR)$(CONFDIR);\
|
@mkdir -p $(DESTDIR)$(CACHEDIRDEF)
|
||||||
cp *.conf $(DESTDIR)$(CONFDIR);\
|
@mkdir -p $(DESTDIR)$(RESDIRDEF)
|
||||||
fi
|
|
||||||
|
install-conf:
|
||||||
|
@cp *.conf $(DESTDIR)$(CONFDIRDEF)
|
||||||
|
|
||||||
|
|
||||||
# Documentation:
|
# Documentation:
|
||||||
|
|
||||||
|
73
PLUGINS.html
73
PLUGINS.html
@ -82,7 +82,7 @@ structures and allows it to hook itself into specific areas to perform special a
|
|||||||
<li><a href="#Wakeup">Wakeup</a>
|
<li><a href="#Wakeup">Wakeup</a>
|
||||||
<li><a href="#Setup parameters">Setup parameters</a>
|
<li><a href="#Setup parameters">Setup parameters</a>
|
||||||
<li><a href="#The Setup menu">The Setup menu</a>
|
<li><a href="#The Setup menu">The Setup menu</a>
|
||||||
<li><a href="#Configuration files">Configuration files</a>
|
<li><modified><a href="#Additional files">Additional files</modified></a>
|
||||||
<li><a href="#Internationalization">Internationalization</a>
|
<li><a href="#Internationalization">Internationalization</a>
|
||||||
<li><a href="#Custom services">Custom services</a>
|
<li><a href="#Custom services">Custom services</a>
|
||||||
<li><a href="#SVDRP commands">SVDRP commands</a>
|
<li><a href="#SVDRP commands">SVDRP commands</a>
|
||||||
@ -885,39 +885,70 @@ You can first assign the temporary values to the global variables and then do th
|
|||||||
your setup parameters and use that one to copy all parameters with one single statement
|
your setup parameters and use that one to copy all parameters with one single statement
|
||||||
(like VDR does with its cSetup class).
|
(like VDR does with its cSetup class).
|
||||||
|
|
||||||
<hr><h2><a name="Configuration files">Configuration files</a></h2>
|
<hr><h2><modified><a name="Additional files">Additional files</a></modified></h2>
|
||||||
|
|
||||||
<div class="blurb">I want my own stuff!</div><p>
|
<div class="blurb">I want my own stuff!</div><p>
|
||||||
|
|
||||||
There may be situations where a plugin requires configuration files of its own, maybe
|
<modified>
|
||||||
for data that can't be stored in the simple <a href="#Setup parameters">setup parameters</a>
|
There may be situations where a plugin requires files of its own. While the plugin is
|
||||||
of VDR, or maybe because it needs to launch other programs that simply need a separate
|
free to store such files anywhere it sees fit, it might be a good idea to put them in a common
|
||||||
configuration file. While the plugin is free to store such files anywhere it
|
place, preferably where such data already exists.
|
||||||
sees fit, it might be a good idea to put them in a common place, preferably
|
</modified>
|
||||||
where other configuration data already exists. VDR provides the function
|
<p>
|
||||||
|
<modified>
|
||||||
|
<i>configuration files</i>, maybe for data that can't be stored in the simple
|
||||||
|
<a href="#Setup parameters">setup parameters</a> of VDR, or maybe because it needs to
|
||||||
|
launch other programs that simply need a separate configuration file.
|
||||||
|
</modified>
|
||||||
|
<p>
|
||||||
|
<modified>
|
||||||
|
<i>cache files</i>, to store data so that future requests for that data can be served faster. The data
|
||||||
|
that is stored within a cache might be values that have been computed earlier or duplicates of
|
||||||
|
original values that are stored elsewhere.
|
||||||
|
</modified>
|
||||||
|
<p>
|
||||||
|
<modified>
|
||||||
|
<i>resource files</i>, for providing additional files, like pictures, movie clips or channel logos.
|
||||||
|
</modified>
|
||||||
|
<p>
|
||||||
|
<modified>
|
||||||
|
Threfore VDR provides the functions
|
||||||
|
|
||||||
<p><table><tr><td class="code"><pre>
|
<p><table><tr><td class="code"><pre>
|
||||||
|
<modified>
|
||||||
const char *ConfigDirectory(const char *PluginName = NULL);
|
const char *ConfigDirectory(const char *PluginName = NULL);
|
||||||
|
const char *CacheDirectory(const char *PluginName = NULL);
|
||||||
|
const char *ResourceDirectory(const char *PluginName = NULL);
|
||||||
|
</modified>
|
||||||
</pre></td></tr></table><p>
|
</pre></td></tr></table><p>
|
||||||
|
|
||||||
which returns a string containing the directory that VDR uses for its own configuration
|
<modified>
|
||||||
files (defined through the <tt><b>-c</b></tt> option in the call to VDR), extended by
|
each of which returns a string containing the directory that VDR uses for its own
|
||||||
|
files (defined through the options in the call to VDR), extended by
|
||||||
|
</modified>
|
||||||
<tt>"/plugins"</tt>. So assuming the VDR configuration directory is <tt>/video</tt>
|
<tt>"/plugins"</tt>. So assuming the VDR configuration directory is <tt>/video</tt>
|
||||||
(the default if no <tt><b>-c</b></tt> or <tt><b>-v</b></tt> option is given),
|
(the default if no <tt><b>-c</b></tt> or <tt><b>-v</b></tt> option is given),
|
||||||
a call to <tt>ConfigDirectory()</tt> will return <tt>/video/plugins</tt>. The first
|
a call to <tt>ConfigDirectory()</tt> will return <tt>/video/plugins</tt>. The first
|
||||||
call to <tt>ConfigDirectory()</tt> will automatically make sure that the <tt>plugins</tt>
|
call to <tt>ConfigDirectory()</tt> will automatically make sure that the <tt>plugins</tt>
|
||||||
subdirectory will exist. If, for some reason, this cannot be achieved, <tt>NULL</tt>
|
subdirectory will exist. If, for some reason, this cannot be achieved, <tt>NULL</tt>
|
||||||
will be returned.
|
will be returned.
|
||||||
|
<modified>
|
||||||
|
The behavoir of <tt>CacheDirectory()</tt> and <tt>ResourceDirectory()</tt> is similar.
|
||||||
|
</modified>
|
||||||
<p>
|
<p>
|
||||||
The additional <tt>plugins</tt> directory is used to keep files from plugins apart
|
The additional <tt>plugins</tt> directory is used to keep files from plugins apart
|
||||||
from those of VDR itself, making sure there will be no name clashes. If a plugin
|
from those of VDR itself, making sure there will be no name clashes. If a plugin
|
||||||
needs only one extra configuration file, it is suggested that this file be named
|
<modified>
|
||||||
<tt>name.conf</tt>, where <i>name</i> shall be the name of the plugin.
|
needs only one extra file, it is suggested that this file be named <tt>name.*</tt>,
|
||||||
|
where <i>name</i> shall be the name of the plugin.
|
||||||
|
</modified>
|
||||||
<p>
|
<p>
|
||||||
If a plugin needs more than one such file, it is suggested that the plugin stores
|
If a plugin needs more than one such file, it is suggested that the plugin stores
|
||||||
these in a subdirectory of its own, named after the plugin. To easily get such a name
|
these in a subdirectory of its own, named after the plugin. To easily get such a name
|
||||||
the <tt>ConfigDirectory()</tt> function can be given an additional string that will
|
<modified>
|
||||||
be appended to the returned directory name, as in
|
the functions can be given an additional string that will be appended to the returned
|
||||||
|
directory name, as in
|
||||||
|
</modified>
|
||||||
|
|
||||||
<p><table><tr><td class="code"><pre>
|
<p><table><tr><td class="code"><pre>
|
||||||
const char *MyConfigDir = ConfigDirectory(Name());
|
const char *MyConfigDir = ConfigDirectory(Name());
|
||||||
@ -928,13 +959,16 @@ plugin's name. Again, VDR will make sure that the requested directory will exist
|
|||||||
(or return <tt>NULL</tt> in case of an error).
|
(or return <tt>NULL</tt> in case of an error).
|
||||||
<p>
|
<p>
|
||||||
<b>
|
<b>
|
||||||
The returned string is statically allocated and will be overwritten by subsequent
|
<modified>
|
||||||
calls to ConfigDirectory()!
|
The returned strings are statically allocated and will be overwritten by subsequent calls!
|
||||||
|
</modified>
|
||||||
</b>
|
</b>
|
||||||
<p>
|
<p>
|
||||||
The <tt>ConfigDirectory()</tt> function is a static member function of the <tt>cPlugin</tt>
|
<modified>
|
||||||
class. This allows it to be called even from outside any member function of the derived
|
The <tt>ConfigDirectory()</tt>, <tt>CacheDirectory()</tt> and <tt>ResourceDirectory()</tt>
|
||||||
plugin class, by writing
|
functions are static member functions of the <tt>cPlugin</tt> class. This allows them to be
|
||||||
|
called even from outside any member function of the derived plugin class, by writing
|
||||||
|
</modified>
|
||||||
|
|
||||||
<p><table><tr><td class="code"><pre>
|
<p><table><tr><td class="code"><pre>
|
||||||
const char *MyConfigDir = cPlugin::ConfigDirectory();
|
const char *MyConfigDir = cPlugin::ConfigDirectory();
|
||||||
@ -1888,6 +1922,7 @@ the functions
|
|||||||
|
|
||||||
<p><table><tr><td class="code"><pre>
|
<p><table><tr><td class="code"><pre>
|
||||||
virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
|
virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
|
||||||
|
<modified>virtual int ReadFilter(int Handle, void *Buffer, size_t Length);</modified>
|
||||||
virtual void CloseFilter(int Handle);
|
virtual void CloseFilter(int Handle);
|
||||||
</pre></td></tr></table><p>
|
</pre></td></tr></table><p>
|
||||||
|
|
||||||
|
14
config.c
14
config.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.c 2.26 2012/06/17 12:27:07 kls Exp $
|
* $Id: config.c 2.27 2012/09/09 12:58:23 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -418,6 +418,10 @@ cSetup::cSetup(void)
|
|||||||
RecordingDirs = 1;
|
RecordingDirs = 1;
|
||||||
FoldersInTimerMenu = 1;
|
FoldersInTimerMenu = 1;
|
||||||
NumberKeysForChars = 1;
|
NumberKeysForChars = 1;
|
||||||
|
ColorKey0 = 0;
|
||||||
|
ColorKey1 = 1;
|
||||||
|
ColorKey2 = 2;
|
||||||
|
ColorKey3 = 3;
|
||||||
VideoDisplayFormat = 1;
|
VideoDisplayFormat = 1;
|
||||||
VideoFormat = 0;
|
VideoFormat = 0;
|
||||||
UpdateChannels = 5;
|
UpdateChannels = 5;
|
||||||
@ -614,6 +618,10 @@ bool cSetup::Parse(const char *Name, const char *Value)
|
|||||||
else if (!strcasecmp(Name, "RecordingDirs")) RecordingDirs = atoi(Value);
|
else if (!strcasecmp(Name, "RecordingDirs")) RecordingDirs = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "FoldersInTimerMenu")) FoldersInTimerMenu = atoi(Value);
|
else if (!strcasecmp(Name, "FoldersInTimerMenu")) FoldersInTimerMenu = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "NumberKeysForChars")) NumberKeysForChars = atoi(Value);
|
else if (!strcasecmp(Name, "NumberKeysForChars")) NumberKeysForChars = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "ColorKey0")) ColorKey0 = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "ColorKey1")) ColorKey1 = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "ColorKey2")) ColorKey2 = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "ColorKey3")) ColorKey3 = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "VideoDisplayFormat")) VideoDisplayFormat = atoi(Value);
|
else if (!strcasecmp(Name, "VideoDisplayFormat")) VideoDisplayFormat = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "VideoFormat")) VideoFormat = atoi(Value);
|
else if (!strcasecmp(Name, "VideoFormat")) VideoFormat = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "UpdateChannels")) UpdateChannels = atoi(Value);
|
else if (!strcasecmp(Name, "UpdateChannels")) UpdateChannels = atoi(Value);
|
||||||
@ -713,6 +721,10 @@ bool cSetup::Save(void)
|
|||||||
Store("RecordingDirs", RecordingDirs);
|
Store("RecordingDirs", RecordingDirs);
|
||||||
Store("FoldersInTimerMenu", FoldersInTimerMenu);
|
Store("FoldersInTimerMenu", FoldersInTimerMenu);
|
||||||
Store("NumberKeysForChars", NumberKeysForChars);
|
Store("NumberKeysForChars", NumberKeysForChars);
|
||||||
|
Store("ColorKey0", ColorKey0);
|
||||||
|
Store("ColorKey1", ColorKey1);
|
||||||
|
Store("ColorKey2", ColorKey2);
|
||||||
|
Store("ColorKey3", ColorKey3);
|
||||||
Store("VideoDisplayFormat", VideoDisplayFormat);
|
Store("VideoDisplayFormat", VideoDisplayFormat);
|
||||||
Store("VideoFormat", VideoFormat);
|
Store("VideoFormat", VideoFormat);
|
||||||
Store("UpdateChannels", UpdateChannels);
|
Store("UpdateChannels", UpdateChannels);
|
||||||
|
11
config.h
11
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 2.49 2012/06/17 11:14:50 kls Exp $
|
* $Id: config.h 2.51 2012/09/09 12:57:33 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -22,13 +22,13 @@
|
|||||||
|
|
||||||
// VDR's own version number:
|
// VDR's own version number:
|
||||||
|
|
||||||
#define VDRVERSION "1.7.29"
|
#define VDRVERSION "1.7.30"
|
||||||
#define VDRVERSNUM 10729 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10730 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// The plugin API's version number:
|
// The plugin API's version number:
|
||||||
|
|
||||||
#define APIVERSION "1.7.29"
|
#define APIVERSION "1.7.30"
|
||||||
#define APIVERSNUM 10729 // Version * 10000 + Major * 100 + Minor
|
#define APIVERSNUM 10730 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// When loading plugins, VDR searches them by their APIVERSION, which
|
// When loading plugins, VDR searches them by their APIVERSION, which
|
||||||
// may be smaller than VDRVERSION in case there have been no changes to
|
// may be smaller than VDRVERSION in case there have been no changes to
|
||||||
@ -288,6 +288,7 @@ public:
|
|||||||
int RecordingDirs;
|
int RecordingDirs;
|
||||||
int FoldersInTimerMenu;
|
int FoldersInTimerMenu;
|
||||||
int NumberKeysForChars;
|
int NumberKeysForChars;
|
||||||
|
int ColorKey0, ColorKey1, ColorKey2, ColorKey3;
|
||||||
int VideoDisplayFormat;
|
int VideoDisplayFormat;
|
||||||
int VideoFormat;
|
int VideoFormat;
|
||||||
int UpdateChannels;
|
int UpdateChannels;
|
||||||
|
29
device.c
29
device.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.c 2.62 2012/06/10 13:13:18 kls Exp $
|
* $Id: device.c 2.67 2012/09/02 09:26:36 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -241,6 +241,7 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
|
|||||||
int NumCamSlots = CamSlots.Count();
|
int NumCamSlots = CamSlots.Count();
|
||||||
int SlotPriority[NumCamSlots];
|
int SlotPriority[NumCamSlots];
|
||||||
int NumUsableSlots = 0;
|
int NumUsableSlots = 0;
|
||||||
|
bool InternalCamNeeded = false;
|
||||||
if (Channel->Ca() >= CA_ENCRYPTED_MIN) {
|
if (Channel->Ca() >= CA_ENCRYPTED_MIN) {
|
||||||
for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) {
|
for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) {
|
||||||
SlotPriority[CamSlot->Index()] = MAXPRIORITY + 1; // assumes it can't be used
|
SlotPriority[CamSlot->Index()] = MAXPRIORITY + 1; // assumes it can't be used
|
||||||
@ -254,7 +255,7 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!NumUsableSlots)
|
if (!NumUsableSlots)
|
||||||
return NULL; // no CAM is able to decrypt this channel
|
InternalCamNeeded = true; // no CAM is able to decrypt this channel
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NeedsDetachReceivers = false;
|
bool NeedsDetachReceivers = false;
|
||||||
@ -268,11 +269,14 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
|
|||||||
for (int i = 0; i < numDevices; i++) {
|
for (int i = 0; i < numDevices; i++) {
|
||||||
if (Channel->Ca() && Channel->Ca() <= CA_DVB_MAX && Channel->Ca() != device[i]->CardIndex() + 1)
|
if (Channel->Ca() && Channel->Ca() <= CA_DVB_MAX && Channel->Ca() != device[i]->CardIndex() + 1)
|
||||||
continue; // a specific card was requested, but not this one
|
continue; // a specific card was requested, but not this one
|
||||||
if (NumUsableSlots && !CamSlots.Get(j)->Assign(device[i], true))
|
bool HasInternalCam = device[i]->HasInternalCam();
|
||||||
|
if (InternalCamNeeded && !HasInternalCam)
|
||||||
|
continue; // no CAM is able to decrypt this channel and the device uses vdr handled CAMs
|
||||||
|
if (NumUsableSlots && !HasInternalCam && !CamSlots.Get(j)->Assign(device[i], true))
|
||||||
continue; // CAM slot can't be used with this device
|
continue; // CAM slot can't be used with this device
|
||||||
bool ndr;
|
bool ndr;
|
||||||
if (device[i]->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basically able to do the job
|
if (device[i]->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basically able to do the job
|
||||||
if (NumUsableSlots && device[i]->CamSlot() && device[i]->CamSlot() != CamSlots.Get(j))
|
if (NumUsableSlots && !HasInternalCam && device[i]->CamSlot() && device[i]->CamSlot() != CamSlots.Get(j))
|
||||||
ndr = true; // using a different CAM slot requires detaching receivers
|
ndr = true; // using a different CAM slot requires detaching receivers
|
||||||
// Put together an integer number that reflects the "impact" using
|
// Put together an integer number that reflects the "impact" using
|
||||||
// this device would have on the overall system. Each condition is represented
|
// this device would have on the overall system. Each condition is represented
|
||||||
@ -287,18 +291,18 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
|
|||||||
imp <<= 4; imp |= GetClippedNumProvidedSystems(4, device[i]) - 1; // avoid cards which support multiple delivery systems
|
imp <<= 4; imp |= GetClippedNumProvidedSystems(4, device[i]) - 1; // avoid cards which support multiple delivery systems
|
||||||
imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device
|
imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device
|
||||||
imp <<= 8; imp |= device[i]->Priority() - IDLEPRIORITY; // use the device with the lowest priority (- IDLEPRIORITY to assure that values -100..99 can be used)
|
imp <<= 8; imp |= device[i]->Priority() - IDLEPRIORITY; // use the device with the lowest priority (- IDLEPRIORITY to assure that values -100..99 can be used)
|
||||||
imp <<= 8; imp |= (NumUsableSlots ? SlotPriority[j] : IDLEPRIORITY) - IDLEPRIORITY; // use the CAM slot with the lowest priority (- IDLEPRIORITY to assure that values -100..99 can be used)
|
imp <<= 8; imp |= ((NumUsableSlots && !HasInternalCam) ? SlotPriority[j] : IDLEPRIORITY) - IDLEPRIORITY;// use the CAM slot with the lowest priority (- IDLEPRIORITY to assure that values -100..99 can be used)
|
||||||
imp <<= 1; imp |= ndr; // avoid devices if we need to detach existing receivers
|
imp <<= 1; imp |= ndr; // avoid devices if we need to detach existing receivers
|
||||||
imp <<= 1; imp |= NumUsableSlots ? 0 : device[i]->HasCi(); // avoid cards with Common Interface for FTA channels
|
imp <<= 1; imp |= (NumUsableSlots || InternalCamNeeded) ? 0 : device[i]->HasCi(); // avoid cards with Common Interface for FTA channels
|
||||||
imp <<= 1; imp |= device[i]->AvoidRecording(); // avoid SD full featured cards
|
imp <<= 1; imp |= device[i]->AvoidRecording(); // avoid SD full featured cards
|
||||||
imp <<= 1; imp |= NumUsableSlots ? !ChannelCamRelations.CamDecrypt(Channel->GetChannelID(), j + 1) : 0; // prefer CAMs that are known to decrypt this channel
|
imp <<= 1; imp |= (NumUsableSlots && !HasInternalCam) ? !ChannelCamRelations.CamDecrypt(Channel->GetChannelID(), j + 1) : 0; // prefer CAMs that are known to decrypt this channel
|
||||||
imp <<= 1; imp |= device[i]->IsPrimaryDevice(); // avoid the primary device
|
imp <<= 1; imp |= device[i]->IsPrimaryDevice(); // avoid the primary device
|
||||||
if (imp < Impact) {
|
if (imp < Impact) {
|
||||||
// This device has less impact than any previous one, so we take it.
|
// This device has less impact than any previous one, so we take it.
|
||||||
Impact = imp;
|
Impact = imp;
|
||||||
d = device[i];
|
d = device[i];
|
||||||
NeedsDetachReceivers = ndr;
|
NeedsDetachReceivers = ndr;
|
||||||
if (NumUsableSlots)
|
if (NumUsableSlots && !HasInternalCam)
|
||||||
s = CamSlots.Get(j);
|
s = CamSlots.Get(j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -593,6 +597,11 @@ int cDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cDevice::ReadFilter(int Handle, void *Buffer, size_t Length)
|
||||||
|
{
|
||||||
|
return safe_read(Handle, Buffer, Length);
|
||||||
|
}
|
||||||
|
|
||||||
void cDevice::CloseFilter(int Handle)
|
void cDevice::CloseFilter(int Handle)
|
||||||
{
|
{
|
||||||
close(Handle);
|
close(Handle);
|
||||||
@ -1195,7 +1204,7 @@ bool cDevice::Replaying(void) const
|
|||||||
|
|
||||||
bool cDevice::Transferring(void) const
|
bool cDevice::Transferring(void) const
|
||||||
{
|
{
|
||||||
return ActualDevice() != PrimaryDevice();
|
return cTransferControl::ReceiverDevice() != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDevice::AttachPlayer(cPlayer *Player)
|
bool cDevice::AttachPlayer(cPlayer *Player)
|
||||||
@ -1666,11 +1675,11 @@ void cDevice::Detach(cReceiver *Receiver)
|
|||||||
cMutexLock MutexLock(&mutexReceiver);
|
cMutexLock MutexLock(&mutexReceiver);
|
||||||
for (int i = 0; i < MAXRECEIVERS; i++) {
|
for (int i = 0; i < MAXRECEIVERS; i++) {
|
||||||
if (receiver[i] == Receiver) {
|
if (receiver[i] == Receiver) {
|
||||||
Receiver->Activate(false);
|
|
||||||
Lock();
|
Lock();
|
||||||
receiver[i] = NULL;
|
receiver[i] = NULL;
|
||||||
Receiver->device = NULL;
|
Receiver->device = NULL;
|
||||||
Unlock();
|
Unlock();
|
||||||
|
Receiver->Activate(false);
|
||||||
for (int n = 0; n < Receiver->numPids; n++)
|
for (int n = 0; n < Receiver->numPids; n++)
|
||||||
DelPid(Receiver->pids[n]);
|
DelPid(Receiver->pids[n]);
|
||||||
}
|
}
|
||||||
|
12
device.h
12
device.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.h 2.39 2012/04/04 09:48:21 kls Exp $
|
* $Id: device.h 2.41 2012/08/26 13:25:44 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -393,6 +393,10 @@ public:
|
|||||||
///< Opens a file handle for the given filter data.
|
///< Opens a file handle for the given filter data.
|
||||||
///< A derived device that provides section data must
|
///< A derived device that provides section data must
|
||||||
///< implement this function.
|
///< implement this function.
|
||||||
|
virtual int ReadFilter(int Handle, void *Buffer, size_t Length);
|
||||||
|
///< Reads data from a handle for the given filter.
|
||||||
|
///< A derived class need not implement this function, because this
|
||||||
|
///< is done by the default implementation.
|
||||||
virtual void CloseFilter(int Handle);
|
virtual void CloseFilter(int Handle);
|
||||||
///< Closes a file handle that has previously been opened
|
///< Closes a file handle that has previously been opened
|
||||||
///< by OpenFilter(). If this is as simple as calling close(Handle),
|
///< by OpenFilter(). If this is as simple as calling close(Handle),
|
||||||
@ -411,6 +415,12 @@ private:
|
|||||||
public:
|
public:
|
||||||
virtual bool HasCi(void);
|
virtual bool HasCi(void);
|
||||||
///< Returns true if this device has a Common Interface.
|
///< Returns true if this device has a Common Interface.
|
||||||
|
virtual bool HasInternalCam(void) { return false; }
|
||||||
|
///< Returns true if this device handles encrypted channels itself
|
||||||
|
///< without VDR assistance. This can be e.g. if the device is a
|
||||||
|
///< client that gets the stream from another VDR instance that has
|
||||||
|
///< already decrypted the stream. In this case ProvidesChannel()
|
||||||
|
///< shall check whether the channel can be decrypted.
|
||||||
void SetCamSlot(cCamSlot *CamSlot);
|
void SetCamSlot(cCamSlot *CamSlot);
|
||||||
///< Sets the given CamSlot to be used with this device.
|
///< Sets the given CamSlot to be used with this device.
|
||||||
cCamSlot *CamSlot(void) const { return camSlot; }
|
cCamSlot *CamSlot(void) const { return camSlot; }
|
||||||
|
4
eit.c
4
eit.c
@ -8,7 +8,7 @@
|
|||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||||
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
||||||
*
|
*
|
||||||
* $Id: eit.c 2.20 2012/06/04 10:26:10 kls Exp $
|
* $Id: eit.c 2.21 2012/08/25 11:13:00 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eit.h"
|
#include "eit.h"
|
||||||
@ -74,6 +74,8 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo
|
|||||||
if (!pEvent || handledExternally) {
|
if (!pEvent || handledExternally) {
|
||||||
if (OnlyRunningStatus)
|
if (OnlyRunningStatus)
|
||||||
continue;
|
continue;
|
||||||
|
if (handledExternally && !EpgHandlers.IsUpdate(SiEitEvent.getEventId(), StartTime, Tid, getVersionNumber()))
|
||||||
|
continue;
|
||||||
// If we don't have that event yet, we create a new one.
|
// If we don't have that event yet, we create a new one.
|
||||||
// Otherwise we copy the information into the existing event anyway, because the data might have changed.
|
// Otherwise we copy the information into the existing event anyway, because the data might have changed.
|
||||||
pEvent = newEvent = new cEvent(SiEitEvent.getEventId());
|
pEvent = newEvent = new cEvent(SiEitEvent.getEventId());
|
||||||
|
11
epg.c
11
epg.c
@ -7,7 +7,7 @@
|
|||||||
* Original version (as used in VDR before 1.3.0) written by
|
* Original version (as used in VDR before 1.3.0) written by
|
||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||||
*
|
*
|
||||||
* $Id: epg.c 2.17 2012/06/04 10:26:10 kls Exp $
|
* $Id: epg.c 2.18 2012/08/25 11:10:29 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "epg.h"
|
#include "epg.h"
|
||||||
@ -1340,6 +1340,15 @@ bool cEpgHandlers::HandledExternally(const cChannel *Channel)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cEpgHandlers::IsUpdate(tEventID EventID, time_t StartTime, uchar TableID, uchar Version)
|
||||||
|
{
|
||||||
|
for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
|
||||||
|
if (eh->IsUpdate(EventID, StartTime, TableID, Version))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void cEpgHandlers::SetEventID(cEvent *Event, tEventID EventID)
|
void cEpgHandlers::SetEventID(cEvent *Event, tEventID EventID)
|
||||||
{
|
{
|
||||||
for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
|
for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
|
||||||
|
7
epg.h
7
epg.h
@ -7,7 +7,7 @@
|
|||||||
* Original version (as used in VDR before 1.3.0) written by
|
* Original version (as used in VDR before 1.3.0) written by
|
||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||||
*
|
*
|
||||||
* $Id: epg.h 2.13 2012/06/04 10:26:10 kls Exp $
|
* $Id: epg.h 2.14 2012/08/25 11:15:18 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __EPG_H
|
#ifndef __EPG_H
|
||||||
@ -250,6 +250,10 @@ public:
|
|||||||
///< source. Incoming EIT data is processed as usual, but any new EPG event
|
///< source. Incoming EIT data is processed as usual, but any new EPG event
|
||||||
///< will not be added to the respective schedule. It's up to the EPG
|
///< will not be added to the respective schedule. It's up to the EPG
|
||||||
///< handler to take care of this.
|
///< handler to take care of this.
|
||||||
|
virtual bool IsUpdate(tEventID EventID, time_t StartTime, uchar TableID, uchar Version) { return false; }
|
||||||
|
///< VDR can't perform the update check (version, tid) for externally handled events,
|
||||||
|
///< therefore the EPG handlers have to take care of this. Otherwise the parsing of
|
||||||
|
///< non-updates will waste a lot of resources.
|
||||||
virtual bool SetEventID(cEvent *Event, tEventID EventID) { return false; }
|
virtual bool SetEventID(cEvent *Event, tEventID EventID) { return false; }
|
||||||
virtual bool SetTitle(cEvent *Event, const char *Title) { return false; }
|
virtual bool SetTitle(cEvent *Event, const char *Title) { return false; }
|
||||||
virtual bool SetShortText(cEvent *Event, const char *ShortText) { return false; }
|
virtual bool SetShortText(cEvent *Event, const char *ShortText) { return false; }
|
||||||
@ -277,6 +281,7 @@ public:
|
|||||||
bool IgnoreChannel(const cChannel *Channel);
|
bool IgnoreChannel(const cChannel *Channel);
|
||||||
bool HandleEitEvent(cSchedule *Schedule, const SI::EIT::Event *EitEvent, uchar TableID, uchar Version);
|
bool HandleEitEvent(cSchedule *Schedule, const SI::EIT::Event *EitEvent, uchar TableID, uchar Version);
|
||||||
bool HandledExternally(const cChannel *Channel);
|
bool HandledExternally(const cChannel *Channel);
|
||||||
|
bool IsUpdate(tEventID EventID, time_t StartTime, uchar TableID, uchar Version);
|
||||||
void SetEventID(cEvent *Event, tEventID EventID);
|
void SetEventID(cEvent *Event, tEventID EventID);
|
||||||
void SetTitle(cEvent *Event, const char *Title);
|
void SetTitle(cEvent *Event, const char *Title);
|
||||||
void SetShortText(cEvent *Event, const char *ShortText);
|
void SetShortText(cEvent *Event, const char *ShortText);
|
||||||
|
9
i18n.c
9
i18n.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: i18n.c 2.4 2011/08/15 10:01:45 kls Exp $
|
* $Id: i18n.c 2.5 2012/09/01 10:53:43 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -63,7 +63,7 @@ const char *LanguageCodeList[] = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *I18nLocaleDir = LOCDIR;
|
static cString I18nLocaleDir;
|
||||||
|
|
||||||
static cStringList LanguageLocales;
|
static cStringList LanguageLocales;
|
||||||
static cStringList LanguageNames;
|
static cStringList LanguageNames;
|
||||||
@ -102,7 +102,6 @@ static void SetEnvLanguage(const char *Locale)
|
|||||||
|
|
||||||
void I18nInitialize(const char *LocaleDir)
|
void I18nInitialize(const char *LocaleDir)
|
||||||
{
|
{
|
||||||
if (LocaleDir)
|
|
||||||
I18nLocaleDir = LocaleDir;
|
I18nLocaleDir = LocaleDir;
|
||||||
LanguageLocales.Append(strdup(I18N_DEFAULT_LOCALE));
|
LanguageLocales.Append(strdup(I18N_DEFAULT_LOCALE));
|
||||||
LanguageNames.Append(strdup(SkipContext(LanguageName)));
|
LanguageNames.Append(strdup(SkipContext(LanguageName)));
|
||||||
@ -113,7 +112,7 @@ void I18nInitialize(const char *LocaleDir)
|
|||||||
if (Locales.Size() > 0) {
|
if (Locales.Size() > 0) {
|
||||||
char *OldLocale = strdup(setlocale(LC_MESSAGES, NULL));
|
char *OldLocale = strdup(setlocale(LC_MESSAGES, NULL));
|
||||||
for (int i = 0; i < Locales.Size(); i++) {
|
for (int i = 0; i < Locales.Size(); i++) {
|
||||||
cString FileName = cString::sprintf("%s/%s/LC_MESSAGES/vdr.mo", I18nLocaleDir, Locales[i]);
|
cString FileName = cString::sprintf("%s/%s/LC_MESSAGES/vdr.mo", *I18nLocaleDir, Locales[i]);
|
||||||
if (access(FileName, F_OK) == 0) { // found a locale with VDR texts
|
if (access(FileName, F_OK) == 0) { // found a locale with VDR texts
|
||||||
if (NumLocales < I18N_MAX_LANGUAGES - 1) {
|
if (NumLocales < I18N_MAX_LANGUAGES - 1) {
|
||||||
SetEnvLanguage(Locales[i]);
|
SetEnvLanguage(Locales[i]);
|
||||||
@ -142,7 +141,7 @@ void I18nInitialize(const char *LocaleDir)
|
|||||||
}
|
}
|
||||||
SetEnvLanguage(LanguageLocales[CurrentLanguage]);
|
SetEnvLanguage(LanguageLocales[CurrentLanguage]);
|
||||||
free(OldLocale);
|
free(OldLocale);
|
||||||
dsyslog("found %d locales in %s", NumLocales - 1, I18nLocaleDir);
|
dsyslog("found %d locales in %s", NumLocales - 1, *I18nLocaleDir);
|
||||||
}
|
}
|
||||||
// Prepare any known language codes for which there was no locale:
|
// Prepare any known language codes for which there was no locale:
|
||||||
for (const char **lc = LanguageCodeList; *lc; lc++) {
|
for (const char **lc = LanguageCodeList; *lc; lc++) {
|
||||||
|
132
libsi/si.c
132
libsi/si.c
@ -6,7 +6,7 @@
|
|||||||
* the Free Software Foundation; either version 2 of the License, or *
|
* the Free Software Foundation; either version 2 of the License, or *
|
||||||
* (at your option) any later version. *
|
* (at your option) any later version. *
|
||||||
* *
|
* *
|
||||||
* $Id: si.c 2.6 2011/12/10 15:47:15 kls Exp $
|
* $Id: si.c 2.7 2012/08/21 08:10:00 kls Exp $
|
||||||
* *
|
* *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -405,6 +405,21 @@ bool convertCharacterTable(const char *from, size_t fromLength, char *to, size_t
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A similar version is used in VDR/tools.c:
|
||||||
|
static int Utf8CharLen(const char *s)
|
||||||
|
{
|
||||||
|
if (SystemCharacterTableIsSingleByte)
|
||||||
|
return 1;
|
||||||
|
#define MT(s, m, v) ((*(s) & (m)) == (v)) // Mask Test
|
||||||
|
if (MT(s, 0xE0, 0xC0) && MT(s + 1, 0xC0, 0x80))
|
||||||
|
return 2;
|
||||||
|
if (MT(s, 0xF0, 0xE0) && MT(s + 1, 0xC0, 0x80) && MT(s + 2, 0xC0, 0x80))
|
||||||
|
return 3;
|
||||||
|
if (MT(s, 0xF8, 0xF0) && MT(s + 1, 0xC0, 0x80) && MT(s + 2, 0xC0, 0x80) && MT(s + 3, 0xC0, 0x80))
|
||||||
|
return 4;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// originally from libdtv, Copyright Rolf Hakenes <hakenes@hippomi.de>
|
// originally from libdtv, Copyright Rolf Hakenes <hakenes@hippomi.de>
|
||||||
void String::decodeText(char *buffer, int size) {
|
void String::decodeText(char *buffer, int size) {
|
||||||
const unsigned char *from=data.getData(0);
|
const unsigned char *from=data.getData(0);
|
||||||
@ -416,79 +431,68 @@ void String::decodeText(char *buffer, int size) {
|
|||||||
}
|
}
|
||||||
bool singleByte;
|
bool singleByte;
|
||||||
const char *cs = getCharacterTable(from, len, &singleByte);
|
const char *cs = getCharacterTable(from, len, &singleByte);
|
||||||
// FIXME Need to make this UTF-8 aware (different control codes).
|
if (singleByte && SystemCharacterTableIsSingleByte || !convertCharacterTable((const char *)from, len, to, size, cs)) {
|
||||||
// However, there's yet to be found a broadcaster that actually
|
if (len >= size)
|
||||||
// uses UTF-8 for the SI data... (kls 2007-06-10)
|
len = size - 1;
|
||||||
for (int i = 0; i < len; i++) {
|
strncpy(to, (const char *)from, len);
|
||||||
if (*from == 0)
|
to[len] = 0;
|
||||||
break;
|
|
||||||
if ( ((' ' <= *from) && (*from <= '~'))
|
|
||||||
|| (*from == '\n')
|
|
||||||
|| (0xA0 <= *from)
|
|
||||||
)
|
|
||||||
*to++ = *from;
|
|
||||||
else if (*from == 0x8A)
|
|
||||||
*to++ = '\n';
|
|
||||||
from++;
|
|
||||||
if (to - buffer >= size - 1)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
*to = '\0';
|
else
|
||||||
if (!singleByte || !SystemCharacterTableIsSingleByte) {
|
len = strlen(to); // might have changed
|
||||||
char convBuffer[size];
|
// Handle control codes:
|
||||||
if (convertCharacterTable(buffer, strlen(buffer), convBuffer, sizeof(convBuffer), cs))
|
while (len > 0) {
|
||||||
strncpy(buffer, convBuffer, strlen(convBuffer) + 1);
|
int l = Utf8CharLen(to);
|
||||||
|
if (l <= 2) {
|
||||||
|
unsigned char *p = (unsigned char *)to;
|
||||||
|
if (l == 2 && *p == 0xC2) // UTF-8 sequence
|
||||||
|
p++;
|
||||||
|
bool Move = true;
|
||||||
|
switch (*p) {
|
||||||
|
case 0x8A: *to = '\n'; break;
|
||||||
|
case 0xA0: *to = ' '; break;
|
||||||
|
default: Move = false;
|
||||||
|
}
|
||||||
|
if (l == 2 && Move) {
|
||||||
|
memmove(p, p + 1, len - 1); // we also copy the terminating 0!
|
||||||
|
l = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
to += l;
|
||||||
|
len -= l;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void String::decodeText(char *buffer, char *shortVersion, int sizeBuffer, int sizeShortVersion) {
|
void String::decodeText(char *buffer, char *shortVersion, int sizeBuffer, int sizeShortVersion) {
|
||||||
const unsigned char *from=data.getData(0);
|
decodeText(buffer, sizeBuffer);
|
||||||
char *to=buffer;
|
if (!*buffer) {
|
||||||
char *toShort=shortVersion;
|
*shortVersion = '\0';
|
||||||
int IsShortName=0;
|
|
||||||
int len=getLength();
|
|
||||||
if (len <= 0) {
|
|
||||||
*to = '\0';
|
|
||||||
*toShort = '\0';
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
bool singleByte;
|
// Handle control codes:
|
||||||
const char *cs = getCharacterTable(from, len, &singleByte);
|
char *to=buffer;
|
||||||
// FIXME Need to make this UTF-8 aware (different control codes).
|
int len=strlen(to);
|
||||||
// However, there's yet to be found a broadcaster that actually
|
int IsShortName=0;
|
||||||
// uses UTF-8 for the SI data... (kls 2007-06-10)
|
while (len > 0) {
|
||||||
for (int i = 0; i < len; i++) {
|
int l = Utf8CharLen(to);
|
||||||
if ( ((' ' <= *from) && (*from <= '~'))
|
unsigned char *p = (unsigned char *)to;
|
||||||
|| (*from == '\n')
|
if (l == 2 && *p == 0xC2) // UTF-8 sequence
|
||||||
|| (0xA0 <= *from)
|
p++;
|
||||||
)
|
if (*p == 0x86 || *p == 0x87) {
|
||||||
{
|
IsShortName += (*p == 0x86) ? 1 : -1;
|
||||||
*to++ = *from;
|
memmove(to, to + l, len - l + 1); // we also copy the terminating 0!
|
||||||
if (IsShortName)
|
l = 0;
|
||||||
*toShort++ = *from;
|
|
||||||
}
|
}
|
||||||
else if (*from == 0x8A)
|
if (l && IsShortName) {
|
||||||
*to++ = '\n';
|
if (l < sizeShortVersion) {
|
||||||
else if (*from == 0x86)
|
for (int i = 0; i < l; i++)
|
||||||
IsShortName++;
|
*shortVersion++ = to[i];
|
||||||
else if (*from == 0x87)
|
sizeShortVersion -= l;
|
||||||
IsShortName--;
|
|
||||||
else if (*from == 0)
|
|
||||||
break;
|
|
||||||
from++;
|
|
||||||
if (to - buffer >= sizeBuffer - 1 || toShort - shortVersion >= sizeShortVersion - 1)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
*to = '\0';
|
|
||||||
*toShort = '\0';
|
|
||||||
if (!singleByte || !SystemCharacterTableIsSingleByte) {
|
|
||||||
char convBuffer[sizeBuffer];
|
|
||||||
if (convertCharacterTable(buffer, strlen(buffer), convBuffer, sizeof(convBuffer), cs))
|
|
||||||
strncpy(buffer, convBuffer, strlen(convBuffer) + 1);
|
|
||||||
char convShortVersion[sizeShortVersion];
|
|
||||||
if (convertCharacterTable(shortVersion, strlen(shortVersion), convShortVersion, sizeof(convShortVersion), cs))
|
|
||||||
strncpy(shortVersion, convShortVersion, strlen(convShortVersion) + 1);
|
|
||||||
}
|
}
|
||||||
|
to += l;
|
||||||
|
len -= l;
|
||||||
|
}
|
||||||
|
*shortVersion = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain, bool returnUnimplemetedDescriptor) {
|
Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain, bool returnUnimplemetedDescriptor) {
|
||||||
|
24
menu.c
24
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 2.58 2012/06/17 11:12:25 kls Exp $
|
* $Id: menu.c 2.60 2012/09/09 12:23:00 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -2510,6 +2510,7 @@ void cMenuSetupBase::Store(void)
|
|||||||
class cMenuSetupOSD : public cMenuSetupBase {
|
class cMenuSetupOSD : public cMenuSetupBase {
|
||||||
private:
|
private:
|
||||||
const char *useSmallFontTexts[3];
|
const char *useSmallFontTexts[3];
|
||||||
|
const char *keyColorTexts[4];
|
||||||
int osdLanguageIndex;
|
int osdLanguageIndex;
|
||||||
int numSkins;
|
int numSkins;
|
||||||
int originalSkinIndex;
|
int originalSkinIndex;
|
||||||
@ -2560,6 +2561,10 @@ void cMenuSetupOSD::Set(void)
|
|||||||
useSmallFontTexts[0] = tr("never");
|
useSmallFontTexts[0] = tr("never");
|
||||||
useSmallFontTexts[1] = tr("skin dependent");
|
useSmallFontTexts[1] = tr("skin dependent");
|
||||||
useSmallFontTexts[2] = tr("always");
|
useSmallFontTexts[2] = tr("always");
|
||||||
|
keyColorTexts[0] = tr("Key$Red");
|
||||||
|
keyColorTexts[1] = tr("Key$Green");
|
||||||
|
keyColorTexts[2] = tr("Key$Yellow");
|
||||||
|
keyColorTexts[3] = tr("Key$Blue");
|
||||||
Clear();
|
Clear();
|
||||||
SetSection(tr("OSD"));
|
SetSection(tr("OSD"));
|
||||||
Add(new cMenuEditStraItem(tr("Setup.OSD$Language"), &osdLanguageIndex, I18nNumLanguagesWithLocale(), &I18nLanguages()->At(0)));
|
Add(new cMenuEditStraItem(tr("Setup.OSD$Language"), &osdLanguageIndex, I18nNumLanguagesWithLocale(), &I18nLanguages()->At(0)));
|
||||||
@ -2589,6 +2594,10 @@ void cMenuSetupOSD::Set(void)
|
|||||||
Add(new cMenuEditBoolItem(tr("Setup.OSD$Recording directories"), &data.RecordingDirs));
|
Add(new cMenuEditBoolItem(tr("Setup.OSD$Recording directories"), &data.RecordingDirs));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.OSD$Folders in timer menu"), &data.FoldersInTimerMenu));
|
Add(new cMenuEditBoolItem(tr("Setup.OSD$Folders in timer menu"), &data.FoldersInTimerMenu));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.OSD$Number keys for characters"), &data.NumberKeysForChars));
|
Add(new cMenuEditBoolItem(tr("Setup.OSD$Number keys for characters"), &data.NumberKeysForChars));
|
||||||
|
Add(new cMenuEditStraItem(tr("Setup.OSD$Color key 0"), &data.ColorKey0, 4, keyColorTexts));
|
||||||
|
Add(new cMenuEditStraItem(tr("Setup.OSD$Color key 1"), &data.ColorKey1, 4, keyColorTexts));
|
||||||
|
Add(new cMenuEditStraItem(tr("Setup.OSD$Color key 2"), &data.ColorKey2, 4, keyColorTexts));
|
||||||
|
Add(new cMenuEditStraItem(tr("Setup.OSD$Color key 3"), &data.ColorKey3, 4, keyColorTexts));
|
||||||
SetCurrent(Get(current));
|
SetCurrent(Get(current));
|
||||||
Display();
|
Display();
|
||||||
}
|
}
|
||||||
@ -4455,6 +4464,7 @@ cReplayControl::cReplayControl(bool PauseLive)
|
|||||||
{
|
{
|
||||||
currentReplayControl = this;
|
currentReplayControl = this;
|
||||||
displayReplay = NULL;
|
displayReplay = NULL;
|
||||||
|
marksModified = false;
|
||||||
visible = modeOnly = shown = displayFrames = false;
|
visible = modeOnly = shown = displayFrames = false;
|
||||||
lastCurrent = lastTotal = -1;
|
lastCurrent = lastTotal = -1;
|
||||||
lastPlay = lastForward = false;
|
lastPlay = lastForward = false;
|
||||||
@ -4472,6 +4482,10 @@ cReplayControl::~cReplayControl()
|
|||||||
Hide();
|
Hide();
|
||||||
cStatus::MsgReplaying(this, NULL, fileName, false);
|
cStatus::MsgReplaying(this, NULL, fileName, false);
|
||||||
Stop();
|
Stop();
|
||||||
|
if (marksModified) {
|
||||||
|
marks.Save();
|
||||||
|
marksModified = false;
|
||||||
|
}
|
||||||
if (currentReplayControl == this)
|
if (currentReplayControl == this)
|
||||||
currentReplayControl = NULL;
|
currentReplayControl = NULL;
|
||||||
}
|
}
|
||||||
@ -4729,7 +4743,7 @@ void cReplayControl::MarkToggle(void)
|
|||||||
Goto(Current, true);
|
Goto(Current, true);
|
||||||
}
|
}
|
||||||
ShowTimed(2);
|
ShowTimed(2);
|
||||||
marks.Save();
|
marksModified = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4766,7 +4780,7 @@ void cReplayControl::MarkMove(bool Forward)
|
|||||||
}
|
}
|
||||||
m->SetPosition(p);
|
m->SetPosition(p);
|
||||||
Goto(m->Position(), true);
|
Goto(m->Position(), true);
|
||||||
marks.Save();
|
marksModified = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4775,6 +4789,10 @@ void cReplayControl::EditCut(void)
|
|||||||
{
|
{
|
||||||
if (*fileName) {
|
if (*fileName) {
|
||||||
Hide();
|
Hide();
|
||||||
|
if (marksModified) {
|
||||||
|
marks.Save();
|
||||||
|
marksModified = false;
|
||||||
|
}
|
||||||
if (!cCutter::Active()) {
|
if (!cCutter::Active()) {
|
||||||
if (!marks.Count())
|
if (!marks.Count())
|
||||||
Skins.Message(mtError, tr("No editing marks defined!"));
|
Skins.Message(mtError, tr("No editing marks defined!"));
|
||||||
|
3
menu.h
3
menu.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.h 2.11 2012/06/13 11:23:11 kls Exp $
|
* $Id: menu.h 2.12 2012/09/07 08:48:34 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MENU_H
|
#ifndef __MENU_H
|
||||||
@ -260,6 +260,7 @@ class cReplayControl : public cDvbPlayerControl {
|
|||||||
private:
|
private:
|
||||||
cSkinDisplayReplay *displayReplay;
|
cSkinDisplayReplay *displayReplay;
|
||||||
cMarks marks;
|
cMarks marks;
|
||||||
|
bool marksModified;
|
||||||
bool visible, modeOnly, shown, displayFrames;
|
bool visible, modeOnly, shown, displayFrames;
|
||||||
int lastCurrent, lastTotal;
|
int lastCurrent, lastTotal;
|
||||||
bool lastPlay, lastForward;
|
bool lastPlay, lastForward;
|
||||||
|
39
plugin.c
39
plugin.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: plugin.c 2.3 2012/03/11 13:56:02 kls Exp $
|
* $Id: plugin.c 2.4 2012/09/01 13:10:27 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "plugin.h"
|
#include "plugin.h"
|
||||||
@ -25,7 +25,9 @@
|
|||||||
|
|
||||||
// --- cPlugin ---------------------------------------------------------------
|
// --- cPlugin ---------------------------------------------------------------
|
||||||
|
|
||||||
char *cPlugin::configDirectory = NULL;
|
cString cPlugin::configDirectory;
|
||||||
|
cString cPlugin::cacheDirectory;
|
||||||
|
cString cPlugin::resourceDirectory;
|
||||||
|
|
||||||
cPlugin::cPlugin(void)
|
cPlugin::cPlugin(void)
|
||||||
{
|
{
|
||||||
@ -132,8 +134,7 @@ cString cPlugin::SVDRPCommand(const char *Command, const char *Option, int &Repl
|
|||||||
|
|
||||||
void cPlugin::SetConfigDirectory(const char *Dir)
|
void cPlugin::SetConfigDirectory(const char *Dir)
|
||||||
{
|
{
|
||||||
free(configDirectory);
|
configDirectory = Dir;
|
||||||
configDirectory = strdup(Dir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *cPlugin::ConfigDirectory(const char *PluginName)
|
const char *cPlugin::ConfigDirectory(const char *PluginName)
|
||||||
@ -141,7 +142,35 @@ const char *cPlugin::ConfigDirectory(const char *PluginName)
|
|||||||
static cString buffer;
|
static cString buffer;
|
||||||
if (!cThread::IsMainThread())
|
if (!cThread::IsMainThread())
|
||||||
esyslog("ERROR: plugin '%s' called cPlugin::ConfigDirectory(), which is not thread safe!", PluginName ? PluginName : "<no name given>");
|
esyslog("ERROR: plugin '%s' called cPlugin::ConfigDirectory(), which is not thread safe!", PluginName ? PluginName : "<no name given>");
|
||||||
buffer = cString::sprintf("%s/plugins%s%s", configDirectory, PluginName ? "/" : "", PluginName ? PluginName : "");
|
buffer = cString::sprintf("%s/plugins%s%s", *configDirectory, PluginName ? "/" : "", PluginName ? PluginName : "");
|
||||||
|
return MakeDirs(buffer, true) ? *buffer : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cPlugin::SetCacheDirectory(const char *Dir)
|
||||||
|
{
|
||||||
|
cacheDirectory = Dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *cPlugin::CacheDirectory(const char *PluginName)
|
||||||
|
{
|
||||||
|
static cString buffer;
|
||||||
|
if (!cThread::IsMainThread())
|
||||||
|
esyslog("ERROR: plugin '%s' called cPlugin::CacheDirectory(), which is not thread safe!", PluginName ? PluginName : "<no name given>");
|
||||||
|
buffer = cString::sprintf("%s/plugins%s%s", *cacheDirectory, PluginName ? "/" : "", PluginName ? PluginName : "");
|
||||||
|
return MakeDirs(buffer, true) ? *buffer : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cPlugin::SetResourceDirectory(const char *Dir)
|
||||||
|
{
|
||||||
|
resourceDirectory = Dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *cPlugin::ResourceDirectory(const char *PluginName)
|
||||||
|
{
|
||||||
|
static cString buffer;
|
||||||
|
if (!cThread::IsMainThread())
|
||||||
|
esyslog("ERROR: plugin '%s' called cPlugin::ResourceDirectory(), which is not thread safe!", PluginName ? PluginName : "<no name given>");
|
||||||
|
buffer = cString::sprintf("%s/plugins%s%s", *resourceDirectory, PluginName ? "/" : "", PluginName ? PluginName : "");
|
||||||
return MakeDirs(buffer, true) ? *buffer : NULL;
|
return MakeDirs(buffer, true) ? *buffer : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
10
plugin.h
10
plugin.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: plugin.h 2.1 2012/03/11 13:55:56 kls Exp $
|
* $Id: plugin.h 2.2 2012/09/01 13:08:54 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __PLUGIN_H
|
#ifndef __PLUGIN_H
|
||||||
@ -21,7 +21,9 @@ class cPlugin {
|
|||||||
friend class cDll;
|
friend class cDll;
|
||||||
friend class cPluginManager;
|
friend class cPluginManager;
|
||||||
private:
|
private:
|
||||||
static char *configDirectory;
|
static cString configDirectory;
|
||||||
|
static cString cacheDirectory;
|
||||||
|
static cString resourceDirectory;
|
||||||
const char *name;
|
const char *name;
|
||||||
bool started;
|
bool started;
|
||||||
void SetName(const char *s);
|
void SetName(const char *s);
|
||||||
@ -57,6 +59,10 @@ public:
|
|||||||
|
|
||||||
static void SetConfigDirectory(const char *Dir);
|
static void SetConfigDirectory(const char *Dir);
|
||||||
static const char *ConfigDirectory(const char *PluginName = NULL);
|
static const char *ConfigDirectory(const char *PluginName = NULL);
|
||||||
|
static void SetCacheDirectory(const char *Dir);
|
||||||
|
static const char *CacheDirectory(const char *PluginName = NULL);
|
||||||
|
static void SetResourceDirectory(const char *Dir);
|
||||||
|
static const char *ResourceDirectory(const char *PluginName = NULL);
|
||||||
};
|
};
|
||||||
|
|
||||||
class cDll : public cListObject {
|
class cDll : public cListObject {
|
||||||
|
14
po/ar.po
14
po/ar.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.0\n"
|
"Project-Id-Version: VDR 1.7.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
|
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
|
||||||
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
|
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
|
||||||
"Language-Team: Arabic <ar@li.org>\n"
|
"Language-Team: Arabic <ar@li.org>\n"
|
||||||
@ -870,6 +870,18 @@ msgstr "مدة معلومات القناة"
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "زر اغلاق القاائمة"
|
msgstr "زر اغلاق القاائمة"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "الدليل الالكتونى للقنوات"
|
msgstr "الدليل الالكتونى للقنوات"
|
||||||
|
|
||||||
|
14
po/ca_ES.po
14
po/ca_ES.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
||||||
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
||||||
"Language-Team: Catalan <vdr@linuxtv.org>\n"
|
"Language-Team: Catalan <vdr@linuxtv.org>\n"
|
||||||
@ -852,6 +852,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Guia de Programes"
|
msgstr "Guia de Programes"
|
||||||
|
|
||||||
|
14
po/cs_CZ.po
14
po/cs_CZ.po
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.14\n"
|
"Project-Id-Version: VDR 1.7.14\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
|
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
|
||||||
"Last-Translator: Radek Šťastný <dedkus@gmail.com>\n"
|
"Last-Translator: Radek Šťastný <dedkus@gmail.com>\n"
|
||||||
"Language-Team: Czech <vdr@linuxtv.org>\n"
|
"Language-Team: Czech <vdr@linuxtv.org>\n"
|
||||||
@ -851,6 +851,18 @@ msgstr "Složky v menu časovače"
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/da_DK.po
14
po/da_DK.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
|
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
|
||||||
"Language-Team: Danish <vdr@linuxtv.org>\n"
|
"Language-Team: Danish <vdr@linuxtv.org>\n"
|
||||||
@ -849,6 +849,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/de_DE.po
14
po/de_DE.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
|
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
|
||||||
"Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
|
"Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
|
||||||
"Language-Team: German <vdr@linuxtv.org>\n"
|
"Language-Team: German <vdr@linuxtv.org>\n"
|
||||||
@ -849,6 +849,18 @@ msgstr "Verzeichnisse im Timer-Men
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Nummerntasten für Zeichen"
|
msgstr "Nummerntasten für Zeichen"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr "Farbtaste 0"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr "Farbtaste 1"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr "Farbtaste 2"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr "Farbtaste 3"
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/el_GR.po
14
po/el_GR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
||||||
"Language-Team: Greek <vdr@linuxtv.org>\n"
|
"Language-Team: Greek <vdr@linuxtv.org>\n"
|
||||||
@ -849,6 +849,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Çëåêôñïíéêüò ïäçãüò ðñïãñÜììáôïò"
|
msgstr "Çëåêôñïíéêüò ïäçãüò ðñïãñÜììáôïò"
|
||||||
|
|
||||||
|
14
po/es_ES.po
14
po/es_ES.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
||||||
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
||||||
"Language-Team: Spanish <vdr@linuxtv.org>\n"
|
"Language-Team: Spanish <vdr@linuxtv.org>\n"
|
||||||
@ -850,6 +850,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Guía de Programación"
|
msgstr "Guía de Programación"
|
||||||
|
|
||||||
|
14
po/et_EE.po
14
po/et_EE.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
|
"Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
|
||||||
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
||||||
@ -849,6 +849,18 @@ msgstr "Kaustad taimeri menüüs"
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Teksti sisestamine numbriklahvidega"
|
msgstr "Teksti sisestamine numbriklahvidega"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
16
po/fi_FI.po
16
po/fi_FI.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
|
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
|
||||||
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
|
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
|
||||||
"Language-Team: Finnish <vdr@linuxtv.org>\n"
|
"Language-Team: Finnish <vdr@linuxtv.org>\n"
|
||||||
@ -852,6 +852,18 @@ msgstr "Näytä kansiot ajastinvalikossa"
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Käytä numeronäppäimiä tekstisyötteessä"
|
msgstr "Käytä numeronäppäimiä tekstisyötteessä"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Ohjelmaopas"
|
msgstr "Ohjelmaopas"
|
||||||
|
|
||||||
@ -1123,7 +1135,7 @@ msgid "Setup.Miscellaneous$Channels wrap"
|
|||||||
msgstr "Kanavien rullaus"
|
msgstr "Kanavien rullaus"
|
||||||
|
|
||||||
msgid "Setup.Miscellaneous$Show channel names with source"
|
msgid "Setup.Miscellaneous$Show channel names with source"
|
||||||
msgstr ""
|
msgstr "Näytä lähde kanavien nimissä"
|
||||||
|
|
||||||
msgid "Setup.Miscellaneous$Emergency exit"
|
msgid "Setup.Miscellaneous$Emergency exit"
|
||||||
msgstr "Käytä hätäsammutusta"
|
msgstr "Käytä hätäsammutusta"
|
||||||
|
14
po/fr_FR.po
14
po/fr_FR.po
@ -13,7 +13,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
|
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
|
||||||
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
|
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
|
||||||
"Language-Team: French <vdr@linuxtv.org>\n"
|
"Language-Team: French <vdr@linuxtv.org>\n"
|
||||||
@ -855,6 +855,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Guide des programmes"
|
msgstr "Guide des programmes"
|
||||||
|
|
||||||
|
14
po/hr_HR.po
14
po/hr_HR.po
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
|
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
|
||||||
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
|
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
|
||||||
"Language-Team: Croatian <vdr@linuxtv.org>\n"
|
"Language-Team: Croatian <vdr@linuxtv.org>\n"
|
||||||
@ -851,6 +851,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG (elektronski programski vodiè)"
|
msgstr "EPG (elektronski programski vodiè)"
|
||||||
|
|
||||||
|
14
po/hu_HU.po
14
po/hu_HU.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2012-01-02 11:54+0200\n"
|
"PO-Revision-Date: 2012-01-02 11:54+0200\n"
|
||||||
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
|
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
|
||||||
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
|
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
|
||||||
@ -852,6 +852,18 @@ msgstr "K
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Számgombok a betûkön"
|
msgstr "Számgombok a betûkön"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/it_IT.po
14
po/it_IT.po
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2012-06-06 22:50+0100\n"
|
"PO-Revision-Date: 2012-06-06 22:50+0100\n"
|
||||||
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
||||||
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
||||||
@ -856,6 +856,18 @@ msgstr "Cartelle nel menu timer"
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Tasti numerici per i caratteri"
|
msgstr "Tasti numerici per i caratteri"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Guida programmi EPG"
|
msgstr "Guida programmi EPG"
|
||||||
|
|
||||||
|
14
po/lt_LT.po
14
po/lt_LT.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.16\n"
|
"Project-Id-Version: VDR 1.7.16\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
||||||
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
||||||
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
||||||
@ -849,6 +849,18 @@ msgstr "Katalogai esantys laikmačių meniu"
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Skaičių mygtukai simboliams"
|
msgstr "Skaičių mygtukai simboliams"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Elektroninis programų gidas (EPG)"
|
msgstr "Elektroninis programų gidas (EPG)"
|
||||||
|
|
||||||
|
14
po/mk_MK.po
14
po/mk_MK.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR-1.7.14\n"
|
"Project-Id-Version: VDR-1.7.14\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2010-03-11 00:54+0100\n"
|
"PO-Revision-Date: 2010-03-11 00:54+0100\n"
|
||||||
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
|
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
|
||||||
"Language-Team: Macedonian <en@li.org>\n"
|
"Language-Team: Macedonian <en@li.org>\n"
|
||||||
@ -850,6 +850,18 @@ msgstr "Директориуми во менито за тајмер"
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG (електронски водич на програми)"
|
msgstr "EPG (електронски водич на програми)"
|
||||||
|
|
||||||
|
14
po/nl_NL.po
14
po/nl_NL.po
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
|
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
|
||||||
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
|
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
|
||||||
"Language-Team: Dutch <vdr@linuxtv.org>\n"
|
"Language-Team: Dutch <vdr@linuxtv.org>\n"
|
||||||
@ -853,6 +853,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/nn_NO.po
14
po/nn_NO.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
|
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
|
||||||
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
|
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
|
||||||
@ -850,6 +850,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Programoversikt"
|
msgstr "Programoversikt"
|
||||||
|
|
||||||
|
14
po/pl_PL.po
14
po/pl_PL.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
|
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
|
||||||
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
||||||
"Language-Team: Polish <vdr@linuxtv.org>\n"
|
"Language-Team: Polish <vdr@linuxtv.org>\n"
|
||||||
@ -850,6 +850,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/pt_PT.po
14
po/pt_PT.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.15\n"
|
"Project-Id-Version: VDR 1.7.15\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
|
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
|
||||||
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
|
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
|
||||||
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
|
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
|
||||||
@ -850,6 +850,18 @@ msgstr "Pastas no menu de grava
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Teclas numéricas para caracteres"
|
msgstr "Teclas numéricas para caracteres"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Guia de Programação"
|
msgstr "Guia de Programação"
|
||||||
|
|
||||||
|
14
po/ro_RO.po
14
po/ro_RO.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.12\n"
|
"Project-Id-Version: VDR 1.7.12\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2011-03-10 23:52+0100\n"
|
"PO-Revision-Date: 2011-03-10 23:52+0100\n"
|
||||||
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
||||||
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
||||||
@ -852,6 +852,18 @@ msgstr "Directoare
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Caractere pe tastele numerice"
|
msgstr "Caractere pe tastele numerice"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/ru_RU.po
14
po/ru_RU.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-12-15 14:37+0100\n"
|
"PO-Revision-Date: 2008-12-15 14:37+0100\n"
|
||||||
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
|
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
|
||||||
"Language-Team: Russian <vdr@linuxtv.org>\n"
|
"Language-Team: Russian <vdr@linuxtv.org>\n"
|
||||||
@ -850,6 +850,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "ÂÕÛÕÓØÔ"
|
msgstr "ÂÕÛÕÓØÔ"
|
||||||
|
|
||||||
|
14
po/sk_SK.po
14
po/sk_SK.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.16\n"
|
"Project-Id-Version: VDR 1.7.16\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2011-02-15 16:29+0100\n"
|
"PO-Revision-Date: 2011-02-15 16:29+0100\n"
|
||||||
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
||||||
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
||||||
@ -849,6 +849,18 @@ msgstr "Zlo
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Èíselné tlaèidlá pre znaky"
|
msgstr "Èíselné tlaèidlá pre znaky"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/sl_SI.po
14
po/sl_SI.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
|
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
|
||||||
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
||||||
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
|
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
|
||||||
@ -850,6 +850,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Programski vodnik"
|
msgstr "Programski vodnik"
|
||||||
|
|
||||||
|
14
po/sr_SR.po
14
po/sr_SR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.1\n"
|
"Project-Id-Version: VDR 1.7.1\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2011-01-09 15:57+0100\n"
|
"PO-Revision-Date: 2011-01-09 15:57+0100\n"
|
||||||
"Last-Translator: Milan Cvijanoviæ <elcom_cvijo@hotmail.com>\n"
|
"Last-Translator: Milan Cvijanoviæ <elcom_cvijo@hotmail.com>\n"
|
||||||
"Language-Team: Serbian <vdr@linuxtv.org>\n"
|
"Language-Team: Serbian <vdr@linuxtv.org>\n"
|
||||||
@ -867,6 +867,18 @@ msgstr "Direktoriji u tajmer meni-ju "
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr "Number keys for characters"
|
msgstr "Number keys for characters"
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG (TV Raspored¨)"
|
msgstr "EPG (TV Raspored¨)"
|
||||||
|
|
||||||
|
14
po/sv_SE.po
14
po/sv_SE.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
|
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
|
||||||
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
|
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
|
||||||
"Language-Team: Swedish <vdr@linuxtv.org>\n"
|
"Language-Team: Swedish <vdr@linuxtv.org>\n"
|
||||||
@ -852,6 +852,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/tr_TR.po
14
po/tr_TR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
|
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
|
||||||
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
||||||
"Language-Team: Turkish <vdr@linuxtv.org>\n"
|
"Language-Team: Turkish <vdr@linuxtv.org>\n"
|
||||||
@ -849,6 +849,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG"
|
msgstr "EPG"
|
||||||
|
|
||||||
|
14
po/uk_UA.po
14
po/uk_UA.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.7\n"
|
"Project-Id-Version: VDR 1.7.7\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
||||||
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
||||||
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
||||||
@ -849,6 +849,18 @@ msgstr "Каталоги в меню таймера"
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "Телегід (EPG)"
|
msgstr "Телегід (EPG)"
|
||||||
|
|
||||||
|
14
po/zh_CN.po
14
po/zh_CN.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-06-17 13:59+0200\n"
|
"POT-Creation-Date: 2012-09-09 15:20+0200\n"
|
||||||
"PO-Revision-Date: 2009-09-23 23:50+0800\n"
|
"PO-Revision-Date: 2009-09-23 23:50+0800\n"
|
||||||
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
||||||
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
||||||
@ -852,6 +852,18 @@ msgstr ""
|
|||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 0"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.OSD$Color key 3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "电子节目单设置"
|
msgstr "电子节目单设置"
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: receiver.h 2.8 2012/06/02 13:20:44 kls Exp $
|
* $Id: receiver.h 2.9 2012/09/02 09:27:20 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RECEIVER_H
|
#ifndef __RECEIVER_H
|
||||||
@ -27,7 +27,7 @@ protected:
|
|||||||
void Detach(void);
|
void Detach(void);
|
||||||
virtual void Activate(bool On) {}
|
virtual void Activate(bool On) {}
|
||||||
///< This function is called just before the cReceiver gets attached to
|
///< This function is called just before the cReceiver gets attached to
|
||||||
///< (On == true) or detached from (On == false) a cDevice. It can be used
|
///< (On == true) and right after it gets detached from (On == false) a cDevice. It can be used
|
||||||
///< to do things like starting/stopping a thread.
|
///< to do things like starting/stopping a thread.
|
||||||
///< It is guaranteed that Receive() will not be called before Activate(true).
|
///< It is guaranteed that Receive() will not be called before Activate(true).
|
||||||
virtual void Receive(uchar *Data, int Length) = 0;
|
virtual void Receive(uchar *Data, int Length) = 0;
|
||||||
|
52
recording.c
52
recording.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.c 2.57 2012/06/09 13:57:30 kls Exp $
|
* $Id: recording.c 2.60 2012/09/06 09:57:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
@ -831,8 +831,8 @@ char *cRecording::SortName(void) const
|
|||||||
{
|
{
|
||||||
char **sb = (RecordingsSortMode == rsmName) ? &sortBufferName : &sortBufferTime;
|
char **sb = (RecordingsSortMode == rsmName) ? &sortBufferName : &sortBufferTime;
|
||||||
if (!*sb) {
|
if (!*sb) {
|
||||||
char *s = (RecordingsSortMode == rsmName) ? strdup(FileName() + strlen(VideoDirectory) + 1)
|
char *s = (RecordingsSortMode == rsmName) ? strdup(FileName() + strlen(VideoDirectory))
|
||||||
: StripEpisodeName(strdup(FileName() + strlen(VideoDirectory) + 1));
|
: StripEpisodeName(strdup(FileName() + strlen(VideoDirectory)));
|
||||||
strreplace(s, '/', 'a'); // some locales ignore '/' when sorting
|
strreplace(s, '/', 'a'); // some locales ignore '/' when sorting
|
||||||
int l = strxfrm(NULL, s, 0) + 1;
|
int l = strxfrm(NULL, s, 0) + 1;
|
||||||
*sb = MALLOC(char, l);
|
*sb = MALLOC(char, l);
|
||||||
@ -1067,7 +1067,7 @@ int cRecording::NumFrames(void) const
|
|||||||
{
|
{
|
||||||
if (numFrames < 0) {
|
if (numFrames < 0) {
|
||||||
int nf = cIndexFile::GetLength(FileName(), IsPesRecording());
|
int nf = cIndexFile::GetLength(FileName(), IsPesRecording());
|
||||||
if (time(NULL) - LastModifiedTime(FileName()) < MININDEXAGE)
|
if (time(NULL) - LastModifiedTime(cIndexFile::IndexFileName(FileName(), IsPesRecording())) < MININDEXAGE)
|
||||||
return nf; // check again later for ongoing recordings
|
return nf; // check again later for ongoing recordings
|
||||||
numFrames = nf;
|
numFrames = nf;
|
||||||
}
|
}
|
||||||
@ -1086,7 +1086,7 @@ int cRecording::FileSizeMB(void) const
|
|||||||
{
|
{
|
||||||
if (fileSizeMB < 0) {
|
if (fileSizeMB < 0) {
|
||||||
int fs = DirSizeMB(FileName());
|
int fs = DirSizeMB(FileName());
|
||||||
if (time(NULL) - LastModifiedTime(FileName()) < MININDEXAGE)
|
if (time(NULL) - LastModifiedTime(cIndexFile::IndexFileName(FileName(), IsPesRecording())) < MININDEXAGE)
|
||||||
return fs; // check again later for ongoing recordings
|
return fs; // check again later for ongoing recordings
|
||||||
fileSizeMB = fs;
|
fileSizeMB = fs;
|
||||||
}
|
}
|
||||||
@ -1607,6 +1607,9 @@ struct tIndexTs {
|
|||||||
#define INDEXFILECHECKINTERVAL 500 // ms between checks for existence of the regenerated index file
|
#define INDEXFILECHECKINTERVAL 500 // ms between checks for existence of the regenerated index file
|
||||||
#define INDEXFILETESTINTERVAL 10 // ms between tests for the size of the index file in case of pausing live video
|
#define INDEXFILETESTINTERVAL 10 // ms between tests for the size of the index file in case of pausing live video
|
||||||
|
|
||||||
|
cMutex cIndexFile::indexListMutex;
|
||||||
|
cVector<const cIndexFile *> cIndexFile::indexList;
|
||||||
|
|
||||||
cIndexFile::cIndexFile(const char *FileName, bool Record, bool IsPesRecording, bool PauseLive)
|
cIndexFile::cIndexFile(const char *FileName, bool Record, bool IsPesRecording, bool PauseLive)
|
||||||
:resumeFile(FileName, IsPesRecording)
|
:resumeFile(FileName, IsPesRecording)
|
||||||
{
|
{
|
||||||
@ -1687,10 +1690,13 @@ cIndexFile::cIndexFile(const char *FileName, bool Record, bool IsPesRecording, b
|
|||||||
LOG_ERROR_STR(*fileName);
|
LOG_ERROR_STR(*fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (Record)
|
||||||
|
AddToIndexList(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
cIndexFile::~cIndexFile()
|
cIndexFile::~cIndexFile()
|
||||||
{
|
{
|
||||||
|
RemoveFromIndexList(this);
|
||||||
if (f >= 0)
|
if (f >= 0)
|
||||||
close(f);
|
close(f);
|
||||||
free(index);
|
free(index);
|
||||||
@ -1735,8 +1741,7 @@ bool cIndexFile::CatchUp(int Index)
|
|||||||
for (int i = 0; i <= MAXINDEXCATCHUP && (Index < 0 || Index >= last); i++) {
|
for (int i = 0; i <= MAXINDEXCATCHUP && (Index < 0 || Index >= last); i++) {
|
||||||
struct stat buf;
|
struct stat buf;
|
||||||
if (fstat(f, &buf) == 0) {
|
if (fstat(f, &buf) == 0) {
|
||||||
if (time(NULL) - buf.st_mtime > MININDEXAGE) {
|
if (!IsInIndexList(this)) {
|
||||||
// apparently the index file is not being written any more
|
|
||||||
close(f);
|
close(f);
|
||||||
f = -1;
|
f = -1;
|
||||||
break;
|
break;
|
||||||
@ -1902,6 +1907,39 @@ int cIndexFile::GetLength(const char *FileName, bool IsPesRecording)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cIndexFile::AddToIndexList(const cIndexFile *IndexFile)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&indexListMutex);
|
||||||
|
for (int i = 0; i < indexList.Size(); i++) {
|
||||||
|
if (!indexList[i]) {
|
||||||
|
indexList[i] = IndexFile;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
indexList.Append(IndexFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cIndexFile::RemoveFromIndexList(const cIndexFile *IndexFile)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&indexListMutex);
|
||||||
|
for (int i = 0; i < indexList.Size(); i++) {
|
||||||
|
if (indexList[i] == IndexFile) {
|
||||||
|
indexList[i] = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cIndexFile::IsInIndexList(const cIndexFile *IndexFile)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&indexListMutex);
|
||||||
|
for (int i = 0; i < indexList.Size(); i++) {
|
||||||
|
if (indexList[i] && !strcmp(indexList[i]->fileName, IndexFile->fileName))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool GenerateIndex(const char *FileName)
|
bool GenerateIndex(const char *FileName)
|
||||||
{
|
{
|
||||||
if (DirectoryOk(FileName)) {
|
if (DirectoryOk(FileName)) {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.h 2.34 2012/06/09 13:55:22 kls Exp $
|
* $Id: recording.h 2.36 2012/09/06 09:59:11 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RECORDING_H
|
#ifndef __RECORDING_H
|
||||||
@ -275,7 +275,11 @@ private:
|
|||||||
cResumeFile resumeFile;
|
cResumeFile resumeFile;
|
||||||
cIndexFileGenerator *indexFileGenerator;
|
cIndexFileGenerator *indexFileGenerator;
|
||||||
cMutex mutex;
|
cMutex mutex;
|
||||||
static cString IndexFileName(const char *FileName, bool IsPesRecording);
|
static cMutex indexListMutex;
|
||||||
|
static cVector<const cIndexFile *> indexList;
|
||||||
|
static void AddToIndexList(const cIndexFile *IndexFile);
|
||||||
|
static void RemoveFromIndexList(const cIndexFile *IndexFile);
|
||||||
|
static bool IsInIndexList(const cIndexFile *IndexFile);
|
||||||
void ConvertFromPes(tIndexTs *IndexTs, int Count);
|
void ConvertFromPes(tIndexTs *IndexTs, int Count);
|
||||||
void ConvertToPes(tIndexTs *IndexTs, int Count);
|
void ConvertToPes(tIndexTs *IndexTs, int Count);
|
||||||
bool CatchUp(int Index = -1);
|
bool CatchUp(int Index = -1);
|
||||||
@ -295,6 +299,7 @@ public:
|
|||||||
static int GetLength(const char *FileName, bool IsPesRecording = false);
|
static int GetLength(const char *FileName, bool IsPesRecording = false);
|
||||||
///< Calculates the recording length (number of frames) without actually reading the index file.
|
///< Calculates the recording length (number of frames) without actually reading the index file.
|
||||||
///< Returns -1 in case of error.
|
///< Returns -1 in case of error.
|
||||||
|
static cString IndexFileName(const char *FileName, bool IsPesRecording);
|
||||||
};
|
};
|
||||||
|
|
||||||
class cFileName {
|
class cFileName {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: sections.c 2.0 2007/10/14 12:52:07 kls Exp $
|
* $Id: sections.c 2.1 2012/08/26 12:53:39 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sections.h"
|
#include "sections.h"
|
||||||
@ -198,7 +198,7 @@ void cSectionHandler::Action(void)
|
|||||||
if (fh) {
|
if (fh) {
|
||||||
// Read section data:
|
// Read section data:
|
||||||
unsigned char buf[4096]; // max. allowed size for any EIT section
|
unsigned char buf[4096]; // max. allowed size for any EIT section
|
||||||
int r = safe_read(fh->handle, buf, sizeof(buf));
|
int r = device->ReadFilter(fh->handle, buf, sizeof(buf));
|
||||||
if (!DeviceHasLock)
|
if (!DeviceHasLock)
|
||||||
continue; // we do the read anyway, to flush any data that might have come from a different transponder
|
continue; // we do the read anyway, to flush any data that might have come from a different transponder
|
||||||
if (r > 3) { // minimum number of bytes necessary to get section length
|
if (r > 3) { // minimum number of bytes necessary to get section length
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skinclassic.c 2.7 2012/04/23 08:48:03 kls Exp $
|
* $Id: skinclassic.c 2.8 2012/09/09 11:39:06 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "skinclassic.h"
|
#include "skinclassic.h"
|
||||||
@ -291,16 +291,19 @@ void cSkinClassicDisplayMenu::SetTitle(const char *Title)
|
|||||||
void cSkinClassicDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
void cSkinClassicDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
||||||
{
|
{
|
||||||
const cFont *font = cFont::GetFont(fontOsd);
|
const cFont *font = cFont::GetFont(fontOsd);
|
||||||
|
const char *lutText[] = { Red, Green, Yellow, Blue };
|
||||||
|
tColor lutFg[] = { clrButtonRedFg, clrButtonGreenFg, clrButtonYellowFg, clrButtonBlueFg };
|
||||||
|
tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
|
||||||
int w = x3 - x0;
|
int w = x3 - x0;
|
||||||
int t0 = x0;
|
int t0 = x0;
|
||||||
int t1 = x0 + w / 4;
|
int t1 = x0 + w / 4;
|
||||||
int t2 = x0 + w / 2;
|
int t2 = x0 + w / 2;
|
||||||
int t3 = x3 - w / 4;
|
int t3 = x3 - w / 4;
|
||||||
int t4 = x3;
|
int t4 = x3;
|
||||||
osd->DrawText(t0, y4, Red, Theme.Color(clrButtonRedFg), Red ? Theme.Color(clrButtonRedBg) : Theme.Color(clrBackground), font, t1 - t0, 0, taCenter);
|
osd->DrawText(t0, y4, lutText[Setup.ColorKey0], Theme.Color(lutFg[Setup.ColorKey0]), lutText[Setup.ColorKey0] ? Theme.Color(lutBg[Setup.ColorKey0]) : Theme.Color(clrBackground), font, t1 - t0, 0, taCenter);
|
||||||
osd->DrawText(t1, y4, Green, Theme.Color(clrButtonGreenFg), Green ? Theme.Color(clrButtonGreenBg) : Theme.Color(clrBackground), font, t2 - t1, 0, taCenter);
|
osd->DrawText(t1, y4, lutText[Setup.ColorKey1], Theme.Color(lutFg[Setup.ColorKey1]), lutText[Setup.ColorKey1] ? Theme.Color(lutBg[Setup.ColorKey1]) : Theme.Color(clrBackground), font, t2 - t1, 0, taCenter);
|
||||||
osd->DrawText(t2, y4, Yellow, Theme.Color(clrButtonYellowFg), Yellow ? Theme.Color(clrButtonYellowBg) : Theme.Color(clrBackground), font, t3 - t2, 0, taCenter);
|
osd->DrawText(t2, y4, lutText[Setup.ColorKey2], Theme.Color(lutFg[Setup.ColorKey2]), lutText[Setup.ColorKey2] ? Theme.Color(lutBg[Setup.ColorKey2]) : Theme.Color(clrBackground), font, t3 - t2, 0, taCenter);
|
||||||
osd->DrawText(t3, y4, Blue, Theme.Color(clrButtonBlueFg), Blue ? Theme.Color(clrButtonBlueBg) : Theme.Color(clrBackground), font, t4 - t3, 0, taCenter);
|
osd->DrawText(t3, y4, lutText[Setup.ColorKey3], Theme.Color(lutFg[Setup.ColorKey3]), lutText[Setup.ColorKey3] ? Theme.Color(lutBg[Setup.ColorKey3]) : Theme.Color(clrBackground), font, t4 - t3, 0, taCenter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinClassicDisplayMenu::SetMessage(eMessageType Type, const char *Text)
|
void cSkinClassicDisplayMenu::SetMessage(eMessageType Type, const char *Text)
|
||||||
|
30
skinlcars.c
30
skinlcars.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skinlcars.c 2.13 2012/06/13 13:27:31 kls Exp $
|
* $Id: skinlcars.c 2.14 2012/09/09 12:16:50 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures,
|
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures,
|
||||||
@ -975,10 +975,11 @@ void cSkinLCARSDisplayMenu::DrawMenuFrame(void)
|
|||||||
osd->DrawEllipse (xa08 + lineHeight / 2, yb14, xa09 - 1, yb15 - 1, frameColor, 5);
|
osd->DrawEllipse (xa08 + lineHeight / 2, yb14, xa09 - 1, yb15 - 1, frameColor, 5);
|
||||||
osd->DrawText(xa00, yb10, "VDR", Theme.Color(clrMenuFrameFg), frameColor, tallFont, xa02 - xa00, yb11 - yb10, taTop | taRight | taBorder);
|
osd->DrawText(xa00, yb10, "VDR", Theme.Color(clrMenuFrameFg), frameColor, tallFont, xa02 - xa00, yb11 - yb10, taTop | taRight | taBorder);
|
||||||
// Color buttons:
|
// Color buttons:
|
||||||
osd->DrawRectangle(xb00, yb14, xb01 - 1, yb15 - 1, Theme.Color(clrButtonRedBg));
|
tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
|
||||||
osd->DrawRectangle(xb04, yb14, xb05 - 1, yb15 - 1, Theme.Color(clrButtonGreenBg));
|
osd->DrawRectangle(xb00, yb14, xb01 - 1, yb15 - 1, Theme.Color(lutBg[Setup.ColorKey0]));
|
||||||
osd->DrawRectangle(xb08, yb14, xb09 - 1, yb15 - 1, Theme.Color(clrButtonYellowBg));
|
osd->DrawRectangle(xb04, yb14, xb05 - 1, yb15 - 1, Theme.Color(lutBg[Setup.ColorKey1]));
|
||||||
osd->DrawRectangle(xb12, yb14, xb13 - 1, yb15 - 1, Theme.Color(clrButtonBlueBg));
|
osd->DrawRectangle(xb08, yb14, xb09 - 1, yb15 - 1, Theme.Color(lutBg[Setup.ColorKey2]));
|
||||||
|
osd->DrawRectangle(xb12, yb14, xb13 - 1, yb15 - 1, Theme.Color(lutBg[Setup.ColorKey3]));
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinLCARSDisplayMenu::DrawDate(void)
|
void cSkinLCARSDisplayMenu::DrawDate(void)
|
||||||
@ -1458,19 +1459,22 @@ void cSkinLCARSDisplayMenu::SetTitle(const char *Title)
|
|||||||
|
|
||||||
void cSkinLCARSDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
void cSkinLCARSDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
||||||
{
|
{
|
||||||
|
const char *lutText[] = { Red, Green, Yellow, Blue };
|
||||||
|
tColor lutFg[] = { clrButtonRedFg, clrButtonGreenFg, clrButtonYellowFg, clrButtonBlueFg };
|
||||||
|
tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
|
||||||
const cFont *font = cFont::GetFont(fontSml);
|
const cFont *font = cFont::GetFont(fontSml);
|
||||||
if (MenuCategory() == mcMain) {
|
if (MenuCategory() == mcMain) {
|
||||||
DrawMainButton(Red, xd00, xd01, xd02, xd03, yd02, yd03, Theme.Color(clrButtonRedFg), Theme.Color(clrButtonRedBg), font);
|
DrawMainButton(lutText[Setup.ColorKey0], xd00, xd01, xd02, xd03, yd02, yd03, Theme.Color(lutFg[Setup.ColorKey0]), Theme.Color(lutBg[Setup.ColorKey0]), font);
|
||||||
DrawMainButton(Green, xd04, xd05, xd06, xd07, yd02, yd03, Theme.Color(clrButtonGreenFg), Theme.Color(clrButtonGreenBg), font);
|
DrawMainButton(lutText[Setup.ColorKey1], xd04, xd05, xd06, xd07, yd02, yd03, Theme.Color(lutFg[Setup.ColorKey1]), Theme.Color(lutBg[Setup.ColorKey1]), font);
|
||||||
DrawMainButton(Yellow, xd00, xd01, xd02, xd03, yd04, yd05, Theme.Color(clrButtonYellowFg), Theme.Color(clrButtonYellowBg), font);
|
DrawMainButton(lutText[Setup.ColorKey2], xd00, xd01, xd02, xd03, yd04, yd05, Theme.Color(lutFg[Setup.ColorKey2]), Theme.Color(lutBg[Setup.ColorKey2]), font);
|
||||||
DrawMainButton(Blue, xd04, xd05, xd06, xd07, yd04, yd05, Theme.Color(clrButtonBlueFg), Theme.Color(clrButtonBlueBg), font);
|
DrawMainButton(lutText[Setup.ColorKey3], xd04, xd05, xd06, xd07, yd04, yd05, Theme.Color(lutFg[Setup.ColorKey3]), Theme.Color(lutBg[Setup.ColorKey3]), font);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int h = yb15 - yb14;
|
int h = yb15 - yb14;
|
||||||
osd->DrawText(xb02, yb14, Red, Theme.Color(clrButtonRedFg), Theme.Color(clrButtonRedBg), font, xb03 - xb02, h, taLeft | taBorder);
|
osd->DrawText(xb02, yb14, lutText[Setup.ColorKey0], Theme.Color(lutFg[Setup.ColorKey0]), Theme.Color(lutBg[Setup.ColorKey0]), font, xb03 - xb02, h, taLeft | taBorder);
|
||||||
osd->DrawText(xb06, yb14, Green, Theme.Color(clrButtonGreenFg), Theme.Color(clrButtonGreenBg), font, xb07 - xb06, h, taLeft | taBorder);
|
osd->DrawText(xb06, yb14, lutText[Setup.ColorKey1], Theme.Color(lutFg[Setup.ColorKey1]), Theme.Color(lutBg[Setup.ColorKey1]), font, xb07 - xb06, h, taLeft | taBorder);
|
||||||
osd->DrawText(xb10, yb14, Yellow, Theme.Color(clrButtonYellowFg), Theme.Color(clrButtonYellowBg), font, xb11 - xb10, h, taLeft | taBorder);
|
osd->DrawText(xb10, yb14, lutText[Setup.ColorKey2], Theme.Color(lutFg[Setup.ColorKey2]), Theme.Color(lutBg[Setup.ColorKey2]), font, xb11 - xb10, h, taLeft | taBorder);
|
||||||
osd->DrawText(xb14, yb14, Blue, Theme.Color(clrButtonBlueFg), Theme.Color(clrButtonBlueBg), font, xb15 - xb14, h, taLeft | taBorder);
|
osd->DrawText(xb14, yb14, lutText[Setup.ColorKey3], Theme.Color(lutFg[Setup.ColorKey3]), Theme.Color(lutBg[Setup.ColorKey3]), font, xb15 - xb14, h, taLeft | taBorder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skinlcars.h 1.1 2012/04/15 13:17:35 kls Exp $
|
* $Id: skinlcars.h 2.1 2012/04/15 13:17:35 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SKINLCARS_H
|
#ifndef __SKINLCARS_H
|
||||||
|
13
skinsttng.c
13
skinsttng.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skinsttng.c 2.15 2012/04/23 08:39:11 kls Exp $
|
* $Id: skinsttng.c 2.16 2012/09/09 11:39:06 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures
|
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures
|
||||||
@ -571,6 +571,9 @@ void cSkinSTTNGDisplayMenu::SetTitle(const char *Title)
|
|||||||
|
|
||||||
void cSkinSTTNGDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
void cSkinSTTNGDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
||||||
{
|
{
|
||||||
|
const char *lutText[] = { Red, Green, Yellow, Blue };
|
||||||
|
tColor lutFg[] = { clrButtonRedFg, clrButtonGreenFg, clrButtonYellowFg, clrButtonBlueFg };
|
||||||
|
tColor lutBg[] = { clrButtonRedBg, clrButtonGreenBg, clrButtonYellowBg, clrButtonBlueBg };
|
||||||
cString date = DayDateTime();
|
cString date = DayDateTime();
|
||||||
const cFont *font = cFont::GetFont(fontSml);
|
const cFont *font = cFont::GetFont(fontSml);
|
||||||
int d = 2 * Gap;
|
int d = 2 * Gap;
|
||||||
@ -585,10 +588,10 @@ void cSkinSTTNGDisplayMenu::SetButtons(const char *Red, const char *Green, const
|
|||||||
osd->DrawRectangle(t1 + d2, y6, t2 - d2, y7 - 1, clrBlack);
|
osd->DrawRectangle(t1 + d2, y6, t2 - d2, y7 - 1, clrBlack);
|
||||||
osd->DrawRectangle(t2 + d2, y6, t3 - d2, y7 - 1, clrBlack);
|
osd->DrawRectangle(t2 + d2, y6, t3 - d2, y7 - 1, clrBlack);
|
||||||
osd->DrawRectangle(t3 + d2, y6, t4 - d2, y7 - 1, clrBlack);
|
osd->DrawRectangle(t3 + d2, y6, t4 - d2, y7 - 1, clrBlack);
|
||||||
osd->DrawText(t0 + d, y6, Red, Theme.Color(clrButtonRedFg), Theme.Color(clrButtonRedBg), font, t1 - t0 - 2 * d, 0, taCenter);
|
osd->DrawText(t0 + d, y6, lutText[Setup.ColorKey0], Theme.Color(lutFg[Setup.ColorKey0]), Theme.Color(lutBg[Setup.ColorKey0]), font, t1 - t0 - 2 * d, 0, taCenter);
|
||||||
osd->DrawText(t1 + d, y6, Green, Theme.Color(clrButtonGreenFg), Theme.Color(clrButtonGreenBg), font, t2 - t1 - 2 * d, 0, taCenter);
|
osd->DrawText(t1 + d, y6, lutText[Setup.ColorKey1], Theme.Color(lutFg[Setup.ColorKey1]), Theme.Color(lutBg[Setup.ColorKey1]), font, t2 - t1 - 2 * d, 0, taCenter);
|
||||||
osd->DrawText(t2 + d, y6, Yellow, Theme.Color(clrButtonYellowFg), Theme.Color(clrButtonYellowBg), font, t3 - t2 - 2 * d, 0, taCenter);
|
osd->DrawText(t2 + d, y6, lutText[Setup.ColorKey2], Theme.Color(lutFg[Setup.ColorKey2]), Theme.Color(lutBg[Setup.ColorKey2]), font, t3 - t2 - 2 * d, 0, taCenter);
|
||||||
osd->DrawText(t3 + d, y6, Blue, Theme.Color(clrButtonBlueFg), Theme.Color(clrButtonBlueBg), font, t4 - t3 - 2 * d, 0, taCenter);
|
osd->DrawText(t3 + d, y6, lutText[Setup.ColorKey3], Theme.Color(lutFg[Setup.ColorKey3]), Theme.Color(lutBg[Setup.ColorKey3]), font, t4 - t3 - 2 * d, 0, taCenter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinSTTNGDisplayMenu::SetMessage(eMessageType Type, const char *Text)
|
void cSkinSTTNGDisplayMenu::SetMessage(eMessageType Type, const char *Text)
|
||||||
|
21
tools.c
21
tools.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: tools.c 2.24 2012/05/12 13:29:20 kls Exp $
|
* $Id: tools.c 2.25 2012/08/21 10:34:37 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
@ -435,6 +435,7 @@ bool RemoveFileOrDir(const char *FileName, bool FollowSymlinks)
|
|||||||
|
|
||||||
bool RemoveEmptyDirectories(const char *DirName, bool RemoveThis)
|
bool RemoveEmptyDirectories(const char *DirName, bool RemoveThis)
|
||||||
{
|
{
|
||||||
|
bool HasDotFiles = false;
|
||||||
cReadDir d(DirName);
|
cReadDir d(DirName);
|
||||||
if (d.Ok()) {
|
if (d.Ok()) {
|
||||||
bool empty = true;
|
bool empty = true;
|
||||||
@ -448,6 +449,8 @@ bool RemoveEmptyDirectories(const char *DirName, bool RemoveThis)
|
|||||||
if (!RemoveEmptyDirectories(buffer, true))
|
if (!RemoveEmptyDirectories(buffer, true))
|
||||||
empty = false;
|
empty = false;
|
||||||
}
|
}
|
||||||
|
else if (*e->d_name == '.') // "dot files" don't count
|
||||||
|
HasDotFiles = true;
|
||||||
else
|
else
|
||||||
empty = false;
|
empty = false;
|
||||||
}
|
}
|
||||||
@ -458,6 +461,22 @@ bool RemoveEmptyDirectories(const char *DirName, bool RemoveThis)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (RemoveThis && empty) {
|
if (RemoveThis && empty) {
|
||||||
|
if (HasDotFiles) {
|
||||||
|
cReadDir d(DirName);
|
||||||
|
if (d.Ok()) {
|
||||||
|
struct dirent *e;
|
||||||
|
while ((e = d.Next()) != NULL) {
|
||||||
|
if (*e->d_name == '.') { // for safety - should always be true
|
||||||
|
cString buffer = AddDirectory(DirName, e->d_name);
|
||||||
|
dsyslog("removing %s", *buffer);
|
||||||
|
if (remove(buffer) < 0) {
|
||||||
|
LOG_ERROR_STR(*buffer);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
dsyslog("removing %s", DirName);
|
dsyslog("removing %s", DirName);
|
||||||
if (remove(DirName) < 0) {
|
if (remove(DirName) < 0) {
|
||||||
LOG_ERROR_STR(DirName);
|
LOG_ERROR_STR(DirName);
|
||||||
|
10
vdr.1
10
vdr.1
@ -8,7 +8,7 @@
|
|||||||
.\" License as specified in the file COPYING that comes with the
|
.\" License as specified in the file COPYING that comes with the
|
||||||
.\" vdr distribution.
|
.\" vdr distribution.
|
||||||
.\"
|
.\"
|
||||||
.\" $Id: vdr.1 2.8 2012/02/27 11:01:17 kls Exp $
|
.\" $Id: vdr.1 2.9 2012/09/01 13:40:49 kls Exp $
|
||||||
.\"
|
.\"
|
||||||
.TH vdr 1 "10 Feb 2008" "1.6" "Video Disk Recorder"
|
.TH vdr 1 "10 Feb 2008" "1.6" "Video Disk Recorder"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@ -42,6 +42,10 @@ which can be accessed on port 6419, for instance by \fBtelnet\fR.
|
|||||||
.BI \-a\ cmd ,\ \-\-audio= cmd
|
.BI \-a\ cmd ,\ \-\-audio= cmd
|
||||||
Send Dolby Digital audio to stdin of command \fIcmd\fR.
|
Send Dolby Digital audio to stdin of command \fIcmd\fR.
|
||||||
.TP
|
.TP
|
||||||
|
.BI \-\-cachedir= dir
|
||||||
|
save cache files in \fIdir\fR
|
||||||
|
(default is to save them in the video directory).
|
||||||
|
.TP
|
||||||
.BI \-c\ dir ,\ \-\-config= dir
|
.BI \-c\ dir ,\ \-\-config= dir
|
||||||
Read config files from directory \fIdir\fR
|
Read config files from directory \fIdir\fR
|
||||||
(default is to read them from the video directory).
|
(default is to read them from the video directory).
|
||||||
@ -157,6 +161,10 @@ particular options) you can use
|
|||||||
Call \fIcmd\fR before and after a recording. See the file \fIINSTALL\fR for
|
Call \fIcmd\fR before and after a recording. See the file \fIINSTALL\fR for
|
||||||
more information.
|
more information.
|
||||||
.TP
|
.TP
|
||||||
|
.BI \-\-resdir= dir
|
||||||
|
read resource files from \fIdir\fR
|
||||||
|
(default is to read them from the config directory).
|
||||||
|
.TP
|
||||||
.BI \-s\ cmd ,\ \-\-shutdown= cmd
|
.BI \-s\ cmd ,\ \-\-shutdown= cmd
|
||||||
Call \fIcmd\fR to shutdown the computer. See the file \fIINSTALL\fR for more
|
Call \fIcmd\fR to shutdown the computer. See the file \fIINSTALL\fR for more
|
||||||
information.
|
information.
|
||||||
|
48
vdr.c
48
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.tvdr.de
|
* The project's page is at http://www.tvdr.de
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 2.37 2012/06/13 11:28:41 kls Exp $
|
* $Id: vdr.c 2.38 2012/09/01 13:30:19 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -178,10 +178,15 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Command line options:
|
// Command line options:
|
||||||
|
|
||||||
|
#define dd(a, b) (*a ? a : b)
|
||||||
#define DEFAULTSVDRPPORT 6419
|
#define DEFAULTSVDRPPORT 6419
|
||||||
#define DEFAULTWATCHDOG 0 // seconds
|
#define DEFAULTWATCHDOG 0 // seconds
|
||||||
#define DEFAULTCONFDIR CONFDIR
|
#define DEFAULTVIDEODIR VIDEODIR
|
||||||
|
#define DEFAULTCONFDIR dd(CONFDIR, VideoDirectory)
|
||||||
|
#define DEFAULTCACHEDIR dd(CACHEDIR, VideoDirectory)
|
||||||
|
#define DEFAULTRESDIR dd(RESDIR, ConfigDirectory)
|
||||||
#define DEFAULTPLUGINDIR PLUGINDIR
|
#define DEFAULTPLUGINDIR PLUGINDIR
|
||||||
|
#define DEFAULTLOCDIR LOCDIR
|
||||||
#define DEFAULTEPGDATAFILENAME "epg.data"
|
#define DEFAULTEPGDATAFILENAME "epg.data"
|
||||||
|
|
||||||
bool StartedAsRoot = false;
|
bool StartedAsRoot = false;
|
||||||
@ -189,7 +194,11 @@ int main(int argc, char *argv[])
|
|||||||
bool UserDump = false;
|
bool UserDump = false;
|
||||||
int SVDRPport = DEFAULTSVDRPPORT;
|
int SVDRPport = DEFAULTSVDRPPORT;
|
||||||
const char *AudioCommand = NULL;
|
const char *AudioCommand = NULL;
|
||||||
|
const char *VideoDirectory = DEFAULTVIDEODIR;
|
||||||
const char *ConfigDirectory = NULL;
|
const char *ConfigDirectory = NULL;
|
||||||
|
const char *CacheDirectory = NULL;
|
||||||
|
const char *ResourceDirectory = NULL;
|
||||||
|
const char *LocaleDirectory = DEFAULTLOCDIR;
|
||||||
const char *EpgDataFileName = DEFAULTEPGDATAFILENAME;
|
const char *EpgDataFileName = DEFAULTEPGDATAFILENAME;
|
||||||
bool DisplayHelp = false;
|
bool DisplayHelp = false;
|
||||||
bool DisplayVersion = false;
|
bool DisplayVersion = false;
|
||||||
@ -198,7 +207,6 @@ int main(int argc, char *argv[])
|
|||||||
bool MuteAudio = false;
|
bool MuteAudio = false;
|
||||||
int WatchdogTimeout = DEFAULTWATCHDOG;
|
int WatchdogTimeout = DEFAULTWATCHDOG;
|
||||||
const char *Terminal = NULL;
|
const char *Terminal = NULL;
|
||||||
const char *LocaleDir = NULL;
|
|
||||||
|
|
||||||
bool UseKbd = true;
|
bool UseKbd = true;
|
||||||
const char *LircDevice = NULL;
|
const char *LircDevice = NULL;
|
||||||
@ -216,6 +224,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
static struct option long_options[] = {
|
static struct option long_options[] = {
|
||||||
{ "audio", required_argument, NULL, 'a' },
|
{ "audio", required_argument, NULL, 'a' },
|
||||||
|
{ "cachedir", required_argument, NULL, 'c' | 0x100 },
|
||||||
{ "config", required_argument, NULL, 'c' },
|
{ "config", required_argument, NULL, 'c' },
|
||||||
{ "daemon", no_argument, NULL, 'd' },
|
{ "daemon", no_argument, NULL, 'd' },
|
||||||
{ "device", required_argument, NULL, 'D' },
|
{ "device", required_argument, NULL, 'D' },
|
||||||
@ -235,6 +244,7 @@ int main(int argc, char *argv[])
|
|||||||
{ "plugin", required_argument, NULL, 'P' },
|
{ "plugin", required_argument, NULL, 'P' },
|
||||||
{ "port", required_argument, NULL, 'p' },
|
{ "port", required_argument, NULL, 'p' },
|
||||||
{ "record", required_argument, NULL, 'r' },
|
{ "record", required_argument, NULL, 'r' },
|
||||||
|
{ "resdir", required_argument, NULL, 'r' | 0x100 },
|
||||||
{ "shutdown", required_argument, NULL, 's' },
|
{ "shutdown", required_argument, NULL, 's' },
|
||||||
{ "split", no_argument, NULL, 's' | 0x100 },
|
{ "split", no_argument, NULL, 's' | 0x100 },
|
||||||
{ "terminal", required_argument, NULL, 't' },
|
{ "terminal", required_argument, NULL, 't' },
|
||||||
@ -252,6 +262,9 @@ int main(int argc, char *argv[])
|
|||||||
switch (c) {
|
switch (c) {
|
||||||
case 'a': AudioCommand = optarg;
|
case 'a': AudioCommand = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'c' | 0x100:
|
||||||
|
CacheDirectory = optarg;
|
||||||
|
break;
|
||||||
case 'c': ConfigDirectory = optarg;
|
case 'c': ConfigDirectory = optarg;
|
||||||
break;
|
break;
|
||||||
case 'd': DaemonMode = true; break;
|
case 'd': DaemonMode = true; break;
|
||||||
@ -327,7 +340,7 @@ int main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
case 'l' | 0x200:
|
case 'l' | 0x200:
|
||||||
if (access(optarg, R_OK | X_OK) == 0)
|
if (access(optarg, R_OK | X_OK) == 0)
|
||||||
LocaleDir = optarg;
|
LocaleDirectory = optarg;
|
||||||
else {
|
else {
|
||||||
fprintf(stderr, "vdr: can't access locale directory: %s\n", optarg);
|
fprintf(stderr, "vdr: can't access locale directory: %s\n", optarg);
|
||||||
return 2;
|
return 2;
|
||||||
@ -349,6 +362,9 @@ int main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
case 'r': cRecordingUserCommand::SetCommand(optarg);
|
case 'r': cRecordingUserCommand::SetCommand(optarg);
|
||||||
break;
|
break;
|
||||||
|
case 'r' | 0x100:
|
||||||
|
ResourceDirectory = optarg;
|
||||||
|
break;
|
||||||
case 's': ShutdownHandler.SetShutdownCommand(optarg);
|
case 's': ShutdownHandler.SetShutdownCommand(optarg);
|
||||||
break;
|
break;
|
||||||
case 's' | 0x100:
|
case 's' | 0x100:
|
||||||
@ -414,6 +430,7 @@ int main(int argc, char *argv[])
|
|||||||
if (DisplayHelp) {
|
if (DisplayHelp) {
|
||||||
printf("Usage: vdr [OPTIONS]\n\n" // for easier orientation, this is column 80|
|
printf("Usage: vdr [OPTIONS]\n\n" // for easier orientation, this is column 80|
|
||||||
" -a CMD, --audio=CMD send Dolby Digital audio to stdin of command CMD\n"
|
" -a CMD, --audio=CMD send Dolby Digital audio to stdin of command CMD\n"
|
||||||
|
" --cachedir=DIR save cache files in DIR (default: %s)\n"
|
||||||
" -c DIR, --config=DIR read config files from DIR (default: %s)\n"
|
" -c DIR, --config=DIR read config files from DIR (default: %s)\n"
|
||||||
" -d, --daemon run in daemon mode\n"
|
" -d, --daemon run in daemon mode\n"
|
||||||
" -D NUM, --device=NUM use only the given DVB device (NUM = 0, 1, 2...)\n"
|
" -D NUM, --device=NUM use only the given DVB device (NUM = 0, 1, 2...)\n"
|
||||||
@ -450,6 +467,7 @@ int main(int argc, char *argv[])
|
|||||||
" 0 turns off SVDRP\n"
|
" 0 turns off SVDRP\n"
|
||||||
" -P OPT, --plugin=OPT load a plugin defined by the given options\n"
|
" -P OPT, --plugin=OPT load a plugin defined by the given options\n"
|
||||||
" -r CMD, --record=CMD call CMD before and after a recording\n"
|
" -r CMD, --record=CMD call CMD before and after a recording\n"
|
||||||
|
" --resdir=DIR read resource files from DIR (default: %s)\n"
|
||||||
" -s CMD, --shutdown=CMD call CMD to shutdown the computer\n"
|
" -s CMD, --shutdown=CMD call CMD to shutdown the computer\n"
|
||||||
" --split split edited files at the editing marks (only\n"
|
" --split split edited files at the editing marks (only\n"
|
||||||
" useful in conjunction with --edit)\n"
|
" useful in conjunction with --edit)\n"
|
||||||
@ -464,14 +482,16 @@ int main(int argc, char *argv[])
|
|||||||
" -w SEC, --watchdog=SEC activate the watchdog timer with a timeout of SEC\n"
|
" -w SEC, --watchdog=SEC activate the watchdog timer with a timeout of SEC\n"
|
||||||
" seconds (default: %d); '0' disables the watchdog\n"
|
" seconds (default: %d); '0' disables the watchdog\n"
|
||||||
"\n",
|
"\n",
|
||||||
|
DEFAULTCACHEDIR,
|
||||||
DEFAULTCONFDIR,
|
DEFAULTCONFDIR,
|
||||||
DEFAULTEPGDATAFILENAME,
|
DEFAULTEPGDATAFILENAME,
|
||||||
MAXVIDEOFILESIZEDEFAULT,
|
MAXVIDEOFILESIZEDEFAULT,
|
||||||
DEFAULTPLUGINDIR,
|
DEFAULTPLUGINDIR,
|
||||||
LIRC_DEVICE,
|
LIRC_DEVICE,
|
||||||
LOCDIR,
|
DEFAULTLOCDIR,
|
||||||
DEFAULTSVDRPPORT,
|
DEFAULTSVDRPPORT,
|
||||||
VideoDirectory,
|
DEFAULTRESDIR,
|
||||||
|
DEFAULTVIDEODIR,
|
||||||
DEFAULTWATCHDOG
|
DEFAULTWATCHDOG
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -555,7 +575,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Initialize internationalization:
|
// Initialize internationalization:
|
||||||
|
|
||||||
I18nInitialize(LocaleDir);
|
I18nInitialize(LocaleDirectory);
|
||||||
|
|
||||||
// Main program loop variables - need to be here to have them initialized before any EXIT():
|
// Main program loop variables - need to be here to have them initialized before any EXIT():
|
||||||
|
|
||||||
@ -577,14 +597,22 @@ int main(int argc, char *argv[])
|
|||||||
if (!PluginManager.LoadPlugins(true))
|
if (!PluginManager.LoadPlugins(true))
|
||||||
EXIT(2);
|
EXIT(2);
|
||||||
|
|
||||||
// Configuration data:
|
// Directories:
|
||||||
|
|
||||||
|
SetVideoDirectory(VideoDirectory);
|
||||||
if (!ConfigDirectory)
|
if (!ConfigDirectory)
|
||||||
ConfigDirectory = DEFAULTCONFDIR;
|
ConfigDirectory = DEFAULTCONFDIR;
|
||||||
|
|
||||||
cPlugin::SetConfigDirectory(ConfigDirectory);
|
cPlugin::SetConfigDirectory(ConfigDirectory);
|
||||||
|
if (!CacheDirectory)
|
||||||
|
CacheDirectory = DEFAULTCACHEDIR;
|
||||||
|
cPlugin::SetCacheDirectory(CacheDirectory);
|
||||||
|
if (!ResourceDirectory)
|
||||||
|
ResourceDirectory = DEFAULTRESDIR;
|
||||||
|
cPlugin::SetResourceDirectory(ResourceDirectory);
|
||||||
cThemes::SetThemesDirectory(AddDirectory(ConfigDirectory, "themes"));
|
cThemes::SetThemesDirectory(AddDirectory(ConfigDirectory, "themes"));
|
||||||
|
|
||||||
|
// Configuration data:
|
||||||
|
|
||||||
Setup.Load(AddDirectory(ConfigDirectory, "setup.conf"));
|
Setup.Load(AddDirectory(ConfigDirectory, "setup.conf"));
|
||||||
Sources.Load(AddDirectory(ConfigDirectory, "sources.conf"), true, true);
|
Sources.Load(AddDirectory(ConfigDirectory, "sources.conf"), true, true);
|
||||||
Diseqcs.Load(AddDirectory(ConfigDirectory, "diseqc.conf"), true, Setup.DiSEqC);
|
Diseqcs.Load(AddDirectory(ConfigDirectory, "diseqc.conf"), true, Setup.DiSEqC);
|
||||||
@ -618,7 +646,7 @@ int main(int argc, char *argv[])
|
|||||||
EpgDataFileName = DEFAULTEPGDATAFILENAME;
|
EpgDataFileName = DEFAULTEPGDATAFILENAME;
|
||||||
}
|
}
|
||||||
else if (*EpgDataFileName != '/' && *EpgDataFileName != '.')
|
else if (*EpgDataFileName != '/' && *EpgDataFileName != '.')
|
||||||
EpgDirectory = VideoDirectory;
|
EpgDirectory = CacheDirectory;
|
||||||
if (EpgDirectory)
|
if (EpgDirectory)
|
||||||
cSchedules::SetEpgDataFileName(AddDirectory(EpgDirectory, EpgDataFileName));
|
cSchedules::SetEpgDataFileName(AddDirectory(EpgDirectory, EpgDataFileName));
|
||||||
else
|
else
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: videodir.c 2.2 2012/06/10 13:45:21 kls Exp $
|
* $Id: videodir.c 2.3 2012/09/01 10:57:44 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "videodir.h"
|
#include "videodir.h"
|
||||||
@ -21,6 +21,11 @@
|
|||||||
|
|
||||||
const char *VideoDirectory = VIDEODIR;
|
const char *VideoDirectory = VIDEODIR;
|
||||||
|
|
||||||
|
void SetVideoDirectory(const char *Directory)
|
||||||
|
{
|
||||||
|
VideoDirectory = strdup(Directory);
|
||||||
|
}
|
||||||
|
|
||||||
class cVideoDirectory {
|
class cVideoDirectory {
|
||||||
private:
|
private:
|
||||||
char *name, *stored, *adjusted;
|
char *name, *stored, *adjusted;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: videodir.h 2.1 2012/04/22 15:07:56 kls Exp $
|
* $Id: videodir.h 2.2 2012/09/01 10:57:07 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __VIDEODIR_H
|
#ifndef __VIDEODIR_H
|
||||||
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
extern const char *VideoDirectory;
|
extern const char *VideoDirectory;
|
||||||
|
|
||||||
|
void SetVideoDirectory(const char *Directory);
|
||||||
cUnbufferedFile *OpenVideoFile(const char *FileName, int Flags);
|
cUnbufferedFile *OpenVideoFile(const char *FileName, int Flags);
|
||||||
int CloseVideoFile(cUnbufferedFile *File);
|
int CloseVideoFile(cUnbufferedFile *File);
|
||||||
bool RenameVideoFile(const char *OldName, const char *NewName);
|
bool RenameVideoFile(const char *OldName, const char *NewName);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user