xbmc-pvr: refactor it to xbmc package
xbmc: update to pvr-ppa-odk51 relese of xbmc-pvr
@ -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
|
@ -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"
|
@ -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
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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
|
@ -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
|
@ -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
|
@ -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"
|
||||
|
@ -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
|
@ -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))
|
@ -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)
|
@ -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);
|
@ -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
|
@ -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"
|
@ -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"
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
Before Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 93 KiB |
@ -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"
|
@ -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"
|
@ -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
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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
|
@ -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);
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 \
|
@ -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));
|
@ -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
|
@ -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>
|
@ -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>
|
@ -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)
|
@ -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 -->
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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;
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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"
|
||||
|
@ -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>
|
@ -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)
|
||||
|
||||
|
@ -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()
|
After Width: | Height: | Size: 53 KiB |
@ -0,0 +1 @@
|
||||
# Dummy file to make this directory a package.
|
@ -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>
|
@ -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>
|
@ -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__ )
|
@ -0,0 +1 @@
|
||||
# Dummy file to make this directory a package.
|
@ -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
|
@ -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
|
||||
|
@ -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))
|
@ -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)
|
After Width: | Height: | Size: 33 KiB |
@ -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>
|
@ -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>
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 23 KiB |