diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..43a9f58 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,3 @@ +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = etc po src diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..68403bc --- /dev/null +++ b/configure.ac @@ -0,0 +1,36 @@ +AC_INIT(plugins,0.0.1) +AM_INIT_AUTOMAKE(plugins,0.0.1) + +TUXBOX_APPS_DIRECTORY + +AC_PATH_PROG(MSGFMT, msgfmt, AC_MSG_ERROR(Could not find msgfmt)) + +AM_PATH_PYTHON +AC_PYTHON_DEVEL + +AC_PROG_CXX + +CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" +LDFLAGS="$LDFLAGS $PYTHON_LDFLAGS" + +AC_ARG_WITH(po, + AS_HELP_STRING([--with-po],[enable updating of po files]), + [with_po="$withval"],[with_po="no"]) +if test "$with_po" = "yes"; then + AC_PATH_PROG(MSGINIT, msginit) + AC_PATH_PROG(MSGMERGE, msgmerge) + AC_PATH_PROG(MSGUNIQ, msguniq) + AC_PATH_PROG(XGETTEXT, xgettext) + if test -z "$MSGINIT" -o -z "$MSGMERGE" -o -z "$MSGUNIQ" -o -z "$XGETTEXT"; then + AC_MSG_ERROR([Could not find required gettext tools]) + fi +fi +AM_CONDITIONAL(UPDATE_PO, test "$with_po" = "yes") + +AC_OUTPUT([ +Makefile +etc/Makefile +etc/epgimport/Makefile +po/Makefile +src/Makefile +]) diff --git a/src/dreamcrc.c b/dreamcrc/dreamcrc.c similarity index 100% rename from src/dreamcrc.c rename to dreamcrc/dreamcrc.c diff --git a/src/setup.py b/dreamcrc/setup.py similarity index 82% rename from src/setup.py rename to dreamcrc/setup.py index 8912c28..2e96448 100644 --- a/src/setup.py +++ b/dreamcrc/setup.py @@ -8,7 +8,7 @@ setup (name = 'enigma2-plugin-extensions-xmltvimport', version = '0.9.12', description = 'C implementation of Dream CRC32 algorithm', - packages = ['EPGImport'], - package_data = {'EPGImport': ['EPGImport/*.png']}, +# packages = ['EPGImport'], +# package_data = {'EPGImport': ['EPGImport/*.png']}, # data_files = [('etc/epgimport', ['*.xml'])], ext_modules = [dreamcrc]) diff --git a/etc/Makefile.am b/etc/Makefile.am new file mode 100644 index 0000000..501ade5 --- /dev/null +++ b/etc/Makefile.am @@ -0,0 +1,2 @@ +installdir = ${sysconfdir} +SUBDIRS = epgimport \ No newline at end of file diff --git a/etc/epgimport/Makefile.am b/etc/epgimport/Makefile.am new file mode 100644 index 0000000..8ed6e2b --- /dev/null +++ b/etc/epgimport/Makefile.am @@ -0,0 +1,2 @@ +installdir = ${sysconfdir}/epgimport +install_DATA = readme.txt \ No newline at end of file diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4 new file mode 100644 index 0000000..2152a80 --- /dev/null +++ b/m4/ax_pthread.m4 @@ -0,0 +1,283 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_pthread.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro figures out how to build C programs using POSIX threads. It +# sets the PTHREAD_LIBS output variable to the threads library and linker +# flags, and the PTHREAD_CFLAGS output variable to any special C compiler +# flags that are needed. (The user can also force certain compiler +# flags/libs to be tested by setting these environment variables.) +# +# Also sets PTHREAD_CC to any special C compiler that is needed for +# multi-threaded programs (defaults to the value of CC otherwise). (This +# is necessary on AIX to use the special cc_r compiler alias.) +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also link it with them as well. e.g. you should link with +# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# +# If you are only building threads programs, you may wish to use these +# variables in your default LIBS, CFLAGS, and CC: +# +# LIBS="$PTHREAD_LIBS $LIBS" +# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +# CC="$PTHREAD_CC" +# +# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant +# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name +# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# +# ACTION-IF-FOUND is a list of shell commands to run if a threads library +# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it +# is not found. If ACTION-IF-FOUND is not specified, the default action +# will define HAVE_PTHREAD. +# +# Please let the authors know if this macro fails on any platform, or if +# you have any other suggestions or comments. This macro was based on work +# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help +# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by +# Alejandro Forero Cuervo to the autoconf macro repository. We are also +# grateful for the helpful feedback of numerous users. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 11 + +AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) +AC_DEFUN([AX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_SAVE +AC_LANG_C +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) + AC_MSG_RESULT($ax_pthread_ok) + if test x"$ax_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" + ;; + + *-darwin*) + ax_pthread_flags="-pthread $ax_pthread_flags" + ;; +esac + +if test x"$ax_pthread_ok" = xno; then +for flag in $ax_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) + if test x"$ax_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_TRY_LINK([#include + static void routine(void* a) {a=0;} + static void* start_routine(void* a) {return a;}], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th,0,start_routine,0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0); ], + [ax_pthread_ok=yes]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($ax_pthread_ok) + if test "x$ax_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$ax_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_TRY_LINK([#include ], [int attr=$attr; return attr;], + [attr_name=$attr; break]) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) + else + PTHREAD_CC=$CC + fi +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$ax_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + ax_pthread_ok=no + $2 +fi +AC_LANG_RESTORE +])dnl AX_PTHREAD diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4 new file mode 100644 index 0000000..a62b860 --- /dev/null +++ b/m4/ax_python_devel.m4 @@ -0,0 +1,325 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_python_devel.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PYTHON_DEVEL([version]) +# +# DESCRIPTION +# +# Note: Defines as a precious variable "PYTHON_VERSION". Don't override it +# in your configure.ac. +# +# This macro checks for Python and tries to get the include path to +# 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LDFLAGS) +# output variables. It also exports $(PYTHON_EXTRA_LIBS) and +# $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code. +# +# You can search for some particular version of Python by passing a +# parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please +# note that you *have* to pass also an operator along with the version to +# match, and pay special attention to the single quotes surrounding the +# version number. Don't use "PYTHON_VERSION" for this: that environment +# variable is declared as precious and thus reserved for the end-user. +# +# This macro should work for all versions of Python >= 2.1.0. As an end +# user, you can disable the check for the python version by setting the +# PYTHON_NOVERSIONCHECK environment variable to something else than the +# empty string. +# +# If you need to use this macro for an older Python version, please +# contact the authors. We're always open for feedback. +# +# LICENSE +# +# Copyright (c) 2009 Sebastian Huber +# Copyright (c) 2009 Alan W. Irwin +# Copyright (c) 2009 Rafael Laboissiere +# Copyright (c) 2009 Andrew Collier +# Copyright (c) 2009 Matteo Settenvini +# Copyright (c) 2009 Horst Knorr +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 8 + +AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL]) +AC_DEFUN([AX_PYTHON_DEVEL],[ + # + # Allow the use of a (user set) custom python version + # + AC_ARG_VAR([PYTHON_VERSION],[The installed Python + version to use, for example '2.3'. This string + will be appended to the Python interpreter + canonical name.]) + + AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]]) + if test -z "$PYTHON"; then + AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path]) + PYTHON_VERSION="" + fi + + # + # Check for a version of Python >= 2.1.0 + # + AC_MSG_CHECKING([for a version of Python >= '2.1.0']) + ac_supports_python_ver=`$PYTHON -c "import sys; \ + ver = sys.version.split ()[[0]]; \ + print (ver >= '2.1.0')"` + if test "$ac_supports_python_ver" != "True"; then + if test -z "$PYTHON_NOVERSIONCHECK"; then + AC_MSG_RESULT([no]) + AC_MSG_FAILURE([ +This version of the AC@&t@_PYTHON_DEVEL macro +doesn't work properly with versions of Python before +2.1.0. You may need to re-run configure, setting the +variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG, +PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. +Moreover, to disable this check, set PYTHON_NOVERSIONCHECK +to something else than an empty string. +]) + else + AC_MSG_RESULT([skip at user request]) + fi + else + AC_MSG_RESULT([yes]) + fi + + # + # if the macro parameter ``version'' is set, honour it + # + if test -n "$1"; then + AC_MSG_CHECKING([for a version of Python $1]) + ac_supports_python_ver=`$PYTHON -c "import sys; \ + ver = sys.version.split ()[[0]]; \ + print (ver $1)"` + if test "$ac_supports_python_ver" = "True"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([this package requires Python $1. +If you have it installed, but it isn't the default Python +interpreter in your system path, please pass the PYTHON_VERSION +variable to configure. See ``configure --help'' for reference. +]) + PYTHON_VERSION="" + fi + fi + + # + # Check if you have distutils, else fail + # + AC_MSG_CHECKING([for the distutils Python package]) + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` + if test -z "$ac_distutils_result"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([cannot import Python module "distutils". +Please check your Python installation. The error was: +$ac_distutils_result]) + PYTHON_VERSION="" + fi + + # + # Check for Python include path + # + AC_MSG_CHECKING([for Python include path]) + if test -z "$PYTHON_CPPFLAGS"; then + python_path=`$PYTHON -c "import distutils.sysconfig; \ + print (distutils.sysconfig.get_python_inc ());"` + if test -n "${python_path}"; then + python_path="-I$python_path" + fi + PYTHON_CPPFLAGS=$python_path + fi + AC_MSG_RESULT([$PYTHON_CPPFLAGS]) + AC_SUBST([PYTHON_CPPFLAGS]) + + # + # Check for Python library path + # + AC_MSG_CHECKING([for Python library path]) + if test -z "$PYTHON_LDFLAGS"; then + # (makes two attempts to ensure we've got a version number + # from the interpreter) + ac_python_version=`cat<]], + [[Py_Initialize();]]) + ],[pythonexists=yes],[pythonexists=no]) + AC_LANG_POP([C]) + # turn back to default flags + CPPFLAGS="$ac_save_CPPFLAGS" + LIBS="$ac_save_LIBS" + + AC_MSG_RESULT([$pythonexists]) + + if test ! "x$pythonexists" = "xyes"; then + AC_MSG_FAILURE([ + Could not link test program to Python. Maybe the main Python library has been + installed in some non-standard library path. If so, pass it to configure, + via the LDFLAGS environment variable. + Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib" + ============================================================================ + ERROR! + You probably have to install the development version of the Python package + for your distribution. The exact name of this package varies among them. + ============================================================================ + ]) + PYTHON_VERSION="" + fi + + # + # all done! + # +]) diff --git a/m4/tuxbox.m4 b/m4/tuxbox.m4 new file mode 100644 index 0000000..985f757 --- /dev/null +++ b/m4/tuxbox.m4 @@ -0,0 +1,36 @@ +AC_DEFUN([TUXBOX_APPS_DVB],[ +AC_ARG_WITH(dvbincludes, + [ --with-dvbincludes=PATH path for dvb includes [[NONE]]], + [DVBINCLUDES="$withval"],[DVBINCLUDES=""]) + +if test "$DVBINCLUDES"; then + CPPFLAGS="$CPPFLAGS -I$DVBINCLUDES" +fi + +AC_CHECK_HEADERS(ost/dmx.h,[ + DVB_API_VERSION=1 + AC_MSG_NOTICE([found dvb version 1]) +]) + +if test -z "$DVB_API_VERSION"; then +AC_CHECK_HEADERS(linux/dvb/version.h,[ + AC_LANG_PREPROC_REQUIRE() + AC_REQUIRE([AC_PROG_EGREP]) + AC_LANG_CONFTEST([AC_LANG_SOURCE([[ +#include +version DVB_API_VERSION + ]])]) + DVB_API_VERSION=`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | $EGREP "^version" | sed "s,version\ ,,"` + rm -f conftest* + + AC_MSG_NOTICE([found dvb version $DVB_API_VERSION]) +]) +fi + +if test "$DVB_API_VERSION"; then + AC_DEFINE(HAVE_DVB,1,[Define to 1 if you have the dvb includes]) + AC_DEFINE_UNQUOTED(HAVE_DVB_API_VERSION,$DVB_API_VERSION,[Define to the version of the dvb api]) +else + AC_MSG_ERROR([can't find dvb headers]) +fi +]) diff --git a/po/Makefile.am b/po/Makefile.am new file mode 100644 index 0000000..05fe0b6 --- /dev/null +++ b/po/Makefile.am @@ -0,0 +1,41 @@ +LANGS = nl de +LANGMO = $(LANGS:=.mo) +LANGPO = $(LANGS:=.po) + +EXTRA_DIST = $(LANGPO) + +if UPDATE_PO +# the TRANSLATORS: allows putting translation comments before the to-be-translated line. +xmltv-py.pot: $(top_srcdir)/src/*.py + $(XGETTEXT) -L Python --from-code=UTF-8 --add-comments="TRANSLATORS:" -d @PACKAGE_NAME@ -s -o $@ $^ + +xmltv.pot: xmltv-py.pot + sed --in-place xmltv-py.pot --expression=s/CHARSET/UTF-8/ + $(MSGUNIQ) $^ -o $@ + +%.po: xmltv.pot + if [ -f $@ ]; then \ + $(MSGMERGE) --backup=none --no-location -s -N -U $@ $< && touch $@; \ + else \ + $(MSGINIT) -l $@ -o $@ -i $< --no-translator; \ + fi +endif + +.po.mo: + $(MSGFMT) -o $@ $< + +BUILT_SOURCES = $(LANGMO) +CLEANFILES = $(LANGMO) xmltv-py.pot xmltv.pot + +dist-hook: $(LANGPO) + +install-data-local: $(LANGMO) + for lang in $(LANGS); do \ + $(mkinstalldirs) $(DESTDIR)/usr/lib/enigma2/python/Plugins/Extensions/EPGImport/po/$$lang/LC_MESSAGES; \ + $(INSTALL_DATA) $$lang.mo $(DESTDIR)/usr/lib/enigma2/python/Plugins/Extensions/EPGImport/po/$$lang/LC_MESSAGES/xmltv.mo; \ + done + +uninstall-local: + for lang in $(LANGS); do \ + $(RM) $(DESTDIR)/usr/lib/enigma2/python/Plugins/Extensions/EPGImport/po/$$lang/LC_MESSAGES/xmltv.mo; \ + done diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..63df3cf --- /dev/null +++ b/po/de.po @@ -0,0 +1,130 @@ +# German translations for plugins package. +# Copyright (C) 2011 THE plugins'S COPYRIGHT HOLDER +# This file is distributed under the same license as the plugins package. +# Automatically generated, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: plugins 0.0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-09-04 16:14+0100\n" +"PO-Revision-Date: 2011-09-04 16:14+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../src/plugin.py:491 +msgid "Automated EPG Importer" +msgstr "" + +#: ../src/plugin.py:102 +msgid "Automatic start time" +msgstr "" + +#: ../src/plugin.py:112 ../src/plugin.py:241 +msgid "Cancel" +msgstr "" + +#: ../src/plugin.py:298 +msgid "Clear" +msgstr "" + +#: ../src/plugin.py:101 +msgid "Daily automatic import" +msgstr "" + +#: ../src/plugin.py:97 +msgid "EPG Import Configuration" +msgstr "" + +#: ../src/plugin.py:349 +#, python-format +msgid "EPG Import finished, %d events" +msgstr "" + +#: ../src/plugin.py:199 +msgid "" +"EPGImport Plugin\n" +"Failed to start:\n" +msgstr "" + +#: ../src/plugin.py:179 +msgid "" +"EPGImport Plugin\n" +"Import of epg data is still in progress. Please wait." +msgstr "" + +#: ../src/plugin.py:189 +msgid "" +"EPGImport Plugin\n" +"Import of epg data will start\n" +"This may take a few minutes\n" +"Is this ok?" +msgstr "" + +#: ../src/plugin.py:162 +msgid "Importing:" +msgstr "" + +#: ../src/plugin.py:173 +#, python-format +msgid "Last: %s %s, %d events" +msgstr "" + +#: ../src/plugin.py:107 +msgid "Load long descriptions up to X days" +msgstr "" + +#: ../src/plugin.py:114 +msgid "Manual" +msgstr "" + +#: ../src/plugin.py:184 +msgid "No active EPG sources found, nothing to do" +msgstr "" + +#: ../src/plugin.py:113 ../src/plugin.py:242 +msgid "Ok" +msgstr "" + +#: ../src/plugin.py:301 +msgid "Save" +msgstr "" + +#: ../src/plugin.py:105 +msgid "Show in extensions" +msgstr "" + +#: ../src/plugin.py:33 +msgid "Skip the import" +msgstr "" + +#: ../src/plugin.py:115 +msgid "Sources" +msgstr "" + +#: ../src/plugin.py:103 +msgid "Standby at startup" +msgstr "" + +#: ../src/plugin.py:106 +msgid "Start import after booting up" +msgstr "" + +#: ../src/plugin.py:31 +msgid "Wake up and import" +msgstr "" + +#: ../src/plugin.py:104 +msgid "When in deep standby" +msgstr "" + +#: ../src/plugin.py:349 +msgid "" +"You must restart Enigma2 to load the EPG data,\n" +"is this OK?" +msgstr "" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..db63ca7 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,136 @@ +# Dutch translations for plugins package. +# Copyright (C) 2011 THE plugins'S COPYRIGHT HOLDER +# This file is distributed under the same license as the plugins package. +# Automatically generated, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: XMTV-Impoter for Enigma2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-09-04 16:14+0100\n" +"PO-Revision-Date: 2011-09-04 16:19+0100\n" +"Last-Translator: Andy Blackburn \n" +"Language-Team: R.L. van der Does\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: Nederlands\n" +"X-Poedit-Country: NETHERLANDS\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: ../src/plugin.py:491 +msgid "Automated EPG Importer" +msgstr "" + +#: ../src/plugin.py:102 +msgid "Automatic start time" +msgstr "" + +#: ../src/plugin.py:112 +#: ../src/plugin.py:241 +msgid "Cancel" +msgstr "" + +#: ../src/plugin.py:298 +msgid "Clear" +msgstr "" + +#: ../src/plugin.py:101 +msgid "Daily automatic import" +msgstr "" + +#: ../src/plugin.py:97 +msgid "EPG Import Configuration" +msgstr "" + +#: ../src/plugin.py:349 +#, python-format +msgid "EPG Import finished, %d events" +msgstr "" + +#: ../src/plugin.py:199 +msgid "" +"EPGImport Plugin\n" +"Failed to start:\n" +msgstr "" + +#: ../src/plugin.py:179 +msgid "" +"EPGImport Plugin\n" +"Import of epg data is still in progress. Please wait." +msgstr "" + +#: ../src/plugin.py:189 +msgid "" +"EPGImport Plugin\n" +"Import of epg data will start\n" +"This may take a few minutes\n" +"Is this ok?" +msgstr "" + +#: ../src/plugin.py:162 +msgid "Importing:" +msgstr "" + +#: ../src/plugin.py:173 +#, python-format +msgid "Last: %s %s, %d events" +msgstr "" + +#: ../src/plugin.py:107 +msgid "Load long descriptions up to X days" +msgstr "" + +#: ../src/plugin.py:114 +msgid "Manual" +msgstr "" + +#: ../src/plugin.py:184 +msgid "No active EPG sources found, nothing to do" +msgstr "" + +#: ../src/plugin.py:113 +#: ../src/plugin.py:242 +msgid "Ok" +msgstr "" + +#: ../src/plugin.py:301 +msgid "Save" +msgstr "" + +#: ../src/plugin.py:105 +msgid "Show in extensions" +msgstr "" + +#: ../src/plugin.py:33 +msgid "Skip the import" +msgstr "" + +#: ../src/plugin.py:115 +msgid "Sources" +msgstr "" + +#: ../src/plugin.py:103 +msgid "Standby at startup" +msgstr "" + +#: ../src/plugin.py:106 +msgid "Start import after booting up" +msgstr "" + +#: ../src/plugin.py:31 +msgid "Wake up and import" +msgstr "" + +#: ../src/plugin.py:104 +msgid "When in deep standby" +msgstr "" + +#: ../src/plugin.py:349 +msgid "" +"You must restart Enigma2 to load the EPG data,\n" +"is this OK?" +msgstr "" + diff --git a/src/EPGImport/EPGConfig.py b/src/EPGConfig.py similarity index 100% rename from src/EPGImport/EPGConfig.py rename to src/EPGConfig.py diff --git a/src/EPGImport/EPGImport.py b/src/EPGImport.py similarity index 100% rename from src/EPGImport/EPGImport.py rename to src/EPGImport.py diff --git a/src/EPGImport/__init__.py b/src/EPGImport/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..46189b6 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,3 @@ +installdir = $(libdir)/enigma2/python/Plugins/Extensions/EPGImport +install_PYTHON = *.py +install_DATA = *.png \ No newline at end of file diff --git a/src/EPGImport/OfflineImport.py b/src/OfflineImport.py similarity index 100% rename from src/EPGImport/OfflineImport.py rename to src/OfflineImport.py diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..ac49f23 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +from Components.Language import language +from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_LANGUAGE +import os,gettext + +PluginLanguageDomain = "XMLTV-Import" +PluginLanguagePath = "Extensions/EPGImport/po" + +def localeInit(): + lang = language.getLanguage()[:2] # getLanguage returns e.g. "fi_FI" for "language_country" + os.environ["LANGUAGE"] = lang # Enigma doesn't set this (or LC_ALL, LC_MESSAGES, LANG). gettext needs it! + print "[XMLTV-Import] set language to ", lang + gettext.bindtextdomain(PluginLanguageDomain, resolveFilename(SCOPE_PLUGINS, PluginLanguagePath)) + gettext.bindtextdomain('enigma2', resolveFilename(SCOPE_LANGUAGE, "")) + +def _(txt): + t = gettext.dgettext(PluginLanguageDomain, txt) + if t == txt: + #print "[CrossEPG] fallback to default translation for", txt + t = gettext.dgettext('enigma2', txt) + return t + + +localeInit() +language.addCallback(localeInit) diff --git a/src/EPGImport/boot.py b/src/boot.py similarity index 100% rename from src/EPGImport/boot.py rename to src/boot.py diff --git a/src/EPGImport/epgdat.py b/src/epgdat.py similarity index 100% rename from src/EPGImport/epgdat.py rename to src/epgdat.py diff --git a/src/EPGImport/epgdat_importer.py b/src/epgdat_importer.py similarity index 100% rename from src/EPGImport/epgdat_importer.py rename to src/epgdat_importer.py diff --git a/src/EPGImport/gen_xmltv.py b/src/gen_xmltv.py similarity index 100% rename from src/EPGImport/gen_xmltv.py rename to src/gen_xmltv.py diff --git a/src/EPGImport/log.py b/src/log.py similarity index 100% rename from src/EPGImport/log.py rename to src/log.py diff --git a/src/EPGImport/plugin.png b/src/plugin.png similarity index 100% rename from src/EPGImport/plugin.png rename to src/plugin.png diff --git a/src/EPGImport/plugin.py b/src/plugin.py similarity index 99% rename from src/EPGImport/plugin.py rename to src/plugin.py index c865a5b..e717b2c 100644 --- a/src/EPGImport/plugin.py +++ b/src/plugin.py @@ -1,3 +1,6 @@ +# for localized messages +from . import _ + import time import os import enigma diff --git a/src/EPGImport/xmltvconverter.py b/src/xmltvconverter.py similarity index 100% rename from src/EPGImport/xmltvconverter.py rename to src/xmltvconverter.py