xbmc-pvr: refactor it to xbmc package

xbmc: update to pvr-ppa-odk51 relese of xbmc-pvr
This commit is contained in:
Gujs 2011-10-17 23:56:43 +02:00
parent 031a7cc58e
commit 6ff367788a
109 changed files with 4193 additions and 2525 deletions

View File

@ -1,26 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
mkdir -p $INSTALL/usr/share/xbmc/addons/skin.confluence
cp -R $PKG_BUILD/* $INSTALL/usr/share/xbmc/addons/skin.confluence

View File

@ -1,37 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
PKG_NAME="xbmc-pvr-theme-Confluence"
PKG_VERSION="522042f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.xbmc.org"
#PKG_URL="$OPENELEC_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="http://gujs.openelec.tv/sources/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="mediacenter"
PKG_SHORTDESC="xbmc-pvr-theme-Confluence: XBMC Mediacenter default theme"
PKG_LONGDESC="XBMC Media Center (which was formerly named Xbox Media Center) is a free and open source cross-platform media player and home entertainment system software with a 10-foot user interface designed for the living-room TV. Its graphical user interface allows the user to easily manage video, photos, podcasts, and music from a computer, optical disk, local network, and the internet using a remote control."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"

View File

@ -1,249 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
if [ "$XBMC_SCR_RSXS" = yes ]; then
XBMC_RSXS="--enable-rsxs"
else
XBMC_RSXS="--disable-rsxs"
fi
if [ "$XBMC_VIS_PROJECTM" = yes ]; then
XBMC_PROJECTM="--enable-projectm"
else
XBMC_PROJECTM="--disable-projectm"
fi
if [ "$XBMC_VIS_GOOM" = yes ]; then
XBMC_GOOM="--enable-goom"
else
XBMC_GOOM="--disable-goom"
fi
if [ "$PULSEAUDIO_SUPPORT" = yes ]; then
XBMC_PULSEAUDIO="--enable-pulse"
else
XBMC_PULSEAUDIO="--disable-pulse"
fi
if [ "$CEC_SUPPORT" = yes ]; then
XBMC_CEC="--enable-libcec --enable-external-libcec --enable-udev --disable-libusb"
else
XBMC_CEC="--disable-libcec --disable-udev --disable-libusb"
fi
if [ "$NONFREE_SUPPORT" = yes ]; then
XBMC_NONFREE="--enable-non-free"
else
XBMC_NONFREE="--disable-non-free"
fi
if [ "$AIRPLAY_SUPPORT" = yes ]; then
XBMC_AIRPLAY="--enable-airplay"
else
XBMC_AIRPLAY="--disable-airplay"
fi
if [ "$AIRTUNES_SUPPORT" = yes ]; then
XBMC_AIRTUNES="--enable-airtunes"
else
XBMC_AIRTUNES="--disable-airtunes"
fi
if [ "$DVDCSS_SUPPORT" = yes ]; then
XBMC_DVDCSS="--enable-dvdcss"
else
XBMC_DVDCSS="--disable-dvdcss"
fi
if [ "$BLURAY_SUPPORT" = yes ]; then
XBMC_BLURAY="--enable-libbluray"
else
XBMC_BLURAY="--disable-libbluray"
fi
if [ "$AVAHI_DAEMON" = yes ]; then
XBMC_AVAHI="--enable-avahi"
else
XBMC_AVAHI="--disable-avahi"
fi
if [ "$NFS_SUPPORT" = yes ]; then
XBMC_NFS="--enable-nfs"
else
XBMC_NFS="--disable-nfs"
fi
if [ "$AFP_SUPPORT" = yes ]; then
XBMC_AFP="--enable-afpclient"
else
XBMC_AFP="--disable-afpclient"
fi
if [ "$SAMBA_CLIENT" = yes ]; then
XBMC_SAMBA="--enable-samba"
else
XBMC_SAMBA="--disable-samba"
fi
if [ "$WEBSERVER" = yes ]; then
XBMC_WEBSERVER="--enable-webserver"
else
XBMC_WEBSERVER="--disable-webserver"
fi
if [ "$VDPAU" = yes ]; then
XBMC_VDPAU="--enable-vdpau"
else
XBMC_VDPAU="--disable-vdpau"
fi
if [ "$VAAPI" = yes ]; then
XBMC_VAAPI="--enable-vaapi"
else
XBMC_VAAPI="--disable-vaapi"
fi
if [ "$CRYSTALHD" = yes ]; then
XBMC_CRYSTALHD="--enable-crystalhd"
else
XBMC_CRYSTALHD="--disable-crystalhd"
fi
# xbmc (ffmpeg) fails to build with LTO optimization
strip_lto
strip_gold
strip_linker_plugin
# dont use some optimizations because of problems
# this fixes problems with faac implementation of ffmpeg
LDFLAGS=`echo $LDFLAGS | sed -e "s|-Wl,--as-needed||"`
export PYTHON_VERSION="2.6"
export PYTHON_CPPFLAGS="-I$SYSROOT_PREFIX/usr/include/python$PYTHON_VERSION"
export PYTHON_LDFLAGS="-L$SYSROOT_PREFIX/usr/lib/python$PYTHON_VERSION -lpython$PYTHON_VERSION"
export PYTHON_SITE_PKG="$SYSROOT_PREFIX/usr/lib/python$PYTHON_VERSION/site-packages"
export ac_python_version="$PYTHON_VERSION"
# this fixes the "stretching picture bug"
CFLAGS=`echo $CFLAGS | sed -e "s|-ftree-loop-distribution||"`
CFLAGS=`echo $CFLAGS | sed -e "s|-floop-interchange||"`
CFLAGS=`echo $CFLAGS | sed -e "s|-floop-strip-mine||"`
CFLAGS=`echo $CFLAGS | sed -e "s|-floop-block||"`
CFLAGS=`echo $CFLAGS | sed -e "s|-fgraphite-identity||"`
CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-ftree-loop-distribution||"`
CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-floop-interchange||"`
CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-floop-strip-mine||"`
CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-floop-block||"`
CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-fgraphite-identity||"`
# setup skin dir from default skin
SKIN_DIR="skin.`tolower $SKIN_DEFAULT`"
cd $PKG_BUILD
# adding fake Makefile for stripped skin
mkdir -p addons/skin.confluence/media
touch addons/skin.confluence/media/Makefile.in
mkdir -p addons/skin.touched/media
touch addons/skin.touched/media/Makefile.in
# autoreconf
do_autoreconf
do_autoreconf lib/libid3tag/libid3tag
do_autoreconf xbmc/screensavers/rsxs-0.9
do_autoreconf xbmc/visualizations/Goom/goom2k4-0
do_autoreconf lib/libapetag
do_autoreconf lib/cpluff
# order matters with libdvd and friends
[ -d lib/libdvd/libdvdcss ] && do_autoreconf lib/libdvd/libdvdcss
do_autoreconf lib/libdvd/libdvdread
do_autoreconf lib/libdvd/libdvdnav
# Clean the generated files
find . -depth -type d -name "autom4te.cache" -exec rm -rf {} \;
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--with-arch=$TARGET_ARCH \
--with-cpu=$TARGET_CPU \
--prefix=/usr \
--exec-prefix=/usr \
--sysconfdir=/etc \
--datadir=/usr/share \
GIT_REV=`cat git.version` \
--disable-debug \
--disable-optimizations \
--enable-gl \
--disable-gles \
$XBMC_VDPAU \
$XBMC_VAAPI \
$XBMC_CRYSTALHD \
--disable-vdadecoder \
--disable-vtbdecoder \
--disable-openmax \
--disable-tegra \
--disable-profiling \
--enable-joystick \
$XBMC_CEC \
$XBMC_GOOM \
$XBMC_RSXS \
$XBMC_PROJECTM \
--enable-x11 \
--enable-xrandr \
--disable-ccache \
$XBMC_PULSEAUDIO \
--enable-rtmp \
$XBMC_SAMBA \
$XBMC_NFS \
$XBMC_AFP \
--enable-ffmpeg-libvorbis \
--enable-lame \
$XBMC_DVDCSS \
--disable-mid \
--disable-hal \
$XBMC_AVAHI \
$XBMC_AIRPLAY \
$XBMC_AIRTUNES \
$XBMC_NONFREE \
--disable-asap-codec \
$XBMC_WEBSERVER \
--enable-optical-drive \
$XBMC_BLURAY \
--enable-texturepacker \
--disable-external-libraries \
--disable-external-ffmpeg \
# setup default skin inside the sources
sed -i -e "s|skin.confluence|$SKIN_DIR|g" xbmc/settings/Settings.h
make externals
make xbmc.bin
make xbmc-xrandr
if [ "$WIIMOTE_SUPPORT" = yes ]; then
(cd tools/EventClients/Clients/WiiRemote;
$CXX $CFLAGS -lwiiuse WiiUse_WiiRemote.cpp -o WiiUse_WiiRemote;
)
fi

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<advancedsettings>
<splash>false</splash>
<showexitbutton>false</showexitbutton>
<cputempcommand>cputemp</cputempcommand>
<gputempcommand>gputemp</gputempcommand>
<samba>
<clienttimeout>30</clienttimeout>
</samba>
</advancedsettings>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon id="os.openelec.tv" version="@ADDON_OS_VERSION@" provider-name="OpenELEC.tv">
<requires>
<import addon="xbmc.addon" version="1.0"/>
</requires>
</addon>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="repository.openelec.tv"
name="OpenELEC.tv Mediacenter OS Add-ons"
version="1.0.0"
provider-name="OpenELEC.tv">
<extension point="xbmc.addon.repository"
name="Official OpenELEC.tv Add-on Repository">
<info>@ADDON_URL@/addons.xml</info>
<checksum>@ADDON_URL@/addons.xml.md5</checksum>
<datadir zip="true">@ADDON_URL@</datadir>
</extension>
<extension point="xbmc.addon.metadata">
<summary>Install Add-ons, Plugins, Games and Programs from OpenELEC.tv</summary>
<description>Download and install Add-ons, Plugins, Games and Programs from the Official OpenELEC.tv addon repository.[CR] By using the official Repository you will be able to take advantage of our extensive file mirror service to help get you faster downloads from a region close to you.[CR] All addons on this repository have under gone basic testing, if you find a broken or not working addon please report it to OpenELEC.tv so we can take any action needed.</description>
<platform>all</platform>
</extension>
</addon>

View File

@ -1,118 +0,0 @@
################################################################################
# Copyright (C) 2009-2010 OpenELEC.tv
# http://www.openelec.tv
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
# setup XBMC
#
# runlevels: openelec
progress "setup XBMC"
#
# clean temp dir
#
rm -rf $HOME/.xbmc/temp/*
#
# add some default settings
#
mkdir -p $HOME/.xbmc/userdata
#
# setup directories for XBMC sources
#
[ ! -d "$HOME/music" ] && mkdir -p $HOME/music
[ ! -d "$HOME/pictures" ] && mkdir -p $HOME/pictures
[ ! -d "$HOME/tvshows" ] && mkdir -p $HOME/tvshows
[ ! -d "$HOME/videos" ] && mkdir -p $HOME/videos
mkdir -p $HOME/.xbmc/userdata
if [ ! -f $HOME/.xbmc/userdata/sources.xml ] ; then
cat > $HOME/.xbmc/userdata/sources.xml << EOF
<sources>
<video>
<default pathversion="1"></default>
<source>
<name>Videos</name>
<path pathversion="1">$HOME/videos/</path>
</source>
<source>
<name>TV Shows</name>
<path pathversion="1">$HOME/tvshows/</path>
</source>
</video>
<music>
<default pathversion="1"></default>
<source>
<name>Music</name>
<path pathversion="1">$HOME/music/</path>
</source>
</music>
<pictures>
<default pathversion="1"></default>
<source>
<name>Pictures</name>
<path pathversion="1">$HOME/pictures/</path>
</source>
</pictures>
</sources>
EOF
fi
#
# common setup guisettings
#
mkdir -p $HOME/.xbmc/userdata
[ ! -d "$HOME/screenshots" ] && mkdir -p $HOME/screenshots
if [ ! -f $HOME/.xbmc/userdata/guisettings.xml ] ; then
echo "<settings>" > $HOME/.xbmc/userdata/guisettings.xml
cat >> $HOME/.xbmc/userdata/guisettings.xml << EOF
<debug>
<screenshotpath pathversion="1">$HOME/screenshots/</screenshotpath>
</debug>
EOF
#
# include project specific options
#
if [ -f /usr/share/xbmc/config/guisettings.xml ]; then
cat /usr/share/xbmc/config/guisettings.xml >> $HOME/.xbmc/userdata/guisettings.xml
fi
#
# common setup for amd and nvidia graphic
#
# Always sync to vblank
if [ "$GPUTYPE" = "NVIDIA" -o "$GPUTYPE" = "AMD" ] ; then
cat >> $HOME/.xbmc/userdata/guisettings.xml << EOF
<videoscreen>
<vsync>2</vsync>
</videoscreen>
EOF
fi
echo "</settings>" >> $HOME/.xbmc/userdata/guisettings.xml
fi

View File

@ -1,87 +0,0 @@
################################################################################
# Copyright (C) 2009-2010 OpenELEC.tv
# http://www.openelec.tv
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
# starting XBMC
#
# runlevels: openelec
LIRCDEV="/var/run/lirc/lircd"
[ -e /var/run/lirc/lircd.irtrans ] && LIRCDEV="/var/run/lirc/lircd.irtrans"
XBMC_ARGS="--standalone -fs --lircdev $LIRCDEV"
progress "starting XBMC"
# hack for Boxee Remote
if $(cat /proc/bus/input/devices | grep Vendor=0471 | grep -q Product=20d9);then
export SDL_MOUSE_RELATIVE=0
fi
# hack: make addon-bins executable
chmod +x /storage/.xbmc/addons/*/bin/* > /dev/null 2>&1
# starting autostart script (will be removed later again, dont use it!!!)
AUTOSTART="/storage/.config/autostart.sh"
if [ -f $AUTOSTART ]; then
echo "!!! AUTOSTART script detected !!!" >> /var/log/messages
cat "$AUTOSTART" >> /var/log/messages
echo "!!! -End of autostart script- !!!" >> /var/log/messages
sh $AUTOSTART
fi
# starting autoupdate
[ -f /usr/bin/autoupdate ] && /usr/bin/autoupdate &
# waiting for Xorg to start
wait_for_xorg
# set cpu's to 'on demand'
( usleep 15000000
progress "set cpu's to 'on demand'"
cpupower frequency-set -g ondemand > /dev/null 2>&1
)&
# starting XBMC
while true; do
DISPLAY=:0.0 /usr/lib/xbmc/xbmc.bin $XBMC_ARGS > /dev/null 2>&1
RET=$?
case "$RET" in
0)
poweroff -f
;;
64)
poweroff -f
;;
66)
reboot
;;
255)
echo "Abnormal Exit. Exited with code $RET"
echo "is Xorg running? check /var/log/Xorg.log"
;;
*)
echo "Abnormal Exit. Exited with code $RET"
;;
esac
usleep 250000
done

View File

@ -1,119 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
PYTHON_LIBDIR="`ls -d $INSTALL/usr/lib/python*`"
mkdir -p $INSTALL/usr/bin
cp $PKG_DIR/scripts/cputemp $INSTALL/usr/bin
cp $PKG_DIR/scripts/gputemp $INSTALL/usr/bin
cp $PKG_BUILD/tools/EventClients/Clients/XBMC\ Send/xbmc-send.py $INSTALL/usr/bin/xbmc-send
mkdir -p $INSTALL/usr/lib/xbmc
cp $PKG_BUILD/xbmc.bin $INSTALL/usr/lib/xbmc
cp $PKG_BUILD/xbmc-xrandr $INSTALL/usr/lib/xbmc
cd $PKG_BUILD
find system addons \
-regextype posix-extended -type f \
-not -iregex ".*svn.*|.*win32(dx)?\.vis|.*osx\.vis" \
-iregex ".*-linux.*|.*\.vis|.*\.xbs" \
-exec install -D "{}" $ROOT/$INSTALL/usr/lib/xbmc/"{}" ";"
find addons language media sounds userdata system \
-regextype posix-extended -type f \
-not -iregex ".*-linux.*|.*\.vis|.*\.xbs|.*svn.*|.*\.orig|.*\.so|.*\.dll|.*\.pyd|.*python/.*\.zlib" \
-exec install -D -m 0644 "{}" $ROOT/$INSTALL/usr/share/xbmc/"{}" ";"
cd -
if [ ! "$XBMC_SCR_RSXS" = yes ]; then
rm -rf $ROOT/$INSTALL/usr/share/xbmc/addons/screensaver.rsxs.*
fi
if [ ! "$XBMC_VIS_PROJECTM" = yes ]; then
rm -rf $ROOT/$INSTALL/usr/share/xbmc/addons/visualization.projectm
fi
rm -rf $ROOT/$INSTALL/usr/share/xbmc/addons/visualization.dxspectrum
rm -rf $ROOT/$INSTALL/usr/share/xbmc/addons/visualization.itunes
rm -rf $ROOT/$INSTALL/usr/share/xbmc/addons/visualization.milkdrop
# overriding Splash image
mkdir -p $INSTALL/usr/share/xbmc/media
rm -rf $INSTALL/usr/share/xbmc/media/Splash.png
# if [ -f $PROJECT_DIR/$PROJECT/splash/splash.png ]; then
# cp $PROJECT_DIR/$PROJECT/splash/splash.png $INSTALL/usr/share/xbmc/media/Splash.png
# else
# cp $PKG_DIR/splash/splash.png $INSTALL/usr/share/xbmc/media/Splash.png
# fi
# cleanup and python addon fixes
mkdir -p $INSTALL/usr/share/xbmc/addons/script.module.pil/lib
ln -s `ls -d $INSTALL/usr/lib/python*/site-packages | sed -e "s,$INSTALL,,"`/PIL \
$INSTALL/usr/share/xbmc/addons/script.module.pil/lib/PIL
rm -rf $INSTALL/usr/share/xbmc/addons/script.module.pysqlite
mkdir -p $INSTALL/usr/share/xbmc/system/
cp $PKG_DIR/config/advancedsettings.xml $INSTALL/usr/share/xbmc/system/
mkdir -p $INSTALL/usr/share/xbmc/addons
cp -R $PKG_DIR/config/os.openelec.tv $INSTALL/usr/share/xbmc/addons
$SED "s|@ADDON_OS_VERSION@|$OS_VERSION|g" -i $INSTALL/usr/share/xbmc/addons/os.openelec.tv/addon.xml
cp -R $PKG_DIR/config/repository.openelec.tv $INSTALL/usr/share/xbmc/addons
$SED "s|@ADDON_URL@|$ADDON_URL|g" -i $INSTALL/usr/share/xbmc/addons/repository.openelec.tv/addon.xml
mkdir -p $PYTHON_LIBDIR/site-packages/xbmc
cp -R $PKG_BUILD/tools/EventClients/lib/python/* $PYTHON_LIBDIR/site-packages/xbmc
# install powermanagement hooks
mkdir -p $INSTALL/etc/pm/sleep.d
cp $PKG_DIR/sleep.d/* $INSTALL/etc/pm/sleep.d
# install project specific configs
if [ -f $PROJECT_DIR/$PROJECT/xbmc/*.xml ]; then
mkdir -p $INSTALL/usr/share/xbmc/config
cp -R $PROJECT_DIR/$PROJECT/xbmc/* $INSTALL/usr/share/xbmc/config
fi
if [ "$XBMC_EXTRA_FONTS" = yes ]; then
mkdir -p $INSTALL/usr/share/xbmc/media/Fonts
cp $PKG_DIR/fonts/*.ttf $INSTALL/usr/share/xbmc/media/Fonts
fi
if [ "$WIIMOTE_SUPPORT" = yes ]; then
mkdir -p $INSTALL/usr/bin
cp $PKG_BUILD/tools/EventClients/Clients/WiiRemote/WiiUse_WiiRemote $INSTALL/usr/bin/xbmc-wiiremote
mkdir -p $INSTALL/lib/udev
cp $PKG_DIR/scripts/wiiremote_helper $INSTALL/lib/udev
fi
if [ "$PS3REMOTE_SUPPORT" = yes ]; then
mkdir -p $INSTALL/usr/bin
cp $PKG_BUILD/tools/EventClients/Clients/PS3\ BD\ Remote/ps3_remote.py $INSTALL/usr/bin/xbmc-ps3remote
mkdir -p $INSTALL/usr/share/pixmaps/xbmc
cp $PKG_BUILD/tools/EventClients/icons/bluetooth.png $INSTALL/usr/share/pixmaps/xbmc
mkdir -p $PYTHON_LIBDIR/site-packages/xbmc
echo 'ICON_PATH="/usr/share/pixmaps/xbmc/"' > $PYTHON_LIBDIR/site-packages/xbmc/defs.py
mkdir -p $INSTALL/lib/udev
cp $PKG_DIR/scripts/ps3remote_helper $INSTALL/lib/udev
fi

View File

@ -1,133 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
PKG_NAME="xbmc-pvr"
PKG_VERSION="522042f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.xbmc.org"
PKG_URL="http://gujs.openelec.tv/sources/$PKG_NAME-$PKG_VERSION.tar.xz"
#PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS="boost Python zlib bzip2 lzo pcre alsa-lib libass enca curl libssh rtmpdump Mesa glew fontconfig fribidi $LIBJPEG libpng tiff freetype jasper libmad libsamplerate libogg libvorbis libcdio libmodplug faad2 flac lame libmpeg2 SDL SDL_mixer SDL_image yajl sqlite mysql alsa bc xbmc-addon-settings"
PKG_BUILD_DEPENDS="toolchain boost Python zlib bzip2 lzo pcre alsa-lib libass enca curl libssh rtmpdump Mesa glew fontconfig fribidi $LIBJPEG libpng tiff freetype jasper libmad libsamplerate libogg libvorbis libcdio libmodplug faad2 flac lame libmpeg2 SDL SDL_mixer SDL_image yajl sqlite mysql"
PKG_PRIORITY="optional"
PKG_SECTION="mediacenter"
PKG_SHORTDESC="xbmc: XBMC Mediacenter"
PKG_LONGDESC="XBMC Media Center (which was formerly named Xbox Media Center) is a free and open source cross-platform media player and home entertainment system software with a 10-foot user interface designed for the living-room TV. Its graphical user interface allows the user to easily manage video, photos, podcasts, and music from a computer, optical disk, local network, and the internet using a remote control."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
# for libX11 support
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libX11 libXext"
PKG_DEPENDS="$PKG_DEPENDS libX11 libXext"
# for libXrandr support
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libXrandr"
PKG_DEPENDS="$PKG_DEPENDS libXrandr"
# for dbus support
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS dbus"
PKG_DEPENDS="$PKG_DEPENDS dbus"
if [ "$CEC_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libcec"
PKG_DEPENDS="$PKG_DEPENDS libcec"
fi
if [ "$XBMC_SCR_RSXS" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libXt libXmu"
PKG_DEPENDS="$PKG_DEPENDS libXt libXmu"
fi
if [ "$FAAC_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS faac"
PKG_DEPENDS="$PKG_DEPENDS faac"
fi
if [ "$BLURAY_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libbluray"
PKG_DEPENDS="$PKG_DEPENDS libbluray"
fi
if [ "$AVAHI_DAEMON" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS avahi"
PKG_DEPENDS="$PKG_DEPENDS avahi"
fi
if [ "$AIRPLAY_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libplist"
PKG_DEPENDS="$PKG_DEPENDS libplist"
fi
if [ "$AIRTUNES_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libshairport"
PKG_DEPENDS="$PKG_DEPENDS libshairport"
fi
if [ "$NFS_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libnfs"
PKG_DEPENDS="$PKG_DEPENDS libnfs"
fi
if [ "$AFP_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS afpfs-ng"
PKG_DEPENDS="$PKG_DEPENDS afpfs-ng"
fi
if [ "$SAMBA_CLIENT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS samba"
PKG_DEPENDS="$PKG_DEPENDS samba"
fi
if [ "$WEBSERVER" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libmicrohttpd"
PKG_DEPENDS="$PKG_DEPENDS libmicrohttpd"
fi
if [ "$VDPAU" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libvdpau"
PKG_DEPENDS="$PKG_DEPENDS libvdpau"
fi
if [ "$VAAPI" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libva"
PKG_DEPENDS="$PKG_DEPENDS libva"
fi
if [ "$CRYSTALHD" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS crystalhd"
PKG_DEPENDS="$PKG_DEPENDS crystalhd"
fi
if [ "$WIIMOTE_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS wiiuse"
PKG_DEPENDS="$PKG_DEPENDS wiiuse"
fi
if [ "$PS3REMOTE_SUPPORT" = yes ]; then
PKG_DEPENDS="$PKG_DEPENDS PyBluez"
fi
# some python stuff needed for various addons
PKG_DEPENDS="$PKG_DEPENDS Imaging"
PKG_DEPENDS="$PKG_DEPENDS simplejson"

View File

@ -1,26 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
for i in `ls xbmc-*.patch`; do
mv $i `echo $i | sed "s,$1,$2,g"`
done

View File

@ -1,87 +0,0 @@
diff -Naur xbmc-9389dc8/configure.in xbmc-9389dc8.patch/configure.in
--- xbmc-9389dc8/configure.in 2011-09-01 23:34:05.488142309 +0200
+++ xbmc-9389dc8.patch/configure.in 2011-09-01 23:51:26.371021628 +0200
@@ -68,6 +68,8 @@
xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. =="
goom_enabled="== GOOM enabled. =="
goom_disabled="== GOOM disabled. =="
+xbmcprojectm_enabled="== XBMCProjectM enabled. =="
+xbmxprojectm_disabled="== XBMCProjectM disabled. =="
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
pulse_disabled="== PulseAudio support manually disabled. =="
dvdcss_enabled="== DVDCSS support enabled. =="
@@ -219,6 +221,12 @@
[use_goom=$enableval],
[use_goom=no])
+AC_ARG_ENABLE([xbmcprojectm],
+ [AS_HELP_STRING([--enable-xbmcprojectm],
+ [enable XBMCProjectM visualisation (default is yes)])],
+ [use_xbmcprojectm=$enableval],
+ [use_xbmcprojectm=yes])
+
AC_ARG_ENABLE([ccache],
[AS_HELP_STRING([--enable-ccache],
[enable building with ccache feature (default is auto)])],
@@ -850,6 +858,15 @@
fi
fi
+# XBMCPROJECTM
+if test "$use_xbmcprojectm" = "no" || test "$use_gl" = "no"; then
+ AC_MSG_NOTICE($xbmcprojectm_disabled)
+ DISABLE_XBMCPROJECTM=1
+else
+ AC_MSG_NOTICE($xbmcprojectm_enabled)
+ DISABLE_XBMCPROJECTM=0
+fi
+
# libRTMP
if test "$use_librtmp" != "no"; then
AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
@@ -1324,6 +1341,12 @@
final_message="$final_message\n GOOM:\t\tNo"
fi
+if test "$use_xbmcprojectm" = "yes"; then
+ final_message="$final_message\n XBMCProjectM:\tYes"
+else
+ final_message="$final_message\n XBMCProjectM:\tNo"
+fi
+
if test "$use_libbluray" = "yes"; then
final_message="$final_message\n Bluray:\tYes"
else
@@ -1553,6 +1576,7 @@
AC_SUBST(SDL_DEFINES)
AC_SUBST(BUILD_DVDCSS)
AC_SUBST(DISABLE_GOOM)
+AC_SUBST(DISABLE_XBMCPROJECTM)
AC_SUBST(USE_EXTERNAL_FFMPEG)
AC_SUBST(PYTHON_VERSION)
AC_SUBST(OUTPUT_FILES)
@@ -1797,7 +1821,7 @@
fi
set +x
fi
-], [0])
+], [$DISABLE_XBMCPROJECTM])
XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
./configure \
diff -Naur xbmc-9389dc8/Makefile.in xbmc-9389dc8.patch/Makefile.in
--- xbmc-9389dc8/Makefile.in 2011-09-01 23:34:05.581143554 +0200
+++ xbmc-9389dc8.patch/Makefile.in 2011-09-01 23:52:59.832272157 +0200
@@ -144,8 +144,10 @@
ifeq (@USE_OPENGL@,1)
VIS_DIRS+=\
xbmc/visualizations/OpenGLSpectrum \
- xbmc/visualizations/WaveForm \
- xbmc/visualizations/XBMCProjectM
+ xbmc/visualizations/WaveForm
+ifneq (@DISABLE_XBMCPROJECTM@,1)
+ VIS_DIRS+=xbmc/visualizations/XBMCProjectM
+endif
endif
ifeq (($(findstring osx,@ARCH@), osx),(@USE_OPENGL@,1))

View File

@ -1,85 +0,0 @@
diff -Naur xbmc-30a9070/configure.in xbmc-30a9070.patch/configure.in
--- xbmc-30a9070/configure.in 2011-07-28 09:05:20.854037605 +0200
+++ xbmc-30a9070.patch/configure.in 2011-07-28 09:05:32.890194108 +0200
@@ -68,6 +68,8 @@
goom_disabled="== GOOM disabled. =="
xbmcprojectm_enabled="== XBMCProjectM enabled. =="
xbmxprojectm_disabled="== XBMCProjectM disabled. =="
+rsxs_enabled="== RSXS enabled. =="
+rsxs_disabled="== RSXS disabled. =="
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
pulse_disabled="== PulseAudio support manually disabled. =="
dvdcss_enabled="== DVDCSS support enabled. =="
@@ -215,6 +217,12 @@
[use_xbmcprojectm=$enableval],
[use_xbmcprojectm=yes])
+AC_ARG_ENABLE([rsxs],
+ [AS_HELP_STRING([--enable-rsxs],
+ [enable RSXS Screensaver (default is yes)])],
+ [use_rsxs=$enableval],
+ [use_rsxs=yes])
+
AC_ARG_ENABLE([ccache],
[AS_HELP_STRING([--enable-ccache],
[enable building with ccache feature (default is auto)])],
@@ -821,6 +829,15 @@
DISABLE_XBMCPROJECTM=1
fi
+# RSXS
+if test "$use_rsxs" = "yes" && test "use_gl" == "yes"; then
+ AC_MSG_NOTICE($rsxs_enabled)
+ DISABLE_RSXS=0
+else
+ AC_MSG_NOTICE($rsxs_disabled)
+ DISABLE_RSXS=1
+fi
+
# libRTMP
if test "$use_librtmp" != "no"; then
AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
@@ -1281,6 +1298,12 @@
final_message="$final_message\n XBMCProjectM:\tNo"
fi
+if test "$use_rsxs" = "yes"; then
+ final_message="$final_message\n RSXS:\t\tYes"
+else
+ final_message="$final_message\n RSXS:\t\tNo"
+fi
+
if test "$use_libbluray" = "yes"; then
final_message="$final_message\n Bluray:\tYes"
else
@@ -1510,6 +1533,7 @@
AC_SUBST(BUILD_DVDCSS)
AC_SUBST(DISABLE_GOOM)
AC_SUBST(DISABLE_XBMCPROJECTM)
+AC_SUBST(DISABLE_RSXS)
AC_SUBST(USE_EXTERNAL_FFMPEG)
AC_SUBST(PYTHON_VERSION)
AC_SUBST(OUTPUT_FILES)
@@ -1791,7 +1815,7 @@
--disable-lattice \
--disable-skyrocket
fi
-], [0])
+], [$DISABLE_RSXS])
XB_CONFIG_MODULE([lib/libapetag], [
./configure \
diff -Naur xbmc-30a9070/Makefile.in xbmc-30a9070.patch/Makefile.in
--- xbmc-30a9070/Makefile.in 2011-07-28 09:05:20.856037631 +0200
+++ xbmc-30a9070.patch/Makefile.in 2011-07-28 09:10:44.898247687 +0200
@@ -136,8 +136,10 @@
SS_DIRS=
ifeq (@USE_OPENGL@,1)
+ifneq (@DISABLE_RSXS@,1)
SS_DIRS+= xbmc/screensavers/rsxs-0.9/xbmc
endif
+endif
VIS_DIRS=
ifeq (@USE_OPENGL@,1)

View File

@ -1,23 +0,0 @@
diff -Naur xbmc-a8d22f6/xbmc/settings/GUISettings.cpp xbmc-a8d22f6.patch/xbmc/settings/GUISettings.cpp
--- xbmc-a8d22f6/xbmc/settings/GUISettings.cpp 2011-08-02 15:01:17.000000000 +0200
+++ xbmc-a8d22f6.patch/xbmc/settings/GUISettings.cpp 2011-08-02 15:25:47.205925050 +0200
@@ -654,6 +654,7 @@
AddInt(vid, "myvideos.selectaction", 22079, SELECT_ACTION_PLAY_OR_RESUME, SELECT_ACTION_CHOOSE, 1, SELECT_ACTION_INFO, SPIN_CONTROL_TEXT);
AddBool(NULL, "myvideos.treatstackasfile", 20051, true);
AddBool(vid, "myvideos.extractflags",20433, true);
+ AddBool(vid, "myvideos.alwaysextractflags",20433, false);
AddBool(vid, "myvideos.filemetadata", 20419, true);
AddBool(NULL, "myvideos.extractthumb",20433, true);
diff -Naur xbmc-a8d22f6/xbmc/ThumbLoader.cpp xbmc-a8d22f6.patch/xbmc/ThumbLoader.cpp
--- xbmc-a8d22f6/xbmc/ThumbLoader.cpp 2011-08-02 15:01:19.000000000 +0200
+++ xbmc-a8d22f6.patch/xbmc/ThumbLoader.cpp 2011-08-02 15:24:54.831265675 +0200
@@ -146,7 +146,7 @@
m_item.SetThumbnailImage(m_target);
}
}
- else if (m_item.HasVideoInfoTag() && !m_item.GetVideoInfoTag()->HasStreamDetails())
+ else if (m_item.HasVideoInfoTag() && (!m_item.GetVideoInfoTag()->HasStreamDetails() || g_guiSettings.GetBool("myvideos.alwaysextractflags")))
{
CLog::Log(LOGDEBUG,"%s - trying to extract filestream details from video file %s", __FUNCTION__, m_path.c_str());
result = CDVDFileInfo::GetFileStreamDetails(&m_item);

View File

@ -1,37 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#      Copyright (C) 2010-2011 Roman Weber (roman@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
# Mediacenter environment variables.
#
# This file contains non-OpenELEC evironment variables as well as OpenELEC
# evironment variables that are not user defined.
################################################################################
XBMC_HOME="/usr/share/xbmc"
export XBMC_HOME
GPUDEVICE=$(lspci -n | grep 0300)
GPUTYPE="OTHER"
[ "$(echo $GPUDEVICE | grep 8086)" ] && GPUTYPE="INTEL" # 8086 == INTEL
[ "$(echo $GPUDEVICE | grep 10de)" ] && GPUTYPE="NVIDIA" # 10de == NVIDIA
[ "$(echo $GPUDEVICE | grep 1002)" ] && GPUTYPE="AMD" # 1002 == AMD
export GPUTYPE

View File

@ -1,51 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
# inspired by
# https://github.com/xtranophilist/gnome-shell-extension-cpu-temperature/blob/master/extension.js
TEMP=0
if [ -f /sys/devices/platform/coretemp.0/temp1_input ]; then
# used with coretemp
TEMP=`cat /sys/devices/platform/coretemp.0/temp1_input`
elif [ -f /sys/devices/platform/coretemp.0/temp2_input ]; then
# used with coretemp
TEMP=`cat /sys/devices/platform/coretemp.0/temp2_input`
elif [ -f /sys/bus/acpi/devices/LNXTHERM\:00/thermal_zone/temp ]; then
# used on some intel systems
TEMP=`cat /sys/bus/acpi/devices/LNXTHERM\:00/thermal_zone/temp`
elif [ -f /sys/devices/virtual/thermal/thermal_zone0/temp ]; then
# used on some intel systems
TEMP=`cat /sys/devices/virtual/thermal/thermal_zone0/temp`
elif [ -f /sys/class/hwmon/hwmon0/temp1_input ]; then
# hwmon for new 2.6.39, 3.0 linux kernels
TEMP=`cat /sys/class/hwmon/hwmon0/temp1_input`
elif [ -f /sys/class/hwmon/hwmon0/device/temp1_input ]; then
# used on AMD systems
TEMP=`cat /sys/class/hwmon/hwmon0/device/temp1_input`
elif [ -f /sys/class/hwmon/hwmon0/device/temp2_input ]; then
# used on ION systems
TEMP=`cat /sys/class/hwmon/hwmon0/device/temp2_input`
fi
echo "$(( $TEMP / 1000 )) C"

View File

@ -1,38 +0,0 @@
#!/bin/sh
################################################################################
# Copyright (C) 2009-2010 OpenELEC.tv
# http://www.openelec.tv
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
TEMP="0"
if lspci -n | grep 0300 | grep -q 10de; then
[ -f /usr/bin/nvidia-smi ] && TEMP=`/usr/bin/nvidia-smi -q -x | grep 'gpu_temp' | awk '{ print $1 }' | sed 's,<gpu_temp>,,g'`
fi
if lspci -n | grep 0300 | grep -q 1002; then
if [ -f /storage/.config/xorg.conf ]; then
XORG="/storage/.config/xorg.conf"
else
XORG="/etc/X11/xorg-fglrx.conf"
fi
[ -f /usr/bin/aticonfig ] && TEMP=`/usr/bin/aticonfig -i $XORG --od-gettemperature | grep Temperature | cut -f 2 -d "-" | cut -f 1 -d "." | sed -e "s, ,,"`
fi
echo "${TEMP} C"

View File

@ -1,34 +0,0 @@
#!/bin/sh
################################################################################
# Copyright (C) 2009-2010 OpenELEC.tv
# http://www.openelec.tv
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
case "${ACTION}" in
add)
if [ -f /usr/bin/xbmc-ps3remote ]; then
/usr/bin/xbmc-ps3remote localhost 9777 &
fi
;;
remove)
killall xbmc-ps3remote
;;
esac
exit 0

View File

@ -1,34 +0,0 @@
#!/bin/sh
################################################################################
# Copyright (C) 2009-2010 OpenELEC.tv
# http://www.openelec.tv
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
case "${ACTION}" in
add)
if [ -f /usr/bin/xbmc-wiiremote ]; then
/usr/bin/xbmc-wiiremote &
fi
;;
remove)
killall xbmc-wiiremote
;;
esac
exit 0

View File

@ -1,28 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. /etc/profile
for script in $HOME/.xbmc/addons/*/sleep.d/*.power; do
progress "running addon sleep script $script ($1)..."
sh $script $1
done

View File

@ -1,40 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. /etc/profile
case "$1" in
thaw|resume)
(
if [ -f /var/config/settings.conf ]; then
. /var/config/settings.conf
if [ "$WAKEUP_VIDEODBUPDATE" = "true" ]; then
usleep 5000000
xbmc-send --host=127.0.0.1 -a "UpdateLibrary(video)"
fi
fi
)&
;;
*) exit $NA
;;
esac

View File

@ -1,40 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. /etc/profile
case "$1" in
thaw|resume)
(
if [ -f /var/config/settings.conf ]; then
. /var/config/settings.conf
if [ "$WAKEUP_MUSICDBUPDATE" = "true" ]; then
usleep 5000000
xbmc-send --host=127.0.0.1 -a "UpdateLibrary(music)"
fi
fi
)&
;;
*) exit $NA
;;
esac

View File

@ -1,34 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. /etc/profile
case "$1" in
hibernate|suspend)
xbmc-send --host=127.0.0.1 -a "LIRC.Stop"
;;
thaw|resume)
xbmc-send --host=127.0.0.1 -a "LIRC.Start"
;;
*) exit $NA
;;
esac

View File

@ -1,34 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. /etc/profile
case "$1" in
hibernate|suspend)
xbmc-send --host=127.0.0.1 -a "LCD.Suspend"
;;
thaw|resume)
xbmc-send --host=127.0.0.1 -a "LCD.Resume"
;;
*) exit $NA
;;
esac

View File

@ -1,31 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. /etc/profile
case "$1" in
thaw|resume)
xbmc-send --host=127.0.0.1 -a "ReloadSkin()"
;;
*) exit $NA
;;
esac

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

View File

@ -1,27 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
# only does something with "bluetooth" subsystem devices.
SUBSYSTEM!="bluetooth", GOTO="end"
# Start PS3 Remote support if bluetooth is starting
ACTION=="add|remove", RUN+="/lib/udev/ps3remote_helper"
LABEL="end"

View File

@ -1,27 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
# only does something with "bluetooth" subsystem devices.
SUBSYSTEM!="bluetooth", GOTO="end"
# Start Wii Remote support if bluetooth is starting
ACTION=="add|remove", RUN+="/lib/udev/wiiremote_helper"
LABEL="end"

View File

@ -1,30 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# 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 2, 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
echo "### Applying project based patches ###"
for patch in `ls $PROJECT_DIR/$PROJECT/patches/$1`; do
cat $PROJECT_DIR/$PROJECT/patches/$1/$patch | patch -d \
`echo $PKG_BUILD | cut -f1 -d\ ` -p1
done

View File

@ -19,12 +19,13 @@
################################################################################
PKG_NAME="xbmc-theme-Confluence"
PKG_VERSION="70537d2"
PKG_VERSION="bee1ab5"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.xbmc.org"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
#PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_URL="http://gujs.openelec.tv/sources/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"

View File

@ -19,12 +19,13 @@
################################################################################
PKG_NAME="xbmc"
PKG_VERSION="70537d2"
PKG_VERSION="bee1ab5"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.xbmc.org"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
#PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_URL="http://gujs.openelec.tv/sources/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS="boost Python zlib bzip2 lzo pcre alsa-lib libass enca curl libssh rtmpdump Mesa glew fontconfig fribidi $LIBJPEG libpng tiff freetype jasper libmad libsamplerate libogg libvorbis libcdio libmodplug faad2 flac lame libmpeg2 SDL SDL_mixer SDL_image yajl sqlite mysql alsa bc xbmc-addon-settings"
PKG_BUILD_DEPENDS="toolchain boost Python zlib bzip2 lzo pcre alsa-lib libass enca curl libssh rtmpdump Mesa glew fontconfig fribidi $LIBJPEG libpng tiff freetype jasper libmad libsamplerate libogg libvorbis libcdio libmodplug faad2 flac lame libmpeg2 SDL SDL_mixer SDL_image yajl sqlite mysql"
PKG_PRIORITY="optional"

View File

@ -1,39 +0,0 @@
diff -Naur xbmc-9389dc8/configure.in xbmc-9389dc8.patch/configure.in
--- xbmc-9389dc8/configure.in 2011-09-01 17:21:47.000000000 +0200
+++ xbmc-9389dc8.patch/configure.in 2011-09-01 23:30:40.419399392 +0200
@@ -428,6 +428,14 @@
esac
AC_SUBST([ARCH])
+AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
+if test "$HAVE_GIT" = "yes" -a "$GIT_REV" = ""; then
+ GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
+elif test "$GIT_REV" = ""; then
+ GIT_REV="Unknown"
+fi
+final_message="$final_message\n git Rev.:\t${GIT_REV}"
+
# platform debug flags
if test "$use_debug" = "yes"; then
final_message="$final_message\n Debugging:\tYes"
@@ -1177,7 +1185,6 @@
fi
fi
-AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
# Checks for header files.
AC_HEADER_DIRENT
@@ -1408,12 +1415,6 @@
final_message="$final_message\n Avahi:\tNo"
fi
-if test "$HAVE_GIT" = "yes"; then
- GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
-fi
-if test "$GIT_REV" = ""; then
- GIT_REV="Unknown"
-fi
if test "$host_vendor" = "apple"; then
echo "#define GIT_REV \"$GIT_REV\"" > git_revision.h
else

View File

@ -1,13 +0,0 @@
diff -Naur xbmc-9389dc8/xbmc/settings/GUISettings.cpp xbmc-9389dc8.patch/xbmc/settings/GUISettings.cpp
--- xbmc-9389dc8/xbmc/settings/GUISettings.cpp 2011-09-01 23:34:05.267139356 +0200
+++ xbmc-9389dc8.patch/xbmc/settings/GUISettings.cpp 2011-09-01 23:34:52.098765331 +0200
@@ -423,7 +423,8 @@
AddString(vs, "videoscreen.testpattern",226,"", BUTTON_CONTROL_STANDARD);
#endif
#if defined(_LINUX) && !defined(__APPLE__)
- AddBool(NULL, "videoscreen.haslcd", 4501, false);
+ AddSeparator(vs, "videoscreen.sep2");
+ AddBool(vs, "videoscreen.haslcd", 4501, false);
#endif
CSettingsCategory* ao = AddCategory(4, "audiooutput", 772);

View File

@ -1,119 +0,0 @@
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdcss/src/libdvdcss.pc.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdcss/src/libdvdcss.pc.in
--- xbmc-pvr-3513480/lib/libdvd/libdvdcss/src/libdvdcss.pc.in 2011-04-25 02:36:42.000000000 +0200
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdcss/src/libdvdcss.pc.in 2011-04-25 05:01:20.091837122 +0200
@@ -6,5 +6,5 @@
Name: libdvdcss
Description: DVD access and decryption library.
Version: @VERSION@
-Libs: -L${libdir} -ldvdcss
-Cflags: -I{includedir} -I${includedir}/@PACKAGE@
+Libs: -ldvdcss
+Cflags: -I.
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav-config2.sh xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav-config2.sh
--- xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav-config2.sh 2011-04-25 02:36:42.000000000 +0200
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav-config2.sh 2011-04-25 05:01:20.549828701 +0200
@@ -56,17 +56,17 @@
fi
if test "$echo_cflags" = "yes"; then
- echo -I$prefix/include $dvdread_cflags $extracflags $threadcflags
+ echo $dvdread_cflags $extracflags $threadcflags
fi
if test "$echo_minicflags" = "yes"; then
- echo -I$prefix/include -I$prefix/include/dvdnav $extracflags $threadcflags
+ echo $extracflags $threadcflags
fi
if test "$echo_libs" = "yes"; then
- echo -L$libdir -ldvdnav $dvdread_libs $threadlib
+ echo -ldvdnav $dvdread_libs $threadlib
fi
if test "$echo_minilibs" = "yes"; then
- echo -L$libdir -ldvdnavmini $threadlib
+ echo -ldvdnavmini $threadlib
fi
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav-config.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav-config.in
--- xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav-config.in 2011-04-25 02:36:42.000000000 +0200
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav-config.in 2011-04-25 05:01:20.624827321 +0200
@@ -76,13 +76,13 @@
fi
if test "$echo_cflags" = "yes"; then
- echo -I@includedir@ -I@includedir@/libdvdread @THREAD_CFLAGS@
+ echo @THREAD_CFLAGS@
fi
if test "$echo_libs" = "yes"; then
- echo -L@libdir@ -ldvdnav -ldvdread @THREAD_LIBS@
+ echo -ldvdnav -ldvdread @THREAD_LIBS@
fi
if test "$echo_minilibs" = "yes"; then
- echo -L@libdir@ -ldvdnavmini @THREAD_LIBS@
+ echo -ldvdnavmini @THREAD_LIBS@
fi
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnavmini.pc.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnavmini.pc.in
--- xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnavmini.pc.in 2011-04-25 02:36:42.000000000 +0200
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnavmini.pc.in 2011-04-25 05:01:21.042819641 +0200
@@ -7,5 +7,5 @@
Description: DVD Navigation mini library
Version: @VERSION@
-Cflags: -I${includedir} @DVDREAD_CFLAGS@ @THREAD_CFLAGS@
-Libs: -L${libdir} -ldvdnav @THREAD_LIBS@
+Cflags: @DVDREAD_CFLAGS@ @THREAD_CFLAGS@
+Libs: -ldvdnav @THREAD_LIBS@
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav.pc.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav.pc.in
--- xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav.pc.in 2011-04-25 02:36:42.000000000 +0200
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav.pc.in 2011-04-25 05:01:21.262815601 +0200
@@ -8,5 +8,5 @@
Version: @VERSION@
Requires.private: dvdread >= 4.1.2
-Cflags: -I${includedir} @THREAD_CFLAGS@
-Libs: -L${libdir} -ldvdnav @THREAD_LIBS@
+Cflags: @THREAD_CFLAGS@
+Libs: -ldvdnav @THREAD_LIBS@
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread-config.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread-config.in
--- xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread-config.in 2011-04-25 02:36:42.000000000 +0200
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread-config.in 2011-04-25 05:01:21.278815307 +0200
@@ -72,9 +72,9 @@
fi
if test "$echo_cflags" = "yes"; then
- echo -I@includedir@
+ echo ""
fi
if test "$echo_libs" = "yes"; then
- echo -L@libdir@ -ldvdread
+ echo -ldvdread
fi
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread-config.sh xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread-config.sh
--- xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread-config.sh 2011-04-25 02:36:42.000000000 +0200
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread-config.sh 2011-04-25 05:01:21.278815307 +0200
@@ -48,9 +48,9 @@
fi
if test "$echo_cflags" = "yes"; then
- echo -I$prefix/include $extracflags
+ echo $extracflags
fi
if test "$echo_libs" = "yes"; then
- echo -L$libdir $dvdreadlib
+ echo $dvdreadlib
fi
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread.pc.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread.pc.in
--- xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread.pc.in 2011-04-25 02:36:42.000000000 +0200
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread.pc.in 2011-04-25 05:01:21.279815289 +0200
@@ -7,5 +7,5 @@
Description: Low level DVD access library
Version: @VERSION@
-Cflags: -I${includedir}
-Libs: -L${libdir} -ldvdread
+Cflags: -I.
+Libs: -ldvdread

View File

@ -1,34 +0,0 @@
From 0c2185d62f858f7b41461b4141e731dc7ec01ca6 Mon Sep 17 00:00:00 2001
From: FernetMenta <fernetmenta@online.de>
Date: Thu, 11 Aug 2011 18:35:18 +0200
Subject: [PATCH] LinuxRendererGL: increase buffers to 3
---
xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
index 18c6da4..79a9d90 100644
--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
@@ -223,7 +223,7 @@ bool CLinuxRendererGL::ValidateRenderer()
void CLinuxRendererGL::ManageTextures()
{
- m_NumYV12Buffers = 2;
+ m_NumYV12Buffers = 3;
//m_iYV12RenderBuffer = 0;
return;
}
@@ -720,7 +720,7 @@ unsigned int CLinuxRendererGL::PreInit()
m_resolution = RES_PAL_4x3;
m_iYV12RenderBuffer = 0;
- m_NumYV12Buffers = 2;
+ m_NumYV12Buffers = 3;
// setup the background colour
m_clearColour = (float)(g_advancedSettings.m_videoBlackBarColour & 0xff) / 0xff;
--
1.7.5.4

View File

@ -1,53 +0,0 @@
From f46d7a99bc2f3bc70f274422ec8d16257e2a97aa Mon Sep 17 00:00:00 2001
From: FernetMenta <fernetmenta@online.de>
Date: Sat, 13 Aug 2011 16:07:08 +0200
Subject: [PATCH] ati: limit glxSwapBuffers going to far ahead
---
xbmc/windowing/X11/WinSystemX11GL.cpp | 23 +++++++++++++++++++++--
1 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/xbmc/windowing/X11/WinSystemX11GL.cpp b/xbmc/windowing/X11/WinSystemX11GL.cpp
index 94f369e..870999e 100644
--- a/xbmc/windowing/X11/WinSystemX11GL.cpp
+++ b/xbmc/windowing/X11/WinSystemX11GL.cpp
@@ -43,7 +43,27 @@ CWinSystemX11GL::~CWinSystemX11GL()
bool CWinSystemX11GL::PresentRenderImpl(const CDirtyRegionList& dirty)
{
- if(m_iVSyncMode == 3)
+ if(m_iVSyncMode == 2)
+ {
+ static unsigned int last = 0;
+ unsigned int now;
+ if(m_glXGetVideoSyncSGI(&now) != 0)
+ CLog::Log(LOGERROR, "%s - glXGetVideoSyncSGI - Failed to get current retrace count", __FUNCTION__);
+
+ if (now == last)
+ {
+ if (m_glXWaitVideoSyncSGI(2, (last + 1) % 2, &now) != 0)
+ CLog::Log(LOGERROR, "%s - glXWaitVideoSyncSGI - Returned error", __FUNCTION__);
+ if(m_glXGetVideoSyncSGI(&now) != 0)
+ CLog::Log(LOGERROR, "%s - glXGetVideoSyncSGI - Failed to get current retrace count", __FUNCTION__);
+ last = now + 1;
+ }
+ else
+ last = now;
+
+ glXSwapBuffers(m_dpy, m_glWindow);
+ }
+ else if(m_iVSyncMode == 3)
{
glFinish();
unsigned int before = 0, after = 0;
@@ -236,7 +256,6 @@ bool CWinSystemX11GL::CreateNewWindow(const CStdString& name, bool fullScreen, R
else
m_glXSwapIntervalMESA = NULL;
-
return true;
}
--
1.7.5.4

View File

@ -1,27 +0,0 @@
From dff7d824c82f957e19ad56247134912d70862188 Mon Sep 17 00:00:00 2001
From: FernetMenta <fernetmenta@online.de>
Date: Sun, 14 Aug 2011 11:21:32 +0200
Subject: [PATCH] vaapi: increase number of video surface allocated
---
xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
index bcc3fe1..326c390 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
@@ -358,7 +358,9 @@ bool CDecoder::EnsureContext(AVCodecContext *avctx)
else
m_refs = 2;
}
- return EnsureSurfaces(avctx, m_refs + 3);
+ // number of reference + 3 renderbuffers + Holder
+ // an extra one should not harm
+ return EnsureSurfaces(avctx, m_refs + 5);
}
bool CDecoder::EnsureSurfaces(AVCodecContext *avctx, unsigned n_surfaces_count)
--
1.7.5.4

View File

@ -1,21 +0,0 @@
diff -Naur xbmc-pvr-3513480/configure.in xbmc-pvr-3513480.patch/configure.in
--- xbmc-pvr-3513480/configure.in 2011-04-25 02:36:33.000000000 +0200
+++ xbmc-pvr-3513480.patch/configure.in 2011-04-25 05:14:49.220848143 +0200
@@ -885,6 +885,9 @@
AC_MSG_NOTICE($external_ffmpeg_disabled)
USE_EXTERNAL_FFMPEG=0
AC_DEFINE([PIX_FMT_VDPAU_MPEG4_IN_AVUTIL], [1], [Whether AVUtil defines PIX_FMT_VDPAU_MPEG4.])
+
+ # check for yasm
+ AC_CHECK_PROG(HAVE_YASM,yasm,"yes","no",)
fi
# Python
@@ -1547,6 +1550,7 @@
`if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
`if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
--target-os=$(tolower $(uname -s)) \
+ `if test "$HAVE_YASM" = "yes"; then echo --enable-yasm; fi` \
--disable-muxers \
--enable-muxer=spdif \
--enable-muxer=adts \

View File

@ -1,125 +0,0 @@
diff -Naur xbmc-pvr-3513480/configure.in xbmc-pvr-3513480.patch/configure.in
--- xbmc-pvr-3513480/configure.in 2011-04-25 05:46:35.000000000 +0200
+++ xbmc-pvr-3513480.patch/configure.in 2011-04-25 05:50:02.982401390 +0200
@@ -72,6 +72,8 @@
rsxs_disabled="== RSXS disabled. =="
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
pulse_disabled="== PulseAudio support manually disabled. =="
+lame_not_found="== Could not find libmp3lame. LAME support disabled. =="
+lame_disabled="== LAME support manually disabled. =="
dvdcss_enabled="== DVDCSS support enabled. =="
dvdcss_disabled="== DVDCSS support disabled. =="
hal_not_found="== Could not find hal. HAL support disabled. =="
@@ -244,6 +246,12 @@
[use_ffmpeg_libvorbis=$enableval],
[use_ffmpeg_libvorbis=no])
+AC_ARG_ENABLE([lame],
+ [AS_HELP_STRING([--enable-lame],
+ [enable lame support (default is yes)])],
+ [use_lame=$enableval],
+ [use_lame=yes])
+
AC_ARG_ENABLE([dvdcss],
[AS_HELP_STRING([--enable-dvdcss],
[enable DVDCSS support (default is yes)])],
@@ -758,6 +766,20 @@
USE_PULSE=0
fi
+# LAME
+if test "$use_lame" = "yes"; then
+ AC_CHECK_LIB([mp3lame], [main],
+ AC_DEFINE([HAVE_LIBMP3LAME], [1], [Define to 1 if you have the 'libmp3lame' library (-lmp3lame).]),
+ use_lame=no;AC_MSG_RESULT($lame_not_found))
+else
+ AC_MSG_RESULT($lame_disabled)
+fi
+if test "$use_lame" = "yes"; then
+ AC_SUBST([HAVE_LIBMP3LAME], 1)
+else
+ AC_SUBST([HAVE_LIBMP3LAME], 0)
+fi
+
# HAL
if test "$host_vendor" = "apple" ; then
use_hal="no"
@@ -1311,6 +1333,12 @@
final_message="$final_message\n HAL Support:\tNo"
fi
+if test "$use_lame" = "yes"; then
+ final_message="$final_message\n LAME:\t\tYes"
+else
+ final_message="$final_message\n LAME:\t\tNo"
+fi
+
# DVDCSS
if test "$use_dvdcss" = "yes"; then
AC_MSG_NOTICE($dvdcss_enabled)
diff -Naur xbmc-pvr-3513480/configure.in.orig xbmc-pvr-3513480.patch/configure.in.orig
diff -Naur xbmc-pvr-3513480/Makefile.in.orig xbmc-pvr-3513480.patch/Makefile.in.orig
diff -Naur xbmc-pvr-3513480/xbmc/cdrip/CDDARipper.cpp xbmc-pvr-3513480.patch/xbmc/cdrip/CDDARipper.cpp
--- xbmc-pvr-3513480/xbmc/cdrip/CDDARipper.cpp 2011-04-25 02:36:33.000000000 +0200
+++ xbmc-pvr-3513480.patch/xbmc/cdrip/CDDARipper.cpp 2011-04-25 05:48:10.487548571 +0200
@@ -27,7 +27,11 @@
#include "CDDAReader.h"
#include "utils/StringUtils.h"
#include "Util.h"
+
+#ifdef HAVE_LIBMP3LAME
#include "EncoderLame.h"
+#endif
+
#include "EncoderWav.h"
#include "EncoderVorbis.h"
#include "EncoderFFmpeg.h"
@@ -78,9 +82,16 @@
case CDDARIP_ENCODER_FLAC:
m_pEncoder = new CEncoderFlac();
break;
- default:
+#ifdef HAVE_LIBMP3LAME
+ case CDDARIP_ENCODER_LAME:
m_pEncoder = new CEncoderLame();
break;
+#else
+ default:
+ CLog::Log(LOGERROR,"invalid encoder selected");
+ return false;
+ break;
+#endif
}
// we have to set the tags before we init the Encoder
diff -Naur xbmc-pvr-3513480/xbmc/cdrip/Makefile.in xbmc-pvr-3513480.patch/xbmc/cdrip/Makefile.in
--- xbmc-pvr-3513480/xbmc/cdrip/Makefile.in 2011-04-25 02:36:33.000000000 +0200
+++ xbmc-pvr-3513480.patch/xbmc/cdrip/Makefile.in 2011-04-25 05:51:13.013064387 +0200
@@ -3,10 +3,13 @@
Encoder.cpp \
EncoderFFmpeg.cpp \
EncoderFlac.cpp \
- EncoderLame.cpp \
EncoderVorbis.cpp \
EncoderWav.cpp \
+ifeq (@HAVE_LIBMP3LAME@,1)
+ SRCS+=EncoderLame.cpp
+endif
+
LIB=cdrip.a
include @abs_top_srcdir@/Makefile.include
diff -Naur xbmc-pvr-3513480/xbmc/settings/GUISettings.cpp xbmc-pvr-3513480.patch/xbmc/settings/GUISettings.cpp
--- xbmc-pvr-3513480/xbmc/settings/GUISettings.cpp 2011-04-25 05:47:12.000000000 +0200
+++ xbmc-pvr-3513480.patch/xbmc/settings/GUISettings.cpp 2011-04-25 05:48:47.956833472 +0200
@@ -324,7 +324,9 @@
AddPath(acd,"audiocds.recordingpath",20000,"select writable folder",BUTTON_CONTROL_PATH_INPUT,false,657);
AddString(acd, "audiocds.trackpathformat", 13307, "%A - %B/[%N. ][%A - ]%T", EDIT_CONTROL_INPUT, false, 16016);
map<int,int> encoders;
+#ifdef HAVE_LIBMP3LAME
encoders.insert(make_pair(34000,CDDARIP_ENCODER_LAME));
+#endif
encoders.insert(make_pair(34001,CDDARIP_ENCODER_VORBIS));
encoders.insert(make_pair(34002,CDDARIP_ENCODER_WAV));
encoders.insert(make_pair(34005,CDDARIP_ENCODER_FLAC));

View File

@ -1,18 +0,0 @@
diff -Naur xbmc-a3c804b/xbmc/interfaces/python/XBPython.cpp xbmc-a3c804b.patch/xbmc/interfaces/python/XBPython.cpp
--- xbmc-a3c804b/xbmc/interfaces/python/XBPython.cpp 2011-08-17 23:40:00.000000000 +0200
+++ xbmc-a3c804b.patch/xbmc/interfaces/python/XBPython.cpp 2011-08-18 03:50:49.652475572 +0200
@@ -335,11 +335,9 @@
// at http://docs.python.org/using/cmdline.html#environment-variables
#if !defined(_WIN32)
- /* PYTHONOPTIMIZE is set off intentionally when using external Python.
- Reason for this is because we cannot be sure what version of Python
- was used to compile the various Python object files (i.e. .pyo,
- .pyc, etc.). */
- // check if we are running as real xbmc.app or just binary
+ // Required for python to find optimized code (pyo) files
+ setenv("PYTHONOPTIMIZE", "1", 1);
+ // check if we are running as real xbmc.app or just binary
if (!CUtil::GetFrameworksPath(true).IsEmpty())
{
// using external python, it's build looking for xxx/lib/python2.6

View File

@ -1,12 +0,0 @@
diff -Naur xbmc-pvr-3513480/userdata/LCD.xml xbmc-pvr-3513480.patch/userdata/LCD.xml
--- xbmc-pvr-3513480/userdata/LCD.xml 2011-04-25 02:36:33.000000000 +0200
+++ xbmc-pvr-3513480.patch/userdata/LCD.xml 2011-04-25 05:27:34.956125133 +0200
@@ -21,7 +21,7 @@
<line>Freemem: $INFO[System.FreeMemory]</line>
</video>
<general>
- <line>XBMC running...</line>
+ <line>*** OpenELEC ***</line>
<line>$INFO[System.Time] $INFO[System.Date]</line>
<line>Freemem: $INFO[System.FreeMemory]</line>
<line>$INFO[System.ScreenWidth]x$INFO[System.ScreenHeight] $INFO[System.ScreenMode]</line>

View File

@ -1,11 +0,0 @@
diff -Naur xbmc-10.1-Dharma/userdata/RssFeeds.xml xbmc-10.1-Dharma.patch/userdata/RssFeeds.xml
--- xbmc-10.1-Dharma/userdata/RssFeeds.xml 2011-03-08 02:49:24.000000000 +0100
+++ xbmc-10.1-Dharma.patch/userdata/RssFeeds.xml 2011-06-14 17:07:08.450880123 +0200
@@ -3,6 +3,7 @@
<!-- RSS feeds. To have multiple feeds, just add a feed to the set. You can also have multiple sets. !-->
<!-- To use different sets in your skin, each must be called from skin with a unique id. !-->
<set id="1">
+ <feed updateinterval="30">http://openelec.tv/news?format=feed&type=rss</feed>
<feed updateinterval="30">http://feeds.feedburner.com/xbmc</feed>
</set>
</rssfeeds>

View File

@ -1,29 +0,0 @@
diff -Naur xbmc-pvr-3513480/tools/EventClients/Clients/PS3 BD Remote/ps3_remote.py xbmc-pvr-3513480.patch/tools/EventClients/Clients/PS3 BD Remote/ps3_remote.py
--- xbmc-pvr-3513480/tools/EventClients/Clients/PS3 BD Remote/ps3_remote.py 2011-04-25 02:36:33.000000000 +0200
+++ xbmc-pvr-3513480.patch/tools/EventClients/Clients/PS3 BD Remote/ps3_remote.py 2011-04-25 05:30:03.870260596 +0200
@@ -59,9 +59,6 @@
target_connected = False
target_address = None
while target_connected is False:
- xbmc.send_notification("Action Required!",
- "Hold Start+Enter on your remote.",
- bticon)
print "Searching for %s" % target_name
print "(Hold Start + Enter on remote to make it discoverable)"
time.sleep(2)
@@ -72,7 +69,6 @@
except Exception, e:
print "Error performing bluetooth discovery"
print str(e)
- xbmc.send_notification("Error", "Unable to find devices.", bticon)
time.sleep(5)
continue
@@ -109,7 +105,6 @@
print "ERROR - Could Not Connect. Trying again..."
time.sleep(2)
else:
- xbmc.send_notification("Error", "No remotes were found.", bticon)
print "Could not find BD Remote Control. Trying again..."
time.sleep(2)
return (remote,target_address)

View File

@ -1,12 +0,0 @@
diff -Naur xbmc-30a9070/system/keymaps/keyboard.xml xbmc-30a9070.patch/system/keymaps/keyboard.xml
--- xbmc-30a9070/system/keymaps/keyboard.xml 2011-07-28 06:20:13.000000000 +0200
+++ xbmc-30a9070.patch/system/keymaps/keyboard.xml 2011-07-28 09:39:57.210973380 +0200
@@ -90,7 +90,7 @@
<numpadseven>Number7</numpadseven>
<numpadeight>Number8</numpadeight>
<numpadnine>Number9</numpadnine>
- <backslash>ToggleFullScreen</backslash>
+ <!-- <backslash>ToggleFullScreen</backslash> -->
<home>FirstPage</home>
<end>LastPage</end>
<!-- Multimedia keyboard keys -->

View File

@ -1,52 +0,0 @@
diff -Naur xbmc-pvr-3513480/system/Lircmap.xml xbmc-pvr-3513480.patch/system/Lircmap.xml
--- xbmc-pvr-3513480/system/Lircmap.xml 2011-04-25 02:36:33.000000000 +0200
+++ xbmc-pvr-3513480.patch/system/Lircmap.xml 2011-04-25 05:31:39.632429078 +0200
@@ -409,4 +409,48 @@
<yellow>KEY_YELLOW</yellow>
<blue>KEY_BLUE</blue>
</remote>
+ <remote device="mediacenter">
+ <pause>pause</pause>
+ <stop>stop</stop>
+ <forward>fwd</forward>
+ <reverse>rew</reverse>
+ <left>left</left>
+ <right>right</right>
+ <up>up</up>
+ <down>down</down>
+ <select>ok</select>
+ <pageplus>ch+</pageplus>
+ <pageminus>ch-</pageminus>
+ <back>back</back>
+ <menu>clear</menu>
+ <title>play</title>
+ <info>info</info>
+ <skipplus>next</skipplus>
+ <skipminus>prev</skipminus>
+ <display>teletext</display>
+ <start>ehome</start>
+ <record>rec</record>
+ <volumeplus>vol+</volumeplus>
+ <volumeminus>vol-</volumeminus>
+ <mute>mute</mute>
+ <power>power</power>
+ <myvideo>video</myvideo>
+ <mymusic>music</mymusic>
+ <mypictures>pictures</mypictures>
+ <mytv>tv</mytv>
+ <one>1</one>
+ <two>2</two>
+ <three>3</three>
+ <four>4</four>
+ <five>5</five>
+ <six>6</six>
+ <seven>7</seven>
+ <eight>8</eight>
+ <nine>9</nine>
+ <zero>0</zero>
+ <mytv>red</mytv>
+ <mymusic>green</mymusic>
+ <mypictures>yellow</mypictures>
+ <myvideo>blue</myvideo>
+ </remote>
</lircmap>

View File

@ -1,71 +0,0 @@
diff -Naur xbmc-10.1-Dharma/system/Lircmap.xml xbmc-10.1-Dharma.patch/system/Lircmap.xml
--- xbmc-10.1-Dharma/system/Lircmap.xml 2011-06-18 01:43:43.132101246 +0200
+++ xbmc-10.1-Dharma.patch/system/Lircmap.xml 2011-06-18 01:44:53.777025290 +0200
@@ -365,7 +365,6 @@
<remote device="linux-input-layer">
<altname>cx23885_remote</altname>
- <altname>devinput</altname>
<left>KEY_LEFT</left>
<right>KEY_RIGHT</right>
<up>KEY_UP</up>
@@ -452,4 +451,59 @@
<mypictures>yellow</mypictures>
<myvideo>blue</myvideo>
</remote>
+
+ <remote device="devinput">
+ <left>KEY_LEFT</left>
+ <right>KEY_RIGHT</right>
+ <up>KEY_UP</up>
+ <down>KEY_DOWN</down>
+ <select>KEY_OK</select>
+ <enter>KEY_ENTER</enter>
+ <clear>KEY_DELETE</clear>
+ <start>KEY_PROG1</start>
+ <back>KEY_EXIT</back>
+ <record>KEY_RECORD</record>
+ <play>KEY_PLAY</play>
+ <pause>KEY_PAUSE</pause>
+ <stop>KEY_STOP</stop>
+ <forward>KEY_FASTFORWARD</forward>
+ <reverse>KEY_REWIND</reverse>
+ <volumeplus>KEY_VOLUMEUP</volumeplus>
+ <volumeminus>KEY_VOLUMEDOWN</volumeminus>
+ <channelplus>KEY_CHANNELUP</channelplus>
+ <channelminus>KEY_CHANNELDOWN</channelminus>
+ <skipplus>KEY_NEXT</skipplus>
+ <skipminus>KEY_PREVIOUS</skipminus>
+ <title>KEY_EPG</title>
+ <subtitle>KEY_SUBTITLE</subtitle>
+ <language>KEY_LANGUAGE</language>
+ <info>KEY_INFO</info>
+ <display>KEY_ZOOM</display>
+ <mute>KEY_MUTE</mute>
+ <power>KEY_POWER</power>
+ <eject>KEY_EJECT</eject>
+ <menu>KEY_DVD</menu>
+ <menu>KEY_MENU</menu>
+ <myvideo>KEY_VIDEO</myvideo>
+ <mymusic>KEY_AUDIO</mymusic>
+ <mypictures>KEY_CAMERA</mypictures>
+ <mytv>KEY_TUNER</mytv>
+ <teletext>KEY_TEXT</teletext>
+ <one>KEY_NUMERIC_1</one>
+ <two>KEY_NUMERIC_2</two>
+ <three>KEY_NUMERIC_3</three>
+ <four>KEY_NUMERIC_4</four>
+ <five>KEY_NUMERIC_5</five>
+ <six>KEY_NUMERIC_6</six>
+ <seven>KEY_NUMERIC_7</seven>
+ <eight>KEY_NUMERIC_8</eight>
+ <nine>KEY_NUMERIC_9</nine>
+ <zero>KEY_NUMERIC_0</zero>
+ <star>KEY_NUMERIC_STAR</star>
+ <hash>KEY_NUMERIC_POUND</hash>
+ <red>KEY_RED</red>
+ <green>KEY_GREEN</green>
+ <yellow>KEY_YELLOW</yellow>
+ <blue>KEY_BLUE</blue>
+ </remote>
</lircmap>

View File

@ -1,11 +0,0 @@
diff -Naur xbmc-10.1-Dharma/system/keymaps/remote.xml xbmc-10.1-Dharma.patch/system/keymaps/remote.xml
--- xbmc-10.1-Dharma/system/keymaps/remote.xml 2011-03-08 02:49:23.000000000 +0100
+++ xbmc-10.1-Dharma.patch/system/keymaps/remote.xml 2011-06-18 01:48:26.887811969 +0200
@@ -63,6 +63,7 @@
<volumeminus>VolumeDown</volumeminus>
<mute>Mute</mute>
<power>XBMC.ShutDown()</power>
+ <eject>XBMC.EjectTray()</eject>
<myvideo>XBMC.ActivateWindow(MyVideos)</myvideo>
<mymusic>XBMC.ActivateWindow(MyMusic)</mymusic>
<mypictures>XBMC.ActivateWindow(MyPictures)</mypictures>

View File

@ -1,8 +1,8 @@
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
index 8735db8..8851279 100644
index d4892b5..697431c 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
@@ -918,6 +918,7 @@ bool CVDPAU::ConfigVDPAU(AVCodecContext* avctx, int ref_frames)
@@ -943,6 +943,7 @@ bool CVDPAU::ConfigVDPAU(AVCodecContext* avctx, int ref_frames)
outputSurface = outputSurfaces[surfaceNum];
vdpauConfigured = true;
@ -10,7 +10,7 @@ index 8735db8..8851279 100644
return true;
}
@@ -1175,10 +1176,16 @@ int CVDPAU::Decode(AVCodecContext *avctx, AVFrame *pFrame)
@@ -1203,8 +1204,14 @@ int CVDPAU::Decode(AVCodecContext *avctx, AVFrame *pFrame)
m_DVDVideoPics.pop();
}
@ -20,25 +20,21 @@ index 8735db8..8851279 100644
+ CLog::Log(LOGNOTICE, "CVDPAU::ConfigOutputMethod: detected interlaced frame");
+ }
+
if((method == VS_INTERLACEMETHOD_AUTO &&
- m_DVDVideoPics.front().iFlags & DVP_FLAG_INTERLACED)
+ m_binterlacedFrame)
|| (method == VS_INTERLACEMETHOD_AUTO_ION &&
- m_DVDVideoPics.front().iFlags & DVP_FLAG_INTERLACED)
+ m_binterlacedFrame)
|| method == VS_INTERLACEMETHOD_VDPAU_BOB
|| method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL
|| method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF
if (mode == VS_DEINTERLACEMODE_FORCE
- || (mode == VS_DEINTERLACEMODE_AUTO && m_DVDVideoPics.front().iFlags & DVP_FLAG_INTERLACED))
+ || (mode == VS_DEINTERLACEMODE_AUTO && m_binterlacedFrame))
{
if((method == VS_INTERLACEMETHOD_AUTO_ION
|| method == VS_INTERLACEMETHOD_VDPAU_BOB
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
index 6e8468b..92a05d1 100644
index 2056de1..fc1b9d0 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
@@ -209,7 +209,7 @@ public:
@@ -209,6 +209,7 @@ public:
uint32_t max_references;
Display* m_Display;
bool vdpauConfigured;
-
+ bool m_binterlacedFrame;
VdpVideoMixerPictureStructure m_mixerfield;
int m_mixerstep;

View File

@ -103,8 +103,8 @@
# use linux-next (latest rc) instead latest released version
LINUX_NEXT="no"
# Mediacenter to use (xbmc / xbmc-pvr / no)
MEDIACENTER="xbmc-pvr"
# Mediacenter to use (xbmc / no)
MEDIACENTER="xbmc"
# Skins to install (Confluence)
# Space separated list is supported,

View File

@ -103,8 +103,8 @@
# use linux-next (latest rc) instead latest released version
LINUX_NEXT="no"
# Mediacenter to use (xbmc / xbmc-pvr / no)
MEDIACENTER="xbmc-pvr"
# Mediacenter to use (xbmc / no)
MEDIACENTER="xbmc"
# Skins to install (Confluence)
# Space separated list is supported,

View File

@ -103,8 +103,8 @@
# use linux-next (latest rc) instead latest released version
LINUX_NEXT="no"
# Mediacenter to use (xbmc / xbmc-pvr / no)
MEDIACENTER="xbmc-pvr"
# Mediacenter to use (xbmc / no)
MEDIACENTER="xbmc"
# Skins to install (Confluence)
SKINS="Confluence"

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.program.repo.installer"
name="Repositories Installer"
version="1.0.3"
provider-name="Temhil and Frost (passion-xbmc.org)">
<requires>
<import addon="xbmc.python" version="1.0"/>
</requires>
<extension point="xbmc.python.pluginsource"
library="default.py">
<provides>executable</provides>
</extension>
<extension point="xbmc.addon.metadata">
<summary>Installer of Add-on Repositories for XBMC</summary>
<description>This Add-on allow to select (from XBMC Wiki) and install Repositories of XBMC Add-ons</description>
<platform>all</platform>
</extension>
</addon>

View File

@ -0,0 +1,17 @@
2011-03-21 Version 1.0.3 by Temhil
- Added Repository info window
- Set default title display option without description
2011-03-17 Version 1.0.2 by Temhil
- Added option to add or not description from title
- Added option for activating or not color of description (set it by default)
- Removed Bold Title
2011-03-15 - Version 1.0.1 by Temhil
- Added Icon (thank to Willynuisance)
- Added settings allowing to change color of description
2011-03-13 - Version 1.0.0 by Temhil and Frost
- Creation (installation part based on Frost work with script.addon.installer)

View File

@ -0,0 +1,376 @@
# -*- coding: cp1252 -*-
"""
Repository Installer Addon (plugin type) allowing to find and install addon repositories for XBMC
Changelog:
03-21-2011 Version 1.0.3 by Temhil
- Added Repository info window
- Set default title display option without description
03-17-2011 Version 1.0.2 by Temhil
- Added option to add or not description from title
- Added option for activating or not color of description (set it by default)
- Removed Bold Title
03-15-2011 Version 1.0.1 by Temhil
- Added Icon (thank to Willynuisance)
- Added settings allowing to change color of description
03-13-2011 Version 1.0.0 by Temhil and Frost
- Creation (installation part based on Frost work with script.addon.installer)
"""
REMOTE_DBG = False # For remote debugging with PyDev (Eclipse)
__script__ = "Unknown"
__plugin__ = "Repositories Installer"
__addonID__ = "plugin.program.repo.installer"
__author__ = "Temhil and Frost (http://passion-xbmc.org)"
__url__ = "http://passion-xbmc.org/index.php"
__svn_url__ = "http://passion-xbmc.googlecode.com/svn/trunk/addons/plugin.program.repository.installer/"
__credits__ = "Team XBMC Passion"
__platform__ = "xbmc media center"
__date__ = "03-21-2011"
__version__ = "1.0.3"
__svn_revision__ = 0
import os
import urllib
from traceback import print_exc
# xbmc modules
import xbmc
import xbmcplugin
import xbmcgui
import xbmcaddon
__addon__ = xbmcaddon.Addon( __addonID__ )
__settings__ = __addon__
__language__ = __addon__.getLocalizedString
__addonDir__ = __settings__.getAddonInfo( "path" )
# Remote debugger using Eclipse and Pydev
if REMOTE_DBG:
# Note pydevd module need to be copied in XBMC\system\python\Lib\pysrc
try:
import pysrc.pydevd as pydevd
pydevd.settrace('localhost', stdoutToServer=True, stderrToServer=True)
except ImportError:
sys.stderr.write("Error: " +
"You must add org.python.pydev.debug.pysrc to XBMC\system\python\Lib\pysrc")
sys.exit(1)
ROOTDIR = os.getcwd()
BASE_RESOURCE_PATH = os.path.join( ROOTDIR, "resources" )
MEDIA_PATH = os.path.join( BASE_RESOURCE_PATH, "media" )
ADDON_DATA = xbmc.translatePath( "special://profile/addon_data/%s/" % __addonID__ )
REPO_LIST_URL = "http://wiki.xbmc.org/index.php?title=Unofficial_Add-on_Repositories"
REPO_PACKAGE_DIR = "special://home/addons/packages/"
REPO_INSTALL_DIR = "special://home/addons/"
DIALOG_PROGRESS = xbmcgui.DialogProgress()
#modules custom
try:
import resources.lib.wikiparser as wikiparser
except:
print_exc()
class RepoInstallerPlugin:
"""
main plugin class
"""
# define param key names
PARAM_NAME = 'name'
PARAM_ACTION = 'action'
PARAM_URL = 'url'
VALUE_INSTALL_FROM_ZIP = 'installfromzip'
VALUE_INSTALL_FROM_REPO = 'installfromrepo'
VALUE_INSTALL_ALL = 'installfromzip'
VALUE_DISPLAY_INFO = 'displayinfo'
# Constant
colorList = ["red", "green", "yellow", "lightblue", None]
debugMode = False
shortTitleDisplay = False
def __init__( self, *args, **kwargs ):
# Parse plugin parameters
self.parameters = self._parse_params()
# Check settings
#if ( __settings__.getSetting('first_run') == 'true' ):
# #xbmcplugin.openSettings(sys.argv[0])
#else:
# self.select()
self._set_title_display()
self.select()
def create_root_dir ( self ):
print "createRootDir"
xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category=__language__( 30001 ) )
print "Loading wiki page: %s"%REPO_LIST_URL
wikiparser.getRepoList(REPO_LIST_URL, addItemFunc=self._addLink, progressBar=None, msgFunc=None )
self._add_sort_methods( True )
self._end_of_directory( True )
def install_repo(self, repoName, repoURL):
"""
Install a repository in XBMC
-> will need XBMC restart in order to have the new Repo taken in account by XBMC
"""
continueInstall = True
dialogYesNo = xbmcgui.Dialog()
if dialogYesNo.yesno(repoName, __language__( 30100 ), __language__( 30101 )):
if continueInstall:
ri = RepoInstaller()
newRepo = ri.download( repoURL )
print newRepo
if newRepo:
fp, ok = ri.install( newRepo )
print "---"
print fp, ok
xbmc.executebuiltin( 'XBMC.UpdateAddonRepos()' )
try:
_N_ = Addon( os.path.basename( fp ) )
print "Addon %s Installed"%s_N_
ri.notification( _N_.getAddonInfo( "name" ), __language__( 24065 ).encode( "utf-8" ), 5000, _N_.getAddonInfo( "icon" ) )
except:
xbmcgui.Dialog().ok( __settings__.getAddonInfo( "name" ), __language__( 30007 ) + " : " + repoName, __language__( 30010 ) )
self._end_of_directory( True, update=False )
def select( self ):
try:
print "select"
print self.parameters
if len(self.parameters) < 1:
self.create_root_dir()
elif self.PARAM_ACTION in self.parameters.keys():
if self.parameters[self.PARAM_ACTION] == self.VALUE_INSTALL_FROM_ZIP:
repoName = self.parameters[self.PARAM_NAME]
repoURL = self.parameters[self.PARAM_URL]
#print repoName
#print repoURL
#xbmc.executebuiltin('XBMC.ActivateWindow(146)')
#xbmc.executebuiltin( "Action(Info)")
self.install_repo(repoName, repoURL)
elif self.parameters[self.PARAM_ACTION] == self.VALUE_DISPLAY_INFO:
try:
from resources.lib.DialogRepoInfo import DialogRepoInfo
repoWindow = DialogRepoInfo( "DialogRepoInfo.xml", os.getcwd(), "Default", "720p" )
del repoWindow
except:
print_exc()
self._end_of_directory( False )
else:
self._end_of_directory( True, update=False )
except:
print_exc()
self._end_of_directory( False )
def _parse_params( self ):
"""
Parses Plugin parameters and returns it as a dictionary
"""
paramDic={}
# Parameters are on the 3rd arg passed to the script
paramStr=sys.argv[2]
print paramStr
if len(paramStr)>1:
paramStr = paramStr.replace('?','')
# Ignore last char if it is a '/'
if (paramStr[len(paramStr)-1]=='/'):
paramStr=paramStr[0:len(paramStr)-2]
# Processing each parameter splited on '&'
for param in paramStr.split("&"):
try:
# Splitting couple key/value
key,value=param.split("=")
except:
key=param
value=""
key = urllib.unquote_plus(key)
value = urllib.unquote_plus(value)
# Filling dictionary
paramDic[key]=value
print paramDic
return paramDic
def _create_param_url(self, paramsDic):
"""
Create an plugin URL based on the key/value passed in a dictionary
"""
url = sys.argv[ 0 ]
sep = '?'
print paramsDic
try:
for param in paramsDic:
#TODO: solve error on name with non ascii char (generate exception)
url = url + sep + urllib.quote_plus( param ) + '=' + urllib.quote_plus( paramsDic[param] )
sep = '&'
except:
url = None
print_exc()
return url
def _set_title_display(self):
descriptInTitle =__settings__.getSetting('desintitle')
if descriptInTitle == 'true':
self.shortTitleDisplay = False
else:
self.shortTitleDisplay = True
def _addLink( self, itemInfo ):
"""
Add a link to the list of items
"""
ok=True
print itemInfo
if itemInfo["ImageUrl"]:
icon = itemInfo["ImageUrl"]
else:
#icon = "DefaultFolder.png"
#icon = "DefaultAddon.png"
icon = os.path.join(MEDIA_PATH, "DefaultAddonRepository.png")
descriptColor = self.colorList[ int( __settings__.getSetting( "descolor" ) ) ]
if self.shortTitleDisplay:
labelTxt = itemInfo["name"]
else:
labelTxt = itemInfo["name"] + ": " + self._coloring( itemInfo["description"], descriptColor )
liz=xbmcgui.ListItem( label=labelTxt, iconImage=icon, thumbnailImage=icon )
liz.setInfo( type="addons",
infoLabels={ "title": itemInfo["name"], "Plot": itemInfo["description"] } )
liz.setProperty("Addon.Name",itemInfo["name"])
liz.setProperty("Addon.Version"," ")
liz.setProperty("Addon.Summary", "")
liz.setProperty("Addon.Description", itemInfo["description"])
liz.setProperty("Addon.Type", __language__( 30011 ))
liz.setProperty("Addon.Creator", itemInfo["owner"])
liz.setProperty("Addon.Disclaimer","")
liz.setProperty("Addon.Changelog", "")
liz.setProperty("Addon.ID", "")
liz.setProperty("Addon.Status", "Stable")
liz.setProperty("Addon.Broken", "Stable")
liz.setProperty("Addon.Path","")
liz.setProperty("Addon.Icon",icon)
#dirItem.addContextMenuItem( self.Addon.getLocalizedString( 30900 ), "XBMC.RunPlugin(%s?showtimes=%s)" % ( sys.argv[ 0 ], urllib.quote_plus( repr( video[ "title" ] ) ), ) )
paramsMenu = {}
paramsMenu[self.PARAM_NAME] = itemInfo["name"]
paramsMenu[self.PARAM_ACTION] = self.VALUE_DISPLAY_INFO
urlMenu = self._create_param_url( paramsMenu )
if urlMenu:
c_items = [ ( __language__( 30012 ), "XBMC.RunPlugin(%s)" % ( urlMenu)) ]
liz.addContextMenuItems( c_items )
params = {}
params[self.PARAM_NAME] = itemInfo["name"]
params[self.PARAM_ACTION] = self.VALUE_INSTALL_FROM_ZIP
params[self.PARAM_URL] = itemInfo["repoUrl"]
urlRepo = self._create_param_url( params )
if urlRepo:
ok=xbmcplugin.addDirectoryItem( handle=int(sys.argv[1]), url=urlRepo, listitem=liz, isFolder=False )
return ok
def _end_of_directory( self, OK, update=False ):
xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=OK, updateListing=update )#, cacheToDisc=True )#updateListing = True,
def _add_sort_methods( self, OK ):
if ( OK ):
try:
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_UNSORTED )
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_LABEL )
except:
print_exc()
def _coloring( self, text , color ):
if color:
if color == "red": color="FFFF0000"
if color == "green": color="FF00FF00"
if color == "yellow": color="FFFFFF00"
if color == "lightblue": color="FFB1C7EC"
colored_text = "[COLOR=%s]%s[/COLOR]" % ( color , text )
else:
colored_text = text
return colored_text
def _bold_text( self, text ):
""" FONCTION POUR METTRE UN MOT GRAS """
return "[B]%s[/B]" % ( text, )
class RepoInstaller:
"""
main plugin class
"""
def download( self, url, destination=REPO_PACKAGE_DIR ):
try:
DIALOG_PROGRESS.create( __settings__.getAddonInfo( "name" ) )
destination = xbmc.translatePath( destination ) + os.path.basename( url )
def _report_hook( count, blocksize, totalsize ):
percent = int( float( count * blocksize * 100 ) / totalsize )
DIALOG_PROGRESS.update( percent, __language__( 30005 ) % url, __language__( 30006 ) % destination )
fp, h = urllib.urlretrieve( url, destination, _report_hook )
print fp, h
return fp
except:
print_exc()
DIALOG_PROGRESS.close()
return ""
def install( self, filename ):
from resources.lib.extractor import extract
return extract( filename, xbmc.translatePath( REPO_INSTALL_DIR ) )
def notification( self, header="", message="", sleep=5000, icon=__settings__.getAddonInfo( "icon" ) ):
""" Will display a notification dialog with the specified header and message,
in addition you can set the length of time it displays in milliseconds and a icon image.
"""
xbmc.executebuiltin( "XBMC.Notification(%s,%s,%i,%s)" % ( header, message, sleep, icon ) )
#######################################################################################################################
# BEGIN !
#######################################################################################################################
if ( __name__ == "__main__" ):
try:
RepoInstallerPlugin()
except:
print_exc()

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -0,0 +1 @@
# Dummy file to make this directory a package.

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<!-- Les strings de 30000 à 30999 sont réservées aux paramètres plug-in -->
<!--GENERAL STRINGS -->
<string id="30000">Repositories Installer</string>
<string id="30001">Add-ons Repositories</string>
<string id="30005">Downloading: %s </string>
<string id="30006">to: %s</string>
<string id="30007">Repository Installed</string>
<string id="30010">XBMC requires to restart!</string>
<string id="30011">Repository</string>
<string id="30012">Repository Info</string>
<!--CONTEXT MENU STRINGS -->
<!--DIALOG STRINGS -->
<string id="30100">Are you sure you want to Install this repository?</string>
<string id="30101">This will overwrite any repository with the same name</string>
<string id="30110">This repository is already installed</string>
<string id="30111">Do you want to continue and overwrite the existing repository?</string>
<string id="30200">Error!</string>
<string id="30201">Error during %s repository install</string>
<string id="30202">Please check the logs</string>
<!--SETTINGS STRINGS -->
<string id="30500">Appearance</string>
<string id="30501">Text color of description:</string>
<string id="30520">Red</string>
<string id="30521">Green</string>
<string id="30522">Yellow</string>
<string id="30523">Light Blue</string>
<string id="30524">None</string>
<string id="30530">Display description with title</string>
</strings>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<!-- Les strings de 30000 à 30999 sont réservées aux paramètres plug-in -->
<!--GENERAL STRINGS -->
<string id="30000">Repositories Installer</string>
<string id="30001">Repositories d'Add-ons </string>
<string id="30005">Téléchargement: %s </string>
<string id="30006">vers: %s</string>
<string id="30007">Repository Installé</string>
<string id="30010">XBMC doit redémarrer!</string>
<string id="30011">Repository</string>
<string id="30012">Infos Repository</string>
<!--CONTEXT MENU STRINGS -->
<!--DIALOG STRINGS -->
<string id="30100">Etes vous sure de vouloir installer ce repository?</string>
<string id="30101">Cela écrasera tout repository du meme nom</string>
<string id="30110">CE repository est déja installé</string>
<string id="30111">Voulez-vous continuer et écraser le repository existant?</string>
<string id="30200">Erreur!</string>
<string id="30201">Erreur durant l'installation du repository %s</string>
<string id="30202">Veuillez vérifier les logs</string>
<!--SETTINGS STRINGS -->
<string id="30500">Apparence</string>
<string id="30501">Couleur du texte de description:</string>
<string id="30520">Rouge</string>
<string id="30521">Vert</string>
<string id="30522">Jaune</string>
<string id="30523">Bleu Ciel</string>
<string id="30524">Aucune</string>
<string id="30530">Afficher la description avec le titre</string>
</strings>

View File

@ -0,0 +1,121 @@
import os
from traceback import print_exc
import xbmc
import xbmcgui
from xbmcaddon import Addon
############################################################################
#get actioncodes from keymap.xml
############################################################################
#ACTION_MOVE_LEFT = 1
#ACTION_MOVE_RIGHT = 2
#ACTION_MOVE_UP = 3
#ACTION_MOVE_DOWN = 4
#ACTION_PAGE_UP = 5
#ACTION_PAGE_DOWN = 6
#ACTION_SELECT_ITEM = 7
#ACTION_HIGHLIGHT_ITEM = 8
ACTION_PARENT_DIR = 9
ACTION_PREVIOUS_MENU = 10
#ACTION_SHOW_INFO = 11
#ACTION_PAUSE = 12
#ACTION_STOP = 13
#ACTION_NEXT_ITEM = 14
#ACTION_PREV_ITEM = 15
#ACTION_MUSIC_PLAY = 79
#ACTION_MOUSE_CLICK = 100
ACTION_CONTEXT_MENU = 117
#__settings__ = Addon( "repository.xbmc.builds" )
#__addonDir__ = __settings__.getAddonInfo( "path" )
#PROFILE_PATH = xbmc.translatePath( __settings__.getAddonInfo( "profile" ) )
#DL_INFO_PATH = os.path.join( PROFILE_PATH, "iddl_data" )
class DialogRepoInfo( xbmcgui.WindowXMLDialog ):
Addon = Addon( id=os.path.basename( os.getcwd() ) )
ACTION_CLOSE_DIALOG_LIST = [ ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU, ACTION_CONTEXT_MENU ]
def __init__( self, *args, **kwargs ):
print "Creating DialogRepoInfo"
xbmcgui.WindowXMLDialog.__init__( self, *args, **kwargs )
# Get information about the repository
self._get_repo_info()
# show dialog
self.doModal()
def onInit( self ):
# Show repo info
self._show_repo_info()
def onFocus( self, controlID ):
pass
def onClick( self, controlID ):
try:
kill = None
if controlID == 199:
self._close_dialog()
# elif controlID == 99:
# pass
except:
print_exc()
def onAction( self, action ):
if action in self.ACTION_CLOSE_DIALOG_LIST:
self._close_dialog()
def _get_repo_info( self ):
# initialize our dictionary
print "_get_repo_info"
self.repo = {}
self.repo[ "Name" ] = unicode( xbmc.getInfoLabel( "ListItem.Property(Addon.Name)" ), "utf-8" )
self.repo[ "Description" ] = unicode( xbmc.getInfoLabel( "ListItem.Property(Addon.Description)" ), "utf-8" )
self.repo[ "Icon" ] = xbmc.getInfoLabel( "ListItem.Property(Addon.Icon)" )
self.repo[ "Type" ] = unicode( xbmc.getInfoLabel( "ListItem.Property(Addon.Type)" ), "utf-8" )
self.repo[ "Creator" ] = unicode( xbmc.getInfoLabel( "ListItem.Property(Addon.Creator)" ), "utf-8" )
#self.repo[ "Version" ] = unicode( xbmc.getInfoLabel( "ListItem.Property(Addon.Version)" ), "utf-8" )
self.repo[ "Version" ] = None
print self.repo[ "Name" ]
print self.repo
def _show_repo_info( self ):
# set initial apple trailer info
self._set_repo_info( name=self.repo[ "Name" ],
description=self.repo[ "Description" ],
creator=self.repo[ "Creator" ],
type=self.repo[ "Type" ],
version=self.repo[ "Version" ],
icon=self.repo[ "Icon" ],
)
def _set_repo_info( self, name="", description="", creator="", type="", version="", icon="" ):
# grab the window
wId = xbmcgui.Window( xbmcgui.getCurrentWindowDialogId() )
# set our info
wId.setProperty( "Name", name )
wId.setProperty( "Description", description )
wId.setProperty( "Creator", creator )
wId.setProperty( "Type", type )
if version:
wId.setProperty( "Version", version )
wId.setProperty( "Icon", icon )
def _close_dialog( self ):
self.close()
if ( __name__ == "__main__" ):
s = DialogRepoInfo( "DialogRepoInfo.xml", os.path.dirname( os.path.dirname( os.getcwd() ) ), "Default", "720p")
del s
#if ( __name__ == "__main__" ):
# DialogDownloadProgress( "DialogRepoInfo.xml", __addonDir__ )

View File

@ -0,0 +1 @@
# Dummy file to make this directory a package.

View File

@ -0,0 +1,242 @@
"""
extractor for zip and rar file and a future support file 7-zip.
frost
"""
# Modules general
import os
import sys
from tarfile import is_tarfile
from zipfile import is_zipfile
from traceback import print_exc
# Modules XBMC
from xbmcgui import DialogProgress
from xbmc import executebuiltin, sleep
# Modules Custom
import shutil2
DIALOG_PROGRESS = DialogProgress()
try:
#FONCTION POUR RECUPERER LES LABELS DE LA LANGUE.
_ = sys.modules[ "__main__" ].__language__
except:
lang = { 110: "Please wait...", 187: "UnRar: %i of %i items", 188: "UnZip: %i of %i items" }
def _( id ): return lang[ id ]
def is_rarfile( filename ):
RAR_ID = "Rar!\x1a\x07\x00"
buf = open( filename, "rb" ).read( len( RAR_ID ) )
return buf == RAR_ID
def get_time_sleep( filename ):
# faut vraiment laisser xbmc le temps d'extraire l'archive environ 1 seconde pour 1 mo
# plus l'archive est grosse plus cela va etre long
try:
slp = int( os.path.getsize( filename ) / 1000 )
except:
print_exc()
slp = 0
if slp < 1000: slp = 1000
return slp
def unrar( filename, destination=None, report=False ):
from rarfile import RarFile
base_dir = ""
if destination is None:
destination = os.path.dirname( filename )
try:
rar = RarFile( filename, "r" )
namelist = rar.namelist()
total_items = len( namelist ) or 1
diff = 100.0 / total_items
percent = 0
# nom du dossier racine
root_dir = namelist[ -1 ]
is_root_dir = True
# si root_dir n'est pas un dossier ou n'est pas la racine, on se base sur le nom de l'archive
#print root_dir
if not rar.getinfo( root_dir ).isdir():
is_root_dir = False
else:
for i in namelist:
#print root_dir in i, i
if not root_dir in i:
is_root_dir = False
break
if not is_root_dir:#rar.getinfo( root_dir ).isdir():
root_dir = os.path.basename( os.path.splitext( filename )[ 0 ] )
base_dir = os.path.join( destination, root_dir )
if os.path.isdir( base_dir ):
shutil2.rmtree( base_dir )
os.makedirs( base_dir )
time_sleep = get_time_sleep( filename )
# avec cette methode on extract dans le dossier ou est l'archive
ok = executebuiltin( 'XBMC.Extract(%s)' % ( filename, ) )
#sleep une seconde ou plus selon la drosseur du fichier le temps que le builtin est fini car l'action suivante
# "os.listdir" est excecuter avant la fin du builtin
sleep( time_sleep )
# si le dossier base_dir est vide on move les items de namelist dedans
if not os.listdir( base_dir ):
for item in namelist:
src = os.path.normpath( os.path.join( os.path.dirname( filename ), item ) )
dst = os.path.normpath( os.path.join( base_dir, item ) )
if not rar.getinfo( item ).isdir():
if not os.path.isdir( os.path.dirname( dst ) ):
os.makedirs( os.path.dirname( dst ) )
shutil2.move( src, dst, overwrite=True )
elif os.path.exists( src ) and not os.listdir( src ):
shutil2.rmtree( src )
#maintenant on verifier l'extraction d'xbmc avec la liste de la lib rarfile
if os.path.isdir( base_dir ):
size = 0
list_size = 0
if not root_dir in namelist:
list_size -= 1
namelist = [ os.path.split( item )[ 1 ] for item in namelist ]
for root, dirs, files in os.walk( base_dir, topdown=False ):
percent += diff
list_size += 1
for file in files:
percent += diff
list_size += 1
if report:
if DIALOG_PROGRESS.iscanceled():
break
DIALOG_PROGRESS.update( int( percent ), _( 187 ) % ( list_size, total_items ), file, _( 110 ) )
#print round( percent, 2 ), file
if file in namelist:
size += os.path.getsize( os.path.join( root, file ) )
else:
print "Error %s est dans la liste de depart!" % file
#print size
if not size:
print "Error for extracting rar: %s" % filename
rar.close()
del rar
# si list_size est pas declarer une erreur automatique est creer ;)
return base_dir, list_size == total_items
except:
print_exc()
return "", False
def unzip( filename, destination=None, report=False ):
from zipfile import ZipFile
base_dir = ""
if destination is None:
destination = os.path.dirname( filename ) #=> extraction in current directory
try:
zip = ZipFile( filename, "r" )
namelist = zip.namelist()
total_items = len( namelist ) or 1
diff = 100.0 / total_items
percent = 0
# nom du dossier racine
root_dir = namelist[ 0 ]
is_root_dir = True
# si root_dir n'est pas un dossier ou n'est pas la racine, on se base sur le nom de l'archive
#print root_dir
if not root_dir.endswith( "/" ) and ( zip.getinfo( root_dir ).file_size > 0 ):
is_root_dir = False
else:
for i in namelist:
#print root_dir in i, i
if not root_dir in i:
is_root_dir = False
break
base_dir = os.path.join( destination, root_dir.rstrip( "/" ) )
if not is_root_dir:#root_dir.endswith( "/" ) and ( zip.getinfo( root_dir ).file_size > 0 ):
root_dir = os.path.basename( os.path.splitext( filename )[ 0 ] )
destination = os.path.join( destination, root_dir )
base_dir = destination
if os.path.isdir( base_dir ):
shutil2.rmtree( base_dir )
os.makedirs( base_dir )
for count, item in enumerate( namelist ):
percent += diff
if report:
if DIALOG_PROGRESS.iscanceled():
break
DIALOG_PROGRESS.update( int( percent ), _( 188 ) % ( count + 1, total_items ), item, _( 110 ) )
#print round( percent, 2 ), item
if not item.endswith( "/" ):
root, name = os.path.split( item )
directory = os.path.normpath( os.path.join( destination, root ) )
if not os.path.isdir( directory ): os.makedirs( directory )
file( os.path.join( directory, name ), "wb" ).write( zip.read( item ) )
zip.close()
del zip
return base_dir, True
except:
print_exc()
return "", False
def extract_tarfile( filename, destination=None ):
import tarfile
base_dir = ""
try:
# is_tarfile, Return True if name is a tar archive file, that the tarfile module can read.
if tarfile.is_tarfile( filename ):
# if not destination, set destination to current filename
if destination is None:
destination = os.path.dirname( filename )
# open tarfile
tar = tarfile.open( filename )#, 'r:gz' )
# extractall, New in version 2.5 or greater
if hasattr( tar, 'extractall' ):
tar.extractall( destination )
else:
# if not extractall use standard extract
[ tar.extract( tarinfo , destination ) for tarinfo in tar ]
root_dir = tar.getnames()[ 0 ].strip( "/" )
base_dir = os.path.join( destination, root_dir )
# close tarfile
tar.close()
return base_dir, True
except:
print_exc()
return "", False
def filetype( filename ):
try:
#Check quickly whether file is rar archive.
if is_rarfile( filename ): return "is_rar"
#Quickly see if file is a ZIP file by checking the magic number.
if is_zipfile( filename ): return "is_zip"
#Return True if name points to a tar archive that we are able to handle, else return False.
if is_tarfile( filename ): return "is_tar"
except:
print_exc()
return "Inconnue"
def extract( filename, destination=None, report=False ):
type = filetype( filename )
if type == "is_zip":
return unzip( filename, destination, report )
elif type == "is_rar":
return unrar( filename, destination, report )
elif type == "is_tar":
return extract_tarfile( filename, destination )
#elif type == "is_7z":
# # test for future support 7-zip archive, not supported for a moment
# # mais il semblerais que le librairie "pylzma" marche bien, http://www.joachim-bauch.de/projects/python/pylzma/
# # reste a compiler cette lib pour xbmc linux, win32/xbox et osx semble pas etre supporter
# # Note faut compiler cette lib avec python 2.4, sinon elle sera pas compatible avec xbmc, pas certain a 100 pour 100.
# #ok = executebuiltin( 'XBMC.Extract(%s)' % ( filename, ) )
# print "L'archive '%s' n'est pas pris en charge..." % os.path.basename( filename )
else:
print "L'archive '%s' n'est pas pris en charge..." % os.path.basename( filename )
return "", False

View File

@ -0,0 +1,488 @@
# rarfile.py, http://grue.l-t.ee/~marko/src/rarfile/
#
# Copyright (c) 2005 Marko Kreen <marko@l-t.ee>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
import os, re
from struct import pack, unpack
from binascii import crc32
from cStringIO import StringIO
# whether to speed up decompression by using tmp archive
_use_extract_hack = 1
# command line to use for extracting
_extract_cmd = 'unrar p -inul "%s" "%s"'
#
# rar constants
#
RAR_ID = "Rar!\x1a\x07\x00"
# block types
RAR_BLOCK_MARK = 0x72 # r
RAR_BLOCK_MAIN = 0x73 # s
RAR_BLOCK_FILE = 0x74 # t
RAR_BLOCK_OLD_COMMENT = 0x75 # u
RAR_BLOCK_OLD_EXTRA = 0x76 # v
RAR_BLOCK_OLD_SUB = 0x77 # w
RAR_BLOCK_OLD_RECOVERY = 0x78 # x
RAR_BLOCK_OLD_AUTH = 0x79 # y
RAR_BLOCK_SUB = 0x7a # z
RAR_BLOCK_ENDARC = 0x7b # {
# main header flags
RAR_MAIN_VOLUME = 0x0001
RAR_MAIN_COMMENT = 0x0002
RAR_MAIN_LOCK = 0x0004
RAR_MAIN_SOLID = 0x0008
RAR_MAIN_NEWNUMBERING = 0x0010
RAR_MAIN_AUTH = 0x0020
RAR_MAIN_RECOVERY = 0x0040
RAR_MAIN_PASSWORD = 0x0080
RAR_MAIN_FIRSTVOLUME = 0x0100
# file header flags
RAR_FILE_SPLIT_BEFORE = 0x0001
RAR_FILE_SPLIT_AFTER = 0x0002
RAR_FILE_PASSWORD = 0x0004
RAR_FILE_COMMENT = 0x0008
RAR_FILE_SOLID = 0x0010
RAR_FILE_DICTMASK = 0x00e0
RAR_FILE_DICT64 = 0x0000
RAR_FILE_DICT128 = 0x0020
RAR_FILE_DICT256 = 0x0040
RAR_FILE_DICT512 = 0x0060
RAR_FILE_DICT1024 = 0x0080
RAR_FILE_DICT2048 = 0x00a0
RAR_FILE_DICT4096 = 0x00c0
RAR_FILE_DIRECTORY = 0x00e0
RAR_FILE_LARGE = 0x0100
RAR_FILE_UNICODE = 0x0200
RAR_FILE_SALT = 0x0400
RAR_FILE_VERSION = 0x0800
RAR_FILE_EXTTIME = 0x1000
RAR_FILE_EXTFLAGS = 0x2000
RAR_ENDARC_NEXT_VOLUME = 0x0001
RAR_ENDARC_DATACRC = 0x0002
RAR_ENDARC_REVSPACE = 0x0004
# flags common to all blocks
RAR_SKIP_IF_UNKNOWN = 0x4000
RAR_LONG_BLOCK = 0x8000
# Host OS types
RAR_OS_MSDOS = 0
RAR_OS_OS2 = 1
RAR_OS_WIN32 = 2
RAR_OS_UNIX = 3
#
# Public interface
#
def is_rarfile(fn):
'''Check quickly whether file is rar archive.'''
buf = open(fn, "rb").read(len(RAR_ID))
return buf == RAR_ID
class RarInfo:
'''An entry in rar archive.'''
def isdir(self):
'''Returns True if the entry is a directory.'''
if self.type == RAR_BLOCK_FILE:
return (self.flags & RAR_FILE_DIRECTORY) == RAR_FILE_DIRECTORY
return False
class RarFile:
'''Rar archive handling.'''
def __init__(self, rarfile, mode="r", charset=None, info_callback=None):
self.rarfile = rarfile
self.charset = charset
self.info_list = []
self.is_solid = 0
self.uses_newnumbering = 0
self.uses_volumes = 0
self.info_callback = info_callback
self.got_mainhdr = 0
self._gen_volname = self._gen_oldvol
if mode != "r":
raise Exception("Only mode=r supported")
self._parse()
def namelist(self):
'''Return list of filenames in rar'''
res = []
for f in self.info_list:
res.append(f.filename)
return res
def infolist(self):
'''Return rar entries.'''
return self.info_list
def getinfo(self, fname):
'''Return RarInfo for fname.'''
fx = fname.replace("/", "\\")
for f in self.info_list:
if fname == f.filename or fx == f.filename:
return f
def read(self, fname):
'''Return decompressed data.'''
inf = self.getinfo(fname)
if not inf:
raise Exception("No such file")
if inf.isdir():
raise Exception("No data in directory")
if inf.compress_type == 0x30:
res = self._extract_clear(inf)
elif _use_extract_hack and not self.is_solid and not self.uses_volumes:
res = self._extract_hack(inf)
else:
res = self._extract_unrar(self.rarfile, inf)
return res
def close(self):
pass
def printdir(self):
for f in self.info_list:
print f.filename
# store entry
def _process_entry(self, item):
# RAR_BLOCK_NEWSUB has files too: CMT, RR
if item.type == RAR_BLOCK_FILE:
# use only first part
if (item.flags & RAR_FILE_SPLIT_BEFORE) == 0:
self.info_list.append(item)
if self.info_callback:
self.info_callback(item)
# read rar
def _parse(self):
fd = open(self.rarfile, "rb")
id = fd.read(len(RAR_ID))
if id != RAR_ID:
raise Exception("Not a Rar")
volume = 0 # first vol (.rar) is 0
more_vols = 0
while 1:
h = self._parse_header(fd)
if not h:
if more_vols:
volume += 1
fd = open(self._gen_volname(volume), "rb")
more_vols = 0
if fd:
continue
break
h.volume = volume
if h.type == RAR_BLOCK_MAIN and not self.got_mainhdr:
if h.flags & RAR_MAIN_NEWNUMBERING:
self.uses_newnumbering = 1
self._gen_volname = self._gen_newvol
self.uses_volumes = h.flags & RAR_MAIN_VOLUME
self.is_solid = h.flags & RAR_MAIN_SOLID
self.got_mainhdr = 1
elif h.type == RAR_BLOCK_ENDARC:
more_vols = h.flags & RAR_ENDARC_NEXT_VOLUME
# store it
self._process_entry(h)
# skip data
if h.add_size > 0:
fd.seek(h.add_size, 1)
def _parse_header(self, fd):
h = self._parse_block_header(fd)
if h and (h.type == RAR_BLOCK_FILE or h.type == RAR_BLOCK_SUB):
self._parse_file_header(h)
return h
# common header
def _parse_block_header(self, fd):
HDRLEN = 7
h = RarInfo()
h.header_offset = fd.tell()
buf = fd.read(HDRLEN)
if not buf:
return None
t = unpack("<HBHH", buf)
h.header_crc, h.type, h.flags, h.header_size = t
h.header_unknown = h.header_size - HDRLEN
if h.header_size > HDRLEN:
h.data = fd.read(h.header_size - HDRLEN)
else:
h.data = ""
h.file_offset = fd.tell()
if h.flags & RAR_LONG_BLOCK:
h.add_size = unpack("<L", h.data[:4])[0]
else:
h.add_size = 0
# no crc check on that
if h.type == RAR_BLOCK_MARK:
return h
# check crc
if h.type == RAR_BLOCK_MAIN:
crcdat = buf[2:] + h.data[:6]
elif h.type == RAR_BLOCK_OLD_AUTH:
crcdat = buf[2:] + h.data[:8]
else:
crcdat = buf[2:] + h.data
calc_crc = crc32(crcdat) & 0xFFFF
# return good header
if h.header_crc == calc_crc:
return h
# crc failed
print "CRC mismatch! ofs =", h.header_offset
# instead panicing, send eof
return None
# read file-specific header
def _parse_file_header(self, h):
HDRLEN = 4+4+1+4+4+1+1+2+4
fld = unpack("<LLBLLBBHL", h.data[ : HDRLEN])
h.compress_size = long(fld[0]) & 0xFFFFFFFFL
h.file_size = long(fld[1]) & 0xFFFFFFFFL
h.host_os = fld[2]
h.CRC = fld[3]
h.date_time = self._parse_dos_time(fld[4])
h.extract_version = fld[5]
h.compress_type = fld[6]
h.name_size = fld[7]
h.mode = fld[8]
pos = HDRLEN
if h.flags & RAR_FILE_LARGE:
h1, h2 = unpack("<LL", h.data[pos:pos+8])
h.compress_size |= long(h1) << 32
h.file_size |= long(h2) << 32
pos += 8
name = h.data[pos : pos + h.name_size ]
pos += h.name_size
if h.flags & RAR_FILE_UNICODE:
nul = name.find("\0")
h.filename = name[:nul]
u = _UnicodeFilename(h.filename, name[nul + 1 : ])
h.unicode_filename = u.decode()
else:
h.filename = name
h.unicode_filename = None
if self.charset:
h.unicode_filename = name.decode(self.charset)
else:
# just guessing...
h.unicode_filename = name.decode("iso-8859-1", "replace")
if h.flags & RAR_FILE_SALT:
h.salt = h.data[pos : pos + 8]
pos += 8
else:
h.salt = None
# unknown contents
if h.flags & RAR_FILE_EXTTIME:
h.ext_time = h.data[pos : ]
else:
h.ext_time = None
h.header_unknown -= pos
return h
def _parse_dos_time(self, stamp):
sec = stamp & 0x1F; stamp = stamp >> 5
min = stamp & 0x3F; stamp = stamp >> 6
hr = stamp & 0x1F; stamp = stamp >> 5
day = stamp & 0x1F; stamp = stamp >> 5
mon = stamp & 0x0F; stamp = stamp >> 4
yr = (stamp & 0x7F) + 1980
return (yr, mon, day, hr, min, sec)
# new-style volume name
def _gen_newvol(self, volume):
# allow % in filenames
fn = self.rarfile.replace("%", "%%")
m = re.search(r"([0-9][0-9]*)[^0-9]*$", fn)
if not m:
raise Exception("Cannot construct volume name")
n1 = m.start(1)
n2 = m.end(1)
fmt = "%%0%dd" % (n2 - n1)
volfmt = fn[:n1] + fmt + fn[n2:]
return volfmt % (volume + 1)
# old-style volume naming
def _gen_oldvol(self, volume):
if volume == 0: return self.rarfile
i = self.rarfile.rfind(".")
base = self.rarfile[:i]
if volume <= 100:
ext = ".r%02d" % (volume - 1)
else:
ext = ".s%02d" % (volume - 101)
return base + ext
# read uncompressed file
def _extract_clear(self, inf):
volume = inf.volume
buf = ""
cur = None
while 1:
f = open(self._gen_volname(volume), "rb")
if not cur:
f.seek(inf.header_offset)
while 1:
cur = self._parse_header(f)
if cur.type in (RAR_BLOCK_MARK, RAR_BLOCK_MAIN):
if cur.add_size:
f.seek(cur.add_size, 1)
continue
if cur.filename == inf.filename:
buf += f.read(cur.add_size)
break
raise RuntimeException("file not found?")
# no more parts?
if (cur.flags & RAR_FILE_SPLIT_AFTER) == 0:
break
volume += 1
return buf
# put file compressed data into temporary .rar archive, and run
# unrar on that, thus avoiding unrar going over whole archive
def _extract_hack(self, inf):
BSIZE = 32*1024
size = inf.compress_size + inf.header_size
rf = open(self.rarfile, "rb")
rf.seek(inf.header_offset)
tmpname = os.tempnam() + ".rar"
tmpf = open(tmpname, "wb")
# create main header: crc, type, flags, size, res1, res2
mh = pack("<HBHHHL", 0x90CF, 0x73, 0, 13, 0, 0)
tmpf.write(RAR_ID + mh)
while size > 0:
if size > BSIZE:
buf = rf.read(BSIZE)
else:
buf = rf.read(size)
tmpf.write(buf)
size -= len(buf)
tmpf.close()
buf = self._extract_unrar(tmpname, inf)
os.unlink(tmpname)
return buf
# extract using unrar
def _extract_unrar(self, rarfile, inf):
fn = inf.filename
# linux unrar wants '/', not '\'
fn = fn.replace("\\", "/")
# shell escapes
fn = fn.replace("`", "\\`")
fn = fn.replace('"', '\\"')
fn = fn.replace("$", "\\$")
cmd = _extract_cmd % (rarfile, fn)
fd = os.popen(cmd, "r")
buf = fd.read()
err = fd.close()
if err > 0:
raise Exception("Error reading file")
return buf
class _UnicodeFilename:
def __init__(self, name, encdata):
self.std_name = name
self.encdata = encdata
self.pos = self.encpos = 0
self.buf = StringIO()
def enc_byte(self):
c = self.encdata[self.encpos]
self.encpos += 1
return ord(c)
def std_byte(self):
return ord(self.std_name[self.pos])
def put(self, lo, hi):
self.buf.write(chr(lo) + chr(hi))
self.pos += 1
def decode(self):
hi = self.enc_byte()
flagbits = 0
while self.encpos < len(self.encdata):
if flagbits == 0:
flags = self.enc_byte()
flagbits = 8
flagbits -= 2
t = (flags >> flagbits) & 3
if t == 0:
self.put(self.enc_byte(), 0)
elif t == 1:
self.put(self.enc_byte(), hi)
elif t == 2:
self.put(self.enc_byte(), self.enc_byte())
else:
n = self.enc_byte()
if n & 0x80:
c = self.enc_byte()
for i in range((n & 0x7f) + 2):
lo = (self.std_byte() + c) & 0xFF
self.put(lo, hi)
else:
for i in range(n + 2):
self.put(self.std_byte(), 0)
return self.buf.getvalue().decode("utf-16le", "replace")
# ignore os.tempnam() warning
try:
import warnings
warnings.filterwarnings(action = 'ignore', category = RuntimeWarning,
module = 'rarfile')
except Exception, det:
pass

View File

@ -0,0 +1,305 @@
"""Utility functions for copying files and directory trees.
XXX The functions here don't copy the resource fork or other metadata on Mac.
shutil2 (22/12/08)
by Frost and Temhil
Version unofficial of shutil, shutil2 is based on current SVN revision 65644.
This version includes 'overwrite' file and 'reportcopy' during process
"""
import os
import sys
import stat
from os.path import abspath
import fnmatch
__all__ = ["copyfileobj","copyfile","copymode","copystat","copy","copy2",
"copytree","move","rmtree","Error"]
class Error(EnvironmentError):
pass
try:
WindowsError
except NameError:
WindowsError = None
# exception raised when copied size does not match content-length
class ContentTooShortError(IOError):
def __init__(self, message, content):
IOError.__init__(self, message)
self.content = content
def copyfileobj(fsrc, fdst, reportcopy=None, size=1, length=16*1024):
"""copy data from file-like object fsrc to file-like object fdst"""
result = "", str(size)
read = 0
blocknum = 0
if reportcopy:
reportcopy(blocknum, length, size)
while 1:
buf = fsrc.read(length)
if not buf:
break
read += len(buf)
fdst.write(buf)
blocknum += 1
if reportcopy:
reportcopy(blocknum, length, size)
# raise exception if actual size does not match
if size >= 0 and read < size:
raise ContentTooShortError("copying incomplete: got only %i out "
"of %i bytes" % (read, size), result)
def _samefile(src, dst):
# Macintosh, Unix.
if hasattr(os.path,'samefile'):
try:
return os.path.samefile(src, dst)
except OSError:
return False
# All other platforms: check for same pathname.
return (os.path.normcase(os.path.abspath(src)) ==
os.path.normcase(os.path.abspath(dst)))
def copyfile(src, dst, reportcopy=None, overwrite=False):
"""Copy data from src to dst"""
if _samefile(src, dst):
raise Error, "`%s` and `%s` are the same file" % (src, dst)
fsrc = None
fdst = None
try:
fsrc = open(src, 'rb')
if os.path.exists(dst) and overwrite:
os.remove(dst)
fdst = open(dst, 'wb')
try: size = os.stat(src)[6]/1024.0
except: size = 1
copyfileobj(fsrc, fdst, reportcopy, size)
finally:
if fdst:
fdst.close()
if fsrc:
fsrc.close()
def copymode(src, dst):
"""Copy mode bits from src to dst"""
if hasattr(os, 'chmod'):
st = os.stat(src)
mode = stat.S_IMODE(st.st_mode)
os.chmod(dst, mode)
def copystat(src, dst):
"""Copy all stat info (mode bits, atime, mtime, flags) from src to dst"""
st = os.stat(src)
mode = stat.S_IMODE(st.st_mode)
if hasattr(os, 'utime'):
os.utime(dst, (st.st_atime, st.st_mtime))
if hasattr(os, 'chmod'):
os.chmod(dst, mode)
if hasattr(os, 'chflags') and hasattr(st, 'st_flags'):
os.chflags(dst, st.st_flags)
def copy(src, dst, reportcopy=None, overwrite=False):
"""Copy data and mode bits ("cp src dst").
The destination may be a directory.
"""
if os.path.isdir(dst):
dst = os.path.join(dst, os.path.basename(src))
copyfile(src, dst, reportcopy, overwrite)
copymode(src, dst)
def copy2(src, dst, reportcopy=None, overwrite=False):
"""Copy data and all stat info ("cp -p src dst").
The destination may be a directory.
"""
if os.path.isdir(dst):
dst = os.path.join(dst, os.path.basename(src))
copyfile(src, dst, reportcopy, overwrite)
copystat(src, dst)
def ignore_patterns(*patterns):
"""Function that can be used as copytree() ignore parameter.
Patterns is a sequence of glob-style patterns
that are used to exclude files"""
def _ignore_patterns(path, names):
ignored_names = []
for pattern in patterns:
ignored_names.extend(fnmatch.filter(names, pattern))
return set(ignored_names)
return _ignore_patterns
def copytree(src, dst, symlinks=False, ignore=None, reportcopy=None, overwrite=False):
"""Recursively copy a directory tree using copy2().
The destination directory must not already exist.
If exception(s) occur, an Error is raised with a list of reasons.
If the optional symlinks flag is true, symbolic links in the
source tree result in symbolic links in the destination tree; if
it is false, the contents of the files pointed to by symbolic
links are copied.
The optional ignore argument is a callable. If given, it
is called with the `src` parameter, which is the directory
being visited by copytree(), and `names` which is the list of
`src` contents, as returned by os.listdir():
callable(src, names) -> ignored_names
Since copytree() is called recursively, the callable will be
called once for each directory that is copied. It returns a
list of names relative to the `src` directory that should
not be copied.
XXX Consider this example code rather than the ultimate tool.
"""
names = os.listdir(src)
if ignore is not None:
ignored_names = ignore(src, names)
else:
ignored_names = set()
if not os.path.exists(dst) or not overwrite:
os.makedirs(dst)
errors = []
for name in names:
if name in ignored_names:
continue
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
if symlinks and os.path.islink(srcname):
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
elif os.path.isdir(srcname):
copytree(srcname, dstname, symlinks, ignore, reportcopy, overwrite)
else:
copy2(srcname, dstname, reportcopy, overwrite)
# XXX What about devices, sockets etc.?
except (IOError, os.error), why:
errors.append((srcname, dstname, str(why)))
# catch the Error from the recursive copytree so that we can
# continue with other files
except Error, err:
errors.extend(err.args[0])
try:
copystat(src, dst)
except OSError, why:
if WindowsError is not None and isinstance(why, WindowsError):
# Copying file access times may fail on Windows
pass
elif overwrite:
pass
else:
errors.extend((src, dst, str(why)))
if errors:
raise Error, errors
def rmtree(path, ignore_errors=False, onerror=None):
"""Recursively delete a directory tree.
If ignore_errors is set, errors are ignored; otherwise, if onerror
is set, it is called to handle the error with arguments (func,
path, exc_info) where func is os.listdir, os.remove, or os.rmdir;
path is the argument to that function that caused it to fail; and
exc_info is a tuple returned by sys.exc_info(). If ignore_errors
is false and onerror is None, an exception is raised.
"""
if ignore_errors:
def onerror(*args):
pass
elif onerror is None:
def onerror(*args):
raise
try:
if os.path.islink(path):
# symlinks to directories are forbidden, see bug #1669
raise OSError("Cannot call rmtree on a symbolic link")
except OSError:
onerror(os.path.islink, path, sys.exc_info())
# can't continue even if onerror hook returns
return
names = []
try:
names = os.listdir(path)
except os.error, err:
onerror(os.listdir, path, sys.exc_info())
for name in names:
fullname = os.path.join(path, name)
try:
mode = os.lstat(fullname).st_mode
except os.error:
mode = 0
if stat.S_ISDIR(mode):
rmtree(fullname, ignore_errors, onerror)
else:
try:
os.remove(fullname)
except os.error, err:
onerror(os.remove, fullname, sys.exc_info())
try:
os.rmdir(path)
except os.error:
onerror(os.rmdir, path, sys.exc_info())
def _basename(path):
# A basename() variant which first strips the trailing slash, if present.
# Thus we always get the last component of the path, even for directories.
return os.path.basename(path.rstrip(os.path.sep))
def move(src, dst, reportcopy=None, overwrite=False):
"""Recursively move a file or directory to another location. This is
similar to the Unix "mv" command.
If the destination is a directory or a symlink to a directory, the source
is moved inside the directory. The destination path must not already
exist.
If the destination already exists but is not a directory, it may be
overwritten depending on os.rename() semantics.
If the destination is on our current filesystem, then rename() is used.
Otherwise, src is copied to the destination and then removed.
A lot more could be done here... A look at a mv.c shows a lot of
the issues this implementation glosses over.
"""
real_dst = dst
if os.path.isdir(dst):
real_dst = os.path.join(dst, _basename(src))
if os.path.exists(real_dst):
raise Error, "Destination path '%s' already exists" % real_dst
try:
os.rename(src, real_dst)
except OSError:
if os.path.isdir(src):
if destinsrc(src, dst):
raise Error, "Cannot move a directory '%s' into itself '%s'." % (src, dst)
#copytree(src, dst, symlinks=True)
copytree(src, dst, True, reportcopy, overwrite)
rmtree(src)
else:
copy2(src, real_dst, reportcopy, overwrite)
os.unlink(src)
def reportcopy(blocknum, blocksize, totalsize):
# Report during remote transfers
print "Block number: %d, Block size: %d, Total size: %d" % (
blocknum, blocksize, totalsize)
def destinsrc(src, dst):
return abspath(dst).startswith(abspath(src))

View File

@ -0,0 +1,71 @@
"""
Module retrieving repositories info from XBMC Wiki
by Temhil
"""
from BeautifulSoup import SoupStrainer
from BeautifulSoup import BeautifulSoup
from traceback import print_exc
import re
import urllib
#
# Constants
#
#__settings__ = sys.modules[ "__main__" ].__settings__
#__language__ = sys.modules[ "__main__" ].__language__
def getRepoList(pageUrl, destination=None, addItemFunc=None, progressBar=None, msgFunc=None ):
"""
Retrieve Blogs list passing each item to the cb addItemFunc
return Next page URL
"""
#print "getRepoList"
result = "OK"
# Get HTML page...
htmlSource = urllib.urlopen( pageUrl ).read()
#print htmlSource
# Parse response...
beautifulSoup = BeautifulSoup( htmlSource )
itemRepoList = beautifulSoup.findAll("tr")
print itemRepoList
for repo in itemRepoList:
try:
#print repo
#print "----"
repoInfo = {}
tdList = repo.findAll ("td")
if tdList:
repoInfo["name"] = tdList[0].a.string.strip()
repoInfo["description"] = tdList[1].string.strip()
repoInfo["owner"] = tdList[2].string.strip()
repoInfo["repoUrl"] = tdList[3].a["href"]
try:
repoInfo["ImageUrl"] = tdList[4].a["href"]
except:
repoInfo["ImageUrl"] = None
#print repoInfo
#if progressBar != None:
if addItemFunc != None:
if repoInfo["repoUrl"].endswith("zip"):
addItemFunc( repoInfo )
else:
print "Invalid URL for the repository %s - URL=%s"%(repoInfo["name"], repoInfo["repoUrl"])
except:
print "getRepoList - error parsing html - impossible to retrieve Blog info"
print_exc()
result = "ERROR"
return result
if ( __name__ == "__main__" ):
print "Wiki parser test"
repoListUrl = "http://wiki.xbmc.org/index.php?title=Unofficial_Add-on_Repositories"
print repoListUrl
getRepoList(repoListUrl)

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<!-- GENERAL -->
<category label="$LOCALIZE[128]">
<setting label="30500" type="lsep" />
<setting label="30530" type="bool" id="desintitle" default="false" />
<setting label="30501" type="enum" id="descolor" enable="eq(-1,true)" lvalues="30520|30521|30522|30523|30524" default="4" />
</category>
</settings>

View File

@ -0,0 +1,476 @@
<window id="146">
<defaultcontrol always="true">9000</defaultcontrol>
<coordinates>
<system>1</system>
<posx>185</posx>
<posy>60</posy>
<origin x="185" y="10">!IsEmpty(ListItem.Property(Addon.broken))</origin>
</coordinates>
<include>dialogeffect</include>
<controls>
<control type="group">
<include>VisibleFadeEffect</include>
<visible>!Window.isVisible(AddonSettings) + !Window.IsActive(TextViewer)</visible>
<control type="image">
<description>background image</description>
<posx>0</posx>
<posy>0</posy>
<width>920</width>
<height>600</height>
<texture border="40">DialogBack.png</texture>
</control>
<control type="image">
<posx>260</posx>
<posy>10</posy>
<width>620</width>
<height>578</height>
<texture border="5">black-back2.png</texture>
</control>
<control type="image">
<posx>260</posx>
<posy>10</posy>
<width>610</width>
<height>100</height>
<aspectratio>stretch</aspectratio>
<texture>GlassTitleBar.png</texture>
</control>
<control type="button">
<description>Close Window button</description>
<posx>810</posx>
<posy>9</posy>
<width>64</width>
<height>32</height>
<label>-</label>
<font>-</font>
<onclick>PreviousMenu</onclick>
<texturefocus>DialogCloseButton-focus.png</texturefocus>
<texturenofocus>DialogCloseButton.png</texturenofocus>
<onleft>3</onleft>
<onright>3</onright>
<onup>3</onup>
<ondown>3</ondown>
<visible>system.getbool(input.enablemouse)</visible>
</control>
<control type="label">
<description>header label</description>
<posx>280</posx>
<posy>20</posy>
<width>580</width>
<height>30</height>
<font>font30_title</font>
<label>24003</label>
<align>left</align>
<aligny>center</aligny>
<textcolor>white</textcolor>
<shadowcolor>black</shadowcolor>
</control>
<control type="image">
<posx>35</posx>
<posy>40</posy>
<width>200</width>
<height>200</height>
<aspectratio>keep</aspectratio>
<!--texture>$INFO[ListItem.Icon]</texture-->
<texture>$INFO[Window.Property(Icon)]</texture>
</control>
<control type="label">
<description>Addon Title value</description>
<posx>280</posx>
<posy>80</posy>
<width>580</width>
<height>30</height>
<align>left</align>
<aligny>center</aligny>
<font>font13caps</font>
<!-- >label>[B]$INFO[ListItem.Property(Addon.Name)][/B]</label-->
<label>[B]$INFO[Window.Property(Name)][/B]</label>
<textcolor>white</textcolor>
<scroll>true</scroll>
</control>
<control type="group">
<posx>270</posx>
<posy>130</posy>
<control type="label">
<description>Type txt</description>
<posx>150</posx>
<posy>0</posy>
<width>140</width>
<height>25</height>
<label>$LOCALIZE[146]</label>
<align>right</align>
<aligny>center</aligny>
<font>font13_title</font>
<textcolor>blue</textcolor>
</control>
<control type="label">
<description>Type Value</description>
<posx>160</posx>
<posy>0</posy>
<width>440</width>
<height>25</height>
<label fallback="416">$INFO[Window.Property(Type)]</label>
<align>left</align>
<aligny>center</aligny>
<font>font13</font>
<scroll>true</scroll>
</control>
<control type="label">
<description>Author txt</description>
<posx>150</posx>
<posy>30</posy>
<width>140</width>
<height>25</height>
<label>$LOCALIZE[21863]:</label>
<align>right</align>
<aligny>center</aligny>
<font>font13_title</font>
<textcolor>blue</textcolor>
</control>
<control type="label">
<description>Author Value</description>
<posx>160</posx>
<posy>30</posy>
<width>440</width>
<height>25</height>
<label fallback="416">$INFO[Window.Property(Creator)]</label>
<align>left</align>
<aligny>center</aligny>
<font>font13</font>
<scroll>true</scroll>
</control>
<control type="label">
<description>Version txt</description>
<posx>150</posx>
<posy>60</posy>
<width>140</width>
<height>25</height>
<label>$LOCALIZE[24051]</label>
<align>right</align>
<aligny>center</aligny>
<font>font13_title</font>
<textcolor>blue</textcolor>
</control>
<control type="label">
<description>Version Value</description>
<posx>160</posx>
<posy>60</posy>
<width>440</width>
<height>25</height>
<label fallback="416">$INFO[Window.Property(Version)]</label>
<align>left</align>
<aligny>center</aligny>
<font>font13</font>
<scroll>true</scroll>
</control>
<!-- control type="label">
<description>Rating txt</description>
<posx>150</posx>
<posy>90</posy>
<width>140</width>
<height>25</height>
<label>$LOCALIZE[563]:</label>
<align>right</align>
<aligny>center</aligny>
<font>font13_title</font>
<textcolor>blue</textcolor>
</control>
<control type="image">
<description>Rating value</description>
<posx>160</posx>
<posy>90</posy>
<width>160</width>
<height>32</height>
<texture>LeftRating/$INFO[ListItem.Property(Addon.StarRating)]</texture>
</control -->
<!--control type="label">
<description>Summary txt</description>
<posx>150</posx>
<posy>90</posy>
<width>140</width>
<height>25</height>
<label>$LOCALIZE[20037]:</label>
<align>right</align>
<aligny>center</aligny>
<font>font13_title</font>
<textcolor>blue</textcolor>
</control>
<control type="fadelabel">
<description>Summary Value</description>
<posx>160</posx>
<posy>90</posy>
<width>440</width>
<height>25</height>
<label fallback="416">$INFO[ListItem.Property(Addon.Summary)]</label>
<align>left</align>
<aligny>center</aligny>
<font>font13</font>
<scrollout>false</scrollout>
<pauseatend>2000</pauseatend>
</control-->
<control type="image">
<posx>0</posx>
<posy>160</posy>
<width>600</width>
<height>4</height>
<texture>separator.png</texture>
</control>
<control type="label">
<description>Description txt</description>
<posx>0</posx>
<posy>170</posy>
<width>300</width>
<height>25</height>
<label>$LOCALIZE[21821]</label>
<align>left</align>
<aligny>center</aligny>
<font>font13</font>
<textcolor>blue</textcolor>
</control>
<control type="group">
<!--visible>!IsEmpty(ListItem.Property(Addon.Disclaimer))</visible-->
<control type="label">
<description>Description Page Count</description>
<posx>600</posx>
<posy>170</posy>
<width>300</width>
<height>25</height>
<label>$INFO[Container(400).CurrentPage, $LOCALIZE[31024] [COLOR=blue]([/COLOR]]$INFO[Container(400).NumPages,/,[COLOR=blue])[/COLOR]]</label>
<align>right</align>
<aligny>center</aligny>
<font>font12</font>
<textcolor>grey</textcolor>
</control>
<control type="textbox" id="400">
<description>Description</description>
<posx>10</posx>
<posy>195</posy>
<width>580</width>
<height>160</height>
<font>font12</font>
<align>-</align>
<textcolor>white</textcolor>
<!--label>$INFO[ListItem.Property(Addon.Description)]</label-->
<label>$INFO[Window.Property(Name)]</label>
<pagecontrol>60</pagecontrol>
</control>
<control type="scrollbar" id="60">
<posx>610</posx>
<posy>190</posy>
<width>25</width>
<height>175</height>
<texturesliderbackground border="0,14,0,14">ScrollBarV.png</texturesliderbackground>
<texturesliderbar border="0,14,0,14">ScrollBarV_bar.png</texturesliderbar>
<texturesliderbarfocus border="0,14,0,14">ScrollBarV_bar_focus.png</texturesliderbarfocus>
<textureslidernib>ScrollBarNib.png</textureslidernib>
<textureslidernibfocus>ScrollBarNib.png</textureslidernibfocus>
<onleft>9000</onleft>
<onright>61</onright>
<showonepage>false</showonepage>
<orientation>vertical</orientation>
</control>
<!--control type="label">
<description>Disclaimer txt</description>
<posx>0</posx>
<posy>370</posy>
<width>600</width>
<height>25</height>
<label>$LOCALIZE[24052]</label>
<align>left</align>
<aligny>center</aligny>
<font>font13</font>
<textcolor>orange</textcolor>
</control>
<control type="textbox">
<description>Disclaimer</description>
<posx>10</posx>
<posy>395</posy>
<width>580</width>
<height>40</height>
<font>font12</font>
<align>-</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Property(Addon.Disclaimer)]</label>
<autoscroll time="2000" delay="3000" repeat="5000">true</autoscroll>
</control-->
</control>
<control type="group">
<!--visible>IsEmpty(ListItem.Property(Addon.Disclaimer))</visible-->
<control type="label">
<description>Description Page Count</description>
<posx>600</posx>
<posy>170</posy>
<width>300</width>
<height>25</height>
<label>$INFO[Container(401).CurrentPage, $LOCALIZE[31024] [COLOR=blue]([/COLOR]]$INFO[Container(401).NumPages,/,[COLOR=blue])[/COLOR]]</label>
<align>right</align>
<aligny>center</aligny>
<font>font12</font>
<textcolor>grey</textcolor>
</control>
<control type="textbox" id="401">
<description>Description</description>
<posx>10</posx>
<posy>195</posy>
<width>580</width>
<height>250</height>
<font>font12</font>
<align>-</align>
<textcolor>white</textcolor>
<label>$INFO[ListItem.Property(Addon.Description)]</label>
<pagecontrol>61</pagecontrol>
</control>
<control type="scrollbar" id="61">
<posx>610</posx>
<posy>190</posy>
<width>25</width>
<height>250</height>
<texturesliderbackground border="0,14,0,14">ScrollBarV.png</texturesliderbackground>
<texturesliderbar border="0,14,0,14">ScrollBarV_bar.png</texturesliderbar>
<texturesliderbarfocus border="0,14,0,14">ScrollBarV_bar_focus.png</texturesliderbarfocus>
<textureslidernib>ScrollBarNib.png</textureslidernib>
<textureslidernibfocus>ScrollBarNib.png</textureslidernibfocus>
<onleft>60</onleft>
<onright>9000</onright>
<showonepage>false</showonepage>
<orientation>vertical</orientation>
</control>
</control>
</control>
<control type="group" id="9000">
<posx>10</posx>
<posy>280</posy>
<!--control type="button" id ="6">
<description>Enable Addon button</description>
<posx>0</posx>
<posy>0</posy>
<width>255</width>
<height>51</height>
<textoffsetx>20</textoffsetx>
<label>24022</label>
<font>font13_title</font>
<align>right</align>
<texturenofocus border="5">MenuItemNF.png</texturenofocus>
<texturefocus border="5">MenuItemFO.png</texturefocus>
<onleft>60</onleft>
<onright>60</onright>
<onup>10</onup>
<ondown>7</ondown>
</control>
<control type="button" id="7">
<description>Disable Addon button</description>
<posx>0</posx>
<posy>50</posy>
<width>255</width>
<height>51</height>
<textoffsetx>20</textoffsetx>
<label>24021</label>
<font>font13_title</font>
<align>right</align>
<texturenofocus border="5">MenuItemNF.png</texturenofocus>
<texturefocus border="5">MenuItemFO.png</texturefocus>
<onleft>60</onleft>
<onright>60</onright>
<onup>6</onup>
<ondown>9</ondown>
</control>
<control type="button" id="9">
<description>Addon Settings</description>
<posx>0</posx>
<posy>100</posy>
<width>255</width>
<height>51</height>
<textoffsetx>20</textoffsetx>
<label>24020</label>
<font>font13_title</font>
<align>right</align>
<texturenofocus border="5">MenuItemNF.png</texturenofocus>
<texturefocus border="5">MenuItemFO.png</texturefocus>
<onleft>60</onleft>
<onright>60</onright>
<onup>7</onup>
<ondown>8</ondown>
</control>
<control type="button" id="8">
<description>Update Addon button</description>
<posx>0</posx>
<posy>150</posy>
<width>255</width>
<height>51</height>
<textoffsetx>20</textoffsetx>
<label>24069</label>
<font>font13_title</font>
<align>right</align>
<texturenofocus border="5">MenuItemNF.png</texturenofocus>
<texturefocus border="5">MenuItemFO.png</texturefocus>
<onleft>60</onleft>
<onright>60</onright>
<onup>9</onup>
<ondown>10</ondown>
</control>
<control type="button" id="10">
<description>Changelog button</description>
<posx>0</posx>
<posy>200</posy>
<width>255</width>
<height>51</height>
<textoffsetx>20</textoffsetx>
<label>24036</label>
<font>font13_title</font>
<align>right</align>
<texturenofocus border="5">MenuItemNF.png</texturenofocus>
<texturefocus border="5">MenuItemFO.png</texturefocus>
<onleft>60</onleft>
<onright>60</onright>
<onup>8</onup>
<ondown>6</ondown>
</control -->
</control>
<control type="group">
<visible>!IsEmpty(ListItem.Property(Addon.broken))</visible>
<posx>0</posx>
<posy>600</posy>
<control type="image">
<description>background image</description>
<posx>0</posx>
<posy>0</posy>
<width>920</width>
<height>100</height>
<texture border="20">OverlayDialogBackground.png</texture>
</control>
<control type="image">
<description>Icon image</description>
<posx>18</posx>
<posy>18</posy>
<width>64</width>
<height>64</height>
<texture>DefaultIconError.png</texture>
</control>
<control type="label">
<description>header label</description>
<posx>100</posx>
<posy>15</posy>
<width>800</width>
<height>25</height>
<font>font13_title</font>
<label>24096</label>
<align>left</align>
<aligny>center</aligny>
<textcolor>selected</textcolor>
<shadowcolor>black</shadowcolor>
</control>
<control type="textbox">
<description>Reason label</description>
<posx>100</posx>
<posy>35</posy>
<width>800</width>
<height>50</height>
<font>font13</font>
<label>$INFO[ListItem.Property(Addon.broken)]</label>
<align>left</align>
<textcolor>white</textcolor>
<shadowcolor>black</shadowcolor>
</control>
</control>
</control>
</controls>
</window>

Some files were not shown because too many files have changed in this diff Show More