Index: /ipk/make-ipk
===================================================================
--- /ipk/make-ipk	(revision 9330)
+++ /ipk/make-ipk	(revision 9331)
@@ -71,5 +71,5 @@
 	echo "| for svnurl <your>                                                                           |"
 	echo "| for svnport <your>                                                                          |"
-	echo "| for maketype <online|offline>                                                               |"
+	echo "| for maketype <online|offline|onlinebeta>                                                               |"
 	echo "| for cputype <sh4|mipsel>                                                                    |"
 	echo "| for swtype <enigma2|neutrino|titan>                                                         |"
@@ -88,8 +88,8 @@
 fi
 
-if [ $MAKETYPE = "online" ] || [ $MAKETYPE = "offline" ];then
+if [ $MAKETYPE = "online" ] || [ $MAKETYPE = "offline" ] || [ $MAKETYPE = "onlinebeta" ];then
 	echo "[make-ipk] maketype=$MAKETYPE"
 else
-	echo "[make-ipk] maketype <online|offline>"
+	echo "[make-ipk] maketype <online|offline|onlinebeta>"
 	exit 1
 fi
@@ -295,5 +295,5 @@
 		wput -u "$PUBLICRELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/boot/"$ROUND"
 	done
-elif [ $GROUP = "dev" ] && [ $MAKETYPE = "online" ];then
+elif [ $GROUP = "update" ] && [ $MAKETYPE = "online" ];then
 	BTIME=`date +"%Y.%m.%d_%H.%M.%S"`
 	echo quote USER $URLBETAUSER >"$HOMEDIR"/ftp.txt
@@ -326,4 +326,35 @@
 		wput -u "$BETARELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/boot/"$ROUND"
 	done
+elif [ $GROUP = "update" ] && [ $MAKETYPE = "onlinebeta" ];then
+	BTIME=`date +"%Y.%m.%d_%H.%M.%S"`
+	echo quote USER $URLBETAUSER >"$HOMEDIR"/ftp.txt
+	echo quote PASS $URLBETAPASS >>"$HOMEDIR"/ftp.txt
+#	echo cd "$WWWMAIN"/"$IPKGCROSS_BETA" >>"$HOMEDIR"/ftp.txt
+#        echo cd "$WWWMAIN" >>"$HOMEDIR"//ftp.txt
+	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages >>"$HOMEDIR"/ftp.txt
+	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages.filelist >>"$HOMEDIR"/ftp.txt
+	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages.gz >>"$HOMEDIR"/ftp.txt
+	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/PlugList >>"$HOMEDIR"/ftp.txt
+	echo del "$IPKGCROSS_BETA"/"$CPUTYPE"/"$SWTYPE"/Packages.preview.tar.gz >>"$HOMEDIR"/ftp.txt
+
+#	echo rename aaf-flash-beta aaf-flash-beta_old_"$URLBETAUSER"_"$BTIME" >>"$HOMEDIR"/ftp.txt
+	echo quit >>"$HOMEDIR"/ftp.txt
+	ftp -n "$URLBETA" < "$HOMEDIR"/ftp.txt 
+
+	sleep 5
+	for ROUND in $PACKAGESLIST; do
+		wput "$BETARELEASEUPDATEURL"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/"$ROUND"
+	done
+	for ROUND in $IPKLIST; do
+		wput "$BETARELEASEUPDATEURL"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/"$ROUND"
+	done
+	wput "$BETARELEASEUPDATEURL"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/PlugList
+	wput "$BETARELEASEUPDATEURL"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/Packages.preview.tar.gz
+
+	cd boot
+	BOOTLIST=`ls -1`
+	for ROUND in $BOOTLIST; do
+		wput -u "$BETARELEASEUPDATEURL"/"$WWWMAIN"/"$IPKGCROSS_RELEASE"/"$CPUTYPE"/"$SWTYPE"/boot/"$ROUND"
+	done
 fi
 
Index: /ipk/source.sh4/swapnetwork_webif_1.0/CONTROL/postinst
===================================================================
--- /ipk/source.sh4/swapnetwork_webif_1.0/CONTROL/postinst	(revision 9330)
+++ /ipk/source.sh4/swapnetwork_webif_1.0/CONTROL/postinst	(revision 9331)
@@ -7,4 +7,6 @@
 cp /var/swap/extensions/WebInterface/web-data/img/rc."$model".jpg /var/swap/extensions/WebInterface/web-data/img/rc.jpg
 rm -rf /var/swap/extensions/WebInterface/web-data/img/rc.*.jpg
+cp -a /var/swap/extensions/WebInterface/web-data/tpl/default/tplWebRemote."$model".htm /var/swap/extensions/WebInterface/web-data/tpl/default/tplWebRemote.htm
+rm -rf /var/swap/extensions/WebInterface/web-data/tpl/default/tplWebRemote.*.htm
 
 sync
Index: /ipk/source.sh4/swapnetwork_webif_1.0/CONTROL/prerm
===================================================================
--- /ipk/source.sh4/swapnetwork_webif_1.0/CONTROL/prerm	(revision 9330)
+++ /ipk/source.sh4/swapnetwork_webif_1.0/CONTROL/prerm	(revision 9331)
@@ -1,4 +1,4 @@
 #!/bin/sh
-TMP=/tmp/.epg
+TMP=/tmp/.web
 echo "syncing disk"
 sync
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/control
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/control	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/control	(revision 9331)
@@ -0,0 +1,11 @@
+Package: enigma2-plugin-swapplayers-mediacenter
+Version: 1.1
+Description: MediaCenter for swapstick!
+Section: network
+Priority: optional
+Maintainer: AAF Forum
+Architecture: sh4
+OE: Network
+Homepage: http://www.aaf-digital.info
+Depends:
+Source: http://www.aaf-digital.info
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/postinst
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/postinst	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/postinst	(revision 9331)
@@ -0,0 +1,7 @@
+#!/bin/sh
+TMP=/tmp/.mc
+echo "successfully installed"
+echo "syncing disk"
+echo "please reboot your box so that the extension will be mounted..."
+sync
+exit 0
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/postrm
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/postrm	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/postrm	(revision 9331)
@@ -0,0 +1,9 @@
+#!/bin/sh
+TMP=/tmp/.mc
+
+rm -rf /var/swap/extensions/MediaCenter
+
+echo "successfully removed"
+echo "syncing disk"
+sync
+exit 0
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/preinst
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/preinst	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/preinst	(revision 9331)
@@ -0,0 +1,38 @@
+#!/bin/sh
+#
+TMP=/tmp/.mc
+echo "syncing disk"
+sync
+
+model=`cat /etc/model`
+echo""
+echo "Checking your Boxtype...."
+echo "Some Plugins will not work correctly on your $model!"
+echo ""
+if [ "$model" = "" ]; then
+	echo "Sorry! This Plugin is not available for your $model because it will not work correctly!!!"
+	echo "Aborting installation..."
+	exit 1
+else
+	echo "Boxtype: $model OK"
+fi
+
+echo "checking swapstick"
+if [ ! -d /var/swap/extensions/ ]; then
+  echo "--------------------------"
+	echo "no swapstick found...."
+	echo "--------------------------"
+	exit 1
+fi
+echo "swapstick found...."
+echo "installing MediaCenter Plugin to swapstick..."
+echo "checking OS"
+if  [ `cat /etc/motd | grep AAF | grep M | grep rev | wc -l` -eq 0 ]; then                      
+	echo ---------------------------
+	echo DONT USE this IPK Package!!
+	echo ---
+	echo Only for AAF Image!!
+	echo ---------------------------
+	exit 1
+fi
+exit 0
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/prerm
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/prerm	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/CONTROL/prerm	(revision 9331)
@@ -0,0 +1,6 @@
+#!/bin/sh
+TMP=/tmp/.mc
+echo "syncing disk"
+sync
+echo "removing MediaCenter from swapstick"
+exit 0
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/GlobalFunctions.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/GlobalFunctions.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/GlobalFunctions.py	(revision 9331)
@@ -0,0 +1,527 @@
+from enigma import eTimer, ePicLoad, iServiceInformation
+from Screens.Screen import Screen
+from Components.Label import Label
+from Components.Button import Button
+from Screens.ServiceInfo import ServiceInfoList, ServiceInfoListEntry
+from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
+from Components.Pixmap import Pixmap
+from Components.ScrollLabel import ScrollLabel
+from Tools.LoadPixmap import LoadPixmap
+from Components.SelectionList import SelectionList, SelectionEntryComponent
+from Components.ChoiceList import ChoiceEntryComponent, ChoiceList
+from Components.Sources.List import List
+from Components.Sources.StaticText import StaticText
+from Tools.Directories import fileExists, pathExists, createDir
+from Components.Console import Console
+from Components.AVSwitch import AVSwitch
+from Components.MenuList import MenuList
+from _ctypes import *
+from __init__ import _
+
+class InfoBarAspectSelection:
+	STATE_HIDDEN = 0
+	STATE_ASPECT = 1
+	STATE_RESOLUTION = 2
+	def __init__(self):
+		self["AspectSelectionAction"] = HelpableActionMap(self, "InfobarAspectSelectionActions",
+			{
+				"aspectSelection": (self.ExGreen_toggleGreen, _("Aspect list...")),
+			})
+		self.__ExGreen_state = self.STATE_HIDDEN
+	def ExGreen_doAspect(self):
+		self.__ExGreen_state = self.STATE_ASPECT
+		self.aspectSelection()
+	def ExGreen_doResolution(self):
+		self.__ExGreen_state = self.STATE_RESOLUTION
+		self.resolutionSelection()
+	def ExGreen_doHide(self):
+		self.__ExGreen_state = self.STATE_HIDDEN
+	def ExGreen_toggleGreen(self, arg=""):
+		print self.__ExGreen_state
+		if self.__ExGreen_state == self.STATE_HIDDEN:
+			print "self.STATE_HIDDEN"
+			self.ExGreen_doAspect()
+		elif self.__ExGreen_state == self.STATE_ASPECT:
+			print "self.STATE_ASPECT"
+			self.ExGreen_doResolution()
+		elif self.__ExGreen_state == self.STATE_RESOLUTION:
+			print "self.STATE_RESOLUTION"
+			self.ExGreen_doHide()
+	def aspectSelection(self):
+		selection = 0
+		tlist = []
+		tlist.append((_("Resolution"), "resolution"))
+		tlist.append(("", ""))
+		tlist.append(("Letterbox", "letterbox"))
+		tlist.append(("PanScan", "panscan"))
+		tlist.append(("Non Linear", "non"))
+		tlist.append(("Bestfit", "bestfit"))
+		mode = open("/proc/stb/video/policy").read()[:-1]
+		print mode
+		for x in range(len(tlist)):
+			if tlist[x][1] == mode:
+				selection = x
+		keys = ["green", "",  "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ]
+		self.session.openWithCallback(self.aspectSelected, MC_ChoiceBox, title=_("Please select an aspect ratio..."), list = tlist, selection = selection, keys = keys)
+	def aspectSelected(self, aspect):
+		if not aspect is None:
+			if isinstance(aspect[1], str):
+				if aspect[1] == "resolution":
+					self.ExGreen_toggleGreen()
+				else:
+					open("/proc/stb/video/policy", "w").write(aspect[1])
+					self.ExGreen_doHide()
+		return
+
+class MC_AudioInfoView(Screen):
+	skin = """<screen position="center,center" size="560,320" title="View Audio Info" >
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<widget name="infolist" position="5,5" size="550,310" selectionDisabled="1" />
+	</screen>"""
+
+	def __init__(self, session, fullname, name, ref):
+		self.skin = MC_AudioInfoView.skin
+		Screen.__init__(self, session)
+		self["actions"] = ActionMap(["OkCancelActions"],
+		{
+			"cancel": self.close,
+			"ok": self.close
+		}, -1)
+		tlist = [ ]
+		self["show_title"] = StaticText(_("MediaCenter Audiofile Info"))
+		self["infolist"] = ServiceInfoList(tlist)
+		currPlay = self.session.nav.getCurrentService()
+		if currPlay is not None:
+			sTagTitle = currPlay.info().getInfoString(iServiceInformation.sTagTitle)
+			if sTagTitle == "":
+				sTagTitle = currPlay.info().getName().split('/')[-1]
+			tlist.append(ServiceInfoListEntry("Title: ", sTagTitle))
+			tlist.append(ServiceInfoListEntry("Artist: ", currPlay.info().getInfoString(iServiceInformation.sTagArtist)))
+			tlist.append(ServiceInfoListEntry("Album: ", currPlay.info().getInfoString(iServiceInformation.sTagAlbum)))
+			tlist.append(ServiceInfoListEntry("Genre: ", currPlay.info().getInfoString(iServiceInformation.sTagGenre)))
+			tlist.append(ServiceInfoListEntry("Year: ", currPlay.info().getInfoString(iServiceInformation.sTimeCreate)))
+			tlist.append(ServiceInfoListEntry("Comment: ", currPlay.info().getInfoString(iServiceInformation.sTagComment)))
+
+class Showiframe():
+	def __init__(self):
+		self.showiframe = dlopen("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/libshowiframe.so.0.0.0")
+		try:
+			self.showSinglePic = dlsym(self.showiframe, "showSinglePic")
+			self.finishShowSinglePic = dlsym(self.showiframe, "finishShowSinglePic")
+		except OSError, e: 
+			self.showSinglePic = dlsym(self.showiframe, "_Z13showSinglePicPKc")
+			self.finishShowSinglePic = dlsym(self.showiframe, "_Z19finishShowSinglePicv")
+
+	def showStillpicture(self, pic):
+		call_function(self.showSinglePic, (pic, ))
+
+	def finishStillPicture(self):
+		call_function(self.finishShowSinglePic, ())
+		#dlclose(self.showiframe)
+
+class MC_VideoImdbView(Screen):
+	skin = """<screen position="0,0" size="1024,576" title="Imdbfile Info" >
+		<!--widget name="thumbbig" position="0,0" size="1280,720" zPosition="0" transparent="1" alphatest="on" />
+		<widget name="thumb" position="700,50" size="190,174" zPosition="2" transparent="1" alphatest="on" /-->
+		<widget name="thumbCoverBig" position="518,20" size="471,536" zPosition="2" transparent="1" alphatest="on" />
+		<widget name="thumbPosterMid" position="518,20" size="471,536" zPosition="3" transparent="1" alphatest="on" />
+		<widget name="imdbinfo" font="Regular;18" position="35,30" size="480,500" zPosition="4" transparent="1" />
+		<eLabel backgroundColor="green" position="326,555" size="140,3" zPosition="5"/>
+		<eLabel backgroundColor="red" position="93,555" size="140,3" zPosition="5"/>
+		<widget name="key_red" position="93,526" zPosition="5" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+		<widget name="key_green" position="326,526" zPosition="5" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+	</screen>"""
+			
+	def __init__(self, session, showtext, dirCover, dirCoverBig, dirPosterOrginal, dirPosterMid, dirPosterThumb, dirPosterCover, dirPosterPreview, dirBanner, dirBackdrop, dirMvi, savedir, moviename, showinfo):
+		self.skin = MC_VideoImdbView.skin
+		Screen.__init__(self, session)
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
+		{
+			"cancel": self.exit,
+			"ok": self.save,
+			"upUp": self.pageUp,
+			"downUp": self.pageDown,
+			"red": self.exit,
+			"green": self.save,
+		}, -1)
+
+		self.showinfo = showinfo
+		self.showtext = showtext
+
+		self.savetext = showtext
+		self.dirCover = dirCover
+		self.dirCoverBig = dirCoverBig
+		self.dirPosterOrginal = dirPosterOrginal
+		self.dirPosterMid = dirPosterMid
+		self.dirPosterThumb = dirPosterThumb
+		self.dirPosterCover = dirPosterCover
+		self.dirPosterPreview = dirPosterPreview
+		self.dirBanner = dirBanner
+		self.dirBackdrop = dirBackdrop
+		self.dirMvi = dirMvi
+		self.savedir = savedir
+		self.moviename = moviename
+
+#--- INFO: you can set these parameters in the skin.xml of your own skin. Default is...
+		self.picX = 200 # picturesize x
+		self.picY = 350 # picturesize y
+#----------
+
+		self.FramebufferScale = AVSwitch().getFramebufferScale()
+		self.picload = ePicLoad()
+		self.picload.PictureData.get().append(self.showScaledPixmap)
+		self.picload2 = ePicLoad()
+		self.picload2.PictureData.get().append(self.showScaledPixmap2)
+
+		self["imdbinfo"] = ScrollLabel()
+		self["thumbCoverBig"] = Pixmap()
+		self["thumbPosterMid"] = Pixmap()
+		if self.show == False:
+			self["key_red"] = Button(_("Cancel"))
+			self["key_green"] = Button(_("Save"))
+		else:
+			self["key_red"] = Button(_("Back"))
+			self["key_green"] = Button(_("OK"))
+#--- INFO: the screen gets started from an applet in the skin.xml ....
+		#self.onLayoutFinish.append(self.showPic)
+#----------
+
+	def showPic(self):
+		self["imdbinfo"].setText("Imdb Details:\n-----------------\n\n" + str(self.showtext))
+		self.picload.setPara((self.picX, self.picY, self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+		self.picload2.setPara((self.picX, self.picY, self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+		self.start_decode()
+		self.start_decode2()
+
+	def start_decode(self):
+		if fileExists(self.dirCoverBig):
+			self.picload.startDecode(self.dirCoverBig)
+		else:
+			self.picload.startDecode(self.dirPosterMid)
+
+	def start_decode2(self):
+		if fileExists(self.dirPosterMid):
+			self.picload2.startDecode(self.dirPosterMid)
+		else:
+			self.picload2.startDecode(self.dirCoverBig)
+
+	def showScaledPixmap(self, picInfo=None):
+		ptr = self.picload.getData()
+		if ptr != None:
+			self["thumbCoverBig"].instance.setPixmap(ptr.__deref__())
+
+	def showScaledPixmap2(self, picInfo=None):
+		ptr = self.picload2.getData()
+		if ptr != None:
+			self["thumbPosterMid"].instance.setPixmap(ptr.__deref__())
+		self["thumbPosterMid"].hide()
+
+	def pageUp(self):
+		self["imdbinfo"].pageUp()
+		self["thumbCoverBig"].show()
+		self["thumbPosterMid"].hide()
+
+	def pageDown(self):
+		self["imdbinfo"].pageDown()
+		self["thumbPosterMid"].show()
+		self["thumbCoverBig"].hide()
+
+	def exit(self):
+		Console().ePopen(('rm /tmp/*.jpg;rm /tmp/*.cache'))
+		self.close()
+
+	def save(self):	
+		if self.showinfo == False:
+			print "startsaving closed"
+			from MC_Imdb import saveImdb
+			saveImdb(self.moviename,str(self.savetext))
+		self.close()
+
+class MC_VideoPlaylistInfoView(Screen):
+	skin = """<screen position="center,center" size="720,430" title="Playlist Info" >
+		<widget name="playlist" font="Regular;18" position="10,10" size="700,380" zPosition="2" transparent="1" />
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<eLabel backgroundColor="red" position="93,420" size="140,3" zPosition="5"/>
+		<eLabel backgroundColor="green" position="526,420" size="140,3" zPosition="5"/>
+		<widget name="key_red" position="93,390" zPosition="4" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+		<widget name="key_green" position="526,390" zPosition="4" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+	</screen>"""
+
+	def __init__(self, session, showtext, playlist):
+		self.skin = MC_VideoPlaylistInfoView.skin
+		self.playlist = playlist
+		Screen.__init__(self, session)
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
+		{
+			"cancel": self.close,
+			"ok": self.close,
+			"upUp": self.pageUp,
+			"downUp": self.pageDown,
+			"red": self.close,
+			"green": self.sort,
+		}, -1)
+
+		self["playlist"] = ScrollLabel()
+		self["playlist"].setText(showtext)
+		self["show_title"] = StaticText(_("MediaCenter Videoplayer Playlist:"))
+		self["key_red"] = Button(_("Cancel"))
+		self["key_green"] = Button(_("Random"))
+
+	def sort(self):
+		if len(self.playlist.getServiceRefList()):
+			self.playlist.PlayListShuffle()
+			self.playlist.updateList()
+			currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
+			liste = self.playlist.getServiceRefList()
+			count = 0
+			text0 = "\n"
+			text1 = "--------------"
+			text5 = "PlayList:\n"
+			bunner5 = "----------\n"
+			headertext = text5 + text1 + text0
+			text = ""
+			for a in liste:
+				count += 1
+				files = a.getPath()
+				name = files.split('/')[-1]
+				text_playlist = "(" + str(count) + ")" + name + text0
+				text += text_playlist
+			showtext_playlist = headertext + text + text0 
+			showtext = showtext_playlist
+			self["playlist"].setText(showtext)
+
+	def pageUp(self):
+		self["playlist"].pageUp()
+
+	def pageDown(self):
+		self["playlist"].pageDown()
+
+	def getIdentifier(self, ref):
+		text = ref.getPath()
+		return text.split('/')[-1]
+
+class MC_ChoiceBox(Screen):
+	def __init__(self, session, title = "", list = [], keys = None, selection = 0, skin_name = []):
+		Screen.__init__(self, session)
+		if isinstance(skin_name, str):
+			skin_name = [skin_name]
+		self.skinName = skin_name + ["MC_ChoiceBox"] 
+		self["text"] = Label(title)
+		self.list = []
+		self.summarylist = []
+		if keys is None:
+			self.__keys = [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "red", "green", "yellow", "blue" ] + (len(list) - 10) * [""]
+		else:
+			self.__keys = keys + (len(list) - len(keys)) * [""]
+		self.keymap = {}
+		pos = 0
+		for x in list:
+			strpos = str(self.__keys[pos])
+			self.list.append(ChoiceEntryComponent(key = strpos, text = x))
+			if self.__keys[pos] != "":
+				self.keymap[self.__keys[pos]] = list[pos]
+			self.summarylist.append((self.__keys[pos],x[0]))
+			pos += 1
+		self["list"] = ChoiceList(list = self.list, selection = selection)
+		self["summary_list"] = StaticText()
+		self.updateSummary()
+		self["actions"] = NumberActionMap(["WizardActions", "InputActions", "ColorActions", "DirectionActions"], 
+		{
+			"ok": self.go,
+			"back": self.cancel,
+			"1": self.keyNumberGlobal,
+			"2": self.keyNumberGlobal,
+			"3": self.keyNumberGlobal,
+			"4": self.keyNumberGlobal,
+			"5": self.keyNumberGlobal,
+			"6": self.keyNumberGlobal,
+			"7": self.keyNumberGlobal,
+			"8": self.keyNumberGlobal,
+			"9": self.keyNumberGlobal,
+			"0": self.keyNumberGlobal,
+			"red": self.keyRed,
+			"green": self.keyGreen,
+			"yellow": self.keyYellow,
+			"blue": self.keyBlue,
+			"up": self.up,
+			"down": self.down
+		}, -1)
+	def keyLeft(self):
+		pass
+	def keyRight(self):
+		pass
+	def up(self):
+		if len(self["list"].list) > 0:
+			while 1:
+				self["list"].instance.moveSelection(self["list"].instance.moveUp)
+				self.updateSummary(self["list"].l.getCurrentSelectionIndex())
+				if self["list"].l.getCurrentSelection()[0][0] != "--" or self["list"].l.getCurrentSelectionIndex() == 0:
+					break
+	def down(self):
+		if len(self["list"].list) > 0:
+			while 1:
+				self["list"].instance.moveSelection(self["list"].instance.moveDown)
+				self.updateSummary(self["list"].l.getCurrentSelectionIndex())
+				if self["list"].l.getCurrentSelection()[0][0] != "--" or self["list"].l.getCurrentSelectionIndex() == len(self["list"].list) - 1:
+					break
+	# runs a number shortcut
+	def keyNumberGlobal(self, number):
+		self.goKey(str(number))
+	# runs the current selected entry
+	def go(self):
+		cursel = self["list"].l.getCurrentSelection()
+		if cursel:
+			self.goEntry(cursel[0])
+		else:
+			self.cancel()
+	# runs a specific entry
+	def goEntry(self, entry):
+		if len(entry) > 2 and isinstance(entry[1], str) and entry[1] == "CALLFUNC":
+			# CALLFUNC wants to have the current selection as argument
+			arg = self["list"].l.getCurrentSelection()[0]
+			entry[2](arg)
+		else:
+			self.close(entry)
+	# lookups a key in the keymap, then runs it
+	def goKey(self, key):
+		if self.keymap.has_key(key):
+			entry = self.keymap[key]
+			self.goEntry(entry)
+	# runs a color shortcut
+	def keyRed(self):
+		self.goKey("red")
+	def keyGreen(self):
+		self.goKey("green")
+	def keyYellow(self):
+		self.goKey("yellow")
+	def keyBlue(self):
+		self.goKey("blue")
+	def updateSummary(self, curpos=0):
+		pos = 0
+		summarytext = ""
+		for entry in self.summarylist:
+			if pos > curpos-2 and pos < curpos+5:
+				if pos == curpos:
+					summarytext += ">"
+				else:
+					summarytext += entry[0]
+				summarytext += ' ' + entry[1] + '\n'
+			pos += 1
+		self["summary_list"].setText(summarytext)
+	def cancel(self):
+		self.close(None)
+
+class MC_MessageBox(Screen):
+	TYPE_YESNO = 0
+	TYPE_INFO = 1
+	TYPE_WARNING = 2
+	TYPE_ERROR = 3
+	def __init__(self, session, text, type = TYPE_YESNO, timeout = -1, close_on_any_key = False, default = True, enable_input = True, msgBoxID = None):
+		self.type = type
+		Screen.__init__(self, session)
+		
+		self.msgBoxID = msgBoxID
+		self["text"] = Label(text)
+		self["Text"] = StaticText(text)
+		self["selectedChoice"] = StaticText()
+		self.text = text
+		self.close_on_any_key = close_on_any_key
+		self["ErrorPixmap"] = Pixmap()
+		self["QuestionPixmap"] = Pixmap()
+		self["InfoPixmap"] = Pixmap()
+		self.timerRunning = False
+		self.initTimeout(timeout)
+		self.list = []
+		if type != self.TYPE_ERROR:
+			self["ErrorPixmap"].hide()
+		if type != self.TYPE_YESNO:
+			self["QuestionPixmap"].hide()
+		if type != self.TYPE_INFO:
+			self["InfoPixmap"].hide()
+		if type == self.TYPE_YESNO:
+			if default == True:
+				self.list = [ (_("yes"), 0), (_("no"), 1) ]
+			else:
+				self.list = [ (_("no"), 1), (_("yes"), 0) ]
+		if self.list:
+			self["selectedChoice"].setText(self.list[0][0])
+		self["list"] = MenuList(self.list)
+		if enable_input:
+			self["actions"] = ActionMap(["MsgBoxActions", "DirectionActions"], 
+				{
+					"cancel": self.cancel,
+					"ok": self.ok,
+					"alwaysOK": self.alwaysOK,
+					"up": self.up,
+					"down": self.down,
+					"left": self.left,
+					"right": self.right,
+					"upRepeated": self.up,
+					"downRepeated": self.down,
+					"leftRepeated": self.left,
+					"rightRepeated": self.right
+				}, -1)
+	def initTimeout(self, timeout):
+		self.timeout = timeout
+		if timeout > 0:
+			self.timer = eTimer()
+			self.timer.callback.append(self.timerTick)
+			self.onExecBegin.append(self.startTimer)
+			self.origTitle = None
+			if self.execing:
+				self.timerTick()
+			else:
+				self.onShown.append(self.__onShown)
+			self.timerRunning = True
+		else:
+			self.timerRunning = False
+	def __onShown(self):
+		self.onShown.remove(self.__onShown)
+		self.timerTick()
+	def startTimer(self):
+		self.timer.start(1000)
+	def stopTimer(self):
+		if self.timerRunning:
+			del self.timer
+			self.onExecBegin.remove(self.startTimer)
+			self.setTitle(self.origTitle)
+			self.timerRunning = False
+	def timerTick(self):
+		if self.execing:
+			self.timeout -= 1
+			if self.origTitle is None:
+				self.origTitle = self.instance.getTitle()
+			self.setTitle(self.origTitle + " (" + str(self.timeout) + ")")
+			if self.timeout == 0:
+				self.timer.stop()
+				self.timerRunning = False
+				self.timeoutCallback()
+	def timeoutCallback(self):
+		print "Timeout!"
+		self.ok()
+	def cancel(self):
+		self.close(False)
+	def ok(self):
+		if self.type == self.TYPE_YESNO:
+			self.close(self["list"].getCurrent()[1] == 0)
+		else:
+			self.close(True)
+	def alwaysOK(self):
+		self.close(True)
+	def up(self):
+		self.move(self["list"].instance.moveUp)
+	def down(self):
+		self.move(self["list"].instance.moveDown)
+	def left(self):
+		self.move(self["list"].instance.pageUp)
+	def right(self):
+		self.move(self["list"].instance.pageDown)
+	def move(self, direction):
+		if self.close_on_any_key:
+			self.close(True)
+		self["list"].instance.moveSelection(direction)
+		if self.list:
+			self["selectedChoice"].setText(self["list"].getCurrent()[0])
+		self.stopTimer()
+	def __repr__(self):
+		return str(type(self)) + "(" + self.text + ")"
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_AppleTrailer.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_AppleTrailer.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_AppleTrailer.py	(revision 9331)
@@ -0,0 +1,591 @@
+from Screens.Screen import Screen
+from Components.AVSwitch import AVSwitch
+from Components.ActionMap import ActionMap
+from Components.Button import Button
+from Components.PluginComponent import plugins
+from Components.Slider import Slider
+from Screens.ChoiceBox import ChoiceBox
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+from Screens.InfoBar import MoviePlayer
+from Components.Sources.StaticText import StaticText
+from Components.Pixmap import Pixmap, MovingPixmap
+from Plugins.Plugin import PluginDescriptor
+from Tools.Directories import fileExists, pathExists, createDir
+
+from enigma import getDesktop, ePicLoad, eTimer, eConsoleAppContainer, eServiceReference, eBackgroundFileEraser
+from twisted.web.client import downloadPage, getPage
+from urllib import urlencode, unquote
+from urllib2 import urlopen, Request
+import os
+from Components.config import *
+
+T_INDEX = 0
+T_FRAME_POS = 1
+T_PAGE = 2
+T_TITLE = 3
+T_THUMB = 4
+T_URL = 5
+T_FILENAME = 6
+
+class MC_AppleTrailer(Screen):
+	def __init__(self, session):
+
+		size_w = getDesktop(0).size().width()
+		size_h = getDesktop(0).size().height()
+		self.FramebufferScale = AVSwitch().getFramebufferScale()
+		
+		if size_w == 1280:
+			self.spaceTop = 200
+			self.spaceLeft = 45
+		else:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			
+		self["titletext"] = StaticText("Apple Trailers")
+		self["titlemessage"] = StaticText("Herzlich Willkommen!")
+		self["pageinfo"] = StaticText("Downloading List of Trailers ...")
+		
+		self.textcolor = "#FFFFFF"
+		self.color = "#000000"
+		textsize = 16
+		self.spaceX = 35
+		self.picX = 200
+		self.spaceY = 30
+		self.picY = 200
+
+		self.thumbsX = (size_w - self.spaceLeft) / (self.spaceX + self.picX) # thumbnails in X
+		self.thumbsY = (size_h - self.spaceTop) / (self.spaceY + self.picY) # thumbnails in Y
+		self.thumbsC = self.thumbsX * self.thumbsY # all thumbnails
+
+		self.positionlist = []
+		skincontent = ""
+
+		posX = -1
+		for x in range(self.thumbsC):
+			posY = x / self.thumbsX
+			posX += 1
+			if posX >= self.thumbsX:
+				posX = 0
+
+			absX = self.spaceLeft + self.spaceX + (posX*(self.spaceX + self.picX))
+			absY = self.spaceTop + self.spaceY + (posY*(self.spaceY + self.picY))
+			self.positionlist.append((absX, absY))
+			skincontent += "<widget source=\"label" + str(x) + "\" render=\"Label\" position=\"" + str(absX+5) + "," + str(absY+self.picY-textsize-5) + "\" size=\"" + str(self.picX - 10) + ", 20\" halign=\"center\" font=\"Regular;"  + str(textsize) + "\" zPosition=\"4\" noWrap=\"1\" foregroundColor=\"" + self.textcolor + "\" />"
+			skincontent += "<widget name=\"thumb" + str(x) + "\" position=\"" + str(absX)+ "," + str(absY+5) + "\" size=\"" + str(self.picX -10) + "," + str(self.picY - (textsize*2)) + "\" zPosition=\"4\" transparent=\"1\" alphatest=\"on\" />"
+
+		# Screen, backgroundlabel and MovingPixmap
+		self.skin = "<screen position=\"0,0\" size=\"" + str(size_w) + "," + str(size_h) + "\" flags=\"wfNoBorder\" > \
+			<ePixmap name=\"logo\" position=\"60,0\" zPosition=\"1\" size=\"111,140\" pixmap=\"/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/logo.png\" /> \
+			<widget source=\"titletext\" render=\"Label\" zPosition=\"2\" position=\"185,40\" size=\"400,40\" font=\"Regular;30\" /> \
+			<widget source=\"titlemessage\" render=\"Label\" zPosition=\"2\" valign=\"center\" halign=\"left\" position=\"185,85\" size=\"380,30\" font=\"Regular;20\" /> \
+			<eLabel position=\"0,0\" zPosition=\"0\" size=\""+ str(size_w) + "," + str(size_h) + "\" backgroundColor=\"#000000\" /> \
+			<eLabel position=\"0,124\" zPosition=\"1\" size=\"1140,2\" backgroundColor=\"#FF9900\" /> \
+			<widget source=\"pageinfo\" position=\"0,667\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"center\" halign=\"center\" size=\"" + str(size_w) + ",30\" font=\"Regular;14\" /> \
+			<widget name=\"frame\" position=\"400,0\" size=\"190,200\" pixmap=\"pic_frame.png\" zPosition=\"5\" alphatest=\"on\" />"  + skincontent + "</screen>"
+
+		Screen.__init__(self, session)
+
+		self["actions"] = ActionMap(["DirectionActions", "ChannelSelectBaseActions","OkCancelActions", "ColorActions", "MovieSelectionActions"],
+		{
+			"cancel": self.Exit,
+			"ok": self.KeyOk,
+			"left": self.key_left,
+			"right": self.key_right,
+			"up": self.key_up,
+			"down": self.key_down,
+			"nextBouquet": (self.NextCategory),
+			"prevBouquet": (self.PrevCategory)
+		}, -1)
+
+		self["frame"] = MovingPixmap()
+		self["frame"].hide()
+		
+		for x in range(self.thumbsC):
+			self["label"+str(x)] = StaticText()
+			self["thumb"+str(x)] = Pixmap()
+
+		self.Thumbnaillist = []
+		self.trailerlist = []
+		self.currPage = -1
+		self.dirlistcount = 0
+		self.maxentry = 1
+		self.maxPage = 0
+		self.index = 0 - self.dirlistcount
+		if self.index < 0:
+			self.index = 0
+
+		# Index Catgory List
+		self.catlist = []
+		self.catlist.append((1, "just_added", _("Just Added")))
+		self.catlist.append((2, "exclusive", _("Exclusive")))
+		self.catlist.append((3, "just_hd", _("Just HD")))
+		self.catlist.append((4, "most_pop", _("Most Popular")))
+		self.catlist.append((5, "genres", _("Genres")))
+		self.catlist.append((6, "studios", _("Studios")))
+		self.currentcat = 0
+		self["titlemessage"].setText(("%s") % (self.catlist[self.currentcat][2]))
+
+		# Init Thumb PicLoad
+		self.thumbload = ePicLoad()
+		self.thumbload.PictureData.get().append(self.showThumbPixmap)
+		self.thumbload.setPara((self.picX-10, self.picY-(textsize*2), self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+
+		# Remember old Service
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+		
+		# Start Plugin
+		self.onFirstExecBegin.append(self.GetTrailerList)
+
+	def NextCategory(self):
+		if self.currentcat + 1 < 6:
+			self.currentcat += 1
+			self["titlemessage"].setText(("%s") % (self.catlist[self.currentcat][2]))
+			self.GetTrailerList()
+		else:
+			return
+
+	def PrevCategory(self):
+		if self.currentcat <= 0:
+			return
+		else:
+			self.currentcat -= 1
+			self["titlemessage"].setText(("%s") % (self.catlist[self.currentcat][2]))
+			self.GetTrailerList()
+
+	def GetTrailerList(self):
+		self.url = "http://www.dreambox-plugins.de/feeds/appletrailer.php?cat="+str(self.catlist[self.currentcat][1])
+		try:
+			getPage(self.url).addCallback(self.GotTrailerList).addErrback(self.error)
+		except Exception, e:
+			print "Apple Trailer Info: Could not download HTTP Page"
+
+	def GotTrailerList(self, html):
+		content = html.split("\n")
+		index = 0
+		framePos = 0
+		Page = 0
+		
+		self.currPage = -1
+		self.index = 0
+		self.trailerlist = []
+		
+		for line in content:
+			if '<-->' in line:
+				tmpline = line.split("<-->")
+				title = tmpline[0]
+				url = tmpline[1]
+				thumb = tmpline[2]
+				filename = tmpline[3]
+
+				self.trailerlist.append((index, framePos, Page, title, thumb, url, filename))
+
+				index += 1
+				framePos += 1
+				if framePos > (self.thumbsC-1):
+					framePos = 0
+					Page += 1
+		
+		self.maxPage = Page
+		self.maxentry = len(self.trailerlist)-1
+		self.paintFrame()
+		self["frame"].show()
+		
+	def paintFrame(self):
+		if self.maxentry < self.index or self.index < 0:
+			return
+
+		pos = self.positionlist[self.trailerlist[self.index][T_FRAME_POS]]
+		self["frame"].moveTo( pos[0], pos[1], 1)
+		self["frame"].startMoving()
+		
+		if self.currPage != self.trailerlist[self.index][T_PAGE]:
+			self.currPage = self.trailerlist[self.index][T_PAGE]
+			self.newPage()
+
+	def newPage(self):
+		self.Thumbnaillist = []
+		self["pageinfo"].setText("Page "+str(self.currPage+1)+" of "+str(self.maxPage))
+		
+		#clear Labels and Thumbnail
+		for x in range(self.thumbsC):
+			self["label"+str(x)].setText("")
+			self["thumb"+str(x)].hide()
+
+		#paint Labels and fill Thumbnail-List
+		for x in self.trailerlist:
+			if x[T_PAGE] == self.currPage:
+				self["label"+str(x[T_FRAME_POS])].setText(x[T_TITLE])
+				self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile("/var/usr/local/share/enigma2/extensions/dummy.png")
+				self["thumb"+str(x[T_FRAME_POS])].show()
+				self.Thumbnaillist.append([0, x[T_FRAME_POS], x[T_THUMB], x[T_FILENAME]])
+				
+		#Get Thumbnails
+		self.thumbcount = -1
+		self.getThumbnail()
+		
+	def getThumbnail(self):
+		self.thumbcount += 1
+		openurl = self.Thumbnaillist[self.thumbcount][2]
+		self.thumbfile = "/tmp/"+str(self.Thumbnaillist[self.thumbcount][3])+".jpg"
+		
+		if fileExists(self.thumbfile, 'r'):
+			self.gotThumbnail()
+		else:
+			downloadPage(openurl, self.thumbfile).addCallback(self.gotThumbnail).addErrback(self.showThumbError)
+		
+	def gotThumbnail(self, txt=""):
+		if self.thumbload.getThumbnail(self.thumbfile) == 1:
+			if self.thumbcount+1 < len(self.Thumbnaillist):
+				self.getThumbnail()
+				
+	def showThumbPixmap(self, picInfo=None):
+		ptr = self.thumbload.getData()
+		if ptr != None:
+			self["thumb" + str(self.thumbcount)].instance.setPixmap(ptr.__deref__())
+			self["thumb" + str(self.thumbcount)].show()
+		
+		if self.thumbcount+1 < len(self.Thumbnaillist):
+			self.getThumbnail()
+
+	def showThumbError(self, error):
+		if self.thumbcount+1 < self.thumbsC:
+			self.getThumbnail()
+			
+	def key_left(self):
+		self.index -= 1
+		if self.index < 0:
+			self.index = self.maxentry
+		self.paintFrame()
+		
+	def key_right(self):
+		self.index += 1
+		if self.index > self.maxentry:
+			self.index = 0
+		self.paintFrame()
+		
+	def key_up(self):
+		self.index -= self.thumbsX
+		if self.index < 0:
+			self.index = self.maxentry
+		self.paintFrame()
+		
+	def key_down(self):
+		self.index += self.thumbsX
+		if self.index > self.maxentry:
+			self.index = 0
+		self.paintFrame()
+		
+	def KeyOk(self):
+		self.session.open(TrailerInfoScreen, self.trailerlist[self.index][T_URL])
+
+	def error(self, error):
+		self.session.open(MessageBox,("UNEXPECTED ERROR:\n%s") % (error),  MessageBox.TYPE_INFO)
+
+	def Exit(self):
+		self.session.nav.playService(self.oldService)
+		self.close()
+
+#------------------------------------------------------------------------------------------
+	
+class TrailerInfoScreen(Screen):
+	def __init__(self, session, trailerurl):
+		Screen.__init__(self, session)
+		
+		size_w = getDesktop(0).size().width()
+		size_h = getDesktop(0).size().height()
+		
+		print "size_w", size_w 
+		print "size_h", size_h
+#		size_w = 1224
+#		size_h = 876
+#		print "size_w", size_w 
+#		print "size_h", size_h
+
+				
+		self.skin = "<screen position=\"0,0\" size=\"" + str(size_w) + "," + str(size_h) + "\" flags=\"wfNoBorder\" > \
+			<eLabel position=\"0,0\" zPosition=\"0\" size=\""+ str(size_w) + "," + str(size_h) + "\" backgroundColor=\"#000000\" /> \
+			<widget name=\"trailerimg\" position=\"700,20\" zPosition=\"2\" size=\"270,350\" alphatest=\"on\" /> \
+			<widget source=\"trailertitle\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"center\" halign=\"left\" position=\"20,20\" size=\"1000,50\" font=\"Regular;30\" backgroundColor=\"#080B0A\" foregroundColor=\"#919FBB\" /> \
+			<widget source=\"trailertext\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"top\" halign=\"left\" position=\"50,90\" size=\"630,400\" font=\"Regular;20\" backgroundColor=\"#080B0A\" foregroundColor=\"#919FBB\" /> \
+			<widget source=\"directortxt\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"top\" halign=\"left\" position=\"700,390\" size=\"230,60\" font=\"Regular;18\" backgroundColor=\"#080B0A\" foregroundColor=\"#919FBB\" /> \
+			<widget source=\"director\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"top\" halign=\"left\" position=\"780,390\" size=\"230,60\" font=\"Regular;18\" backgroundColor=\"#080B0A\" foregroundColor=\"#919FBB\" /> \
+			<widget source=\"releasetxt\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"top\" halign=\"left\" position=\"700,430\" size=\"230,60\" font=\"Regular;18\" backgroundColor=\"#080B0A\" foregroundColor=\"#919FBB\" /> \
+			<widget source=\"release\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"top\" halign=\"left\" position=\"780,430\" size=\"230,60\" font=\"Regular;18\" backgroundColor=\"#080B0A\" foregroundColor=\"#919FBB\" /> \
+			<widget source=\"casttxt\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"top\" halign=\"left\" position=\"700,470\" size=\"230,80\" font=\"Regular;18\" backgroundColor=\"#080B0A\" foregroundColor=\"#919FBB\" /> \
+			<widget source=\"cast\" transparent=\"1\" render=\"Label\" zPosition=\"2\" valign=\"top\" halign=\"left\" position=\"780,470\" size=\"230,80\" font=\"Regular;18\" backgroundColor=\"#080B0A\" foregroundColor=\"#919FBB\" /> \
+			<eLabel backgroundColor=\"green\" position=\"326,555\" size=\"140,3\" zPosition=\"5\"/> \
+			<widget name=\"key_green\" position=\"326,526\" zPosition=\"5\" size=\"140,40\" font=\"Regular;18\" valign=\"center\" halign=\"center\" transparent=\"1\" /> \
+			</screen>"
+		
+
+		self["trailertitle"] = StaticText("")		
+		self["trailertext"] = StaticText("")
+		self["trailerimg"] = Pixmap()
+
+		self["director"] = StaticText("")
+		self["cast"] = StaticText("")
+		self["release"] = StaticText("")
+		self["directortxt"] = StaticText("Directors:")
+		self["casttxt"] = StaticText("Cast:")
+		self["releasetxt"] = StaticText("Release:")
+		
+		self["key_green"] = Button(_("Watch Trailer"))
+
+		self.url = trailerurl
+		self.trailerurl = ""
+		
+		self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
+		{
+			"cancel": self.Exit,
+			"green": self.GetTrailerList
+		}, -1)
+		
+		self.onFirstExecBegin.append(self.GetTrailerInfo)
+
+	def GetTrailerInfo(self):
+		try:
+			getPage(self.url).addCallback(self.GotTrailerInfo).addErrback(self.error)
+		except Exception, e:
+			print "Apple Trailer Info: Could not download TrailerInfo"
+
+	def GotTrailerInfo(self, html):
+		tmp_infolines = html.splitlines()
+		
+		self["trailertitle"].setText(tmp_infolines[0])
+		self["trailertext"].setText(tmp_infolines[2])
+		self["release"].setText(tmp_infolines[4])
+		self["director"].setText(tmp_infolines[6])
+		self["cast"].setText(tmp_infolines[7])
+		
+		self.trailerurl = tmp_infolines[1]
+		
+		downloadPage(tmp_infolines[3], "/tmp/poster.jpg").addCallback(self.downloadPosterCallback).addErrback(self.error)
+		
+	def downloadPosterCallback(self, txt=""):
+		sc = AVSwitch().getFramebufferScale()
+		self.picload = ePicLoad()
+		self.picload.PictureData.get().append(self.showPosterPixmap)
+		self.picload.setPara((270, 350, sc[0], sc[1], False, 1, "#00000000"))
+		self.picload.startDecode("/tmp/poster.jpg")
+		
+	def showPosterPixmap(self, picInfo=None):
+		ptr = self.picload.getData()
+		if ptr != None:
+			self["trailerimg"].instance.setPixmap(ptr.__deref__())
+			self["trailerimg"].show()
+			
+	def error(self, error):
+		self.session.open(MessageBox,("UNEXPECTED ERROR:\n%s") % (error),  MessageBox.TYPE_INFO)
+
+	def trailerSelectCallback(self, answer):
+		if answer is not None:
+			self.session.open(PlayTrailer, answer[1], answer[2])
+		
+	def GetTrailerList(self):
+		openurl = "http://www.dreambox-plugins.de/feeds/appletrailer.php?movietrailers="+self.trailerurl
+		try:
+			getPage(openurl).addCallback(self.GotTrailerList).addErrback(self.error)
+		except Exception, e:
+			print "Apple Trailer Info: Could not download Movie TrailerList"
+
+	def GotTrailerList(self, html):
+		content = html.split("\n")
+		entrylist = []
+		
+		for line in content:
+			if '<-->' in line:
+				tmpline = line.split("<-->")
+				title = tmpline[0]
+				url = tmpline[1]
+				filename = tmpline[2]
+				
+				entrylist.append((title,url,filename))
+				
+		self.session.openWithCallback(self.trailerSelectCallback, ChoiceBox, title=_("Select a Trailer:"), list=entrylist)
+
+	def Exit(self):
+		self.close()
+
+#------------------------------------------------------------------------------------------
+
+
+class PlayTrailer(Screen):
+	skin = """
+		<screen position="center,center" size="400,280" title="Caching ..." >
+			<widget source="label_filename" transparent="1" render="Label" zPosition="2" position="10,10" size="380,20" font="Regular;20" />
+			<widget source="label_destination" transparent="1" render="Label" zPosition="2" position="10,35" size="380,20" font="Regular;20" />
+			<widget source="label_filesize" transparent="1" render="Label" zPosition="2" position="10,60" size="380,20" font="Regular;20" />
+			<widget source="label_localsize" transparent="1" render="Label" zPosition="2" position="10,85" size="380,20" font="Regular;20" />
+			<widget source="label_speed" transparent="1" render="Label" zPosition="2" position="10,110" size="380,20" font="Regular;20" />
+			<widget source="label_timeleft" transparent="1" render="Label" zPosition="2" position="10,135" size="380,20" font="Regular;20" />
+			<widget source="label_progress" transparent="1" render="Label" zPosition="2" position="10,160" size="380,20" font="Regular;20" />
+			<widget name="activityslider" position="10,210" size="380,20" zPosition="3" transparent="0" />
+			<widget name="key_green" position="50,235" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+			<widget name="key_red" position="200,235" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+			<eLabel backgroundColor="green" position="50,270" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="200,270" size="140,3" zPosition="5"/>
+		</screen>"""
+
+	def __init__(self, session, url, filename):
+		self.skin = PlayTrailer.skin
+		Screen.__init__(self, session)
+
+		self.url = url
+		self.filename = filename
+#		self.destination = "/media/net/download/appletrailers/"
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+		self.destination = str(imdbmain) + "/appletrailers/"
+		if not pathExists(self.destination):
+			createDir(self.destination)
+		
+
+		self.streamactive = False
+		
+		self.container=eConsoleAppContainer()
+		self.container.appClosed.append(self.copyfinished)
+
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+		
+		self.BgFileEraser = eBackgroundFileEraser.getInstance()
+		
+		try:
+			req = Request(self.url)
+			req.add_header('User-agent','Quicktime/7.6.4')
+			usock = urlopen(req)
+			filesize =  usock.info().get('Content-Length')
+		except Exception, e:
+			filesize = 0
+			
+		if filesize is None:
+			filesize = 0
+		
+		self.filesize = float(filesize) # in bytes
+
+		self.lastlocalsize = 0
+		
+		self["key_green"] = Button(_("Play now"))
+		self["key_red"] = Button(_("Cancel"))
+		
+		self["label_filename"] = StaticText("File: %s" % (self.filename))
+		self["label_destination"] = StaticText("Destination: %s" % (self.destination))
+		self["label_filesize"] = StaticText("Filesize: %s MiB" % (round(((self.filesize / 1024.0) / 1024.0), 2)))
+		self["label_localsize"] = StaticText("Cached: N/A")
+		self["label_progress"] = StaticText("Progress: N/A")
+		self["label_speed"] = StaticText("Speed: N/A")
+		self["label_timeleft"] = StaticText("Time left: N/A")
+		
+		self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
+		{
+			"cancel": self.exit,
+			"ok": self.okbuttonClick,
+			"red": self.exit,
+			"green": self.playfile
+		}, -1)
+
+		self.StatusTimer = eTimer()
+		self.StatusTimer.callback.append(self.UpdateStatus)
+
+		self.activityslider = Slider(0, 100)
+		self["activityslider"] = self.activityslider
+		
+		if filesize is not None:
+			self.onLayoutFinish.append(self.copyfile)
+		
+	def okbuttonClick(self):
+		self.StatusTimer.start(5000, True)
+		self.UpdateStatus()
+		
+	def UpdateStatus(self):
+		if fileExists(self.destination + self.filename, 'r'):
+			self.localsize = os.path.getsize(self.destination + self.filename)
+		else:
+			self.localsize = 0
+		
+		if self.filesize > 0:
+			self.progressperc = round((self.localsize / self.filesize) * 100, 2)
+		else:
+			self.progressperc = 0
+		
+		if int(self.progressperc) > 0:
+			self["activityslider"].setValue(int(self.progressperc))
+		
+		if self.lastlocalsize != 0:
+			transferspeed = round(((self.localsize - self.lastlocalsize) / 1024.0) / 5, 0)
+			kbytesleft = round((self.filesize - self.localsize) / 1024.0,0)
+			if transferspeed > 0:
+				timeleft = round((kbytesleft / transferspeed) / 60,2)
+			else:
+				timeleft = 0
+		else:
+			transferspeed = 0
+			kbytesleft = 0
+			timeleft = 0
+		
+		self.lastlocalsize = self.localsize
+		
+		self["label_progress"].setText("Progress: " + str(self.progressperc) + "%")
+		self["label_localsize"].setText("Cached: %s MiB" % (round(((self.localsize / 1024.0) / 1024.0), 2)))
+		self["label_speed"].setText("Speed: " + str(transferspeed) + " KBits")
+		self["label_timeleft"].setText("Time left: " + str(timeleft) + " Minutes")
+		self.StatusTimer.start(5000, True)
+		
+	def copyfile(self):
+		cmd = "wget --header='User-Agent: Quicktime/7.6.4' -cq '%s' -O '%s' &" % (self.url, self.filename)
+		if fileExists(self.destination + self.filename, 'r'):
+			self.localsize = os.path.getsize(self.destination + self.filename)
+			if self.localsize >= self.filesize:
+				cmd = "echo File already downloaded! Skipping download ..."
+				#self.copyfinished(True)
+				#return
+				
+		self.StatusTimer.start(1000, True)
+		self.streamactive = True
+		
+		self.container.setCWD(self.destination)
+		self.container.execute(cmd)
+
+	def copyfinished(self,retval):
+		self.streamactive = False
+		self["label_progress"].setText("Progress: 100%")
+		self["activityslider"].setValue(100)
+		self.playfile()
+
+	def showFileInfo(self):
+		print "skip"
+		
+	def playfile(self):
+		self.StatusTimer.stop()
+#		self.session.openWithCallback(self.stopplayback, MoviePlayer, eServiceReference(0x1001, 0, self.destination + self.filename))
+#		self.session.openWithCallback(self.leaveMoviePlayer, MoviePlayerObi, currref, self.showFileInfo, self.playlist)	
+		self.playlist = []
+		from Plugins.Extensions.MediaCenter.MC_VideoPlayer import MoviePlayerObi
+		self.session.openWithCallback(self.stopplayback, MoviePlayerObi, eServiceReference(0x1001, 0, self.destination + self.filename), self.showFileInfo, self.playlist)		
+
+	def stopplayback(self,input = None):
+		self.UpdateStatus()
+
+	def exit(self):
+		self.session.openWithCallback(self.exitAnswer, MessageBox, _("Playback stopped. Delete the File from HDD now?"))
+				
+	def exitAnswer(self, result):
+		self.StatusTimer.stop()
+		
+		if self.streamactive == True:
+			os.system("killall wget")
+			
+		if result is not None and result:
+			print "AppleTrailers: Delete File " + self.destination + self.filename
+			self.BgFileEraser.erase(self.destination + self.filename)
+
+		#self.session.nav.stopService()
+		self.session.nav.playService(self.oldService)
+		self.close()
+		
+#------------------------------------------------------------------------------------------
+# 
+# def start(session, **kwargs):
+# 	session.open(TrailerListScreen)
+# 
+# def Plugins(**kwargs):
+# 	return PluginDescriptor(name="Apple Movie Trailers", description="Watch Apple Movie Trailers on your TV!", where=[PluginDescriptor.WHERE_PLUGINMENU], fnc=start)
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_AudioPlayer.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_AudioPlayer.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_AudioPlayer.py	(revision 9331)
@@ -0,0 +1,1966 @@
+from __init__ import _
+from enigma import eTimer, iPlayableService, iServiceInformation, eServiceReference, eServiceCenter, iServiceKeys, eConsoleAppContainer, evfd, eWidget, eRect, ePicLoad
+from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
+from Components.AVSwitch import AVSwitch
+from Components.Button import Button
+from Components.config import config
+from Components.config import *
+from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.Console import Console
+from Components.FileList import FileList
+from Components.Harddisk import harddiskmanager
+from Components.Label import Label
+from Components.MediaPlayer import PlayList
+from Components.MenuList import MenuList
+from Components.Pixmap import Pixmap, MovingPixmap
+from Components.Playlist import PlaylistIOInternal, PlaylistIOM3U, PlaylistIOPLS
+from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
+from Components.ServicePosition import ServicePositionGauge
+from Components.Sources.List import List
+from os import path as os_path, remove as os_remove, listdir as os_listdir, system
+from Plugins.Plugin import PluginDescriptor
+from RecordTimer import RecordTimer
+from Screens.HelpMenu import HelpableScreen
+from Screens.InfoBar import MoviePlayer
+from Screens.InfoBarGenerics import InfoBarSeek, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarShowHide, InfoBarNotifications
+from Screens.MessageBox import MessageBox
+from Screens.NetworkSetup import *
+from Screens.Screen import Screen
+from Screens.ServiceInfo import ServiceInfoList, ServiceInfoListEntry
+from ServiceReference import ServiceReference
+from Tools.Directories import resolveFilename, fileExists, pathExists, createDir, SCOPE_MEDIA, SCOPE_SKIN_IMAGE, SCOPE_PLAYLIST, SCOPE_CONFIG
+
+import os
+import random
+import re
+
+from MC_FileList import FileList
+from GlobalFunctions import Showiframe, MC_ChoiceBox, MC_MessageBox, MC_AudioInfoView
+from Plugins.Extensions.Aafpanel.plugin import command
+
+config.plugins.mc_ap = ConfigSubsection()
+config.plugins.mc_ap.showMvi = ConfigYesNo(default=True)
+config.plugins.mc_ap.mvi_delay = ConfigInteger(default=30, limits=(5, 300))
+config.plugins.mc_ap.startmvi_delay = ConfigInteger(default=10, limits=(1, 999))
+config.plugins.mc_ap.showPreview = ConfigYesNo(default=True)
+config.plugins.mc_ap.preview_delay = ConfigInteger(default=5, limits=(1, 30))
+config.plugins.mc_ap.lastDir = ConfigText(default=resolveFilename(SCOPE_MEDIA))
+config.plugins.mc_ap.lastPlaylist = ConfigText(default="AudioPlayer")
+config.plugins.mc_all = ConfigSubsection()
+config.plugins.mc_all.showDimmer = ConfigYesNo(default=True)
+config.plugins.mc_all.dimmer_delay = ConfigInteger(default=60, limits=(10, 90))
+config.plugins.mc_ap_autoSleep = ConfigSubsection()
+config.plugins.mc_ap_autoSleep.enabled = ConfigYesNo(default=False)
+config.plugins.mc_ap_autoSleep.delay = ConfigInteger(default=5, limits=(1, 180))
+
+views = [('default',_("default")),('small',_("small")),('details',_("details")),('big',_("big"))]
+config.plugins.mc_ap_view = ConfigSubsection()
+config.plugins.mc_ap_view.enabled = ConfigSelection(views)
+tmpview = config.plugins.mc_ap_view.enabled.getValue()
+
+sorts = [('default',_(" by default")),('alpha',_(" by alphabet")), ('alphareverse',_("by alphabet backward")),('date',_("by date")),('datereverse',_("by date backward")),('size',_("by size")),('sizereverse',_("by size backward"))]
+config.plugins.mc_ap_sort = ConfigSubsection()
+config.plugins.mc_ap_sort.enabled = ConfigSelection(sorts)
+tmpsort = config.plugins.mc_ap_sort.enabled.getValue()
+
+config.plugins.mc_ap_screensaver = ConfigSubsection()
+config.plugins.mc_ap_screensaver.value = ConfigText(default = "/defaulttext/")
+
+config.plugins.mc_imdb = ConfigSubsection()
+config.plugins.mc_imdb.savedir = ConfigText(default = "/var/swap")
+
+config.plugins.mc_aprepeat = ConfigSubsection()
+config.plugins.mc_aprepeat.enabled = ConfigYesNo(default=False)
+
+saverCK = None
+dimmerCK = None
+pauseCK = False
+
+index = 0
+	
+class MyPlayList(PlayList):
+	def __init__(self):
+		PlayList.__init__(self)
+	def PlayListShuffle(self):
+		random.shuffle(self.list)
+		self.l.setList(self.list)
+		self.currPlaying = -1
+		#self.oldCurrPlaying = -1
+
+class MC_AudioPlayer(Screen, HelpableScreen, InfoBarSeek):
+	def __init__(self, session):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		global currentview
+		Screen.__init__(self, session)
+		HelpableScreen.__init__(self)
+		InfoBarSeek.__init__(self, actionmap = "MediaPlayerSeekActions")
+		
+		self.showiframe = Showiframe()
+		self.container=eConsoleAppContainer()
+		self.container.appClosed.append(self.finished)
+
+		self.rarFS = None
+		self.isoFS = None
+		self.imgFS = None
+		self.smbFS = None
+		self.upnpFS = None
+		self.ftpFS = None
+		self.isoMountDir = None
+		self.imgMountDir = None
+		self.rarMountDir = None
+	
+		self.mviList = []
+		self.mviIndex = 0
+		self.mviLastIndex = -1
+		self.isVisible = True
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+		self.skindir = config.plugins.mc_globalsettings.currentskin.path.value.split('skin.xml')[0]
+		self.playlistparsers = {}
+		self.addPlaylistParser(PlaylistIOM3U, "m3u")
+		self.playlist = MyPlayList()
+		self["playlist"] = self.playlist
+		self["Lplaylist"] = Label(_("playlist ") + config.plugins.mc_ap.lastPlaylist.value + ':')
+		self.coverArtFileName = ""
+		self["PositionGauge"] = ServicePositionGauge(self.session.nav)
+
+		self["key_red"] = Button(_("Sorting"))
+		self["key_green"] = Button(_("View"))
+		self["key_yellow"] = Button(_("Random"))
+		self["key_blue"] = Button(_("Settings"))
+		self["fileinfo"] = Label()
+		self["coverArt"] = MediaPixmap()
+		self["currentfolder"] = Label()
+		self["currentfavname"] = Label()
+		self.curfavfolder = -1
+		self["play"] = Pixmap()
+		self["stop"] = Pixmap()
+		self["curplayingtitle"] = Label()
+		self.currPlaying = 0
+		self.PlaySingle = 0
+		self.PlaySingleRUN = 0
+		self.PlayAll = 0
+		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+			{
+				iPlayableService.evEOF: self.doEOF,
+				iPlayableService.evStopped: self.StopPlayback,
+				iPlayableService.evUser+11: self.__evDecodeError,
+				iPlayableService.evUser+12: self.__evPluginError,
+				iPlayableService.evUser+13: self["coverArt"].embeddedCoverArt
+			})
+
+		self["actions"] = HelpableActionMap(self, "MC_AudioPlayerActions",
+			{
+				"ok": (self.KeyOk, "Play selected file"),
+				"left": (self.leftUp, "List Top"),
+				"right": (self.rightDown, "List Bottom"),
+				"up": (self.up, "List up"),
+				"down": (self.down, "List down"),
+				"video": (self.visibility, "Show / Hide Player"),
+				"red": (self.sort, "Sorting"),
+				"green": (self.view, "View"),			
+				"yellow": (self.Shuffle, "Random"),
+				"blue": (self.Settings, "Settings"),
+			}, -2)
+		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
+			{
+				"cancel": (self.Exit, "Exit Audio Player"),
+			}, -2)
+		self["InfobarShowHideActions"] = HelpableActionMap(self, "InfobarShowHideActions",
+			{
+				"toggleShow": (self.showFileInfo, "Show File Info"),
+			}, -2)
+		self["MediaPlayerActions"] = HelpableActionMap(self, "MediaPlayerActions",
+			{
+				"stop": (self.StopPlayback, "Stop Playback"),
+				"pause": (self.PausePlayback, "Pause Playback"),
+				"nextBouquet": (self.nextFile, "Play Next File"),
+				"prevBouquet": (self.prevFile, "Play Prev File"),
+			}, -2)
+
+		if config.plugins.mc_globalsettings.setstablestartdir.value != "no": # default directory set in global settings
+			currDir = config.plugins.mc_globalsettings.setstablestartdir.value
+		else:
+			currDir = config.plugins.mc_ap.lastDir.value
+
+		if currDir == "devicelist" or not pathExists(currDir):
+			currDir = None
+
+		currentview = config.plugins.mc_ap_view.enabled.getValue()
+			
+		if currentview == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+		elif currentview == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+		elif currentview == "small":			
+			art = 0
+			itemheight = 20
+			fontsize = 15
+		else: # default
+			art = 1
+			itemheight = 23
+			fontsize = 18
+
+		sort = config.plugins.mc_ap_sort.enabled.getValue()
+
+		self["currentfolder"].setText(str(currDir))
+		self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(rar|iso|img|mp2|mp3|wav|wave|wma|m4a|jpg|png|ogg|ra|flac)", itemheight = itemheight, fontsize = fontsize, art = art, sort = sort)
+		self["filelist"] = self.filelist
+		self.currList = "filelist"
+		self["thumbnail"] = Pixmap()
+		evfd.getInstance().vfd_write_string("AUDIOPLAYER")
+		self.DimmerTimer = eTimer()
+		self.DimmerTimer.callback.append(self.showDimmer)
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+		self.MviTimer = eTimer()
+		self.MviTimer.callback.append(self.showBackgroundMVI)
+		self.BlinkingPlayIconTimer = eTimer()
+		self.BlinkingPlayIconTimer.callback.append(self.BlinkingPlayIcon)
+		self.blinking=False
+		if config.plugins.mc_ap.showMvi.getValue() == True:
+			self.getMVI()
+		self.FileInfoTimer = eTimer()
+		self.FileInfoTimer.callback.append(self.updateFileInfo)
+		self.MviStart = eTimer()
+		self.MviStart.callback.append(self.showBackgroundMVI)
+
+		self.playlistIOInternal = PlaylistIOInternal()
+		list = self.playlistIOInternal.open(resolveFilename(SCOPE_PLAYLIST, config.plugins.mc_ap.lastPlaylist.value + ".e2pls"))
+		if list:
+			for x in list:
+				self.playlist.addFile(x.ref)
+			self.playlist.updateList()
+
+		Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control"))
+		self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+
+	def checkSkipShowHideLock(self):
+		self.updatedSeekState()
+
+	def updatedSeekState(self):
+		if self.seekstate == self.SEEK_STATE_PAUSE:
+			self.playlist.pauseFile()
+		elif self.seekstate == self.SEEK_STATE_PLAY:
+			self.playlist.playFile()
+		elif self.isStateForward(self.seekstate):
+			self.playlist.forwardFile()
+		elif self.isStateBackward(self.seekstate):
+			self.playlist.rewindFile()
+
+	def Shuffle(self):
+		if self.currPlaying == 1:
+			return
+		if self.debug != "off":
+			print "[MC_AudioPlayer] Shuffle filelist" 
+		sort = "shuffle"
+		self.filelist.refresh(fontsize, itemheight, art, sort)
+		
+	def addPlaylistParser(self, parser, extension):
+		self.playlistparsers[extension] = parser
+		
+	def up(self):
+		self.MviStart.stop()
+		self.MviTimer.stop()
+		self.DimmerTimer.stop()
+
+		if config.plugins.mc_ap_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] stop autoSleep %s min" % (config.plugins.mc_ap_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		if self.currList == "filelist":
+			print "1"
+			self["filelist"].up()
+		else:
+			self["playlist"].up()
+#		Console().ePopen(('stfbcontrol a 255;killall infobox'))
+
+		global saverCK
+		global dimmerCK
+		if saverCK == "infobox":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK
+			Console().ePopen(('killall infobox'))		
+			Console().ePopen(('stfbcontrol a 255'))
+		elif saverCK == "mvi":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK		
+			self.showiframe.finishStillPicture()
+			Console().ePopen(('stfbcontrol a 255'))
+		elif dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+ 		if config.plugins.mc_ap.showMvi.getValue() and self.currPlaying == 1:
+ 			self.MviStart.start(config.plugins.mc_ap.startmvi_delay.getValue() * 1000, True)
+
+	def down(self):
+ 		self.MviStart.stop()
+ 		self.MviTimer.stop()
+		self.DimmerTimer.stop()
+
+		if config.plugins.mc_ap_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] stop autoSleep %s min" % (config.plugins.mc_ap_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		if self.currList == "filelist":
+			self["filelist"].down()
+		else:
+			self["playlist"].down()
+		self.showiframe.finishStillPicture()
+
+		global saverCK
+		global dimmerCK
+		if saverCK == "infobox":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK
+			Console().ePopen(('killall infobox'))		
+			Console().ePopen(('stfbcontrol a 255'))
+		elif saverCK == "mvi":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK		
+			self.showiframe.finishStillPicture()
+			Console().ePopen(('stfbcontrol a 255'))
+		elif dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+ 		if config.plugins.mc_ap.showMvi.getValue() and self.currPlaying == 1:
+ 			self.MviStart.start(config.plugins.mc_ap.startmvi_delay.getValue() * 1000, True)
+						
+		filename = self["filelist"].getFilename()
+		if self.debug != "off":
+			print "[MC_AudioPlayer] filename", filename
+
+		global running
+		running = "None"
+		
+		if filename == ("/media/upnp/upnp-automount/"):
+			upnpck = open("/proc/mounts", "r")
+			mount = upnpck.read()
+			upnpck.close()
+			if mount.find("upnp-automount") is -1:
+				if self.debug != "off":
+					print "[MC_AudioPlayer] MOUNT UPNP obi"
+				running = "upnp"
+				self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)
+				self.container.execute('/bin/djmount -o nonempty /media/upnp/upnp-automount')
+				self.filelist.refresh(fontsize, itemheight, art, sort)
+
+		if filename == ("/media/smb/smb-automount/"):
+			if pathExists("/var/usr/lib/libsmbclient.so.0") or pathExists("/var/swap/lib/libsmbclient.so.0") or pathExists("/lib/libsmbclient.so.0"):
+				smbck = open("/proc/mounts", "r")
+				mount = smbck.read()
+				smbck.close()
+				if mount.find("smb-automount") is -1:
+					if self.debug != "off":
+						print "[MC_AudioPlayer] MOUNT SMB obi"
+					running = "smb"
+					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)
+					self.container.execute('/bin/fusesmb -o nonempty /media/smb/smb-automount')
+					self.filelist.refresh(fontsize, itemheight, art, sort)
+			else:
+				self.session.open(MC_MessageBox, 'Error, please install ipk swapnetwork/libsmbclient over Pluginbrowser !', MC_MessageBox.TYPE_ERROR)
+
+		if filename == ("/media/ftp/ftp-automount/"):
+			if pathExists("/var/bin/ftpfs.sh"):
+				ftpck = open("/proc/mounts", "r")
+				mount = ftpck.read()
+				ftpck.close()						
+				if mount.find("ftp-automount") is -1:
+					if self.debug != "off":
+						print "[MC_AudioPlayer] MOUNT FTP obi"
+					running = "ftp"
+					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+					self.container.execute('/var/bin/ftpfs.sh')
+					self.filelist.refresh(fontsize, itemheight, art, sort)
+			else:
+				self.session.open(MC_MessageBox, 'Error, touch /var/bin/ftpfs.sh and edit this with your entrys !', MC_MessageBox.TYPE_ERROR)
+							
+	def finished(self,retval):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] finished retval", retval
+		self.filelist.refresh(fontsize, itemheight, art, sort)
+		if running  is not None:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] %s mounting to /media/%s/%s-automount" % (running,running,running)
+			self.session.open(MC_MessageBox, '%s Successful mounted, please insert the directory.' % (running), MC_MessageBox.TYPE_INFO, timeout=5)
+			self.mountingmsg.close(True)
+		else:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] mounting error ! (%s)" % (running)
+			self.session.open(MC_MessageBox, '%s Mounting, error !' % (running), MC_MessageBox.TYPE_INFO, timeout=4)
+			self.mountingmsg.close(True)
+			
+	def leftUp(self):
+ 		self.MviStart.stop()
+ 		self.MviTimer.stop()
+		self.DimmerTimer.stop()
+
+		if config.plugins.mc_ap_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] stop autoSleep %s min" % (config.plugins.mc_ap_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		self["filelist"].pageUp()
+		self.showiframe.finishStillPicture()
+		
+		global saverCK
+		global dimmerCK
+		if saverCK == "infobox":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK
+			Console().ePopen(('killall infobox'))		
+			Console().ePopen(('stfbcontrol a 255'))
+		elif saverCK == "mvi":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK		
+			self.showiframe.finishStillPicture()
+			Console().ePopen(('stfbcontrol a 255'))
+		elif dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+ 		if config.plugins.mc_ap.showMvi.getValue() and self.currPlaying == 1:
+ 			self.MviStart.start(config.plugins.mc_ap.startmvi_delay.getValue() * 1000, True)
+						
+	def rightDown(self):
+ 		self.MviStart.stop()
+ 		self.MviTimer.stop()
+		self.DimmerTimer.stop()
+
+		if config.plugins.mc_ap_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] stop autoSleep %s min" % (config.plugins.mc_ap_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		self["filelist"].pageDown()
+		self.showiframe.finishStillPicture()
+
+		global saverCK
+		global dimmerCK
+		if saverCK == "infobox":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK
+			Console().ePopen(('killall infobox' ))		
+			Console().ePopen(('stfbcontrol a 255'))
+		elif saverCK == "mvi":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK		
+			self.showiframe.finishStillPicture()
+			Console().ePopen(('stfbcontrol a 255'))
+		elif dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+ 		if config.plugins.mc_ap.showMvi.getValue() and self.currPlaying == 1:
+ 			self.MviStart.start(config.plugins.mc_ap.startmvi_delay.getValue() * 1000, True)
+						
+	def showDimmer(self):
+		global dimmerCK
+		if config.plugins.mc_all.showDimmer.getValue():
+			dimmerCK = True
+			Console().ePopen(('stfbcontrol a 80'))
+
+	def getActivSwap(self):
+		fp = tryOpen('/proc/swaps')
+		if fp == '':
+			return 0
+		for tmp in fp.readlines():
+			if tmp.startswith('/'):
+				line = tmp.split()
+				swap = line[0].split('/')
+				size = int(line[2])
+				return (size)
+		return 0
+
+	def finished(self,retval):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] finished retval", retval
+		global currentview
+		global mounting
+
+		currentdir = self.filelist.getCurrentDirectory()
+
+		self.container = eConsoleAppContainer()
+		if mounting is not None:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] %s mounting bind to lastdir" % (mounting)
+				print "str(lastpath)",str(currentdir)
+			if mounting == "rar":
+				self.container.execute('/bin/mount --bind /tmp/rarfs ' + str(currentdir))
+				self.rarMountDir = str(currentdir)
+				self.rarFS = True
+			if mounting == "iso":
+				self.isoFS = True
+				self.isoMountDir = str(currentdir)
+				self.container.execute('/bin/mount --bind /media/dvd ' + str(currentdir))
+			if mounting == "img":
+				self.imgFS = True
+				self.imgMountDir = str(currentdir)
+				self.container.execute('/bin/mount --bind /media/dvd ' + str(currentdir))
+			if mounting == "smb":
+				self.smbFS == True
+			if mounting == "upnp":
+				self.upnpFS == True
+			if mounting == "ftp":
+				self.ftpFS == True
+
+			if self.debug != "off":
+				print "[MC_AudioPlayer] finished: mounting=",mounting
+				print "[MC_AudioPlayer] finished: self.rarFS =",self.rarFS
+				print "[MC_AudioPlayer] finished: self.isoFS =",self.isoFS
+				print "[MC_AudioPlayer] finished: self.imgFS =",self.imgFS
+				print "[MC_AudioPlayer] finished: self.smbFS =",self.smbFS
+				print "[MC_AudioPlayer] finished: self.upnpFS =",self.upnpFS
+				print "[MC_AudioPlayer] finished: self.ftpFS =",self.ftpFS
+				print "[MC_AudioPlayer] finished: self.rarMountDir =",self.rarMountDir
+				print "[MC_AudioPlayer] finished: self.imgMountDir =",self.imgMountDir
+				print "[MC_AudioPlayer] finished: self.isoMountDir =",self.isoMountDir	
+		
+			import time
+			time.sleep(3)
+			self.session.open(MC_MessageBox, '%s Successful closed.' % (mounting), MC_MessageBox.TYPE_INFO, timeout=5)
+			self.mountingmsg.close(True)
+
+			global art
+			global itemheight
+			global fontsize
+			global sort
+			global index
+			if currentview == "cover":
+				index = 0
+				self.filename = self.filelist.getCurrentDirectory()
+				self.firstFrame = False
+				self.GetTrailerList(self.firstFrame,self.filename,sort)	
+			else:
+				self.filelist.refresh(fontsize, itemheight, art, sort)
+
+		else:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] %s mounting error" % (running)
+			self.session.open(MC_MessageBox, '%s Mounting Error !' % (mounting), MC_MessageBox.TYPE_INFO, timeout=5)
+			self.mountingmsg.close(True)
+
+		self.container=eConsoleAppContainer()
+		self.container.appClosed.append(self.finished)
+
+	def KeyOk(self):	
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+		self.filename = self.filelist.getFilename(index)
+		running = "None"
+		if self.debug != "off":
+			print "self.filename",self.filename
+		if self.filename is not None:
+			if self.filename.upper().endswith(".RAR"):
+				if boxversion.upper() == 'UFS910':
+					p1 = self.getActivSwap()
+					if p1 == '' or p1 == '0':
+						if self.debug != "off":
+							print "[MC_AudioPlayer] no swap % kb" % (p1)
+						self.session.open(MC_MessageBox, _('Use this only with SWAP !'), MC_MessageBox.TYPE_ERROR, timeout=5)
+					else:
+						if int(p1) >= int('16000'):
+							if self.debug != "off":
+								print "[MC_AudioPlayer] ufs910 swap ok"
+							swapck = 1 
+						else:
+							if self.debug != "off":
+								print "[MC_AudioPlayer] swap to small %s kb min 15000 kb" % (p1)
+							self.session.open(MC_MessageBox, _('Your Swapsize %s kb is too small! Use min 15000 kb !' % (p1)), MC_MessageBox.TYPE_ERROR, timeout=5)
+				elif boxversion.upper() == 'UFS922':
+					swapck = 1
+				elif boxversion.upper() == 'UFS912':
+					swapck = 1
+				elif boxversion.upper() == 'TF7700':
+					swapck = 1
+				elif boxversion.upper() == 'IPBOX91':
+					swapck = 1
+				elif boxversion.upper() == 'IPBOX900':
+					swapck = 1
+				elif boxversion.upper() == 'IPBOX910':
+					swapck = 1
+				elif boxversion.upper() == 'IPBOX9000':
+					swapck = 1
+				elif boxversion.upper() == 'AT7000':
+					swapck = 1
+				elif boxversion.upper() == 'AT7500':
+					swapck = 1						
+				elif boxversion.upper() == 'AT700':
+					swapck = 1
+				else:
+					self.session.open(MC_MessageBox, _('Your Boxtype %s is not supportet ! message obi on AAF !' % (boxversion)), MC_MessageBox.TYPE_ERROR, timeout=5)
+				if swapck == 1:
+					running = "rar"
+					if self.debug != "off":
+						print "[MC_AudioPlayer] %s file gefunden %s start mounter" % (running,self.filename)			
+					self.mounter(running)
+				else:
+					self.session.open(MC_MessageBox, _('Error! No Swapstick found !'), MC_MessageBox.TYPE_WARNING, timeout=5)
+					
+			elif self.filename.upper().endswith(".IMG"):
+				running = "img"
+				if self.debug != "off":
+					print "[MC_AudioPlayer] %s file gefunden %s start mounter" % (running,self.filename)			
+					print "[MC_AudioPlayer] %s mounting file to /media/dvd" % (running)
+				self.mounter(running)
+				
+			elif self.filename.upper().endswith(".ISO"):
+				running = "iso"
+				if self.debug != "off":
+					print "[MC_AudioPlayer] %s file gefunden %s start mounter" % (running,self.filename)			
+					print "[MC_AudioPlayer] %s mounting file to /media/dvd" % (running)
+				self.mounter(running)
+				
+			else:
+				running = "other"
+				if self.debug != "off":
+					print "[MC_AudioPlayer] %s file gefunden %s start playing" % (running,self.filename)
+				self.playing()
+		else:
+			running = "other"
+			if self.debug != "off":
+				print "[MC_AudioPlayer] %s file gefunden %s start playing" % (running,self.filename)
+			self.playing()
+				
+
+	def mounter(self, running):
+		global mounting
+				
+		if running == "rar":
+			if os.path.exists("/tmp/rarfs") is False:
+				os.makedirs("/tmp/rarfs")
+			if os.path.exists("/sbin/rarfs") is True:
+				if self.debug != "off":
+					print "[MC_AudioPlayer] %s mounting file to /tmp/rarfs" % (running)
+ 				mounting = running
+ 				self.rarFS = True
+				self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+				self.container.execute('/sbin/rarfs ' + str(self.filename) + ' /tmp/rarfs')
+				return
+
+		elif running == "img":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] %s mounting file to /tmp/rarfs" % (running)
+			mounting = running 
+			self.imgFS = True
+
+			self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+			self.container.execute('mount -o loop ' + str(self.filename) + ' /media/dvd')
+
+		elif running == "iso":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] %s mounting file to /tmp/rarfs" % (running)
+			mounting = running 
+			self.isoFS == True
+
+			self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+			self.container.execute('mount ' + str(self.filename) + ' /media/dvd')
+
+		elif running == "smb":
+			if pathExists("/var/usr/lib/libsmbclient.so.0") or pathExists("/var/swap/lib/libsmbclient.so.0") or pathExists("/lib/libsmbclient.so.0"):
+				running = "smb"
+				smbck = open("/proc/mounts", "r")
+				mount = smbck.read()
+				smbck.close()
+				if mount.find("/media/smb") is -1:
+					if self.debug != "off":
+						print "[MC_AudioPlayer] %s mounter started" % (running)			
+						print "[MC_AudioPlayer] %sFS mounting file to /media/smb" % (running)
+					mounting = running 
+					self.smbFS == True
+					
+					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+					self.container.execute('/bin/fusesmb -o nonempty /media/smb')
+			else:
+				self.session.open(MC_MessageBox, 'Error, please install ipk swapnetwork/libsmbclient over Pluginbrowser !', MC_MessageBox.TYPE_ERROR)
+
+		elif running == "upnp":
+			running = "upnp"
+			smbck = open("/proc/mounts", "r")
+			mount = smbck.read()
+			smbck.close()
+			if mount.find("/media/upnp") is -1:
+				if self.debug != "off":
+					print "[MC_AudioPlayer] %s mounter started" % (running)			
+					print "[MC_AudioPlayer] %sFS mounting file to /media/upnp" % (running)
+				mounting = running 
+				self.upnpFS == True
+	
+				self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+				self.container.execute('/bin/djmount -o nonempty /media/upnp')
+
+		elif running == "ftp":
+			if pathExists("/var/bin/ftpfs.sh"):
+				running = "ftp"
+				smbck = open("/proc/mounts", "r")
+				mount = smbck.read()
+				smbck.close()
+				if mount.find("/media/ftp") is -1:
+					if self.debug != "off":
+						print "[MC_AudioPlayer] %s mounter started" % (running)			
+						print "[MC_AudioPlayer] %sFS mounting file to /media/ftp" % (running)
+					mounting = running 
+					self.ftpFS == True
+
+					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+					self.container.execute('/var/bin/ftpfs.sh')
+			else:
+				self.session.open(MC_MessageBox, 'Error, touch /var/bin/ftpfs.sh and edit this with your entrys !', MC_MessageBox.TYPE_ERROR)
+
+		if self.debug != "off":
+			print "[MC_AudioPlayer] mounter: self.rarFS =",self.rarFS
+			print "[MC_AudioPlayer] mounter: self.isoFS =",self.isoFS
+			print "[MC_AudioPlayer] mounter: self.imgFS =",self.imgFS
+			print "[MC_AudioPlayer] mounter: self.smbFS =",self.smbFS
+			print "[MC_AudioPlayer] mounter: self.upnpFS =",self.upnpFS
+			print "[MC_AudioPlayer] mounter: self.ftpFS =",self.ftpFS
+			print "[MC_AudioPlayer] mounter: self.rarMountDir =",self.rarMountDir
+			print "[MC_AudioPlayer] mounter: self.imgMountDir =",self.imgMountDir
+			print "[MC_AudioPlayer] mounter: self.isoMountDir =",self.isoMountDir		
+
+	def umountRefresh(self):
+#		self.session.open(MC_MessageBox, _("Umount %s ! Please wait !" % (self.filename)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+		global fontsize
+		global art
+		global sort
+		global itemheight
+		currentdir = self.filelist.getCurrentDirectory()
+		if self.debug != "off":
+			print "[MC_AudioPlayer] umountRefresh: self.rarFS =",self.rarFS
+			print "[MC_AudioPlayer] umountRefresh: self.isoFS =",self.isoFS
+			print "[MC_AudioPlayer] umountRefresh: self.imgFS =",self.imgFS
+			print "[MC_AudioPlayer] umountRefresh: self.smbFS =",self.smbFS
+			print "[MC_AudioPlayer] umountRefresh: self.upnpFS =",self.upnpFS
+			print "[MC_AudioPlayer] umountRefresh: self.ftpFS =",self.ftpFS
+			print "[MC_AudioPlayer] umountRefresh: self.rarMountDir =",self.rarMountDir
+			print "[MC_AudioPlayer] umountRefresh: self.imgMountDir =",self.imgMountDir
+			print "[MC_AudioPlayer] umountRefresh: self.isoMountDir =",self.isoMountDir
+
+		if self.rarFS is None and self.isoFS is None and self.imgFS is None and self.smbFS is None and self.upnpFS is None and self.ftpFS is None:
+			skip = 1
+			
+		elif self.isoFS is True:
+			self.session.open(MC_MessageBox, _("Umount isofile from %s" % (self.isoMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_AudioPlayer] umount isoFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`"))
+			self.isoFS = None			
+			self.isoMountDir = None
+
+		elif self.imgFS is True:
+			self.session.open(MC_MessageBox, _("Umount imgfile from %s" % (self.imgMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_AudioPlayer] umount imgFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`"))
+			self.imgFS = None		
+			self.imgMountDir = None
+
+		elif self.rarFS is True:
+			self.session.open(MC_MessageBox, _("Umount rarfile from %s" % (self.rarMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_AudioPlayer] umount rarFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep rarfs | grep -v '/dev/' | cut -d ' ' -f3` " + currentdir + "; killall -9 rarfs"))
+			self.rarFS = None
+			self.rarMountDir = None
+
+		else:
+			self.imgFS = None		
+			self.rarFS = None
+			self.isoFS = None			
+			self.smbFS = None		
+			self.upnpFS = None
+			self.ftpFS = None			
+			self.rarMountDir = None
+			self.imgMountDir = None
+			self.isoMountDir = None
+									
+			Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep -v '/dev/' | cut -d ' ' -f3`; /bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`; killall -9 rarfs fusesmb curlftpfs"))
+		
+	def getPlayerIndex(self):
+		global index
+		return index
+						
+	def playing(self, type = None):
+		global currentview
+		global index
+		global speicherliste
+		global showiframeStatus
+		
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+
+		self.filename = self.filelist.getFilename(index)
+		speicherliste = False
+
+		currPlay = self.session.nav.getCurrentService()
+		if self.debug != "off":
+			print "currPlay", currPlay  
+
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		Console().ePopen(('stfbcontrol a 255'))
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+		self.firstFrame = False
+# 		art = 1
+# 		itemheight = 23
+# 		fontsize = 18
+		sort = config.plugins.mc_vp_sort.enabled.getValue()
+		if self.currList == "playlist":
+			selection = self["playlist"].getSelection()
+			self.changeEntry(self.playlist.getSelectionIndex())
+			
+		if self.isVisible == False:
+			self.visibility()
+			return
+
+		if self.filelist.getFilename(index) is not None:
+			if self.filelist.canDescent(index):
+				if currentview == "fullcover":
+#					self.showiframe.finishStillPicture()
+					self.fullcoverView(index)	
+
+				if self.debug != "off":
+					print "[MC_AudioPlayer] changedir from" ,self.filelist.getCurrentDirectory()	
+				self.filelist.descent(index)
+				if self.debug != "off":
+					print "[MC_AudioPlayer] changedir to" ,self.filelist.getCurrentDirectory()	
+
+				if self.isoFS is True:
+					if self.isoMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.isoMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.imgFS is True:
+					if self.imgMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.imgMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.rarFS is True:
+					if self.rarMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.rarMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.filelist.getCurrentDirectory() == "/media/":
+					self.umountRefresh()
+				
+ 				elif self.filelist.getCurrentDirectory() == "/media/smb/":
+					netmounting = "smb"
+					smbck = open("/proc/mounts", "r")
+					mount = smbck.read()
+					smbck.close()
+					if mount.find("/media/smb") is -1:
+						self.smbFS = True
+						self.mounter(netmounting)
+
+				elif self.filelist.getCurrentDirectory() == "/media/upnp/":
+					netmounting = "upnp"
+					upnpck = open("/proc/mounts", "r")
+					mount = upnpck.read()
+					upnpck.close()
+					if mount.find("/media/upnp") is -1:
+						self.upnpFS = True
+						self.mounter(netmounting)
+						
+				elif self.filelist.getCurrentDirectory() == "/media/ftp/":
+					netmounting = "ftp"
+					ftpck = open("/proc/mounts", "r")
+					mount = ftpck.read()
+					ftpck.close()
+					if mount.find("/media/ftp") is -1:
+						self.ftpFS = True
+						self.mounter(netmounting)
+				
+				self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+				if currentview == "cover":
+					index = 0
+					self.firstFrame = False
+					self.GetTrailerList(self.firstFrame,self.filename)
+			else:
+				print "[MC_AudioPlayer] currdir is none" ,self.filelist.getCurrentDirectory()	
+
+				evfd.getInstance().vfd_write_string("PLAY")
+
+	 			self.PlaySingle = 1
+				self.PlaySingleRUN = 1
+	 			if self.currList == "filelist":
+	 				self.PlayService()
+	 			else:
+	 				selection = self["playlist"].getSelection()
+	 				self.changeEntry(self.playlist.getSelectionIndex())
+	 			self.BlinkingPlayIconTimer.stop()
+
+
+		else:
+			if currentview == "fullcover":
+#				self.showiframe.finishStillPicture()
+				self.fullcoverView(index)	
+
+# 			if mounting is not None:
+# 				if self.debug != "off":
+# 					print "playing AudioPlayer not startet this is incorected file/folder umount all!"
+# 				self.umountRefresh()
+
+			if self.filelist.canDescent(index):
+				self.filelist.descent(index)
+				self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+				if currentview == "cover":
+					index = 0
+					self.firstFrame = False	
+					speicherliste = True
+					self.GetTrailerList(self.firstFrame,self.filename,speicherliste)	
+			else:
+				self.session.open(MC_MessageBox, _("Error, filelist empty !!"), type = MC_MessageBox.TYPE_ERROR, timeout = 10)
+				if self.debug != "off":
+					print "[MC_AudioPlayer] filelist empty"
+				
+			self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+			Console().ePopen(('rm -r ' + imdbmain + '/imdb/.Thumbnails'))
+#			Console().ePopen(('rm -r ' + imdbmain + 'imdbfolder/.Thumbnails'))
+			Console().ePopen(('rm -r /var/swap/imdbfolder/.Thumbnails'))
+			Console().ePopen(('rm -r /var/imdbfolder/.Thumbnails'))
+			Console().ePopen(('rm -r /var/usr/local/share/enigma2/extensions/.Thumbnails'))
+
+	def KeyPlayAll(self):
+		if not self["filelist"].canDescent():
+			self.PlaySingle = 0
+			self.PlayAll = 1
+			self.PlayService()
+			self.BlinkingPlayIconTimer.start(1000, True)
+	def PlayService(self):
+	
+		if self.debug != "off":
+			print "[MC_AudioPlayer] PlayService ..."
+#		Console().ePopen(('stfbcontrol a 255;killall infobox'))					
+		global saverCK
+		global dimmerCK
+		if saverCK == "infobox":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK
+			Console().ePopen(('killall infobox'))		
+			Console().ePopen(('stfbcontrol a 255'))
+		elif saverCK == "mvi":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK		
+			self.showiframe.finishStillPicture()
+			Console().ePopen(('stfbcontrol a 255'))
+		elif dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+		
+		self.StopPlayback()
+#		self.filelist.refresh(fontsize, itemheight, art, sort)
+		self.currPlaying = 1
+		self.MviTimer.stop()
+		if self.PlayAll == 1:
+			self.BlinkingPlayIconTimer.start(1000, True)
+		showfile = self.filelist.getFilename()
+		if self.filelist.getFilename() is not None:	
+			showfile = showfile.split('/')[-1]
+			evfd.getInstance().vfd_write_string("%s" % (showfile))
+
+		self.session.nav.playService(self["filelist"].getServiceRef())
+#		self.filelist.refresh(fontsize, itemheight, art, sort)
+				
+		config.plugins.mc_playing.Enabled = ConfigYesNo(default=True)
+		#self.playlist.addFile(self["filelist"].getServiceRef())
+		#self.playlist.updateList()
+		self.FileInfoTimer.start(2000, True)
+		self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_enabled.png")
+		self["stop"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/stop_disabled.png")
+		path = self["filelist"].getFilename()
+		self["coverArt"].updateCoverArt(path)
+
+		filename = self["filelist"].getFilename()
+		if self.debug != "off":
+			print "[MC_AudioPlayer] PlayService filename", filename
+#		if upper is not None:
+#					if filename.upper().endswith(".MP3") or filename.upper().endswith(".OGG") or filename.upper().endswith(".WAV") or filename.upper().endswith(".WAVE") or filename.upper().endswith(".FLAC") or filename.upper().endswith(".M4A"):
+#						return
+
+		if config.plugins.mc_ap.showMvi.getValue():
+			if filename == None:
+				if self.debug != "off":
+					print "[MC_AudioPlayer] nothing to play"
+				self.StopPlayback()
+				if config.plugins.mc_vp_autoSleep.enabled.getValue() == True and self.session.nav.RecordTimer.isRecording() is False:
+					if self.debug != "off":
+						print "[MC_AudioPlayer] set autoSleep %s min" % (config.plugins.mc_ap_autoSleep.delay.getValue())
+					self.DimmerTimer.stop()
+					self.session.nav.SleepTimer.setSleepTime(config.plugins.mc_ap_autoSleep.delay.getValue())
+				else:
+					self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+				return
+
+			if not filename.endswith("/"):
+				if self.debug != "off":
+					print "[MC_AudioPlayer] PlayService start mvi saver"			
+#			if filename.upper().endswith(".MP3") or filename.upper().endswith(".OGG") or filename.upper().endswith(".WAV") or filename.upper().endswith(".WAVE") or filename.upper().endswith(".FLAC") or filename.upper().endswith(".M4A"):
+				self.MviStart.start(config.plugins.mc_ap.startmvi_delay.getValue() * 1000, True)
+			else:
+				if self.debug != "off":
+					print "[MC_AudioPlayer] PlayService start dimmer timer"
+				self.StopPlayback()
+
+				if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+					if self.debug != "off":
+						print "[MC_AudioPlayer] set autoSleep %s min" % (config.plugins.mc_ap_autoSleep.delay.getValue())
+					self.DimmerTimer.stop()
+					self.session.nav.SleepTimer.setSleepTime(config.plugins.mc_ap_autoSleep.delay.getValue())
+				else:
+					self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+				
+								
+	def playServiceRefEntry(self, serviceref):
+		serviceRefList = self.playlist.getServiceRefList()
+		for count in range(len(serviceRefList)):
+			if serviceRefList[count] == serviceref:
+				self.changeEntry(count)
+				break
+	def JumpToFolder(self, jumpto = None):
+		if jumpto is None:
+			return
+		else:
+			self["filelist"].changeDir(jumpto)
+			self["currentfolder"].setText(("%s") % (jumpto))
+	def StartThumb(self):
+		self.session.openWithCallback(self.returnVal, ThumbView, self.filelist.getFileList(), self.filelist.getFilename(), self.filelist.getCurrentDirectory())
+	def showThumb(self):
+		if config.plugins.mc_ap.showPreview.getValue() == False:
+			return
+		if self["filelist"].canDescent():
+			return
+		else:
+			if self["filelist"].getServiceRef() is not None:
+				Console().ePopen(('killall -9 showiframe; stfbcontrol a 255'))					
+				
+				self.MviTimer.stop()
+				self.MviStart.stop()
+				self.filelist.refresh(fontsize, itemheight, art, sort)
+				self.session.nav.stopService()
+				self.session.nav.playService(self["filelist"].getServiceRef())
+				self.currPlaying = 1
+				self["play"].instance.setPixmapFromFile(str(self.skindir) + "images/icons/play_enabled.png")
+				self["stop"].instance.setPixmapFromFile(str(self.skindir) + "images/icons/stop_disabled.png")
+				self.FileInfoTimer.start(2000, True)
+				self.BlinkingPlayIconTimer.start(1000, True)
+				if config.plugins.mc_ap.showMvi.getValue():
+					self.MviStart.start(config.plugins.mc_ap.startmvi_delay.getValue() * 1000, True)
+	def returnVal(self, val=0):
+		if val > 0:
+			for x in self.filelist.getFileList():
+				if x[0][1] == True:
+					val += 1
+			self.filelist.moveToIndex(val)
+	def StartExif(self):
+		if not self.filelist.canDescent():
+			self.session.open(ExifView, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
+	def visibility(self, force=1):
+		if self.isVisible == True:
+			self.isVisible = False
+			self.hide()
+		else:
+			self.isVisible = True
+			self.show()
+	def BlinkingPlayIcon(self):
+		if self.blinking:
+			self.blinking=False
+			self["play"].instance.setPixmapFromFile(str(self.skindir) + "images/icons/play_disabled.png")
+			self.BlinkingPlayIconTimer.start(1000, True)
+		else:
+			self.blinking=True
+			self["play"].instance.setPixmapFromFile(str(self.skindir) + "images/icons/play_enabled.png")
+			self.BlinkingPlayIconTimer.start(1000, True)
+	
+	def PausePlayback(self):
+		global pauseCK
+		if pauseCK == True:
+			self.session.nav.pause(False)
+			pauseCK = False	
+		else:
+			self.session.nav.pause(True)
+			pauseCK = True
+
+	def StopPlayback(self):
+		self.MviStart.stop()
+		self.MviTimer.stop()
+		self.DimmerTimer.stop()
+
+		evfd.getInstance().vfd_write_string("STOP")
+		if self.isVisible == False:
+			self.show()
+			self.isVisible = True
+		if self.session.nav.getCurrentService() is None:
+			return
+		else:
+			self.session.nav.stopService()
+			config.plugins.mc_playing.Enabled = ConfigYesNo(default=False)
+			self["play"].instance.setPixmapFromFile(str(self.skindir) + "images/icons/play_disabled.png")
+			self["stop"].instance.setPixmapFromFile(str(self.skindir) + "images/icons/stop_enabled.png")
+			self.currPlaying = 0
+			self.BlinkingPlayIconTimer.stop()
+			
+			global saverCK
+			global dimmerCK
+			if saverCK == "infobox":
+				if self.debug != "off":
+					print "[MC_AudioPlayer] saverCK=", saverCK
+				Console().ePopen(('killall infobox'))		
+				Console().ePopen(('stfbcontrol a 255'))
+			elif saverCK == "mvi":
+				if self.debug != "off":
+					print "[MC_AudioPlayer] saverCK=", saverCK		
+				self.showiframe.finishStillPicture()
+				Console().ePopen(('stfbcontrol a 255'))
+			elif dimmerCK == True:
+				if self.debug != "off":
+					print "[MC_AudioPlayer] saverCK=", dimmerCK
+				Console().ePopen(('stfbcontrol a 255'))
+			dimmerCK = False
+			self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+			self.session.nav.stopService()
+			evfd.getInstance().vfd_write_string("STOP")
+
+	def getMVI(self):
+		path = config.plugins.mc_ap_screensaver.value.getValue()
+		if self.debug != "off":
+			print "[MC_AudioPlayer] getMVI", path
+		for root, dirs, files in os.walk(path):
+			for name in files:
+				if name.endswith(".mvi"):
+					self.mviList.append(name)
+		if self.debug != "off":
+			print "[MC_AudioPlayer]", self.mviList
+
+	def showBackgroundMVI(self):
+		global saverCK
+		path = config.plugins.mc_ap_screensaver.value.getValue()
+		if self.debug != "off":
+			print "[MC_AudioPlayer] showBackgroundMVI path:", path
+			print "[MC_AudioPlayer] showBackgroundMVI leng mviList:",len(self.mviList)
+		if len(self.mviList) > 0:
+			order = path + self.mviList[self.mviIndex]
+			if self.mviIndex < len(self.mviList) -1:
+				self.mviIndex += 1
+			else:
+				self.mviIndex = 0
+			if self.debug != "off":
+				print "[MC_AudioPlayer] Last MVI Index: " + str(self.mviLastIndex)
+			if self.mviLastIndex != self.mviIndex or self.mviLastIndex == -1:
+				if self.debug != "off":
+					print "[MC_AudioPlayer]", order
+				self.DimmerTimer.stop()
+#				Console().ePopen(("killall -9 showiframe;stfbcontrol a 0;sleep 1; " + order))			
+				Console().ePopen(("stfbcontrol a 0"))	
+				self.showiframe.showStillpicture(order)				
+
+				self.mviLastIndex = self.mviIndex
+				time = config.plugins.mc_ap.mvi_delay.getValue() * 1000
+				self.MviTimer.start(time, True)
+				saverCK = "mvi"
+		elif path == '/defaulttext/':
+			self.showiframe.finishStillPicture()		
+			if self.debug != "off":
+				print "[MC_AudioPlayer] No Background MVI Files found ..."
+				print "[MC_AudioPlayer] start standard screensaver"
+			self.DimmerTimer.stop()
+			time = config.plugins.mc_ap.mvi_delay.getValue() * 1000
+			self.MviTimer.start(time, True)
+			p = command('pidof infobox |wc -w')
+			if not p.isdigit(): p=1
+			if int(p) == 0:
+				filename = self["filelist"].getFilename()
+				if self.debug != "off":
+					print "[MC_AudioPlayer] filename", filename
+				
+				if self.filelist.getFilename() is not None:	
+					name = filename.split('/')[-1]
+				else:
+					name = filename
+				if self.debug != "off":
+					print "[MC_AudioPlayer] name:", name
+
+				name = re.sub("[(]","",name)
+				name = re.sub("[)]","",name)
+				if self.debug != "off":
+					print "[MC_AudioPlayer] resub name:", name
+						
+				Console().ePopen(('infobox 1000 saver "playing" "' + (name) + '"'))
+			saverCK = "infobox"								
+		elif path == '/defaultpng1/':
+			self.showiframe.finishStillPicture()
+			if self.debug != "off":
+				print "[MC_AudioPlayer] No Background MVI Files found ..."
+				print "[MC_AudioPlayer] start (PNG1) screensaver"
+			self.DimmerTimer.stop()
+			time = config.plugins.mc_ap.mvi_delay.getValue() * 1000
+			self.MviTimer.start(time, True)
+			p = command('pidof infobox |wc -w')
+			if not p.isdigit(): p=1
+			if int(p) == 0:
+				filename = self["filelist"].getFilename()
+				if self.debug != "off":
+					print "filename", filename
+				if self.filelist.getFilename() is not None:	
+					name = filename.split('/')[-1]
+				else:
+					name = filename
+				if self.debug != "off":
+					print "name", name
+				Console().ePopen(('infobox 500 saver1 /usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/AAF-MC.png'))
+			saverCK = "infobox"
+		elif path == '/defaultpng2/':
+			self.showiframe.finishStillPicture()
+			if self.debug != "off":
+				print "[MC_AudioPlayer] No Background MVI Files found ..."
+				print "[MC_AudioPlayer] start (PNG2) screensaver"
+			self.DimmerTimer.stop()
+			time = config.plugins.mc_ap.mvi_delay.getValue() * 1000
+			self.MviTimer.start(time, True)
+			p = command('pidof infobox |wc -w')
+			if not p.isdigit(): p=1
+			if int(p) == 0:
+				filename = self["filelist"].getFilename()
+				if self.debug != "off":
+					print "filename", filename
+				if self.filelist.getFilename() is not None:	
+					name = filename.split('/')[-1]
+				else:
+					name = filename
+				if self.debug != "off":
+					print "name", name
+				Console().ePopen(('infobox 250 saver2 /usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/AAF-MC.png'))
+			saverCK = "infobox"
+		else:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] Error No screesaver detected ..."
+			self.showiframe.finishStillPicture()		
+			if self.debug != "off":
+				print "[MC_AudioPlayer] No Background MVI Files found ..."
+				print "[MC_AudioPlayer] start standard screensaver"
+			self.DimmerTimer.stop()
+			time = config.plugins.mc_ap.mvi_delay.getValue() * 1000
+			self.MviTimer.start(time, True)
+			p = command('pidof infobox |wc -w')
+			if not p.isdigit(): p=1
+			if int(p) == 0:
+				filename = self["filelist"].getFilename()
+				if self.debug != "off":
+					print "filename", filename
+				if self.filelist.getFilename() is not None:	
+					name = filename.split('/')[-1]
+				else:
+					name = filename
+				if self.debug != "off":
+					print "name", name
+				Console().ePopen(('infobox 1000 saver "playing" ' + (name)))
+			saverCK = "infobox"	
+			
+	def showBackgroundScreensaver(self):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] showBackgroundScreensaver"
+		self.DimmerTimer.stop()
+		Console().ePopen(('infobox 10 saver "text1" "text2"'))
+
+	def showFileInfo(self):
+		if self["filelist"].canDescent():
+			return
+		else:
+			Console().ePopen(('stfbcontrol a 255'))					
+
+			self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+			self.session.open(MC_AudioInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef())
+	def updateFileInfo(self):
+		if self["filelist"].canDescent():
+			return
+		currPlay = self.session.nav.getCurrentService()
+		if currPlay is not None:
+			sTagTitle = currPlay.info().getInfoString(iServiceInformation.sTagTitle)
+			sTagArtist = currPlay.info().getInfoString(iServiceInformation.sTagArtist)
+			sTagAlbum = currPlay.info().getInfoString(iServiceInformation.sTagAlbum)
+			sTagGenre = currPlay.info().getInfoString(iServiceInformation.sTagGenre)
+			sTagYear = currPlay.info().getInfoString(iServiceInformation.sTimeCreate)
+			sTagComment = currPlay.info().getInfoString(iServiceInformation.sTagComment)
+			if sTagTitle == "":
+				sTagTitle = currPlay.info().getName().split('/')[-1]
+			self["fileinfo"].setText("Title: " + sTagTitle + "\nArtist: " +  sTagArtist + "\nAlbum: " + sTagAlbum + "\nGenre: " + sTagGenre + "\nComment: " + sTagComment)
+			self["curplayingtitle"].setText(sTagTitle)
+	def doEOF(self):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] EOF Event ..."
+			print "[MC_AudioPlayer] Play Next File ..."
+		if config.plugins.mc_aprepeat.enabled.getValue() == False:
+			self.down()
+		self.PlayService()
+
+	def nextFile(self):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] nextFile ..."
+			print "[MC_AudioPlayer] Play Next File ..."
+		if self.currPlaying == 1:
+#			self.StopPlayback()
+			self.down()
+			self.PlayService()
+
+	def prevFile(self):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] prevFile ..."
+			print "[MC_AudioPlayer] Play Prev File ..."
+		if self.currPlaying == 1:
+#			self.StopPlayback()
+			self.up()
+			self.PlayService()
+			
+	def __evDecodeError(self):
+		currPlay = self.session.nav.getCurrentService()
+		sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType)
+		if self.debug != "off":
+			print "[MC_AudioPlayer] [__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
+		self.session.open(MC_MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MC_MessageBox.TYPE_INFO,timeout = 20 )
+
+	def __evPluginError(self):
+		currPlay = self.session.nav.getCurrentService()
+		message = currPlay.info().getInfoString(iServiceInformation.sUser+12)
+		if self.debug != "off":
+			print "[MC_AudioPlayer] [__evPluginError]" , message
+		self.session.open(MC_MessageBox, message, type = MC_MessageBox.TYPE_INFO,timeout = 20 )
+
+	def Playlists(self):
+		self.session.open(MC_MessageBox,"Coming soon ... :)",  MC_MessageBox.TYPE_INFO)
+
+	def switchToFileList(self):
+		self.currList = "filelist"
+		self.filelist.selectionEnabled(1)
+		self.playlist.selectionEnabled(0)
+
+	def switchToPlayList(self):
+		if len(self.playlist) != 0:
+			self.currList = "playlist"
+			self.filelist.selectionEnabled(0)
+			self.playlist.selectionEnabled(1)
+
+	def Settings(self):
+		evfd.getInstance().vfd_write_string("SETTINGS")
+		self.MviTimer.stop()
+		self.MviStart.stop()
+		self.DimmerTimer.stop()
+		self.showiframe.finishStillPicture()
+		global saverCK
+		global dimmerCK
+		if saverCK == "infobox":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK
+			Console().ePopen(('killall infobox'))		
+			Console().ePopen(('stfbcontrol a 255'))
+		elif saverCK == "mvi":
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", saverCK		
+			self.showiframe.finishStillPicture()
+			Console().ePopen(('stfbcontrol a 255'))
+		elif dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+		
+		self.mviList = []
+		self.mviIndex = 0
+		self.mviLastIndex = -1
+			
+		self.session.open(AudioPlayerSettings, self.filelist, self.getMVI, self.MviStart, self.currPlaying)
+
+		config.plugins.mc_ap.save()
+		config.plugins.mc_all.save()
+		config.plugins.mc_aprepeat.save()
+
+	def Exit(self):
+		self.StopPlayback()
+		if self.isVisible == False:
+			self.visibility()
+			return
+		if config.plugins.mc_ap_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] stop autoSleep %s min" % (config.plugins.mc_ap_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		if self.filelist.getCurrentDirectory() is None:
+			config.plugins.mc_ap.lastDir.value = "devicelist"
+		else:
+			config.plugins.mc_ap.lastDir.value = self.filelist.getCurrentDirectory()
+		Console().ePopen(('stfbcontrol a 255'))
+		self.DimmerTimer.stop()
+		self.FileInfoTimer.stop()
+		del self["coverArt"].picload
+		self.save_playlist2(config.plugins.mc_ap.lastPlaylist.value)
+		config.plugins.mc_ap.save()
+		config.plugins.mc_all.save()
+		self.session.nav.stopService()
+		evfd.getInstance().vfd_write_string("MEDIACENTER")
+		Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep rarfs | grep -v '/dev/' | cut -d ' ' -f3`; killall -9 rarfs"))
+		Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep -v '/dev/' | cut -d ' ' -f3`; /bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`; killall -9 rarfs fusesmb curlftpfs"))
+		Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+		self.showiframe.finishStillPicture()
+		self.close()
+	def save_playlist(self):
+		name = config.plugins.mc_ap.lastPlaylist.value 
+		self.session.openWithCallback(self.save_playlist2,InputBox, title=_("Please enter filename (empty = use current date)"),text=name,windowTitle = _("Save Playlist"))
+	def save_playlist2(self, name):
+		if name is not None and self.playlist.list:
+			if self.debug != "off":
+				print "[MC_RadioPlayer] save playlist"
+			name = name.strip()
+			if name == "":
+				name = strftime("%y%m%d_%H%M%S")
+			config.plugins.mc_ap.lastPlaylist.value = name
+			name += ".e2pls"
+			self["Lplaylist"].setText(_("playlist ") + config.plugins.mc_ap.lastPlaylist.value + ':')
+			config.plugins.mc_ap.lastPlaylist.save()
+			self.playlistIOInternal.clear()
+			for x in self.playlist.list:
+				self.playlistIOInternal.addService(ServiceReference(x[0]))
+			self.playlistIOInternal.save(resolveFilename(SCOPE_PLAYLIST) + name)
+	def load_playlist(self):
+		listpath = []
+		playlistdir = resolveFilename(SCOPE_PLAYLIST)
+		try:
+			for i in os_listdir(playlistdir):
+				listpath.append((i,playlistdir + i))
+		except IOError,e:
+			if self.debug != "off":
+				print "Error while scanning subdirs ",e
+		self.session.openWithCallback(self.PlaylistSelected, MC_ChoiceBox, title=_("Please select a playlist..."), list = listpath)
+	def PlaylistSelected(self,path):
+		if path is not None:
+			if self.debug != "off":
+				print "[MC_RadioPlayer] load playlist from: " + path[0],path[1]
+			self.clear_playlist()
+			name = path[0].rsplit('.',1)[0]
+			config.plugins.mc_ap.lastPlaylist.value = name
+			config.plugins.mc_ap.lastPlaylist.save()
+			self["Lplaylist"].setText(_("playlist ") + config.plugins.mc_ap.lastPlaylist.value + ':')
+			if self.debug != "off":
+				print "[MC_RadioPlayer] load: " + name
+			self.playlistIOInternal = PlaylistIOInternal()
+			list = self.playlistIOInternal.open(resolveFilename(SCOPE_PLAYLIST, path[0]))
+			if list:
+				for x in list:
+					self.playlist.addFile(x.ref)
+			self.playlist.updateList()
+	def changeEntry(self, index):
+		self.playlist.setCurrentPlaying(index)
+		self.playEntry()
+	def playEntry(self):
+		self.playlist.stopFile()
+		self.session.nav.stopService()
+		if len(self.playlist.getServiceRefList()):
+			audio_extensions = (".mp2", ".mp3", ".wav", ".ogg", "flac", ".m4a")
+			currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
+			if self.session.nav.getCurrentlyPlayingServiceReference() is None or currref != self.session.nav.getCurrentlyPlayingServiceReference():
+				self.session.nav.playService(currref)
+	def clear_playlist(self):
+		self.stopEntry()
+		self.playlist.clear()
+		self.switchToFileList()
+	def stopEntry(self):
+		self.playlist.stopFile()
+		self.session.nav.playService(None)
+	def deleteEntry(self):
+		self.playlist.deleteFile(self.playlist.getSelectionIndex())
+		self.playlist.updateList()
+		if len(self.playlist) == 0:
+			self.switchToFileList()
+	def deleteFile(self):
+		if self.currList == "filelist":
+			self.service = self.filelist.getServiceRef()
+		else:
+			self.service = self.playlist.getSelection()
+		if self.service is None:
+			return
+		if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference() is not None:
+			if self.service == self.session.nav.getCurrentlyPlayingServiceReference():
+				self.stopEntry()
+
+		serviceHandler = eServiceCenter.getInstance()
+		offline = serviceHandler.offlineOperations(self.service)
+		info = serviceHandler.info(self.service)
+		name = info and info.getName(self.service)
+		result = False
+		if offline is not None:
+			# simulate first
+			if not offline.deleteFromDisk(1):
+				result = True
+		if result == True:
+			self.session.openWithCallback(self.deleteConfirmed_offline, MC_MessageBox, _("Do you really want to delete %s?") % (name))
+		else:
+			self.session.openWithCallback(self.close, MC_MessageBox, _("You cannot delete this!"), MC_MessageBox.TYPE_ERROR)
+	def delete_saved_playlist(self):
+		listpath = []
+		playlistdir = resolveFilename(SCOPE_PLAYLIST)
+		try:
+			for i in os_listdir(playlistdir):
+				listpath.append((i,playlistdir + i))
+		except IOError,e:
+			if self.debug != "off":
+				print "Error while scanning subdirs ",e
+		self.session.openWithCallback(self.DeletePlaylistSelected, MC_ChoiceBox, title=_("Please select a playlist to delete..."), list = listpath)
+	def DeletePlaylistSelected(self,path):
+		if path is not None:
+			self.delname = path[1]
+			self.session.openWithCallback(self.deleteConfirmed, MC_MessageBox, _("Do you really want to delete %s?") % (path[1]))
+	def deleteConfirmed(self, confirmed):
+		if confirmed:
+			try:
+				os_remove(self.delname)
+			except OSError,e:
+				self.session.open(MC_MessageBox, _("Delete failed!, %s") %e, MC_MessageBox.TYPE_ERROR)
+	def deleteConfirmed_offline(self, confirmed):
+		if confirmed:
+			serviceHandler = eServiceCenter.getInstance()
+			offline = serviceHandler.offlineOperations(self.service)
+			result = False
+			if offline is not None:
+				if not offline.deleteFromDisk(0):
+					result = True
+			if result == False:
+				self.session.open(MC_MessageBox, _("Delete failed!"), MC_MessageBox.TYPE_ERROR)
+			else:
+				self.removeListEntry()
+	def removeListEntry(self):
+		currdir = self.filelist.getCurrentDirectory()
+		self.filelist.changeDir(currdir)
+		deleteend = False
+		while not deleteend:
+			index = 0
+			deleteend = True
+			if len(self.playlist) > 0:
+				for x in self.playlist.list:
+					if self.service == x[0]:
+						self.playlist.deleteFile(index)
+						deleteend = False
+						break
+					index += 1
+		self.playlist.updateList()
+		if self.currList == "playlist":
+			if len(self.playlist) == 0:
+				self.switchToFileList()
+	def copyDirectory(self, directory, recursive = True):
+		if self.debug != "off":
+			print "copyDirectory", directory
+		if directory == '/':
+			if self.debug != "off":
+				print "refusing to operate on /"
+			return
+		filelist = FileList(directory, matchingPattern = "(?i)^.*\.(mp2|mp3|wav|ogg|m4a|flac|wma)", useServiceRef = True, showMountpoints = False, isTop = True)
+		for x in filelist.getFileList():
+			if x[0][1] == True: #isDir
+				if recursive:
+					if x[0][0] != directory:
+						self.copyDirectory(x[0][0])
+			else:
+				self.playlist.addFile(x[0][0])
+		self.playlist.updateList()
+	def showMenu(self):
+		menu = []
+		if self.currList == "filelist":
+			if self.filelist.canDescent():
+				menu.append((_("add directory to playlist"), "copydir"))
+			else:
+				menu.append((_("add files to playlist"), "copyfiles"))
+		else:
+			menu.append((_("clear playlist"), "clear"))
+			menu.append((_("delete entry"), "deleteentry"))
+			menu.append((_("shuffle playlist"), "shuffle"))
+		menu.append((_("delete file"), "deletefile"))
+		menu.append((_("load playlist"), "loadplaylist"));
+		menu.append((_("save playlist"), "saveplaylist"));
+		menu.append((_("delete saved playlist"), "deleteplaylist"));
+		self.session.openWithCallback(self.menuCallback, MC_ChoiceBox, title="AudioPlayer Menu", list=menu)
+	def menuCallback(self, choice):
+		if choice is None:
+			return
+		if choice[1] == "copydir":
+			self.savePlaylistOnExit = True
+			self.copyDirectory(self.filelist.getSelection()[0])
+		elif choice[1] == "copyfiles":
+			self.stopEntry()
+			self.playlist.clear()
+			self.copyDirectory(os_path.dirname(self.filelist.getSelection()[0].getPath()) + "/", recursive = False)
+			#self.playServiceRefEntry(self.filelist.getServiceRef())
+			#self.copyFile()
+		elif choice[1] == "deleteentry":
+			if self.playlist.getSelectionIndex() == self.playlist.getCurrentIndex():
+				self.stopEntry()
+			self.deleteEntry()
+		elif choice[1] == "clear":
+			self.clear_playlist()
+		elif choice[1] == "saveplaylist":
+			self.save_playlist()
+		elif choice[1] == "loadplaylist":
+			self.load_playlist()
+		elif choice[1] == "deleteplaylist":
+			self.delete_saved_playlist()
+		elif choice[1] == "shuffle":
+			self.playlist.PlayListShuffle()
+		elif choice[1] == "deletefile":
+			self.deleteFile()
+
+	def view(self):
+		if self.currPlaying == 1:
+			return
+		list = []
+		list.append((_("default file view"), "default"))
+		list.append((_("small file view"), "small"))
+		list.append((_("big file view"), "big"))
+		list.append((_("detailed file view"), "details"))
+		self.session.openWithCallback(self.viewingConfirmed, MC_ChoiceBox, title=_("Change view temporary to..."), list = list)
+
+	def viewingConfirmed(self, answer):
+		global art
+		global itemheight
+		global fontsize
+		global tmpsort
+
+		answer = answer and answer[1]
+		if answer == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+			tmpview = "big"
+		elif answer == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+			tmpview = "details"		
+		elif answer == "small":
+			art = 0
+			itemheight = 23
+			fontsize = 18
+			tmpview = "small"
+		elif answer == "default":
+			art = 1
+			itemheight = 23
+			fontsize = 18
+			tmpview = "default"
+		else:
+			tmpview = "error"
+
+		global currentview
+		if tmpview == "error" or tmpview == currentview:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] skip viewchange from %s to %s" % (currentview,tmpview)
+			return
+
+		self.filelist.refresh(fontsize, itemheight, art, tmpsort)
+
+	def sort(self):
+		if self.currPlaying == 1:
+			return
+		list = []
+		list.append((_("sorted by default"), "default"))
+		list.append((_("backward sorting by date"), "date"))
+		list.append((_("sorted by date in ascending order"), "datereverse"))
+		list.append((_("sorted by alphabet in ascending order"), "alpha"))
+		list.append((_("backward sorting by alphabet"), "alphareverse"))
+		list.append((_("backward sorting by size"), "size"))
+		list.append((_("sorted by size in ascending order"), "sizereverse"))
+		self.session.openWithCallback(self.sortingConfirmed, MC_ChoiceBox, title=_("How do you want to sort your filelist temporary?"), list = list)
+
+	def sortingConfirmed(self, answer):
+		global art
+		global itemheight
+		global fontsize
+		global tmpsort
+		global sort
+
+		answer = answer and answer[1]
+		if answer == "date":
+			tmpsort = "date"
+		elif answer == "datereverse":
+			tmpsort = "datereverse"
+		elif answer == "alpha":
+			tmpsort = "alpha"
+		elif answer == "alphareverse":
+			tmpsort = "alphareverse"
+		elif answer == "size":
+			tmpsort = "size"
+		elif answer == "sizereverse":
+			tmpsort = "sizereverse"
+		elif answer == "default":
+			tmpsort = "default"
+		else:
+			tmpsort = "error"
+
+		currentsort = sort
+		if tmpsort == "error" or tmpsort == currentsort:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] skip sortchange from %s to %s" % (currentsort,tmpsort)
+			return
+
+		self.filelist.refresh(fontsize, itemheight, art, tmpsort)
+
+class MediaPixmap(Pixmap):
+	def __init__(self):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		if self.debug != "off":
+			print "[MC_AudioPlayer] start MediaPixmap"
+		Pixmap.__init__(self)
+		self.coverArtFileName = ""
+		self.picload = ePicLoad()
+		self.picload.PictureData.get().append(self.paintCoverArtPixmapCB)
+		self.coverFileNames = ["folder.png", "folder.jpg", "cover.png", "cover.jpg"]
+	def applySkin(self, desktop, screen):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] start applySkin"
+		from Tools.LoadPixmap import LoadPixmap
+		noCoverFile = None
+		if self.skinAttributes is not None:
+			for (attrib, value) in self.skinAttributes:
+				if attrib == "pixmap":
+					noCoverFile = value
+					break
+		if noCoverFile is None:
+			noCoverFile = resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/no_coverArt.png")
+		self.noCoverPixmap = LoadPixmap(noCoverFile)
+		return Pixmap.applySkin(self, desktop, screen)
+	def onShow(self):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] start onShow"
+		Pixmap.onShow(self)
+		sc = AVSwitch().getFramebufferScale()
+		self.picload.setPara((self.instance.size().width(), self.instance.size().height(), sc[0], sc[1], False, 1, "#00000000"))
+	def paintCoverArtPixmapCB(self, picInfo=None):
+		ptr = self.picload.getData()
+		if ptr != None:
+			self.instance.setPixmap(ptr.__deref__())
+	def updateCoverArt(self, path):
+		if path == None:
+			return
+		while not path.endswith("/"):
+			path = path[:-1]
+		new_coverArtFileName = None
+		for filename in self.coverFileNames:
+			if os.path.exists(path + filename) is True:
+				new_coverArtFileName = path + filename
+		if self.coverArtFileName != new_coverArtFileName:
+			self.coverArtFileName = new_coverArtFileName
+			if new_coverArtFileName:
+				self.picload.startDecode(self.coverArtFileName)
+			else:
+				self.showDefaultCover()
+
+	def showDefaultCover(self):
+		self.instance.setPixmap(self.noCoverPixmap)
+	def embeddedCoverArt(self):
+		if self.debug != "off":
+			print "[MC_AudioPlayer] [embeddedCoverArt] found"
+		self.coverArtFileName = "/tmp/.id3coverart"
+		self.picload.startDecode(self.coverArtFileName)
+
+class AudioPlayerSettings(Screen):
+	skin = """<screen position="center,center" size="400,320" title="MC-Audioplayer Settings" backgroundColor="#000000" >
+		<widget name="configlist" position="10,10" size="380,270" />
+		<eLabel backgroundColor="red" position="28,310" size="140,3" zPosition="2"/>
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<widget name="key_red" position="28,278" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+		<eLabel backgroundColor="blue" position="232,310" size="140,3" zPosition="2"/>
+		<widget name="key_blue" position="232,278" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+	</screen>"""
+
+	def __init__(self, session, filelist, getMVI, MviStart, currPlaying):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		self.skin = AudioPlayerSettings.skin
+		self.filelist = filelist
+		self.MviStart = MviStart
+		self.getMVI = getMVI
+		self.currPlaying = currPlaying
+				
+		Screen.__init__(self, session)
+		self["key_blue"] = Button(_("Network"))
+		self["key_red"] = Button(_("Back"))
+		self["show_title"] = StaticText(_("MediaCenter Audioplayer Settings"))
+		self["actions"] = NumberActionMap(["SetupActions"],
+		{
+			"ok": self.keyOK,
+			"cancel": self.keyExit,
+			"left": self.keyLeft,
+			"right": self.keyRight,
+			"0": self.keyNumber,
+			"1": self.keyNumber,
+			"2": self.keyNumber,
+			"3": self.keyNumber,
+			"4": self.keyNumber,
+			"5": self.keyNumber,
+			"6": self.keyNumber,
+			"7": self.keyNumber,
+			"8": self.keyNumber,
+			"9": self.keyNumber
+		}, -1)
+		self["ColorActions"] = HelpableActionMap(self, "ColorActions",
+			{
+				"blue": self.netWork,
+			})
+
+		imdbmain = config.plugins.mc_imdb.savedir.getValue() + "/imdb/"
+
+		screensaverlist = [('/defaulttext/',_("Song TitleText")), ('/defaultpng1/',_("Logo 1")), ('/defaultpng2/',_("Logo 2")), (imdbmain, _("imdb mvis (network/hdd)"))]
+
+		if pathExists('/var/swap/saver/'):
+			files = listdir('/var/swap/saver/')
+			if self.debug != "off":
+				print "1"
+			for x in files:
+				if self.debug != "off":
+					print x
+		 		if pathExists('/var/swap/saver/' + x):
+	 				screensaverlist += [('/var/swap/saver/%s/' % (x),_("%s mvis (swap)") % (x))]
+		if pathExists('/var/swapusb/saver/'):
+			if self.debug != "off":
+				print "2"
+			files = listdir('/var/swapusb/saver/')
+			for x in files:
+				if self.debug != "off":
+					print x
+		 		if pathExists('/var/swapusb/saver/' + x):
+	 				screensaverlist += [('/var/swapusb/saver/%s/' % (x),_("%s mvis (swapusb)") % (x))]
+
+		imdbmain = config.plugins.mc_imdb.savedir.getValue() + "/saver/"
+		if pathExists(imdbmain):
+			if self.debug != "off":
+				print "3"
+			files = listdir(imdbmain)
+			for x in files:
+				if self.debug != "off":
+					print x
+		 		if pathExists(imdbmain + x):
+	 				screensaverlist += [('%s%s/' % (imdbmain,x),_("%s mvis (network/hdd)") % (x))]
+
+						
+		if self.debug != "off":
+			print "screensaverlist", screensaverlist
+
+		self.mc_ap_screensaver = ConfigSelection(screensaverlist)
+		self.mc_ap_screensaver.value = config.plugins.mc_ap_screensaver.value.getValue()
+				
+		self.list = []
+		self["configlist"] = ConfigList(self.list)
+		self.list.append(getConfigListEntry(_("Screensaver Enable"), config.plugins.mc_ap.showMvi))
+		self.list.append(getConfigListEntry(_("Screensaver Interval"), config.plugins.mc_ap.mvi_delay))
+		self.list.append(getConfigListEntry(_("Screensaver Start"), config.plugins.mc_ap.startmvi_delay))
+		self.list.append(getConfigListEntry(_("Screensaver Type"), self.mc_ap_screensaver))
+		self.list.append(getConfigListEntry(_("Dimmer Enable"), config.plugins.mc_all.showDimmer))
+		self.list.append(getConfigListEntry(_("Dimmer Delay"), config.plugins.mc_all.dimmer_delay))
+		if self.currPlaying == 0:
+			self.list.append(getConfigListEntry(_("Standard filelist sorting..."), config.plugins.mc_ap_sort.enabled))
+			self.list.append(getConfigListEntry(_("Standard filelist viewing"), config.plugins.mc_ap_view.enabled))
+		self.list.append(getConfigListEntry(_("AutoSleep Enable"), config.plugins.mc_ap_autoSleep.enabled))
+		self.list.append(getConfigListEntry(_("AutoSleep Delay"), config.plugins.mc_ap_autoSleep.delay))
+		self.list.append(getConfigListEntry(_("Repeat current file"), config.plugins.mc_aprepeat.enabled))
+
+
+	def keyLeft(self):
+		self["configlist"].handleKey(KEY_LEFT)
+
+	def keyRight(self):
+		self["configlist"].handleKey(KEY_RIGHT)
+
+	def keyNumber(self, number):
+		self["configlist"].handleKey(KEY_0 + number)
+
+	def keyExit(self):
+		if config.plugins.mc_ap.showMvi.getValue() and self.currPlaying == 1:
+			self.MviStart.start(config.plugins.mc_ap.startmvi_delay.getValue() * 1000, True)
+		evfd.getInstance().vfd_write_string("AUDIOPLAYER")
+		
+		self.close()
+
+	def keyOK(self):
+		config.plugins.mc_ap.save()
+		config.plugins.mc_all.save()
+		if self.currPlaying == 0:
+			config.plugins.mc_ap_view.save()
+			config.plugins.mc_ap_sort.save()
+		config.plugins.mc_ap_autoSleep.save()
+		config.plugins.mc_ap_screensaver.value.value = self.mc_ap_screensaver.value
+		config.plugins.mc_ap_screensaver.save()
+		config.plugins.mc_aprepeat.save()
+		
+		if self.debug != "off":
+			print "[MC_AudioPlayer] self.mc_ap_screensaver.value save", self.mc_ap_screensaver.value
+
+		refreshsort = True
+		refreshview = True
+				 
+		global sort
+		currentsort = sort
+		tmpsort = config.plugins.mc_ap_sort.enabled.getValue()
+		print "tmpsort", tmpsort
+		print "currentsort", currentsort
+		
+		if tmpsort == currentsort:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] skip sortchange from %s to %s" % (currentsort,tmpsort)
+			refreshsort = False
+
+		global currentview
+		tmpview = config.plugins.mc_ap_view.enabled.getValue()
+		print "tmpview", tmpview
+		print "currentview", currentview
+
+		if tmpview == currentview:
+			if self.debug != "off":
+				print "[MC_AudioPlayer] skip viewchange from %s to %s" % (currentview,tmpview)
+			refreshview = False
+
+
+		global art
+		global itemheight
+		global fontsize
+		global sort
+
+		if config.plugins.mc_ap_view.enabled.getValue() == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+		elif config.plugins.mc_ap_view.enabled.getValue() == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+		elif config.plugins.mc_ap_view.enabled.getValue() == "small":
+			art = 0
+			itemheight = 20
+			fontsize = 15
+		else: # default
+			art = 1
+			itemheight = 23
+			fontsize = 18
+
+		self.getMVI()
+		if config.plugins.mc_ap.showMvi.getValue() and self.currPlaying == 1:
+			self.MviStart.start(config.plugins.mc_ap.startmvi_delay.getValue() * 1000, True)
+
+		evfd.getInstance().vfd_write_string("AUDIOPLAYER")
+		
+		if refreshview == True or refreshsort == True:
+			if self.currPlaying == 0:
+				self.filelist.refresh(fontsize, itemheight, art, tmpsort)
+				
+		self.close()
+
+	def netWork(self):
+		self.session.open(NetworkAdapterSelection)
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileBrowser.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileBrowser.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileBrowser.py	(revision 9331)
@@ -0,0 +1,728 @@
+#MediaCenter FileBrowser 
+# 2011 by Civer (last change 22.05.2011)
+# This Code is Free, use it where you want, when you want for whatever you want and modify it if you want.
+
+from __init__ import _
+from enigma import evfd, eConsoleAppContainer
+from Components.Slider import Slider
+from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
+from Components.Button import Button
+from Components.Label import Label
+from Screens.InputBox import InputBox
+from Components.Input import Input
+from Screens.Screen import Screen
+from Components.Sources.List import List
+from Screens.NetworkSetup import *
+from Tools.Directories import resolveFilename, fileExists, pathExists, SCOPE_MEDIA
+from os import system as os_system, rename as os_rename, path as os_path, statvfs as os_statvfs
+from Components.config import config
+from Components.config import *
+from Components.ConfigList import ConfigList, ConfigListScreen
+
+from MC_FileList import FileList
+from GlobalFunctions import MC_ChoiceBox, MC_MessageBox
+from Plugins.Extensions.Aafpanel.plugin import command
+
+
+config.plugins.mc_fb = ConfigSubsection()
+config.plugins.mc_fb.lastDir = ConfigText(default=resolveFilename(SCOPE_MEDIA))
+
+views = [('default',_("default")),('small',_("small")),('details',_("details")),('big',_("big"))]
+config.plugins.mc_fb_view = ConfigSubsection()
+config.plugins.mc_fb_view.enabled = ConfigSelection(views)
+tmpview = config.plugins.mc_fb_view.enabled.getValue()
+
+sorts = [('default',_(" by default")),('alpha',_(" by alphabet")), ('alphareverse',_("by alphabet backward")),('date',_("by date")),('datereverse',_("by date backward")),('size',_("by size")),('sizereverse',_("by size backward"))]
+config.plugins.mc_fb_sort = ConfigSubsection()
+config.plugins.mc_fb_sort.enabled = ConfigSelection(sorts)
+tmpsort = config.plugins.mc_fb_sort.enabled.getValue()
+
+#####----------------------------------------------------------------------#####
+##----------------------- FILEBROWSER MAIN SCREEN ---------------------------##
+#####----------------------------------------------------------------------#####
+
+class MC_FileBrowser(Screen, HelpableScreen):
+	skin = """
+		<screen name="MC_FileBrowser" position="0,0" size="1280,720" title="Media Center - Filebrowser" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" FILEBROWSER" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1280,480" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="994,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="708,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="422,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="136,679" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="111,650" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="397,650" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="683,650" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="969,650" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="75,130" zPosition="2" size="900,435" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="selectedFile" zPosition="5" transparent="1" halign="center" position="75,575" size="1130,72" font="Regular;18" foregroundColor="#f0f0f0"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="65,95" size="1100,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+		</screen>"""
+
+	def __init__(self, session):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		global currentview
+		Screen.__init__(self, session)
+		HelpableScreen.__init__(self)
+
+		self["key_red"] = Button(_("delete file"))
+		self["key_green"] = Button(_("rename file"))
+		self["key_yellow"] = Button(_("select file"))
+		self["key_blue"] = Button(_("Settings"))
+		self["fileinfo"] = Label()
+		self["currentfolder"] = Label()
+		self["selectedFile"] = Label(_("press select file to copy or move a file or folder"))
+
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
+		{
+			"cancel": self.Exit,
+			"ok": self.KeyOk,
+			"up": self.up,
+			"down": self.down,
+			"red": self.delete,
+			"green": self.renamecopy,
+			"yellow": self.selectmove,
+			"blue": self.Settings
+		}, -2)
+
+		if config.plugins.mc_globalsettings.setstablestartdir.value != "no": # default directory set in global settings
+			currDir = config.plugins.mc_globalsettings.setstablestartdir.value
+		else:
+			currDir = config.plugins.mc_fb.lastDir.value
+
+		if currDir == "devicelist" or not pathExists(currDir):
+			currDir = None
+
+		currentview = config.plugins.mc_fb_view.enabled.getValue()
+			
+		if currentview == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+		elif currentview == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+		elif currentview == "small":
+			art = 0
+			itemheight = 20
+			fontsize = 15
+		else: # default
+			art = 1
+			itemheight = 23
+			fontsize = 18
+
+		sort = config.plugins.mc_fb_sort.enabled.getValue()
+
+		self["currentfolder"].setText(str(currDir))
+
+		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib", "/proc", "/ram", "/root", "/sbin", "/swap", "/sys", "/usr"]
+		pattern = "^.*\.*"
+		#pattern = "^.*\.(rar|iso|img|jpeg|jpg|JPG|jpe|png|bmp|ifo|avi|dat|divx|flv|mkv|m4v|mp4|mov|mpg|mpeg|mts|m2ts|pls|trp|ts|vdr|vob|wmv|rm|mp2|mp3|wav|wave|wma|m4a|jpg|png|ogg|ra|flac|eit|ts|ap|cuts|meta|imdb|sc)"
+
+		self.filelist = FileList(currDir, useServiceRef = False, showDirectories = True, showFiles = True, matchingPattern = pattern, inhibitDirs = inhibitDirs, itemheight = itemheight, fontsize = fontsize, art = art, sort = sort)
+		self["filelist"] = self.filelist
+		self.currList = "filelist"
+		evfd.getInstance().vfd_write_string("FILEBROWSER")
+
+		self.filename = None
+		self.dirname = None
+		self.isFolder = None
+		self.copyactive = False
+		self.whattodo = None
+		self.copysource = None
+		self.destsource = None
+		self.oldname = None
+		self.newname = None
+		self.cmd = None
+		self.sourcesize = None
+		self.destsize = None
+
+#####----------------------------------------------------------------------#####
+##----------------------- TOGGLE COLORBUTTONS --------------------------------##
+#####----------------------------------------------------------------------#####
+
+	def selectmove(self):
+		if self.copyactive is True:
+			self.whattodo = "move"
+			self.CopyorMove()
+		else:
+			self.selectFile()
+
+	def renamecopy(self):
+		if self.copyactive is True:
+			self.whattodo = "copy"
+			self.CopyorMove()
+		else:
+			self.rename()
+
+#####----------------------------------------------------------------------#####
+##--------------------------- RENAME PARTS -----------------------------------##
+#####----------------------------------------------------------------------#####
+
+	def rename(self):
+		if self.filelist.canDescent(): # Abfrage obs nen Ordner ist
+			if self.debug != "off":
+				print "[MC_FileBrowser rename] detected folder..."
+			# remove the last slash in the name...
+			if self.filelist.getFilename().upper().endswith("/"):
+				self.oldname = self.filelist.getFilename()[:-1].split("/")[-1]
+			else:
+				self.oldname = self.filelist.getFilename()
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser rename] detected file..."
+			self.oldname = self.filelist.getFilename()
+		self.copysource = self.filelist.getCurrentDirectory()
+		if self.debug != "off":
+			print "[MC_FileBrowser rename] start renaming file: ", self.oldname
+			print "[MC_FileBrowser rename] in filepath: ", self.copysource
+		self.openInputBox(self.oldname)
+
+	def openInputBox(self, filename):
+		if not filename is None:
+			self.session.openWithCallback(self.renamingFinished, InputBox, title=_("Enter a new filename"), windowTitle =_("rename file"), text=filename, maxSize=False, visible_width = 56, type=Input.TEXT)
+	
+	def renamingFinished(self, text):
+		if not text is None:
+			self.newname = text
+			if pathExists(self.copysource + self.newname) or fileExists(self.copysource + self.newname):
+				if self.debug != "off":
+					print"[MC_FileBrowser rename] ERROR! Can not rename the selected file because a same-named file or folder still exists!"
+				self.session.open(MC_MessageBox,_("ERROR\nCan not rename the selected file to %s because a same-named file or folder still exists!") % self.newname, MC_MessageBox.TYPE_ERROR)
+			else:
+				self.session.openWithCallback(self.execingRename, MC_MessageBox,_("Do you really want to rename\n%s\ninto\n%s") % (self.copysource + self.oldname,self.copysource + self.newname), MC_MessageBox.TYPE_YESNO)
+
+	def execingRename(self,answer):
+		if answer == True:
+			try:
+				os_rename(self.copysource + self.oldname, self.copysource + self.newname)
+				self.checkRenaming()
+			except:
+				if self.debug != "off":
+					print "[MC_FileBrowser rename] operation failed!"
+				info = self.session.open(MC_MessageBox,_("ERROR\nOperation to rename %s failed!") % self.oldname, MC_MessageBox.TYPE_ERROR)
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser rename] aborted to rename the file..."
+
+	def checkRenaming(self):
+		# check that renaming was successful
+		if self.debug != "off":
+			print "[MC_FileBrowser rename] Checking that the file is renamed..."
+		if pathExists(self.copysource + self.newname) or fileExists(self.copysource + self.newname):
+			if self.debug != "off":
+				print "[MC_FileBrowser rename] operation finished successfully!"
+			self.session.open(MC_MessageBox,_("Operation finished successfully!"), MC_MessageBox.TYPE_INFO)
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser rename] renaming failed!"
+			self.session.open(MC_MessageBox,_("ERROR\nRenaming %s failed!") % self.oldname, MC_MessageBox.TYPE_ERROR)
+		self.filelist.refresh()
+
+#####----------------------------------------------------------------------#####
+##------------------------- COPY AND MOVE PARTS ------------------------------##
+#####----------------------------------------------------------------------#####
+
+	def selectFile(self):
+		self.isFolder = False
+		if self.filelist.canDescent(): # Abfrage obs nen Ordner ist
+			if self.debug != "off":
+				print "[MC_FileBrowser copy&move] detected folder..."
+			self.isFolder = True
+			self.copysource = self.filelist.getFilename()
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser copy&move] detected file..."
+			self.copysource = self.filelist.getCurrentDirectory() + self.filelist.getFilename()
+		if self.debug != "off":
+			print "[MC_FileBrowser copy&move] source object ", self.copysource
+		self.copyactive = True
+		self["key_red"].setText("")
+		self["key_green"].setText(_("copy file"))
+		self["key_yellow"].setText(_("move file"))
+		self["selectedFile"].setText(_("Selected object: %s\n Choose a target folder! Then press copy (copy to target) or move (move to target).Press exit/back to deselect the object!") % self.copysource)
+
+	def CopyorMove(self):
+		if self.copysource is not None:
+			self.copydest = self.filelist.getCurrentDirectory()
+			if self.copydest is not None:
+				if self.debug != "off":
+					print "[MC_FileBrowser copy&move] from source: ", self.copysource
+					print "[MC_FileBrowser copy&move] to dest: ", self.copydest
+				# self.whattodo normally is either copy or move to detect what to do next
+				# self.copysource[:-1].split("/")[-1] when folder: remove the last slash and get the folder name to check if it still exists before copying
+				# self.copysource.split("/")[-1] when file: no need to remove a slash but only use the file name without complete path
+				# check existing files or folders....
+				if self.whattodo is None:
+					self.whattodo = "copy" # default is copy
+				if self.isFolder is False and ( pathExists(self.copydest + self.copysource.split("/")[-1]) or fileExists(self.copydest + self.copysource.split("/")[-1]) ):
+					if self.debug != "off":
+						print"[MC_FileBrowser copy&move] ERROR! Could not %s the file because a same-named file/folder exists in the destination folder!" % self.whattodo
+					self.session.open(MC_MessageBox,_("ERROR\n Could not %s the selected file\n%s\nto\n%s\n because a same-named file or folder still exists!") % (self.whattodo,self.copysource,self.copydest), MC_MessageBox.TYPE_ERROR)
+				# here i wanted to merge two same-named folders but cp command overwrites same-named files..and cp -b does not work here... :)
+				#elif self.isFolder is True and fileExists(self.copydest + self.copysource[:-1].split("/")[-1]) :
+				elif self.isFolder is True and ( pathExists(self.copydest + self.copysource[:-1].split("/")[-1]) or fileExists(self.copydest + self.copysource[:-1].split("/")[-1]) ):
+					if self.debug != "off":
+						print"[MC_FileBrowser copy&move] ERROR! Could not %s the folder because a same-named file/folder exists in the destination folder!" % self.whattodo
+					self.session.open(MC_MessageBox,_("ERROR\n Could not %s the selected folder\n%s\nto\n%s\n because a file with the same name still exists!") % (self.whattodo,self.copysource,self.copydest), MC_MessageBox.TYPE_ERROR)
+				else:
+					# Check sourcesize here - different methods for files and folders...
+					if self.isFolder is True:
+						self.sourcesize = command('du -sL "' + self.copysource + '" | cut -d / -f1')
+						self.sourcesize = round(int(self.sourcesize) / 1024.0,2)
+					else:
+						if fileExists(self.copysource, 'r'):
+							self.sourcesize = os_path.getsize(self.copysource)
+							self.sourcesize = round(self.sourcesize / (1024.0 * 1024.0),2)
+					# Check freespace of the destination path here...
+					available = 0
+					try:
+						stat = os_statvfs(self.copydest)
+						available = round(stat.f_bsize * stat.f_bavail / (1024.0 * 1024.0),2) # available freespace in MB
+						if self.debug != "off":
+							print '[MC_FileBrowser copy&move] available freespace for destination path: ' + str(available) + ' MB'
+					except:
+						if self.debug != "off":
+							print "[MC_FileBrowser copy&move] Checking Freespace failed!"
+						self.session.open(MC_MessageBox,_("ERROR\ndestination path has not a valid path!"), MC_MessageBox.TYPE_ERROR)
+					if available <= self.sourcesize:
+						if self.debug != "off":
+							print "[MC_FileBrowser copy&move] ERROR: destination path has not got enough freespace!"
+						self.session.open(MC_MessageBox,_("ERROR\ndestination path has not got enough freespace!"), MC_MessageBox.TYPE_ERROR)
+					else:
+						self.session.openWithCallback(self.execingCopyorMove, MC_MessageBox,_("Do you really want to %s\n%s\nto\n%s\nMaybe it will take a while!") % (self.whattodo, self.copysource,self.copydest), MC_MessageBox.TYPE_YESNO)
+
+			else:
+				if self.debug != "off":
+					print "[MC_FileBrowser copy&move] No valid destination path!"
+				self.session.open(MC_MessageBox,_("ERROR\ndestination path has not a valid path!"), MC_MessageBox.TYPE_ERROR)
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser copy&move] ERROR! Nothing to %s...." % self.whattodo
+			self.session.open(MC_MessageBox,_("Sorry, there is nothing to %s...") % self.whattodo, MC_MessageBox.TYPE_ERROR)
+			self.copyactive = False
+			self["selectedFile"].setText(_("press select file to copy or move a file or folder"))
+			self["key_red"].setText(_("delete file"))
+			self["key_green"].setText(_("rename file"))
+			self["key_yellow"].setText(_("select file"))
+
+	def execingCopyorMove(self, answer):
+		if answer == True:
+			# open Screen MC_FileBrowserCopyorMove to show progress
+			self.session.openWithCallback(self.checkCopyorMove, MC_FileBrowserCopyorMove, self.copysource, self.sourcesize, self.copydest, self.whattodo)
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser copy&move] aborted to %s the file..." % self.whattodo
+
+	def checkCopyorMove(self, check):
+		if check is True:
+			self.copyactive = False
+			self["selectedFile"].setText(_("press select file to copy or move a file or folder"))
+			self["key_red"].setText(_("delete file"))
+			self["key_green"].setText(_("rename file"))
+			self["key_yellow"].setText(_("select file"))
+		self.filelist.refresh()
+
+#####----------------------------------------------------------------------#####
+##--------------------------- DELETE PARTS -----------------------------------##
+#####----------------------------------------------------------------------#####
+
+	def delete(self):
+		if self.copyactive is False:
+			self.isFolder = False
+			self.filename = self.filelist.getFilename()
+			self.dirname = self.filelist.getCurrentDirectory()
+			if self.debug != "off":
+				print "[MC_FileBrowser delete] Current file/folder selected for deleting: ", self.filename
+			if self.filelist.canDescent(): # Abfrage obs nen Ordner ist
+				self.isFolder = True
+				self.session.openWithCallback(self.deleteConfirmed, MC_MessageBox,_("Do you really want to delete the following folder and all including files:\n%s") % self.filename, MC_MessageBox.TYPE_YESNO)
+			else:
+				self.session.openWithCallback(self.deleteConfirmed, MC_MessageBox,_("Do you really want to delete the following file:\n%s%s") % (self.dirname,self.filename), MC_MessageBox.TYPE_YESNO)
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser delete] no button function..."
+
+	def deleteConfirmed(self, answer):
+		if answer == True:
+			if self.debug != "off":
+				print '[MC_FileBrowser delete] deleting ' + self.filename + ' confirmed!'
+			if self.isFolder is True:
+				if self.debug != "off":
+					print "[MC_FileBrowser delete] generating command to delete folder..."
+				self.cmd = 'rm -rf "' + self.filename + '"'
+			else:
+				if self.debug != "off":
+					print "[MC_FileBrowser delete] generating command to delete file..."
+				self.cmd = 'rm -f "' + self.dirname + self.filename + '"'
+			try:
+				if self.debug != "off":
+					print "[MC_FileBrowser delete] Command: ", self.cmd
+					print "[MC_FileBrowser delete] deleting..."
+				os_system(self.cmd)
+			except:
+				if self.debug != "off":
+					print "[MC_FileBrowser delete] Operation failed! Could not delete file/folder!"
+				self.session.open(MC_MessageBox,_("ERROR\nFile operation %s failed") % self.cmd, MC_MessageBox.TYPE_ERROR)
+			self.checkdelete()
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser delete] aborted deleting..."
+
+	def checkdelete(self):
+		if self.debug != "off":
+			print '[MC_FileBrowser delete] Checking that' + self.filename + ' is deleted...'
+		self.filelist.refresh()
+		if (self.isFolder is True and pathExists(str(self.filename)) is True) or (self.isFolder is False and fileExists(str(self.dirname) + str(self.filename)) is True):
+			if self.debug != "off":
+				print"[MC_FileBrowser delete] ERROR while deleting file/folder ..."
+			self.session.open(MC_MessageBox,_("ERROR\nFile operation %s failed") % self.cmd, MC_MessageBox.TYPE_ERROR)
+		else:
+			if self.debug != "off":
+				print "[MC_FileBrowser delete] Deleting successfully ..."
+			self.session.open(MC_MessageBox,_("Selected operation completed successfully!"), MC_MessageBox.TYPE_INFO)
+
+#####----------------------------------------------------------------------#####
+##-------------------------- GENERAL PARTS -----------------------------------##
+#####----------------------------------------------------------------------#####
+
+	def up(self):
+		self["filelist"].up()
+
+	def down(self):
+		self["filelist"].down()
+
+	def leftUp(self):
+		self["filelist"].pageUp()
+
+	def rightDown(self):
+		self["filelist"].pageDown()
+
+	def Settings(self):
+		evfd.getInstance().vfd_write_string("SETTINGS")
+		self.session.open(FileBrowserSettings, self.filelist)
+
+	def KeyOk(self):
+		if self.filelist.canDescent():
+			self.filelist.descent()
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+
+	def Exit(self):
+		if self.copyactive is True:
+				self.copyactive = False
+				self["selectedFile"].setText(_("press select file to copy or move a file or folder"))
+				self["key_red"].setText(_("delete file"))
+				self["key_green"].setText(_("rename file"))
+				self["key_yellow"].setText(_("select file"))
+		else:
+			if self.filelist.getCurrentDirectory() is None:
+				config.plugins.mc_fb.lastDir.value = "/"
+			else:
+				config.plugins.mc_fb.lastDir.value = self.filelist.getCurrentDirectory()
+			config.plugins.mc_fb.save()
+			evfd.getInstance().vfd_write_string("MEDIACENTER")
+			self.close()
+
+#####----------------------------------------------------------------------#####
+##---------------- FILEBROWSER COPY AND MOVE PROGRESS SCREEN -----------------##
+#####----------------------------------------------------------------------#####
+
+class MC_FileBrowserCopyorMove(Screen):
+	skin = """
+		<screen name="MC_FileBrowserCopyMove" position="center,center" size="600,400" title="Copy or Move" >
+			<widget source="data" render="Label" position="15,10" zPosition="2" size="570,80" font="Regular;20" valign="top" halign="left" transparent="1" />
+			<widget source="dest" render="Label" position="15,100" zPosition="2" size="570,130" font="Regular;20" valign="top" halign="left" transparent="1" />
+			<widget source="progresstext" render="Label" position="15,240" zPosition="2" size="570,25" font="Regular;20" valign="top" halign="left" transparent="1" />
+			<widget source="remtime" render="Label" position="15,280" zPosition="2" size="570,30" font="Regular;20" valign="top" halign="left" transparent="1" />
+			<widget name="percentbar" position="75,325" size="450,15" zPosition="2" transparent="0" />
+			<widget source="percent" render="Label" position="0,345" zPosition="2" size="600,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<eLabel backgroundColor="red" position="36,394" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="11,365" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+		</screen>"""
+
+	def __init__(self, session, copysource, sourcesize, copydest, whattodo):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		Screen.__init__(self, session)
+
+		self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
+		{
+			"cancel": self.CheckOK,
+			"ok": self.CheckOK,
+			"red": self.CancelRequest
+		}, -2)
+
+		self.copysource = copysource
+		self.sourcesize = sourcesize
+		self.copydest = copydest
+		self.whattodo = whattodo
+		self.filename = None
+		self.destsize = 0
+		self.bigger10GB = False
+		self.isCompleted = False
+		self.olddestsize = 0
+
+		if self.debug != "off":
+			print "[MC_FileBrowser copy&move] Source: ", self.copysource
+			print "[MC_FileBrowser copy&move] Sourcesize: ", self.sourcesize
+			print "[MC_FileBrowser copy&move] Destination: ", self.copydest
+			print "[MC_FileBrowser copy&move] Operation: ", self.whattodo
+
+		self["key_red"] = Button(_("cancel process"))
+
+		self["data"] = StaticText(_("N/A"))
+		self["dest"] = StaticText(_("Destination path:\n%s") % self.copydest)
+		self["progresstext"] = StaticText(_("Progress: N/A"))
+		self["sourcesize"] = StaticText(_("N/A"))
+		self["percent"] = StaticText(_("N/A"))
+		self["remtime"] = StaticText(_("Remaining time: N/A"))
+
+		self.percentbar = Slider(0, 100)
+		self["percentbar"] = self.percentbar
+
+		self.container=eConsoleAppContainer()
+		self.container.appClosed.append(self.CopyorMoveFinished)
+
+		self.UpdateTimer = eTimer()
+		self.UpdateTimer.callback.append(self.UpdateScreen)
+
+		self.onShown.append(self.setWindowTitle)
+
+		self.CheckSize()
+		self.execCopyorMove()
+
+	def setWindowTitle(self):
+		if self.whattodo == "move":
+			self.setTitle(_("Move process..."))
+		else:
+			self.setTitle(_("Copy process..."))
+
+	def CheckSize(self):
+		if self.copysource.upper().endswith("/"):
+			self.filename = self.copysource[:-1].split("/")[-1]
+			self["data"].setText(_("Folder:\n%s") % self.copysource[:-1].split("/")[-1])
+		else:
+			if fileExists(self.copysource, 'r'):
+				self.filename = self.copysource.split("/")[-1]
+				self["data"].setText(_("File:\n%s") % self.copysource.split("/")[-1])
+		#switch to GB progress in UpdateScreen
+		if self.sourcesize > 10000:
+			self.bigger10GB = True
+		self.UpdateTimer.start(3000, True)
+
+	def execCopyorMove(self):
+		if self.whattodo == "move":
+			cmd = 'mv "' + self.copysource + '" "'  + self.copydest + '"'
+		else:
+			cmd = 'cp -a "' + self.copysource + '" "'  + self.copydest + '"'
+		try:
+			if self.debug != "off":
+				print "[MC_FileBrowser copy&move] Command: ", cmd
+			self.container.execute(cmd)
+		except:
+			if self.debug != "off":
+				print "[MC_FileBrowser copy&move] Command failed!"
+			self.session.open(MC_MessageBox,_("Selection: %s\nFile operation failed!") % cmd, MC_MessageBox.TYPE_ERROR)
+			self.close(False)
+
+	def UpdateScreen(self):
+		if self.copysource.upper().endswith("/"): # when sourcedata is a folder checksize with du command
+			if pathExists (self.copydest + self.filename):
+				self.destsize = command('du -sL "' + self.copydest + self.filename + '" | cut -d / -f1')
+				self.destsize = round(int(self.destsize) / 1024.0,2)
+			else:
+				self.destsize = 0
+		else:
+			if fileExists (self.copydest + self.filename, 'r'):
+				self.destsize = os_path.getsize(self.copydest + self.filename)
+				self.destsize = round(self.destsize / (1024.0 * 1024.0), 2)
+			else:
+				self.destsize = 0
+
+		if self.bigger10GB is True:
+			showsourcesize = round(self.sourcesize / 1024.0, 2)
+			if self.destsize > 10000:
+				showdestsize = round(self.destsize / 1024.0, 2)
+				self["progresstext"].setText(_("Progress:  %s GB of %s GB") % (showdestsize, showsourcesize))
+			else:
+				self["progresstext"].setText(_("Progress:  %s MB of %s GB") % (self.destsize, showsourcesize))
+		else:
+			self["progresstext"].setText(_("Progress:  %s MB of %s MB") % (self.destsize, self.sourcesize))
+
+		self["percent"].setText(str(round(self.destsize * 100 / self.sourcesize, 2)) + " %")
+		self["percentbar"].setValue(int(self.destsize * 100 / self.sourcesize))
+
+		if self.olddestsize != 0:
+			transferspeed = round((self.destsize - self.olddestsize) / 3, 0)
+			kbytesleft = round(self.sourcesize - self.destsize,0)
+			if transferspeed > 0:
+				timeleft = round((kbytesleft / transferspeed) / 60, 2)
+			else:
+				timeleft = 0
+			if timeleft < 1 and timeleft > 0:
+				self["remtime"].setText(_("Remaining time:  less then 1 minute"))
+			elif timeleft == 0:
+				self["remtime"].setText(_("Remaining time:  none"))
+			else:
+				if int(timeleft) == 1:
+					self["remtime"].setText(_("Remaining time:  about 1 minute"))
+				else:
+					self["remtime"].setText(_("Remaining time:  %s minutes") % str(int(timeleft)))
+
+		self.olddestsize = self.destsize
+		self.UpdateTimer.start(3000, True)
+
+	def CopyorMoveFinished(self, retval):
+		self.UpdateTimer.stop()
+		self["key_red"].setText("")
+		self["progresstext"].setText(_("Progress: completed"))
+		self["percent"].setText("100 %")
+		self["percentbar"].setValue(100)
+		self["remtime"].setText(_("Remaining time: none"))
+		self.isCompleted = True
+
+	def CheckOK(self):
+		if self.isCompleted is True:
+			# check that copying or moving was successful
+			if self.debug != "off":
+				print '[MC_FileBrowser copy&move] Checking that' + self.filename + ' is copied or moved...'
+			if self.copysource.upper().endswith("/"): # get destsize again to check that operation was successful
+				self.destsize = command('du -sL "' + self.copydest + self.filename + '" | cut -d / -f1')
+				self.destsize = round(int(self.destsize) / 1024.0,2)
+			else:
+				self.destsize = os_path.getsize(self.copydest + self.filename)
+				self.destsize = round(self.destsize / (1024.0 * 1024.0), 2)
+			if (pathExists(self.copydest + self.filename) or fileExists(self.copydest + self.filename)) and self.sourcesize == self.destsize:
+				if self.debug != "off":
+					print "[MC_FileBrowser copy&move] operation finished successfully!"
+			else:
+				if self.debug != "off":
+					print "[MC_FileBrowser copy&move] operation failed!"
+				self.session.open(MC_MessageBox,_("ERROR\nFile operation failed!\nThe size of %s is smaller then the original File! Something went wrong!") % self.filename, MC_MessageBox.TYPE_ERROR)
+			self.close(True)
+
+	def CancelRequest(self):
+		if self.isCompleted is False:
+			self.session.openWithCallback(self.Cancel, MC_MessageBox,_("Do you really want to cancel the process?"), MC_MessageBox.TYPE_YESNO)
+
+	def Cancel(self, answer):
+		if answer is True:
+			self.container.kill()
+			self.UpdateTimer.stop()
+			if pathExists(self.copydest + self.copysource[:-1].split("/")[-1]) or fileExists(self.copydest + self.copysource.split("/")[-1]):
+				os_system('rm -rf "' + self.copydest + self.filename + '"')
+			self.close(False)
+
+#####----------------------------------------------------------------------#####
+##-------------------- FILEBROWSER SETTINGS SCREEN ---------------------------##
+#####----------------------------------------------------------------------#####
+
+class FileBrowserSettings(Screen):
+	skin = """<screen position="center,center" size="400,320" title="MC-Filebrowser Settings" backgroundColor="#000000" >
+		<widget name="configlist" position="10,10" size="380,270" />
+		<eLabel backgroundColor="red" position="28,310" size="140,3" zPosition="2"/>
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<widget name="key_red" position="28,278" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+		<eLabel backgroundColor="blue" position="232,310" size="140,3" zPosition="2"/>
+		<widget name="key_blue" position="232,278" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+	</screen>"""
+
+	def __init__(self, session, filelist):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		self.skin = FileBrowserSettings.skin
+		self.filelist = filelist
+
+		Screen.__init__(self, session)
+		self["key_blue"] = Button(_("Network"))
+		self["key_red"] = Button(_("Back"))
+		self["show_title"] = StaticText(_("MediaCenter FileBrowser Settings"))
+		self["actions"] = NumberActionMap(["SetupActions"],
+		{
+			"ok": self.keyOK,
+			"cancel": self.keyExit,
+			"left": self.keyLeft,
+			"right": self.keyRight,
+			"0": self.keyNumber,
+			"1": self.keyNumber,
+			"2": self.keyNumber,
+			"3": self.keyNumber,
+			"4": self.keyNumber,
+			"5": self.keyNumber,
+			"6": self.keyNumber,
+			"7": self.keyNumber,
+			"8": self.keyNumber,
+			"9": self.keyNumber
+		}, -1)
+		self["ColorActions"] = HelpableActionMap(self, "ColorActions",
+			{
+				"blue": self.netWork,
+			})
+
+		self.list = []
+		self["configlist"] = ConfigList(self.list)
+		self.list.append(getConfigListEntry(_("Standard filelist sorting..."), config.plugins.mc_fb_sort.enabled))
+		self.list.append(getConfigListEntry(_("Standard filelist viewing"), config.plugins.mc_fb_view.enabled))
+
+	def keyLeft(self):
+		self["configlist"].handleKey(KEY_LEFT)
+
+	def keyRight(self):
+		self["configlist"].handleKey(KEY_RIGHT)
+
+	def keyNumber(self, number):
+		self["configlist"].handleKey(KEY_0 + number)
+
+	def keyExit(self):
+		evfd.getInstance().vfd_write_string("FILEBROWSER")
+		self.close()
+
+	def keyOK(self):
+		config.plugins.mc_fb.save()
+		config.plugins.mc_fb_view.save()
+		config.plugins.mc_fb_sort.save()
+
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		currentsort = sort
+
+		tmpsort = config.plugins.mc_fb_sort.enabled.getValue()
+		if self.debug != "off":
+			print "[MC_FileBrowser settings] tmpsort", tmpsort
+			print "[MC_FileBrowser settings] currentsort", currentsort
+
+		tmpview = config.plugins.mc_fb_view.enabled.getValue()
+		if self.debug != "off":
+			print "[MC_FileBrowser settings] tmpview", tmpview
+			print "[MC_FileBrowser settings] currentview", currentview
+
+		if config.plugins.mc_fb_view.enabled.getValue() == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+		elif config.plugins.mc_fb_view.enabled.getValue() == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+		elif config.plugins.mc_fb_view.enabled.getValue() == "small":
+			art = 0
+			itemheight = 20
+			fontsize = 15
+		else: # default
+			art = 1
+			itemheight = 23
+			fontsize = 18
+
+		evfd.getInstance().vfd_write_string("FILEBROWSER")
+
+		self.filelist.refresh(fontsize, itemheight, art, tmpsort)
+		self.close()
+
+	def netWork(self):
+		self.session.open(NetworkAdapterSelection)
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileList.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileList.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileList.py	(revision 9331)
@@ -0,0 +1,670 @@
+# -*- coding: UTF-8 -*-
+
+from re import compile as re_compile
+from os import path as os_path, listdir
+from Components.MenuList import MenuList
+from Components.Harddisk import harddiskmanager
+from Tools.Directories import SCOPE_SKIN_IMAGE, resolveFilename, pathExists, crawlDirectory
+from enigma import RT_HALIGN_LEFT, RT_HALIGN_CENTER, RT_VALIGN_CENTER, RT_WRAP, eListboxPythonMultiContent, eServiceReference, eServiceCenter, gFont
+from Tools.LoadPixmap import LoadPixmap
+from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest, MultiContentEntryPixmapAlphaTest
+from Tools.HardwareInfo import HardwareInfo
+from MC_Imdb import shortname
+import os, glob, time
+from Components.config import *
+import random
+from Plugins.Extensions.Aafpanel.plugin import command
+
+debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+boxversion = command('cat /etc/model')
+if debug != "off":
+	print "[filelist] read boxversion", boxversion
+EXTENSIONS = {
+		"m4a": "music",
+		"mp2": "music",
+		"mp3": "music",
+		"wav": "music",
+		"ogg": "music",
+		"flac": "music",
+		"jpg": "picture",
+		"jpeg": "picture",
+		"png": "picture",
+		"bmp": "picture",
+		"mts": "movie",
+		"m2ts": "movie",
+		"pls": "movie",
+		"vdr": "movie",
+		"vob": "movie",
+		"wmv": "movie",
+		"ts": "movie",
+		"avi": "movie",
+		"divx": "movie",
+		"mpg": "movie",
+		"mpeg": "movie",
+		"mkv": "movie",
+		"mp4": "movie",
+		"mov": "movie",
+		"trp": "movie",
+		"m4v": "movie",
+		"flv": "movie",
+		"rar": "rar",
+		"iso": "iso",
+		"img": "img"
+	}
+def tryOpen(filename):
+	try:
+		procFile = open(filename)
+	except IOError:
+		return ""
+	return procFile
+
+def FileEntryComponent(name, absolute = None, isDir = False, art = 1, directory = "/", size = 0, timestamp = 0):
+	res = [ (absolute, isDir) ]
+	moviename = name
+	imdbmain = config.plugins.mc_imdb.savedir.getValue()
+	global debug
+	global boxversion
+	short = name
+	if debug != "off":
+		print "[MC_FileList] FileEntryComponent art:",art
+	if art == 4 or art == 5 or art == 6 or art == 7:
+
+		readdir = str(imdbmain) + "/imdb/"
+		serie = False
+		showing = True
+		if debug != "off":
+			print "[MC_FileList] FileEntryComponent: read shortname"
+		short = shortname(moviename,showing)
+		newshort = short.lower()
+		newshort = newshort.replace(" ", "")
+		moviename = newshort		
+		checkdir = readdir + moviename + ".jpg"
+		if debug != "off":
+			print "[MC_FileList] FileEntryComponent: check imdb status"
+			
+		if not pathExists(readdir + moviename + ".jpg"):
+			if debug != "off":
+				print "[MC_FileList] FileEntryComponent use: standart"
+
+			if isDir:
+				imdbdirectory = "extensions/directory.png"
+			else:
+				extension = name.split('.')
+				extension = extension[-1].lower()
+				if EXTENSIONS.has_key(extension):
+					imdbdirectory = "extensions/" + EXTENSIONS[extension] + ".png"
+				else:
+					imdbdirectory = "extensions/movie.png"
+
+		elif pathExists(readdir + moviename + ".posterpreview.jpg"):
+			if debug != "off":
+				print "[MC_FileList] FileEntryComponent use: imdbserie"
+
+			imdbdirectory = readdir + moviename + ".posterpreview.jpg"
+			serie = True
+		else:
+			if debug != "off":
+				print "[MC_FileList] FileEntryComponent use: imdb"
+			imdbdirectory = readdir + moviename + ".jpg"
+	else:
+		if debug != "off":
+			print "[MC_FileList] FileEntryComponent use: standart"
+	
+		if isDir:
+			imdbdirectory = "extensions/directory.png"
+		else:
+			extension = name.split('.')
+			extension = extension[-1].lower()
+			if EXTENSIONS.has_key(extension):
+				imdbdirectory = "extensions/" + EXTENSIONS[extension] + ".png"
+			else:
+				imdbdirectory = "extensions/movie.png"
+
+
+	if art != 0:
+		if art != 7:
+			if debug != "off":
+				print "[MC_FileList] FileEntryComponent set: filesize"
+	
+			if pathExists(str(directory) + "/" + str(name)):
+				filesize = size
+				if art == 2 or art == 6:
+					file_date = time.strftime("%m/%d/%y %H:%M:%S", timestamp)
+		
+				if filesize >= 1024:
+					filesize = filesize / 1024
+					end = " KB"
+					if filesize >= 1024:
+						filesize = filesize / 1024
+						end = " MB"
+					if filesize >= 1024:
+						filesize = float(filesize) / float(1024)
+						# float auf 2 Nachkommastellen runden
+						filesize = round(filesize,2)
+						end = " GB"
+				elif filesize == 0:
+					filesize = ""
+					end = ""
+				else:
+					end = " B"
+			else:
+				file_lastmod_date = ""
+				filesize = ""
+				end = ""
+				file_date = ""
+
+	from skin import parseColor
+	backColorService = parseColor('#525252').argb()	
+
+	name1 = "<" +_("List of Storage Devices") + ">"
+	name2 = "<" +_("Parent Directory") + ">"
+	
+	if name != name1 and name != name2:
+		name = name.decode("latin-1",'ignore').encode("utf8")
+		short = short.decode("latin-1",'ignore').encode("utf8")
+
+	if art == 0:
+		res.append((eListboxPythonMultiContent.TYPE_TEXT, 35, 1, 1000, 20, 0, RT_HALIGN_LEFT, name))
+		if isDir:
+			png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/directory.png"))
+		else:
+			extension = name.split('.')
+			extension = extension[-1].lower()
+			if EXTENSIONS.has_key(extension):
+				png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/" + EXTENSIONS[extension] + ".png"))
+			else:
+				png = None
+		if png is not None:
+			res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 10, 2, 20, 20, png))
+	elif art == 1:
+		itemheight = 35
+		res.append(MultiContentEntryText(pos=(0, 0), size=(1000, itemheight), backcolor_sel=backColorService))
+		
+		if isDir:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(20, 20), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/directory.png")), backcolor_sel=backColorService))
+		else:
+			
+			extension = name.split('.')
+			extension = extension[-1].lower()
+			if EXTENSIONS.has_key(extension):
+				res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(20, 20), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/" + EXTENSIONS[extension] + ".png")), backcolor_sel=backColorService))
+
+		res.append(MultiContentEntryText(pos=(25, 0), size=(1000, 20), font=0, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+		res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))		
+	elif art == 2:
+		itemheight = 23
+		res.append(MultiContentEntryText(pos=(0, 0), size=(1000, itemheight), backcolor_sel=backColorService))
+		
+		if isDir:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(20, 20), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/directory.png")), backcolor_sel=backColorService))
+		else:
+			extension = name.split('.')
+			extension = extension[-1].lower()
+			if EXTENSIONS.has_key(extension):
+				res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(20, 20), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/" + EXTENSIONS[extension] + ".png")), backcolor_sel=backColorService))
+		res.append(MultiContentEntryText(pos=(25, 0), size=(590, 20), font=0, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+		res.append(MultiContentEntryText(pos=(640, 0), size=(200, 20), font=0, text=str(file_date), flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+		res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))		
+	elif art == 3:
+		itemheight = 35
+		res.append(MultiContentEntryText(pos=(0, 0), size=(1000, itemheight), backcolor_sel=backColorService))
+		
+		if isDir:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 5), size=(30, 30), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/directory.png")), backcolor_sel=backColorService))
+		else:
+			extension = name.split('.')
+			extension = extension[-1].lower()
+			if EXTENSIONS.has_key(extension):
+				res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 5), size=(30, 30), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/" + EXTENSIONS[extension] + ".png")), backcolor_sel=backColorService))
+		res.append(MultiContentEntryText(pos=(25, 0), size=(765, 60), font=0, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+		res.append(MultiContentEntryText(pos=(770, 0), size=(100, 30), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))		
+
+	elif art == 4:
+		itemheight = 160
+		res.append(MultiContentEntryText(pos=(0, 0), size=(1200, itemheight), backcolor_sel=backColorService))
+
+		if serie == True:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(400, 240), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, imdbdirectory)), backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(420, 0), size=(1000, 20), font=0, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))		
+			if pathExists(readdir + moviename + ".imdb"):
+				imdbdata = tryOpen(readdir + moviename + ".imdb")
+				lines = imdbdata.readline().split('\n')
+				imdb = ""
+				start = 0
+				for line in imdbdata:
+					if debug != "off":
+						print line
+					if line is not "" or line is not " " or line is not "\n" or line is not "|":
+						if line.split(":")[0] == "Plot":
+							start = 1
+							imdb += line.split(":\t")[1]
+						elif start > 0:
+							imdb += line
+				res.append(MultiContentEntryText(pos=(420, 20), size=(450, 135), font=0, text=imdb, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+		else:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 10), size=(100, 140), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, imdbdirectory)), backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(120, 0), size=(1000, 20), font=0, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))		
+			if pathExists(readdir + moviename + ".imdb"):
+				imdbdata = tryOpen(readdir + moviename + ".imdb")
+				lines = imdbdata.readline().split('\n')
+				imdb = ""
+				for line in imdbdata:
+					if debug != "off":
+						print line
+					if line is not "" or line is not " " or line is not "\n" or line is not "|":
+						imdb += line
+				res.append(MultiContentEntryText(pos=(160, 20), size=(1000, 135), font=0, text=imdb, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+
+	elif art == 5:
+		itemheight = 160
+		res.append(MultiContentEntryText(pos=(0, 0), size=(1000, itemheight), backcolor_sel=backColorService))
+		if serie == True:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(400, 240), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, imdbdirectory)), backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(420, 0), size=(1000, 30), font=1, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))		
+			if pathExists(readdir + moviename + ".imdb"):
+				imdbdata = tryOpen(readdir + moviename + ".imdb")
+				lines = imdbdata.readline().split('\n')
+				imdb = ""
+				start = 0
+				for line in imdbdata:
+					if line is not "" or line is not " " or line is not "\n" or line is not "|":
+						if line.split(":")[0] == "Plot":
+							start = 1
+							imdb += line.split(":\t")[1]
+						elif start > 0:
+							imdb += line
+				res.append(MultiContentEntryText(pos=(420, 40), size=(450, 110), font=0, text=imdb, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+		else:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 10), size=(100, 140), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, imdbdirectory)), backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(120, 0), size=(1000, 30), font=1, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))		
+			if pathExists(readdir + moviename + ".imdb"):
+				imdbdata = tryOpen(readdir + moviename + ".imdb")
+				lines = imdbdata.readline().split('\n')
+				imdb = ""
+				for line in imdbdata:
+					if line is not "" or line is not " " or line is not "\n" or line is not "|":
+						imdb += line
+				res.append(MultiContentEntryText(pos=(120, 40), size=(1000, 110), font=0, text=imdb, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+	elif art == 6:
+		itemheight = 180
+		res.append(MultiContentEntryText(pos=(0, 0), size=(1000, itemheight), backcolor_sel=backColorService))
+		if serie == True:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(400, 240), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, imdbdirectory)), backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(420, 0), size=(1000, 30), font=2, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(700, 150), size=(200, 40), font=1, text=str(file_date), flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))	
+			if pathExists(readdir + moviename + ".imdb"):
+				imdbdata = tryOpen(readdir + moviename + ".imdb")
+				lines = imdbdata.readline().split('\n')
+				imdb = ""
+				start = 0
+				for line in imdbdata:
+					if line is not "" or line is not " " or line is not "\n" or line is not "|":
+						if line.split(":")[0] == "Plot":
+							start = 1
+							imdb += line.split(":\t")[1]
+						elif start > 0:
+							imdb += line
+				res.append(MultiContentEntryText(pos=(420, 40), size=(450, 110), font=0, text=imdb, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+		else:		
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 10), size=(100, 140), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, imdbdirectory)), backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(120, 0), size=(1000, 30), font=2, text=name, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+			res.append(MultiContentEntryText(pos=(700, 150), size=(200, 40), font=1, text=str(file_date), flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))	
+			if pathExists(readdir + moviename + ".imdb"):
+				imdbdata = tryOpen(readdir + moviename + ".imdb")
+				lines = imdbdata.readline().split('\n')
+				imdb = ""
+				start = 0
+				for line in imdbdata:
+					if line is not "" or line is not " " or line is not "\n" or line is not "|":
+						if line.split(":")[0] == "Plot":
+							start = 1
+							imdb += line.split(":\t")[1]
+						elif start > 0:
+							imdb += line
+				res.append(MultiContentEntryText(pos=(160, 40), size=(700, 110), font=0, text=imdb, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+
+	elif art == 7:
+		itemheight = 35
+		res.append(MultiContentEntryText(pos=(0, 0), size=(1000, itemheight), backcolor_sel=backColorService))
+		
+		if isDir:
+			res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(20, 20), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/directory.png")), backcolor_sel=backColorService))
+		else:			
+			extension = name.split('.')
+			extension = extension[-1].lower()
+			if EXTENSIONS.has_key(extension):
+				res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(20, 20), png=LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/" + EXTENSIONS[extension] + ".png")), backcolor_sel=backColorService))
+
+		res.append(MultiContentEntryText(pos=(25, 0), size=(1000, 20), font=0, text=short, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))
+#		res.append(MultiContentEntryText(pos=(794, 0), size=(100, 20), font=0, text=str(filesize) + end, flags=RT_HALIGN_LEFT|RT_WRAP, backcolor_sel=backColorService))		
+	return res
+		
+class FileList(MenuList):
+	def __init__(self, directory, showDirectories = True, showFiles = True, showMountpoints = True, matchingPattern = None, useServiceRef = False, inhibitDirs = False, inhibitMounts = False, isTop = False, enableWrapAround = False, additionalExtensions = None, fontsize = 18, itemheight = 23, art = 1, sort = "default"):
+		MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
+		global debug
+		self.debug = debug
+		self.additional_extensions = additionalExtensions
+		self.mountpoints = []
+		self.current_directory = None
+		self.current_mountpoint = None
+		self.useServiceRef = useServiceRef
+		self.showDirectories = showDirectories
+		self.showMountpoints = showMountpoints
+		self.showFiles = showFiles
+		self.isTop = isTop
+		self.matchingPattern = matchingPattern
+		self.inhibitDirs = inhibitDirs or []
+		self.inhibitMounts = inhibitMounts or []
+		self.art = art
+		self.fontsize = fontsize
+		self.itemheight = itemheight
+		self.sort = sort
+		self.refreshMountpoints()
+		self.changeDir(directory, art = art, sort = sort)
+		self.l.setFont(0, gFont("Regular", fontsize))
+		self.l.setFont(1, gFont("Regular", fontsize+2 ))
+		self.l.setFont(2, gFont("Regular", fontsize+4 ))
+		self.l.setItemHeight(itemheight)
+		self.serviceHandler = eServiceCenter.getInstance()
+
+	def refreshMountpoints(self):
+		self.mountpoints = [os_path.join(p.mountpoint, "") for p in harddiskmanager.getMountedPartitions()]
+		self.mountpoints.sort(reverse = True)
+
+	def getMountpoint(self, file):
+		file = os_path.join(os_path.realpath(file), "")
+		for m in self.mountpoints:
+			if file.startswith(m):
+				return m
+		return False
+
+	def getMountpointLink(self, file):
+		if os_path.realpath(file) == file:
+			return self.getMountpoint(file)
+		else:
+			if file[-1] == "/":
+				file = file[:-1]
+			mp = self.getMountpoint(file)
+			last = file
+			file = os_path.dirname(file)
+			while last != "/" and mp == self.getMountpoint(file):
+				last = file
+				file = os_path.dirname(file)
+			return os_path.join(last, "")
+
+	def getSelection(self):
+		if self.l.getCurrentSelection() is None:
+			return None
+		return self.l.getCurrentSelection()[0]
+
+	def getCurrentEvent(self):
+		l = self.l.getCurrentSelection()
+		if not l or l[0][1] == True:
+			return None
+		else:
+			return self.serviceHandler.info(l[0][0]).getEvent(l[0][0])
+
+	def getFileList(self):
+		return self.list
+
+	def inParentDirs(self, dir, parents):
+		dir = os_path.realpath(dir)
+		for p in parents:
+			if dir.startswith(p):
+				return True
+		return False
+
+	def changeDir(self, directory, art = 1, sort = "default", select = None):
+		if self.debug != "off":
+			print "[MC_FileList] changedir"
+		isDir = False
+		if sort == "shuffle":
+			sort = "default"
+			shuffle = True
+		else:
+			shuffle = False
+		self.list = []
+		if self.current_directory is None:
+			if directory and self.showMountpoints:
+				self.current_mountpoint = self.getMountpointLink(directory)
+			else:
+				self.current_mountpoint = None
+		self.current_directory = directory
+		directories = []
+		files = []
+
+		if directory is None and self.showMountpoints:
+			for p in harddiskmanager.getMountedPartitions():
+				path = os_path.join(p.mountpoint, "")
+				if path not in self.inhibitMounts and not self.inParentDirs(path, self.inhibitDirs):
+					self.list.append(FileEntryComponent(name = p.description, absolute = path, isDir = True, art = art, directory = directory))
+			files = [ ]
+			directories = [ ]
+		elif directory is None:
+			files = [ ]
+			directories = [ ]
+		elif self.useServiceRef:
+			root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + directory)
+			if self.additional_extensions:
+				root.setName(self.additional_extensions)
+			serviceHandler = eServiceCenter.getInstance()
+			list = serviceHandler.list(root)
+			
+			while 1:
+				s = list.getNext()
+				if not s.valid():
+					del list
+					break
+				if s.flags & s.mustDescent:
+					directories.append(s.getPath())
+				else:
+					files.append(s)
+			directories.sort()
+			files.sort()
+		
+		else:
+			if os_path.exists(directory):
+				files = listdir(directory)
+				files.sort()
+				tmpfiles = files[:]
+				for x in tmpfiles:
+					if os_path.isdir(directory + x):
+						directories.append(directory + x + "/")
+						files.remove(x)
+		if directory is not None and self.showDirectories and not self.isTop:
+			if directory == self.current_mountpoint and self.showMountpoints:
+				self.list.append(FileEntryComponent(name = "<" +_("List of Storage Devices") + ">", absolute = None, isDir = True, art = art, directory = directory))
+			elif (directory != "/") and not (self.inhibitMounts and self.getMountpoint(directory) in self.inhibitMounts):
+				self.list.append(FileEntryComponent(name = "<" +_("Parent Directory") + ">", absolute = '/'.join(directory.split('/')[:-2]) + '/', isDir = True, art = art, directory = directory))
+		date_file_list = []
+		if self.showDirectories:
+			for x in directories:
+				if not (self.inhibitMounts and self.getMountpoint(x) in self.inhibitMounts) and not self.inParentDirs(x, self.inhibitDirs):
+					name = x.split('/')[-2]
+					file = x
+					path = x
+					if pathExists(path):
+						stats = os.stat(path)
+						size = stats[6]
+						lastmod_date = time.localtime(stats[8])
+					else:
+						if self.debug != "off":
+							print "[MC_FileList] Error directory path not found: ", path
+						size = 0
+						lastmod_date = 0
+
+					isDir = True
+					if sort == "size" or sort == "sizereverse":
+						date_file_tuple = size, name, path, file, lastmod_date, isDir
+					elif sort == "date" or sort == "datereverse" or sort == "default":
+						date_file_tuple = lastmod_date, name, path, file, size, isDir
+					elif sort == "alpha" or sort == "alphareverse":
+						date_file_tuple = name, lastmod_date, path, file, size, isDir
+					date_file_list.append(date_file_tuple)
+		if self.showFiles:
+			for x in files:
+				if self.useServiceRef:
+					# beim pluginbrowser testen ob man das pluging.png ermitteln kann und wenn dann mit einem grossen tauschen
+					path = x.getPath()
+					name = path.split('/')[-1]
+					file = x
+					if pathExists(path):
+						stats = os.stat(path)
+						size = stats[6]
+						lastmod_date = time.localtime(stats[8])
+					else:
+						if self.debug != "off":
+							print "[MC_FileList] Error file path not found: ", path
+						size = 0
+						lastmod_date = 0
+
+					isDir = False
+					if sort == "size" or sort == "sizereverse":
+						date_file_tuple = size, name, path, file, lastmod_date, isDir
+					elif sort == "date" or sort == "datereverse" or sort == "default":
+						date_file_tuple = lastmod_date, name, path, file, size, isDir
+					elif sort == "alpha" or sort == "alphareverse":
+						date_file_tuple = name, lastmod_date, path, file, size, isDir
+					date_file_list.append(date_file_tuple)	
+				else:
+					path = directory + x
+					name = x
+					file = x
+					if pathExists(path):
+						stats = os.stat(path)
+						size = stats[6]
+						lastmod_date = time.localtime(stats[8])
+					else:
+						if self.debug != "off":
+							print "[MC_FileList] Error file path not found: ", path
+						size = 0
+						lastmod_date = 0
+					isDir = False
+
+					if sort == "size" or sort == "sizereverse":
+						date_file_tuple = size, name, path, file, lastmod_date, isDir
+					elif sort == "date" or sort == "datereverse" or sort == "default":
+						date_file_tuple = lastmod_date, name, path, file, size, isDir
+					elif sort == "alpha" or sort == "alphareverse":
+						date_file_tuple = name, lastmod_date, path, file, size, isDir
+				
+					date_file_list.append(date_file_tuple)
+
+		if sort == "datereverse" or sort == "alpha" or sort == "sizereverse" or sort == "date" or sort == "alphareverse" or sort == "size":
+			date_file_list.sort()
+		if sort == "date" or sort == "alphareverse" or sort == "size":
+			date_file_list.reverse()
+
+		if shuffle == True:
+			random.shuffle(date_file_list)
+
+		for x in date_file_list:
+			if sort == "size" or sort == "sizereverse":
+#				date_file_tuple = size, name, path, file, lastmod_date, isDir
+				size = x[0]				
+				name = x[1]
+				path = x[2]
+				file = x[3] 
+				timestamp = x[4]				
+				isDir = x[5]
+			elif sort == "date" or sort == "datereverse" or sort == "default":
+#				date_file_tuple = lastmod_date, name, path, file, size, isDir			
+				timestamp = x[0]					
+				name = x[1]
+				path = x[2]
+				file = x[3] 
+				size = x[4]
+				isDir = x[5]			
+			elif sort == "alpha" or sort == "alphareverse":
+#				date_file_tuple = name, lastmod_date, path, file, size, isDir
+				name = x[0]
+				timestamp = x[1]					
+				path = x[2]
+				file = x[3] 
+				size = x[4]
+				isDir = x[5]
+			if self.debug == "high":
+				print "--------name---------", name
+				print "--------path---------", path						
+				print "--------file---------", file	
+				print "--------size---------", size	
+				print "--------isDir---------", isDir	
+				print "--------timestamp---------", timestamp										
+			if isDir == True:
+				if not (self.inhibitMounts and self.getMountpoint(file) in self.inhibitMounts) and not self.inParentDirs(file, self.inhibitDirs):
+					self.list.append(FileEntryComponent(name = name, absolute = file, isDir = isDir, art = art, directory = directory, size = size, timestamp = timestamp))
+			else:
+				if (self.matchingPattern is None) or re_compile(self.matchingPattern).search(path):
+					self.list.append(FileEntryComponent(name = name, absolute = file , isDir = isDir, art = art, directory = directory, size = size, timestamp = timestamp))
+
+		self.l.setList(self.list)
+		if select is not None:
+			i = 0
+			self.moveToIndex(0)
+			for x in self.list:
+				p = x[0][0]
+				if isinstance(p, eServiceReference):
+					p = p.getPath()
+				if p == select:
+					self.moveToIndex(i)
+				i += 1
+
+	def getCurrentDirectory(self):
+		return self.current_directory
+
+	def canDescent(self, player_index = None):
+		if self.getSelection() is None:
+			return False
+		return self.getSelection()[1]
+
+	def descent(self, player_index = None):
+		if self.getSelection() is None:
+			return
+		self.changeDir(self.getSelection()[0], self.art, self.sort, select = self.current_directory)
+
+	def getFilename(self, player_index = None):
+		if self.getSelection() is None:
+			return None
+		x = self.getSelection()[0]
+		if isinstance(x, eServiceReference):
+			x = x.getPath()
+		return x
+
+	def getServiceRef(self):
+		if self.getSelection() is None:
+			return None
+		x = self.getSelection()[0]
+		if isinstance(x, eServiceReference):
+			return x
+		return None
+
+	def execBegin(self):
+		harddiskmanager.on_partition_list_change.append(self.partitionListChanged)
+
+	def execEnd(self):
+		harddiskmanager.on_partition_list_change.remove(self.partitionListChanged)
+
+	def refresh(self, fontsize = 18, itemheight = 23, art = 1, sort = "default"):
+		self.art = art
+		self.fontsize = fontsize
+		self.itemheight = itemheight
+
+		self.sort = sort
+
+		self.l.setFont(0, gFont("Regular", fontsize))
+		self.l.setFont(1, gFont("Regular", fontsize+2 ))
+		self.l.setFont(2, gFont("Regular", fontsize+4 ))
+		self.l.setItemHeight(itemheight)
+		self.changeDir(self.current_directory, self.art, self.sort, self.getFilename())
+				
+	def partitionListChanged(self, action, device):
+		self.refreshMountpoints()
+		if self.current_directory is None:
+			self.refresh()
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileListCover.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileListCover.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_FileListCover.py	(revision 9331)
@@ -0,0 +1,637 @@
+from Screens.Screen import Screen
+from Components.AVSwitch import AVSwitch
+from Components.ActionMap import ActionMap
+from Components.Button import Button
+from Components.PluginComponent import plugins
+from Components.Slider import Slider
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+from Screens.InfoBar import MoviePlayer
+from Components.Sources.StaticText import StaticText
+from Components.Pixmap import Pixmap, MovingPixmap
+from Plugins.Plugin import PluginDescriptor
+from Tools.Directories import resolveFilename, fileExists, pathExists, createDir, SCOPE_MEDIA
+from enigma import getDesktop, ePicLoad, eTimer, eConsoleAppContainer, eServiceReference, eBackgroundFileEraser
+from twisted.web.client import downloadPage, getPage
+from urllib import urlencode, unquote
+from urllib2 import urlopen, Request
+import os
+from enigma import iPlayableService, eTimer, eWidget, eRect, eServiceReference, iServiceInformation, eAVSwitch, evfd, eServiceCenter, eConsoleAppContainer
+from Screens.Screen import Screen
+from Screens.ServiceInfo import ServiceInfoList, ServiceInfoListEntry
+from Screens.HelpMenu import HelpableScreen
+from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
+from Components.Pixmap import Pixmap, MovingPixmap
+from Components.Label import Label
+from Components.Button import Button
+from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
+from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.config import *
+from Screens.MessageBox import MessageBox
+from RecordTimer import RecordTimer
+from Components.AVSwitch import AVSwitch
+from Plugins.Plugin import PluginDescriptor
+from Components.Playlist import PlaylistIOInternal, PlaylistIOM3U, PlaylistIOPLS
+from Components.MediaPlayer import PlayList
+from Components.Console import Console
+from Screens.InfoBarGenerics import InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSupport, InfoBarNotifications, \
+	InfoBarShowHide, InfoBarServiceErrorPopupSupport, InfoBarSecondInfobar, \
+	InfoBarPVRState, InfoBarSimpleEventView, InfoBarServiceNotifications, InfoBarResolutionSelection, \
+	InfoBarMoviePlayerSummarySupport, InfoBarSubtitleSupport, InfoBarTeletextPlugin
+import os
+from os import path as os_path, remove as os_remove, listdir as os_listdir
+import time
+try: # when IMDB is switched OFF in plugload config
+	from Plugins.Extensions.IMDb.plugin import IMDB
+except:
+	pass
+from __init__ import _
+from Screens.NetworkSetup import *
+from Tools.HardwareInfo import HardwareInfo
+from MC_Imdb import shortname
+import os, glob, time
+from enigma import getDesktop, ePicLoad, eTimer, eConsoleAppContainer, eServiceReference, eBackgroundFileEraser
+from Plugins.Extensions.Aafpanel.plugin import command
+
+
+from GlobalFunctions import InfoBarAspectSelection
+
+lastpath = "/"
+
+speicherliste = False
+
+thumbsC = 1
+index = 0
+posvar = "center"
+EXTENSIONS = {
+		"m4a": "music",
+		"mp2": "music",
+		"mp3": "music",
+		"wav": "music",
+		"ogg": "music",
+		"flac": "music",
+		"jpg": "picture",
+		"jpeg": "picture",
+		"png": "picture",
+		"bmp": "picture",
+		"mts": "movie",
+		"m2ts": "movie",
+		"pls": "movie",
+		"vdr": "movie",
+		"vob": "movie",
+		"wmv": "movie",
+		"ts": "movie",
+		"avi": "movie",
+		"divx": "movie",
+		"mpg": "movie",
+		"mpeg": "movie",
+		"mkv": "movie",
+		"mp4": "movie",
+		"mov": "movie",
+		"trp": "movie",
+		"m4v": "movie",
+		"flv": "movie",
+		"rar": "rar",
+		"iso": "iso",
+		"img": "img"
+	}
+	
+tmpmounteron = False
+tmppolicy = "None"
+config.plugins.mc_vp = ConfigSubsection()
+config.plugins.mc_vp.showPreview = ConfigYesNo(default=False)
+config.plugins.mc_vp.preview_delay = ConfigInteger(default=5, limits=(1, 30))
+config.plugins.mc_vp.lastDir = ConfigText(default=resolveFilename(SCOPE_MEDIA))
+config.plugins.mc_all = ConfigSubsection()
+config.plugins.mc_all.showDimmer = ConfigYesNo(default=True)
+config.plugins.mc_all.dimmer_delay = ConfigInteger(default=60, limits=(10, 90))
+
+#config.plugins.mc_vp_imdbCover = ConfigSubsection()
+#config.plugins.mc_vp_imdbCover.enabled = ConfigYesNo(default=False)
+views = [('default',_("default")),('details',_("details")),('big',_("big")),('cover',_("cover mode 1")),('cover2',_("cover mode 2")),('cover3',_("cover mode 3"))]
+config.plugins.mc_vp_view = ConfigSubsection()
+config.plugins.mc_vp_view.enabled = ConfigSelection(views)
+tmpview = config.plugins.mc_vp_view.enabled.getValue()
+
+sorts = [('default',_(" by default")),('alpha',_(" by alphabet")), ('alphareverse',_("by alphabet backward")),('date',_("by date")),('datereverse',_("by date backward")),('size',_("by size")),('sizereverse',_("by size backward"))]
+config.plugins.mc_vp_sort = ConfigSubsection()
+config.plugins.mc_vp_sort.enabled = ConfigSelection(sorts)
+tmpsort = config.plugins.mc_vp_sort.enabled.getValue()
+
+config.plugins.mc_vp_autoSleep = ConfigSubsection()
+config.plugins.mc_vp_autoSleep.enabled = ConfigYesNo(default=True)
+config.plugins.mc_vp_autoSleep.delay = ConfigInteger(default=5, limits=(1, 180))
+
+boxversion = command('cat /etc/model')
+
+T_INDEX = 0
+T_FRAME_POS = 1
+T_PAGE = 2
+T_TITLE = 3
+T_THUMB = 4
+T_URL = 5
+T_FILENAME = 6
+imdbautostatus = False
+debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+
+class FileListCover(MenuList):
+	def __init__(self, directory, showDirectories = True, showFiles = True, showMountpoints = True, matchingPattern = None, useServiceRef = False, inhibitDirs = False, inhibitMounts = False, isTop = False, enableWrapAround = False, additionalExtensions = None, fontsize = 18, itemheight = 23, art = 1, sort = "default", speicherliste_input = None):
+		MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
+		global debug
+		self.debug = debug
+		global index
+		global thumbsC
+		global speicherliste
+		speicherliste = speicherliste_input
+
+		# workaround to detect exactly the MC SKIN resolution...avoids a GS when non fitting skin is uses
+		if config.plugins.mc_globalsettings.currentskin.path.value == '/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml':
+			size_w = getDesktop(0).size().width()
+			size_h = getDesktop(0).size().height()
+		else:
+			skinresolutionX = command('cat ' + config.plugins.mc_globalsettings.currentskin.path.value + ' | grep xres | tr " " "\n" | grep xres | cut -d "=" -f2')
+			if self.debug != "off":
+				print "[MC_FileListCover] detected Skinresolution for CoverView:", skinresolutionX
+			if skinresolutionX == '"1280"':
+				if self.debug != "off":
+					print "[MC_FileListCover] using HD skin parameters..."
+				size_w = 1280
+				size_h = 720
+			elif skinresolutionX == '"1024"':
+				if self.debug != "off":
+					print "[MC_FileListCover] using KS skin parameters..."
+				size_w = 1024
+				size_h = 576
+			elif skinresolutionX == '"720"':
+				if self.debug != "off":
+					print "[MC_FileListCover] using SD skin parameters..."
+				size_w = 720
+				size_h = 576
+			else:
+				if self.debug != "off":
+					print "[MC_FileListCover] no valid resolution detected, using default parameters..."
+				size_w = getDesktop(0).size().width()
+				size_h = getDesktop(0).size().height()
+
+		if size_w == 1280:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 25
+			self.picY = 230
+		elif size_w == 720:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 25
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+		else:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+
+		textsize = 18
+		self.textcolor = "#FFFFFF"
+		self.color = "#000000"
+				
+		self.thumbsX = (size_w - self.spaceLeft) / (self.spaceX + self.picX) # thumbnails in X
+		self.thumbsY = (size_h - self.spaceTop) / (self.spaceY + self.picY) # thumbnails in Y
+		self.thumbsC = self.thumbsX * self.thumbsY # all thumbnails
+		thumbsC = self.thumbsC
+#		global thumbsC
+
+#		thumbsC = inputThumbsC
+		self.additional_extensions = additionalExtensions
+		self.mountpoints = []
+		self.current_directory = None
+		self.current_mountpoint = None
+		self.useServiceRef = useServiceRef
+		self.showDirectories = showDirectories
+		self.showMountpoints = showMountpoints
+		self.showFiles = showFiles
+		self.isTop = isTop
+		self.matchingPattern = matchingPattern
+		self.inhibitDirs = inhibitDirs or []
+		self.inhibitMounts = inhibitMounts or []
+		self.art = art
+		self.fontsize = fontsize
+		self.itemheight = itemheight
+		self.sort = sort
+		self.refreshMountpoints()
+		self.changeDir(directory, art = art, sort = sort)
+
+	def refreshMountpoints(self):
+		global index
+
+		self.mountpoints = [os_path.join(p.mountpoint, "") for p in harddiskmanager.getMountedPartitions()]
+		self.mountpoints.sort(reverse = True)
+	def getMountpoint(self, file):
+		global index
+
+		file = os_path.join(os_path.realpath(file), "")
+		for m in self.mountpoints:
+			if file.startswith(m):
+				return m
+		return False
+	def getMountpointLink(self, file):
+		global index
+
+		if os_path.realpath(file) == file:
+			return self.getMountpoint(file)
+		else:
+			if file[-1] == "/":
+				file = file[:-1]
+			mp = self.getMountpoint(file)
+			last = file
+			file = os_path.dirname(file)
+			while last != "/" and mp == self.getMountpoint(file):
+				last = file
+				file = os_path.dirname(file)
+			return os_path.join(last, "")
+	def getSelection(self):
+		global index
+
+		if self.trailerlist[index] is None:
+			return None
+		return self.trailerlist[index]
+	def getCurrentEvent(self):
+		global index
+
+		l = self.trailerlist[index]
+		if not l or l[0][7] == True:
+			return None
+		else:
+			return self.serviceHandler.info(l[0][0]).getEvent(l[0][0])
+	def getFileList(self):
+		global index
+		global trailerlist
+		self.trailerlist = trailerlist
+	
+		return self.trailerlist
+	def inParentDirs(self, dir, parents):
+		global index
+
+		dir = os_path.realpath(dir)
+		for p in parents:
+			if dir.startswith(p):
+				return True
+		return False
+
+	def getSpeicherliste(self):
+		global speicherliste
+		return speicherliste
+		
+	def changeDir(self, directory, art = 1, sort = "default", select = None):
+		global index
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+		isDir = False
+		global thumbsC
+		global index
+		global speicherliste
+		self.thumbsC = thumbsC
+		
+		self.list = []
+		if self.current_directory is None:
+			if directory and self.showMountpoints:
+				self.current_mountpoint = self.getMountpointLink(directory)
+			else:
+				self.current_mountpoint = None
+
+		self.current_directory = directory
+
+		directories = []
+		files = []
+
+		index = 0
+		framePos = 0
+		Page = 0
+		self.currPage = -1
+		self.trailerlist = []
+
+		if directory is None and self.showMountpoints or speicherliste == True:
+			for p in harddiskmanager.getMountedPartitions():
+				path = os_path.join(p.mountpoint, "")
+				if path not in self.inhibitMounts and not self.inParentDirs(path, self.inhibitDirs):
+					if p.description.split(' ')[0] == "USB":
+						imdbdirectory = "/usr/local/share/enigma2/extensions/usb_cover"
+					elif p.description.split(' ')[0] == "Internal":
+						imdbdirectory = "/usr/local/share/enigma2/extensions/flash_cover"
+					elif p.description.split(' ')[0] == "Multi-Card":
+						imdbdirectory = "/usr/local/share/enigma2/extensions/mmc_cover"
+					elif p.description.split(' ')[0] == "External":
+						imdbdirectory = "/usr/local/share/enigma2/extensions/autofs_cover"
+					elif p.description.split(' ')[0] == "Harddisk":
+						imdbdirectory = "/usr/local/share/enigma2/extensions/harddisk_cover"
+					else:
+						if path.split('/')[2] == "net":
+							imdbdirectory = "/usr/local/share/enigma2/extensions/network_cover"
+						else:
+							imdbdirectory = "/usr/local/share/enigma2/extensions/directory_cover"
+					self.trailerlist.append((index, framePos, Page, p.description, path, path, imdbdirectory, True))
+					index += 1
+					framePos += 1
+					if framePos > (self.thumbsC-1):
+						framePos = 0
+						Page += 1
+					
+			files = [ ]
+			directories = [ ]
+		elif directory is None:
+			files = [ ]
+			directories = [ ]
+		elif self.useServiceRef:
+			root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + directory)
+			if self.additional_extensions:
+				root.setName(self.additional_extensions)
+			serviceHandler = eServiceCenter.getInstance()
+			list = serviceHandler.list(root)
+			
+			while 1:
+				s = list.getNext()
+				if not s.valid():
+					del list
+					break
+				if s.flags & s.mustDescent:
+					directories.append(s.getPath())
+				else:
+					files.append(s)
+			directories.sort()
+			files.sort()
+		
+		else:
+			if os_path.exists(directory):
+				files = listdir(directory)
+				files.sort()
+				tmpfiles = files[:]
+				for x in tmpfiles:
+					if os_path.isdir(directory + x):
+						directories.append(directory + x + "/")
+						files.remove(x)
+
+		if directory is not None and self.showDirectories and not self.isTop:
+			if directory == self.current_mountpoint and self.showMountpoints:
+				name = "<" +_("List of Storage Devices") + ">"
+				absolute = None
+				imdbdirectory = "/usr/local/share/enigma2/extensions/changelist_cover"
+				self.trailerlist.append((index, framePos, Page, name, absolute, absolute, imdbdirectory, True))
+				index += 1
+				framePos += 1
+				if framePos > (self.thumbsC-1):
+					framePos = 0
+					Page += 1
+				
+			elif (directory != "/") and not (self.inhibitMounts and self.getMountpoint(directory) in self.inhibitMounts):
+				name = "<" +_("Parent Directory") + ">"
+				imdbdirectory = "/usr/local/share/enigma2/extensions/changedir_cover"
+				absolute = '/'.join(directory.split('/')[:-2]) + '/'
+				self.trailerlist.append((index, framePos, Page, name, absolute, absolute, imdbdirectory, True))
+				index += 1
+				framePos += 1
+				if framePos > (self.thumbsC-1):
+					framePos = 0
+					Page += 1
+				
+		date_file_list = []
+		if self.showDirectories:
+			for x in directories:
+				if not (self.inhibitMounts and self.getMountpoint(x) in self.inhibitMounts) and not self.inParentDirs(x, self.inhibitDirs):
+					name = x.split('/')[-2]
+					file = x
+					path = x
+					if pathExists(path):
+						stats = os.stat(path)
+						size = stats[6]
+						lastmod_date = time.localtime(stats[8])
+					else:
+						if self.debug != "off":
+							print "[MC_FileList] Error directory path not found: ", path
+						size = 0
+						lastmod_date = 0
+
+					isDir = True
+					if sort == "size" or sort == "sizereverse":
+						date_file_tuple = size, name, path, file, lastmod_date, isDir
+					elif sort == "date" or sort == "datereverse" or sort == "default":
+						date_file_tuple = lastmod_date, name, path, file, size, isDir
+					elif sort == "alpha" or sort == "alphareverse":
+						date_file_tuple = name, lastmod_date, path, file, size, isDir
+					date_file_list.append(date_file_tuple)
+		if self.showFiles:
+			for x in files:
+				if self.useServiceRef:
+					# beim pluginbrowser testen ob man das pluging.png ermitteln kann und wenn dann mit einem grossen tauschen
+					path = x.getPath()
+					name = path.split('/')[-1]
+					file = x
+					if pathExists(path):
+						stats = os.stat(path)
+						size = stats[6]
+						lastmod_date = time.localtime(stats[8])
+					else:
+						if self.debug != "off":
+							print "[MC_FileList] Error file path not found: ", path
+						size = 0
+						lastmod_date = 0
+
+					isDir = False
+					if sort == "size" or sort == "sizereverse":
+						date_file_tuple = size, name, path, file, lastmod_date, isDir
+					elif sort == "date" or sort == "datereverse" or sort == "default":
+						date_file_tuple = lastmod_date, name, path, file, size, isDir
+					elif sort == "alpha" or sort == "alphareverse":
+						date_file_tuple = name, lastmod_date, path, file, size, isDir
+					date_file_list.append(date_file_tuple)	
+				else:
+					path = directory + x
+					name = x
+					file = x
+					if pathExists(path):
+						stats = os.stat(path)
+						size = stats[6]
+						lastmod_date = time.localtime(stats[8])
+					else:
+						if self.debug != "off":	
+							print "[MC_FileList] Error file path not found: ", path
+						size = 0
+						lastmod_date = 0
+					isDir = False
+
+					if sort == "size" or sort == "sizereverse":
+						date_file_tuple = size, name, path, file, lastmod_date, isDir
+					elif sort == "date" or sort == "datereverse" or sort == "default":
+						date_file_tuple = lastmod_date, name, path, file, size, isDir
+					elif sort == "alpha" or sort == "alphareverse":
+						date_file_tuple = name, lastmod_date, path, file, size, isDir
+				
+					date_file_list.append(date_file_tuple)
+
+		if sort == "datereverse" or sort == "alpha" or sort == "sizereverse" or sort == "date" or sort == "alphareverse" or sort == "size":
+			date_file_list.sort()
+		if sort == "date" or sort == "alphareverse" or sort == "size":
+			date_file_list.reverse()
+
+		for x in date_file_list:
+			if sort == "size" or sort == "sizereverse":
+				size = x[0]				
+				name = x[1]
+				path = x[2]
+				file = x[3] 
+				timestamp = x[4]				
+				isDir = x[5]
+			elif sort == "date" or sort == "datereverse" or sort == "default":
+				timestamp = x[0]					
+				name = x[1]
+				path = x[2]
+				file = x[3] 
+				size = x[4]
+				isDir = x[5]			
+			elif sort == "alpha" or sort == "alphareverse":
+				name = x[0]
+				timestamp = x[1]					
+				path = x[2]
+				file = x[3] 
+				size = x[4]
+				isDir = x[5]
+
+			name = name.decode("latin-1",'ignore').encode("utf8")
+						
+			if isDir == True:
+				if not (self.inhibitMounts and self.getMountpoint(file) in self.inhibitMounts) and not self.inParentDirs(file, self.inhibitDirs):
+					if pathExists("/var/imdbfolder/"):
+						imdbdirectory = "/var/imdbfolder/"
+					else:
+						imdbdirectory = "/var/swap/imdbfolder/"
+
+					self.trailerlist.append((index, framePos, Page, name, path, file, imdbdirectory, True))
+					index += 1
+					framePos += 1
+					if framePos > (self.thumbsC-1):
+						framePos = 0
+						Page += 1
+			else:
+				if (self.matchingPattern is None) or re_compile(self.matchingPattern).search(path):
+					moviename = name
+					if moviename.__contains__("."):
+						while not moviename.endswith("."):
+							moviename = moviename[:-1]
+						moviename = moviename[:-1]
+
+					if path.upper().endswith(".RAR"):
+						imdbdirectory = "/usr/local/share/enigma2/extensions/rar_cover"
+					elif path.upper().endswith(".ISO"):
+						imdbdirectory = "/usr/local/share/enigma2/extensions/iso_cover"
+					elif path.upper().endswith(".IMG"):
+						imdbdirectory = "/usr/local/share/enigma2/extensions/img_cover"
+					else:
+						readdir = str(imdbmain) + "/imdb/"
+						imdbdirectory = readdir
+
+					self.trailerlist.append((index, framePos, Page, name, path, file, imdbdirectory, False))
+					index += 1
+					framePos += 1
+					if framePos > (self.thumbsC-1):
+						framePos = 0
+						Page += 1
+		self.maxPage = Page
+		global maxPage
+		maxPage = Page
+
+		global trailerlist
+		trailerlist = self.trailerlist
+
+		if select is not None:
+			return
+			i = 0
+			self.moveToIndex(0)
+			for x in self.trailerlist:
+				p = x[0][4]
+				if isinstance(p, eServiceReference):
+					p = p.getPath()
+				if p == select:
+					self.moveToIndex(i)
+				i += 1
+		index = 0
+
+	def getMaxPage(self):
+		global maxPage
+		return str(maxPage)
+
+	def getTrailerlist(self):
+		global trailerlist
+		return trailerlist
+
+	def getThumbsC(self):
+		global thumbsC
+		return thumbsC
+
+	def getIndex(self):
+		global index
+		return index
+		
+	def getCurrentDirectory(self):
+		global index
+		return self.current_directory
+
+	def canDescent(self, player_index = None):
+		global index
+		index = player_index
+		if self.trailerlist[index][7] is None:
+			return False
+		return self.trailerlist[index][7]
+
+	def descent(self, player_index = None):
+		global index
+		index = player_index
+		if self.trailerlist[index][4] is None:
+			return
+		self.changeDir(self.trailerlist[index][4], self.art, self.sort, select = self.current_directory)
+		
+	def getFilename(self, player_index = None):
+		global index
+		global trailerlist
+		self.trailerlist = trailerlist
+		index = player_index
+
+		if self.trailerlist[index][5] is None:
+			return None
+		x = self.trailerlist[index][5]
+		if isinstance(x, eServiceReference):
+			x = x.getPath()
+		return x
+
+	def getServiceRef(self):
+		global index
+		if self.trailerlist[index] is None:		
+			return None
+		x = self.trailerlist[index][5]
+		if isinstance(x, eServiceReference):
+			return x
+		return None
+
+	def execBegin(self):
+		global index
+
+		harddiskmanager.on_partition_list_change.append(self.partitionListChanged)
+	def execEnd(self):
+		global index
+
+		harddiskmanager.on_partition_list_change.remove(self.partitionListChanged)
+	def refresh(self, fontsize = 18, itemheight = 23, art = 1, sort = "default"):
+		global index
+		self.art = art
+		self.fontsize = fontsize
+		self.itemheight = itemheight
+		self.sort = sort
+		self.changeDir(self.current_directory, self.art, self.sort, self.getFilename())
+				
+	def partitionListChanged(self, action, device):
+		global index
+
+		self.refreshMountpoints()
+		if self.current_directory is None:
+			self.refresh()
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_Imdb.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_Imdb.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_Imdb.py	(revision 9331)
@@ -0,0 +1,535 @@
+from GlobalFunctions import MC_ChoiceBox 
+import os
+from Tools.Directories import resolveFilename, fileExists, pathExists, createDir, SCOPE_MEDIA
+from Components.Console import Console
+from GlobalFunctions import MC_MessageBox 
+from enigma import evfd
+from enigma import eTimer
+from os import system
+import re
+import urllib
+import time
+from enigma import evfd
+from __init__ import _
+from Components.config import *
+from Plugins.Extensions.Aafpanel.plugin import command
+
+imdbautostatus = False
+tmpdir = "/tmp/"			
+debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+
+def showImdbView(self, input1, input2, input3, input4):
+	global debug
+	global filelist
+	global selfin
+	global nextImdbFile
+	global index
+	global currentview
+	selfin = self
+	filelist = input1
+	nextImdbFile = input2
+	index = input3
+	currentview = input4
+
+	list = []
+	list.append((_("only for this file"), "default"))
+	list.append((_("for this file with alternative results"), "alternatives"))
+	list.append((_("for this file with alternative results and inputbox"), "input"))
+	list.append((_("for this music video file "), "mvid"))
+	list.append((_("for all files in the current directory (background)"), "currdirbackground"))	
+	self.session.openWithCallback(self.showImdbViewingConfirmed, MC_ChoiceBox, title=_("Imdb Cover search menu..."), list = list)
+
+def showImdbViewingConfirmed(answer):
+	global debug
+	global selfin
+	self = selfin
+	global imdbautostatus
+	global filelist
+	global index
+	global showgui
+	global currentview
+	
+	answer = answer and answer[1]
+	if answer == "default":
+		showgui = True
+		imdbautostatus = False
+		movie = filelist.getFilename(index)
+		if debug != "off":
+			print "[MC_Imdb] showImdbViewingConfirmed singel:", movie
+		path = filelist.getCurrentDirectory()
+		filename = filelist.getFilename(index)
+		withoutput = False
+		startSyncing(path,filename,withoutput)
+	if answer == "mvid":
+		showgui = True
+		imdbautostatus = False
+		movie = filelist.getFilename(index)
+		if debug != "off":
+			print "[MC_Imdb] showImdbViewingConfirmed singel:", movie
+		path = filelist.getCurrentDirectory()
+		filename = filelist.getFilename(index)
+		withoutput = False
+		mvid = True
+		searchid = None
+		startSyncing(path,filename,withoutput,searchid,mvid)
+	elif answer == "alternatives":
+		showgui = True
+		imdbautostatus = False
+		movie = filelist.getFilename(index)
+		if debug != "off":
+			print "[MC_Imdb] showImdbViewingConfirmed singel:", movie
+		path = filelist.getCurrentDirectory()
+		filename = filelist.getFilename(index)
+		withoutput = True
+
+		startSyncing(path,filename,withoutput)
+	elif answer == "currdirbackground":
+ 		movie = filelist.getFilename(index)
+		if debug != "off":
+			print "[MC_Imdb] showImdbViewingConfirmed all:", movie
+		imdbautostatus = True
+		showgui = False
+		withoutput = False		
+		path = filelist.getCurrentDirectory()   
+
+		replaceimdb = config.plugins.mc_imdbreplace.enabled.getValue()
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+		language = config.plugins.mc_imdblang.default.getValue()
+			
+		if pathExists('/tmp/.imdbrunning'):
+			if debug != "off":
+				print "[MC_Imdb] imdb currdirbackground skipped is current running"
+			self.session.open(MC_MessageBox, _('Imdb directory search is currently running in background !\nTry again later !'), MC_MessageBox.TYPE_ERROR, timeout=5)
+			return
+
+		self.session.open(MC_MessageBox, _('Imdb directory scan started in Background !\n\n Replace: %s\n Directory: %s') % (replaceimdb,path), MC_MessageBox.TYPE_INFO, timeout=5)
+		evfd.getInstance().vfd_write_string("IMDB: started")
+		Console().ePopen(('/usr/bin/python /sbin/sync.pyc "%s" %s "%s" %s > "%s/imdb/_imdbsync.log" &' % (path,language,imdbmain,replaceimdb,imdbmain)))		
+		return
+	elif answer == "allbackground":
+		self.session.open(MC_MessageBox, _("coming soon...") % (path), MC_MessageBox.TYPE_INFO, timeout=5)
+ 		return
+ 		movie = filelist.getFilename(index)
+		if debug != "off":
+			print "[MC_Imdb] showImdbViewingConfirmed all:", movie
+		imdbautostatus = True
+		showgui = False
+		withoutput = False		
+		path = "/media"
+		
+		replaceimdb = config.plugins.mc_imdbreplace.enabled.getValue()
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+		language = config.plugins.mc_imdblang.default.getValue()
+
+		self.session.open(MC_MessageBox, _('Imdb Directory scan for %s is started in background !') % (path), MC_MessageBox.TYPE_INFO, timeout=3)
+		time.sleep(1)
+		Console().ePopen(('/usr/bin/python /sbin/sync.pyc "%s" %s "%s" %s > "%s/imdb/_imdbsync.log" &' % (path,language,imdbmain,replaceimdb,imdbmain)))		
+		return
+	elif answer == "input":
+		showgui = True
+		imdbautostatus = False
+		movie = filelist.getFilename(index)
+		movie = movie.split("/")[-1]
+			
+		if debug != "off":
+			print "[MC_Imdb] showImdbViewingConfirmed singel:", movie
+		from Screens.VirtualKeyBoard import VirtualKeyBoard
+		self.session.openWithCallback(lambda x : self.VirtualKeyBoardCallback(x, 'movie'), VirtualKeyBoard, title = (_("Enter movie name:")), text = movie)
+#		self.session.openWithCallback(VirtualKeyBoardCallback, VirtualKeyBoard, title = _("Enter text to search for"))
+
+def VirtualKeyBoardCallback(callback = None, entry = None):
+	global debug
+	global selfin
+	self = selfin
+	global filelist
+	if callback is not None and len(callback) and entry is not None and len(entry):
+		movie = entry
+		if debug != "off":
+			print "[MC_Imdb] showImdbViewingConfirmed singel:", movie	
+		path = filelist.getCurrentDirectory()
+		filename = callback
+		withoutput = True
+		startSyncing(path,filename,withoutput)
+# use exit in virtualbox then is callback zero...
+#	else:
+#		if callback is None:
+#			callback = ""
+#		self.session.open(MC_MessageBox, 'Please set your searchstring "%s" again !' % (callback), MC_MessageBox.TYPE_ERROR, timeout=10)
+
+def showImdbAlternativesConfirmed(answer):
+	global debug
+	global selfin
+	self = selfin
+	answer = answer and answer[1]
+	withoutput = False
+	newserachstring = answer
+	global altpath
+	global altfilename
+	if answer == 1000:
+		self.session.open(MC_MessageBox, 'Cancel searching, user aported !', MC_MessageBox.TYPE_ERROR, timeout=5)
+		return
+	else:
+		startSyncing(altpath,altfilename,withoutput,answer)
+			
+def startSyncing(path, filename, withoutput = None, searchid = None, mvid = None):
+	global debug
+	global showgui
+	global tmpdir
+	global imdbautostatus
+	global selfin
+	self = selfin
+	if debug != "off":
+		print "[MC_Imdb] startSyncing"
+	from sync.MediaInfo import MediaInfo
+	from GlobalFunctions import MC_VideoImdbView
+	from sync.ImdbProvider import ImdbProvider, WebGrabber
+	from sync.TheMovieDbProvider import TheMovieDbProvider
+	from sync.TheTvDbProvider import TheTvDbProvider
+	from sync.Mtv import Mtv
+
+	movielist = filename.split('/')
+
+	for n in movielist:
+		if n is not "":		
+			filename = n
+	extension = filename.split(".")[-1]
+	elementInfo = MediaInfo(path, filename, extension)
+	elementInfo.parse()
+
+	language = config.plugins.mc_imdblang.default.getValue()	
+
+	short = shortname(filename)
+	
+	if elementInfo.isMovie == True:
+		elementInfo.SearchString = short
+	
+	if searchid is not None:
+		elementInfo.SearchString = str(searchid)
+
+	elementInfo.SearchString = urllib.quote(elementInfo.SearchString.decode("latin-1",'ignore').encode("utf8"))
+	if not mvid:
+		elementInfo = ImdbProvider(language).getMovieByTitle(elementInfo)
+
+	if withoutput == True:
+		global altpath
+		global altfilename
+		altpath = path
+		altfilename = filename
+	
+		list = []
+		
+		for i in elementInfo.Alternatives:
+			a = str(elementInfo.Alternatives.get(i))
+			atlTitle = str(a.split("'")[1])
+			atlYear = str(a.split("'")[3])
+			atlTitle = atlTitle.decode("latin-1",'ignore').encode("utf8")
+	 		list.append(("%s (%s)" % (atlTitle,atlYear), i))
+
+	 	list.append(("<< Cancel Alternative Searching >>", 1000))
+
+	 	if debug != "off":
+		 	print "list",list
+		 	print "leng list",len(list)
+	 	if len(list) == 1:
+	 		self.session.open(MC_MessageBox, 'Sorry no results found !', MC_MessageBox.TYPE_ERROR, timeout=5)
+		else:
+			self.session.openWithCallback(self.showImdbAlternativesConfirmed, MC_ChoiceBox, title=_("Alternative search results:"), list = list)
+		return
+
+	if mvid:
+		if debug != "off":	
+			print "[MC_Imdb] startSyncing mvid=True"
+		elementInfo.isMovie = False
+		elementInfo.isMvid = True
+		elementInfo.Title = urllib.quote(short.decode("latin-1",'ignore').encode("utf8"))
+		elementInfo = Mtv(language).getMvidByTitle(elementInfo)
+	elif elementInfo.isMovie:
+		if debug != "off":
+			print "[MC_Imdb] startSyncing isMovie=True"
+		elementInfo = TheMovieDbProvider(language).getMovieByImdbID(elementInfo)
+		elementInfo = TheMovieDbProvider(language).getArtByImdbId(elementInfo)
+		if elementInfo.ImdbId == "tt0000000" or elementInfo.ImdbId == "":
+			if debug != "off":
+				print "[MC_Imdb] startSyncing mvid=True"
+			elementInfo.isMovie = False
+			elementInfo.isMvid = True
+			elementInfo.Title = urllib.quote(short.decode("latin-1",'ignore').encode("utf8"))
+			elementInfo = Mtv(language).getMvidByTitle(elementInfo)
+	elif elementInfo.isSerie:
+		if debug != "off":
+			print "[MC_Imdb] startSyncing isMovie=False"
+
+		elementInfo = TheTvDbProvider(language).getSerieByImdbID(elementInfo)
+		elementInfo = TheTvDbProvider(language).getArtByTheTvDbId(elementInfo)
+		elementInfo.isSerie = False
+		elementInfo.isEpisode = True
+		elementInfo = TheTvDbProvider(language).getEpisodeByTheTvDbId(elementInfo)	
+		
+	newshort = short.lower()
+	newshort = newshort.replace(" ", "")
+	moviename = newshort
+	
+	imdbmain = config.plugins.mc_imdb.savedir.getValue()			
+	savedir = str(imdbmain) + "/imdb/"
+				
+	if elementInfo.Cover != "":
+		localfile = "/tmp/Cover.jpg"
+		fetchurl = str(elementInfo.Cover)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sCover.jpg' % (str(elementInfo.Cover),tmpdir))
+	if elementInfo.CoverBig != "":
+		localfile = "/tmp/CoverBig.jpg"
+		fetchurl = str(elementInfo.CoverBig)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sCoverBig.jpg' % (str(elementInfo.CoverBig),tmpdir))
+	if elementInfo.PosterOrginal != "":
+		localfile = "/tmp/PosterOrginal.jpg"
+		fetchurl = str(elementInfo.PosterOrginal)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sPosterOrginal.jpg' % (str(elementInfo.PosterOrginal),tmpdir))
+	if elementInfo.PosterMid != "":
+		localfile = "/tmp/PosterMid.jpg"
+		fetchurl = str(elementInfo.PosterMid)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sPosterMid.jpg' % (str(elementInfo.PosterMid),tmpdir))
+	if elementInfo.PosterThumb != "":
+		localfile = "/tmp/PosterThumb.jpg"
+		fetchurl = str(elementInfo.PosterThumb)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sPosterThumb.jpg' % (str(elementInfo.PosterThumb),tmpdir))
+	if elementInfo.PosterCover != "":
+		localfile = "/tmp/PosterCover.jpg"
+		fetchurl = str(elementInfo.PosterCover)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sPosterCover.jpg' % (str(elementInfo.PosterCover),tmpdir))
+	if elementInfo.PosterPreview != "":
+		localfile = "/tmp/PosterPreview.jpg"
+		fetchurl = str(elementInfo.PosterPreview)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sPosterPreview.jpg' % (str(elementInfo.PosterPreview),tmpdir))
+	if elementInfo.Backdrop != "":
+		localfile = "/tmp/Backdrop.jpg"
+		fetchurl = str(elementInfo.Backdrop)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sBackdrop.jpg' % (str(elementInfo.Backdrop),tmpdir))
+	if elementInfo.Banner != "":
+		localfile = "/tmp/Banner.jpg"
+		fetchurl = str(elementInfo.Banner)
+		WebGrabber().grabFile(fetchurl,localfile)
+#		system('wget %s -O %sBanner.jpg' % (str(elementInfo.Banner),tmpdir))
+
+	if showgui == True:
+		showinfo = False
+		self.session.open(MC_VideoImdbView, elementInfo, tmpdir + "Cover.jpg", tmpdir + "CoverBig.jpg", tmpdir + "PosterOrginal.jpg", tmpdir + "PosterMid.jpg", tmpdir + "PosterThumb.jpg", tmpdir + "PosterCover.jpg", tmpdir + "PosterPreview.jpg", tmpdir + "Banner.jpg", tmpdir + "Backdrop.jpg", tmpdir + "Backdrop.mvi", savedir, moviename, showinfo)
+	else:
+		saveImdb(self.moviename,elementInfo)
+
+def saveImdb(moviename, savetext):
+	global debug
+	if debug != "off":
+		print "start def saveImdb"
+	savetext = str(savetext)
+	imdbmain = config.plugins.mc_imdb.savedir.getValue()			
+				
+	savedir = str(imdbmain) + "/imdb/"
+
+	if not pathExists(savedir):
+		createDir(savedir)
+	
+	dirCover = tmpdir + "Cover.jpg"
+	dirCoverBig = tmpdir + "CoverBig.jpg"
+	dirPosterOrginal = tmpdir + "PosterOrginal.jpg"
+	dirPosterMid = tmpdir + "PosterMid.jpg"
+	dirPosterThumb = tmpdir + "PosterThumb.jpg"
+	dirPosterCover = tmpdir + "PosterCover.jpg"
+	dirPosterPreview = tmpdir + "PosterPreview.jpg"
+	dirBanner = tmpdir + "Banner.jpg"
+	dirBackdrop = tmpdir + "Backdrop.jpg"
+	dirMvi = tmpdir + "Backdrop.mvi"
+		
+# 	if pathExists("/sbin/mencoder"):
+# 		mendir = "/sbin/mencoder"
+# 	elif pathExists("/var/swap/bin/mencoder"):
+# 		mendir = "/var/swap/bin/mencoder"
+# 	elif pathExists("/var/bin/mencoder"):
+# 		mendir = "/var/bin/mencoder"
+# 	else:
+# 		mendir = "mencoder"
+# 	if debug != "off":
+# 		print "[MC_Imdb] startSyncing mencoder:", mendir
+	
+	from twisted.python.filepath import FilePath
+	if debug != "off":
+		print dirCover,savedir,moviename
+	if pathExists(dirCover) and pathExists(savedir):
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirCover,savedir + moviename + ".jpg")
+		FilePath(dirCover).moveTo(FilePath(savedir + moviename + ".jpg"))
+	if pathExists(dirCoverBig) and pathExists(savedir):
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirCoverBig,savedir + moviename + ".coverbig.jpg")
+		FilePath(dirCoverBig).moveTo(FilePath(savedir + moviename + ".coverbig.jpg"))
+	if pathExists(dirPosterOrginal) and pathExists(savedir):
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirPosterOrginal,savedir + moviename + ".posterorginal.jpg")	
+		FilePath(dirPosterOrginal).moveTo(FilePath(savedir + moviename + ".posterorginal.jpg"))
+	if pathExists(dirPosterMid) and pathExists(savedir):
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirPosterMid,savedir + moviename + ".postermid.jpg")	
+		FilePath(dirPosterMid).moveTo(FilePath(savedir + moviename + ".postermid.jpg"))
+	if pathExists(dirPosterThumb) and pathExists(savedir):
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirPosterThumb,savedir + moviename + ".posterthumb.jpg")
+		FilePath(dirPosterThumb).moveTo(FilePath(savedir + moviename + ".posterthumb.jpg"))
+	if pathExists(dirPosterCover) and pathExists(savedir):
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirPosterCover,savedir + moviename + ".postercover.jpg")
+		FilePath(dirPosterCover).moveTo(FilePath(savedir + moviename + ".postercover.jpg"))
+	if pathExists(dirPosterPreview) and pathExists(savedir):
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirPosterPreview,savedir + moviename + ".posterpreview.jpg")
+		FilePath(dirPosterPreview).moveTo(FilePath(savedir + moviename + ".posterpreview.jpg"))
+	if pathExists(dirBanner) and pathExists(savedir):
+		movienameserie = re.sub("e[0-9]{2}","",moviename.lower())
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirBanner,savedir + movienameserie + ".banner.jpg")
+		FilePath(dirBanner).moveTo(FilePath(savedir + movienameserie + ".banner.jpg"))
+
+#	Console().ePopen(('/var/bin/jpegtran -outfile /tmp/Backdrop.resize.jpg -copy none %s ; sleep 10 ; %s mf:///tmp/Backdrop.resize.jpg -mf fps=25:type=jpg -embeddedfonts -o %s -ovc lavc -lavcopts vcodec=mpeg1video -vf scale=1280:720' % (dirBackdrop,mendir,dirMvi)))
+	system('/sbin/jpegtran -outfile /tmp/Backdrop.resize.jpg -copy none %s' % (dirBackdrop))
+#	system('%s mf:///tmp/Backdrop.resize.jpg -mf fps=25:type=jpg -embeddedfonts -o %s -ovc lavc -lavcopts vcodec=mpeg1video -vf scale=1280:720' % (mendir,dirMvi))
+	system('ffmpeg -y -f image2 -i /tmp/Backdrop.resize.jpg /tmp/Backdrop.resize.mpg')
+	system('mv /tmp/Backdrop.resize.mpg %s' % (dirMvi))
+	
+#		Console().ePopen(('%s mf://%s -mf fps=25:type=jpg -embeddedfonts -o %s -ovc lavc -lavcopts vcodec=mpeg1video -vf scale=1280:720' % (mendir,dirBackdrop,dirMvi)))
+	if pathExists(dirBackdrop) and pathExists(savedir):
+		movienameserie = re.sub("e[0-9]{2}","",moviename.lower())
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirBackdrop,savedir + movienameserie + ".backdrop.jpg")
+		FilePath(dirBackdrop).moveTo(FilePath(savedir + movienameserie + ".backdrop.jpg"))
+	if pathExists(dirMvi) and pathExists(savedir):
+		movienameserie = re.sub("e[0-9]{2}","",moviename.lower())
+		if debug != "off":
+			print "[saveImdb] copy %s > %s" % (dirMvi,savedir + movienameserie + ".backdrop.mvi")
+		FilePath(dirMvi).moveTo(FilePath(savedir + movienameserie + ".backdrop.mvi"))
+
+	moviename = moviename.lower()
+	f = open(savedir+moviename+".imdb", "w")
+	f.write(str(savetext))
+	f.close()
+
+def shortname(movie,showing = None):
+	global debug
+	movielist = movie.split('/')
+	for n in movielist:
+		if n is not "":		
+			movie = n
+
+	if debug != "off":
+		print "[MC_Imdb] shortname input:", movie
+
+	movie = movie.upper()
+	movieback = movie
+
+	movie = re.sub("\W720P(.*[^.]+).","",movie)
+	movie = re.sub("\W1080I(.*[^.]+).","",movie)
+	movie = re.sub("\W1080P(.*[^.]+).","",movie)
+	movie = re.sub("\W[(].*?[)](.*[^.]+).","",movie)
+	movie = re.sub("\W[[].*?[]](.*[^.]+).","",movie)
+	movie = re.sub("\W[0-9]{4}","",movie)
+
+	if not showing:
+		movie = re.sub("\WDVDRIP(.*[^.]+).","",movie)
+		movie = re.sub("\WAC3D(.*[^.]+).","",movie)	
+		movie = re.sub("\WAC3(.*[^.]+).","",movie)
+		movie = re.sub("\WX264(.*[^.]+).","",movie)
+		movie = re.sub("\WXVID(.*[^.]+).","",movie)
+		movie = re.sub("\WBLURAY(.*[^.]+).","",movie)
+		movie = re.sub("\WGERMAN(.*[^.]+).","",movie)
+		movie = re.sub("\WCD[0-9]{2}","",movie)
+		movie = re.sub("\WCD[0-9]","",movie)
+		movie = re.sub("\WDVD[0-9]{2}","",movie)
+		movie = re.sub("\WDVD[0-9]","",movie)
+		movie = re.sub("\WDISC[0-9]{2}","",movie)
+		movie = re.sub("\WDISC[0-9]","",movie)
+		movie = re.sub("\W[0-9]{2}DISC","",movie)
+		movie = re.sub("\W[0-9]DISC","",movie)
+#		movie = re.sub("\WS[0-9]{2}","",movie)
+#		movie = re.sub("\WE[0-9]{2}","",movie)
+		movie = re.sub("\WSEASON[0-9]{2}","",movie)
+		movie = re.sub("\WSEASON[0-9]","",movie)
+
+ 	movie = re.sub("[0-9]{8} ","",movie)
+ 	movie = re.sub(" -","-",movie)
+
+	if debug != "off":
+		print "[MC_Imdb] shortname re.sub:", movie		
+
+	print "megasat len(movie)", len(movie)
+	if len(movie) != 0:
+		if movie[0] == '-':
+			moviesplit = movie.split('-')[2:]
+			movie = "".join(moviesplit)
+			movie = movie[1:]
+
+	if debug != "off":
+		print "[MC_Imdb] shortname record:", movie		
+	
+	replace_list = "rar iso img avi mkv mp4 mpg mpeg mts m2ts pls trp ts vdr vob wmv AC3 AC3D BDRIP BLURAY CAM CAMRIP COMPLETE CUSTOM CUT DC Directors DL DOKU DTS DVDR DVDRIP DVDSCR DVDSCREENER EXTENDED FRENCH FiNNiSH GERMAN HD HDDVD HDDVDRip HDTV INT INTERNAL Int LD LiMiTED MULTi MULTiSUBS NORDIC NTSC PAL PL R1 R5 RECUT REMASTERED REPACK RIP SCREENER SE SEE special.edition SSE STV SUBBED SWEDISH Staffel TC TELECINE TELESYNC TS UNCUT UNRATED WS XXX iTALiAN mvcd rsvcd svcd x264"
+
+	replacelist = replace_list.upper()
+	replacelist = replacelist.split(' ')
+	for n in replacelist:
+		movie = movie.replace(" ", ".")
+		movie = movie.replace(" " + n + " ", ".")
+		movie = movie.replace("." + n + ".", ".")
+		movie = movie.replace("." + n + "-", ".")
+		movie = movie.replace("." + n + "_", ".")
+		movie = movie.replace("-" + n + ".", ".")
+		movie = movie.replace("-" + n + "-", ".")
+		movie = movie.replace("-" + n + "_", ".")
+		movie = movie.replace("_" + n + ".", ".")
+		movie = movie.replace("_" + n + "-", ".")
+		movie = movie.replace("_" + n + "_", ".")
+		
+	if debug != "off":
+		print "[MC_Imdb] shortname replace:", movie		
+		
+	movie = movie.replace("..", ".")
+	movie = movie.replace("..", ".")
+	movie = movie.replace("..", ".")
+	movie = movie.replace("..", ".")
+
+	if debug != "off":
+		print "[MC_Imdb] shortname replace ..:", movie		
+
+	for n in replacelist:
+		if movie.upper().endswith("." + n):
+			if movie.__contains__("."):
+				while not movie.endswith("."):
+					movie = movie[:-1]
+				movie = movie[:-1]
+			
+# 	if movie.__contains__("."):
+# 		while not movie.endswith("."):
+# 			movie = movie[:-1]
+# 		movie = movie[:-1]
+
+	if debug != "off":
+		print "[MC_Imdb] shortname replace endswith:", movie		
+		
+	movie = movie.replace(".", " ")
+	movie = movie.replace("-", " ")
+	movie = movie.replace("_", " ")
+	movie = movie.replace(":", " ")
+
+	if len(movie) == 0:
+		movie = movieback
+		if debug != "off":
+			print "[MC_Imdb] shortname cancel:", movie		
+
+	if debug != "off":
+		print "[MC_Imdb] shortname done:", movie		
+
+	return movie
+
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_MyVideo.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_MyVideo.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_MyVideo.py	(revision 9331)
@@ -0,0 +1,1008 @@
+from Components.ActionMap import ActionMap, NumberActionMap
+from Components.FileList import FileList
+from Components.Input import Input
+from Components.Label import Label
+from Components.MenuList import MenuList
+from Components.Pixmap import Pixmap
+from enigma import eServiceCenter, eServiceReference
+from Plugins.Plugin import PluginDescriptor
+from Screens.ChoiceBox import ChoiceBox
+from Screens.InputBox import InputBox, PinInput
+from Screens.MessageBox import MessageBox
+from Screens.Screen import Screen
+from twisted.web.client import getPage, downloadPage
+from urllib2 import urlopen
+
+import httplib
+import urlparse
+
+from Plugins.Extensions.Aafpanel.plugin import command
+
+######################################################################
+#                                                                    #
+#   MyVideoPlayer v.r2    : Coded by pcd@i-have-a-dreambox, Nov 2010 #
+#   This is free software; you can redistribute it and/or modify it. #
+#   However, you are politely requested to retain these 3 lines.     #
+#                                                                    #
+######################################################################
+
+class MC_MyVideo(Screen):
+	skin = """
+		<screen position="center,center" size="500,400" title="Kategorien" >
+			<!--widget name="text" position="0,0" size="550,25" font="Regular;20" /-->
+			<widget name="list" position="50,20" size="450,350" scrollbarMode="showOnDemand" />
+			<!--widget name="pixmap" position="200,0" size="190,250" /-->
+			<eLabel position="70,100" zPosition="-1" size="100,69" backgroundColor="#222222" />
+			<widget name="info" position="100,230" zPosition="4" size="100,25" font="Regular;18" foregroundColor="#ffffff" transparent="1" halign="center" valign="center" />
+
+		</screen>"""
+	def __init__(self, session):
+		self.skin = MC_MyVideo.skin
+		Screen.__init__(self, session)
+
+		self["list"] = MenuList([])
+		self["info"] = Label()
+		self["actions"] = ActionMap(["OkCancelActions"], {"ok": self.okClicked, "cancel": self.close}, -1)
+		self.ict = 0
+		self.onLayoutFinish.append(self.startSession)
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+
+	def startSession(self):
+		vidtype = []
+		self.urltype = []
+              
+		vidtype.append("Chart_Musik")
+		vidtype.append("Alle_Filme")
+		vidtype.append("Alle_Filme_2")
+		vidtype.append("ProSieben_popstars-girls-forever")
+		vidtype.append("Top100_charts")
+		vidtype.append("Top_100_Filme")
+		vidtype.append("Top_100_Serien")
+		vidtype.append("Themen")
+		vidtype.append("ProSieben_vampire-diaries")
+		vidtype.append("der-grosse-sat1-film")
+		vidtype.append("Erotik")                
+                   
+		self.urltype.append("http://www.myvideo.de/Top_100/Top_100_Single_Charts?l")
+		self.urltype.append("http://www.myvideo.de/Filme/Alle_Filme?l")
+		self.urltype.append("http://www.myvideo.de/Filme/Alle_Filme?l")
+		self.urltype.append("http://www.myvideo.de/channel/popstars-girls-forever?l")
+		self.urltype.append("http://www.myvideo.de/Top_100/Top_100_Charts?l")
+		self.urltype.append("http://www.myvideo.de/Top_100/Top_100_Filme?l")
+		self.urltype.append("http://www.myvideo.de/Top_100/Top_100_Serien?l")
+		self.urltype.append(" ")
+		self.urltype.append("http://www.myvideo.de/channel/vampire-diaries?l")
+		self.urltype.append("http://www.myvideo.de/channel/der-grosse-sat1-film?l")                
+#		self.urltype.append("http://www.myvideo.de/Videos_A-Z?searchChannelID=5&searchChannel=Erotik?l")
+		self.urltype.append("http://www.myvideo.de/Themen/Sexy?l")
+
+		self["list"].setList(vidtype)
+    
+	def okClicked(self):
+		itype = self["list"].getSelectionIndex()
+		if self.debug != "off":
+			print "[MC_MyVideo] itype = ", itype 
+		try:
+			url = self.urltype[itype]
+			if itype == 0:
+				self.session.open(GetvidsChart, url, title = "Chart_Musik")
+			elif itype == 1:
+				self.session.open(GetvidsFilm, url, title = "Filme")
+			elif itype == 2:
+				self.session.open(GetvidsFilm2, url, title = "Filme")        
+			elif itype == 3:
+				self.session.open(GetvidsChan, url, title = "popstars-girls-forever") 
+			elif itype == 4:
+				self.session.open(GetvidsChart, url, title = "Top100_charts")
+			elif itype == 5:
+				self.session.open(GetFilm100, url, title = "Top_100_Filme")
+			elif itype == 6:
+				self.session.open(GetFilm100, url, title = "Top_100_Serien") 
+			elif itype == 7:
+				self.session.open(ThemeType)
+			elif itype == 8:
+				self.session.open(GetvidsChan, url, title = "vampire-diaries") 
+			elif itype == 9:
+				self.session.open(GetvidsChan, url, title = "der-grosse-sat1-film")                                                                             
+			elif itype == 10:
+				self.session.open(GetvidsChan, url, title = "Erotik")     
+			else:
+				self.session.open(GetvidsChart, url, title = "Videos")
+		except:              
+			return        
+
+class GetvidsChart(Screen):
+
+	skin = """
+		<screen position="center,center" size="700,400" title="" >
+			<!--widget name="text" position="0,0" size="550,25" font="Regular;20" /-->
+			<widget name="list" position="20,20" size="660,350" scrollbarMode="showOnDemand" />
+			<!--widget name="pixmap" position="200,0" size="190,250" /-->
+			<eLabel position="70,100" zPosition="-1" size="100,69" backgroundColor="#222222" />
+			<widget name="info" position="100,230" zPosition="4" size="300,25" font="Regular;18" foregroundColor="#ffffff" transparent="1" halign="center" valign="center" />
+		</screen>"""
+
+	def __init__(self, session, url, title):
+		self.skin = GetvidsChart.skin
+		Screen.__init__(self, session)
+		self["list"] = MenuList([])
+		self["info"] = Label()
+		self["actions"] = ActionMap(["OkCancelActions"], {"ok": self.okClicked, "cancel": self.close}, -1)
+		self.setTitle(title)
+		self.url = url
+		self.urls = []
+		self.names = []
+		self.onLayoutFinish.append(self.search)
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+                
+
+	def search(self):
+		ipage = 1
+		self["info"].setText("Downloading list...")
+		while ipage<6 :
+			furl = self.url + "page=" + str(ipage)
+			if self.debug != "off":
+				print "[MC_MyVideo] furl 1 =", furl
+			getPage(furl).addCallback(self.downloadListCallback).addErrback(self.downloadListError)
+			ipage = ipage+1
+ 
+	def downloadListError(self, error=""):
+		if self.debug != "off":
+			print "[MC_MyVideo]",  str(error)
+		self["info"].setText("Connection Error!")
+		return
+
+	def downloadListCallback(self, fpage=""):
+		self["info"].setText("Downloading list...")
+  
+		iurllast = " "
+		iname = []
+		surl = []
+ 
+		i = 0
+		j = 0
+		icount = 0
+		start = 0
+		while i<20 :
+			n1 = fpage.find("class='vThumb", start)
+			if n1<0:
+				break 
+			n2 = fpage.find('a href',(n1+3))
+			if n2<0:
+				break
+			n3 = fpage.find("'",(n2+9))
+			if n3<0:
+				break 
+
+			n4 = fpage.rfind("/",n2,n3)
+			if n4<0:
+				break 
+     
+			n5 = fpage.find("id='",(n3+1))
+			if n5<0:
+				break
+                
+			n6 = fpage.find("src",(n5+5))
+			if n6<0:
+				break
+                
+			n7 = fpage.find("thumbs",(n6+5))
+			if n7<0:
+				break
+                
+			n8 = fpage.find(".jpg",(n7+5))
+			if n8<0:
+				break
+                       
+			name = fpage[(n4+1):n3]
+			url1 = fpage[(n6+5):n7]
+			url2 = fpage[(n7+7):(n8-2)]
+                
+			url = url1 + url2 +".flv"
+			inew= 0
+			for nam in self.names:
+				if name == nam:
+					inew = 1
+					break
+			print "inew= ", inew
+ 
+			if inew == 0 and httpExists(url) == 1:
+				self.names.append(name)       
+				self.urls.append(url)
+				j = j+1
+				start = n8 + 10
+				i = i+1
+			else:         
+				start = n8 + 10
+				i = i+1
+ #				continue
+
+                
+		self["info"].setText("")
+		if self.debug != "off":
+			print "[MC_MyVideo] self.names =", self.names
+		self["list"].setList(self.names)
+
+   
+	def keyLeft(self):
+		self["text"].left()
+
+	def keyRight(self):
+		self["text"].right()
+
+	def showFileInfo(self):
+		if self.debug != "off":
+			print "[MC_MyVideo] skip"
+
+	def okClicked(self):
+		itype = self["list"].getSelectionIndex()
+		try:
+			url = self.urls[itype]
+			name = self.names[itype]
+			sref = eServiceReference(4097,0,url)
+			sref.setName(name)
+#			self.session.open(Playvid, sref)
+#			self.session.open(MoviePlayer, sref)
+                
+ 			self.playlist = []
+			from Plugins.Extensions.MediaCenter.MC_VideoPlayer import MoviePlayerObi
+#			self.session.openWithCallback(self.stopplayback, MoviePlayerObi, eServiceReference(0x1001, 0, self.destination + self.filename), self.showFileInfo, self.playlist)		
+			self.session.open(MoviePlayerObi, sref, self.showFileInfo, self.playlist)
+
+		except:
+			self["info"].setText("No item available - Sorry !")
+                
+
+	def keyLeft(self):
+		self["text"].left()
+
+	def keyRight(self):
+		self["text"].right()
+	
+	def keyNumberGlobal(self, number):
+		if self.debug != "off":
+			print "[MC_MyVideo] pressed", number
+		self["text"].number(number)		
+
+
+class GetvidsFilm(Screen):
+
+	skin = """
+		<screen position="center,center" size="700,400" title="" >
+			<!--widget name="text" position="0,0" size="550,25" font="Regular;20" /-->
+			<widget name="list" position="20,20" size="660,350" scrollbarMode="showOnDemand" />
+			<!--widget name="pixmap" position="200,0" size="190,250" /-->
+			<eLabel position="70,100" zPosition="-1" size="100,69" backgroundColor="#222222" />
+			<widget name="info" position="100,230" zPosition="4" size="300,25" font="Regular;18" foregroundColor="#ffffff" transparent="1" halign="center" valign="center" />
+		</screen>"""
+
+	def __init__(self, session, url, title):
+		self.skin = GetvidsFilm.skin
+		Screen.__init__(self, session)
+
+		self["list"] = MenuList([])
+		self["info"] = Label()
+		self["actions"] = ActionMap(["OkCancelActions"], {"ok": self.okClicked, "cancel": self.close}, -1)
+		self.setTitle(title)
+		self.url = url
+		self.urls = []
+		self.names = []
+		self.onLayoutFinish.append(self.search)
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+
+	def search(self):
+		ipage = 1
+		self["info"].setText("Downloading list...")
+		while ipage<6 :
+			furl = self.url + "page=" + str(ipage)
+			if self.debug != "off":
+				print "[MC_MyVideo] furl 1 =", furl
+			getPage(furl).addCallback(self.downloadListCallback).addErrback(self.downloadListError)
+			ipage = ipage+1
+ 
+ #			self["info"].setText("")
+
+	def downloadListError(self, error=""):
+		if self.debug != "off":
+			print "[MC_MyVideo]", str(error)
+		self["info"].setText("Connection Error!")
+		return
+
+	def downloadListCallback(self, fpage=""):
+		self["info"].setText("Downloading list...")
+		iurllast = " "
+		iname = []
+		surl = []
+ 
+		i = 0
+		j = 0
+		icount = 0
+		start = 0
+		while i<20 :
+			n1 = fpage.find("div class='vThumb'", start)
+			if n1<0:
+				break 
+			n2 = fpage.find('href=',(n1+3))
+			if n2<0:
+				break
+			n3 = fpage.find("'",(n2+9))
+			if n3<0:
+				break 
+
+			n4 = fpage.rfind("/",n2,n3)
+			if n4<0:
+				break 
+     
+			n5 = fpage.find("img id",(n3+1))
+			if n5<0:
+				break
+                
+			n6 = fpage.find("src",(n5+5))
+			if n6<0:
+				break
+                
+			n7 = fpage.find("covers",(n6+5))
+			if n7<0:
+				break
+                
+			n8 = fpage.find(".jpg",(n7+5))
+			if n8<0:
+				break
+                       
+			name = fpage[(n4+1):n3]
+			url1 = fpage[(n6+5):n7]
+			url2 = fpage[(n7+7):n8]
+    
+			url = url1 + url2 +".flv"
+
+			inew= 0
+			for nam in self.names:
+				if name == nam:
+					inew = 1
+					break
+			if self.debug != "off":
+				print "[MC_MyVideo] inew= ", inew
+ 
+			if inew == 0 and httpExists(url) == 1:                                                
+				self.names.append(name)       
+				self.urls.append(url)
+				j = j+1
+				start = n8 + 10
+				i = i+1
+			else:         
+				start = n8 + 10
+				i = i+1
+ #				continue
+
+
+		self["info"].setText("")
+		if self.debug != "off":
+			print "[MC_MyVideo] self.names =", self.names
+		self["list"].setList(self.names)
+
+	def keyLeft(self):
+		self["text"].left()
+	
+	def keyRight(self):
+		self["text"].right()
+
+	def showFileInfo(self):
+		if self.debug != "off":
+			print "[MC_MyVideo] skip"
+		
+	def okClicked(self):
+		itype = self["list"].getSelectionIndex()
+		try:
+			url = self.urls[itype]
+			name = self.names[itype]
+			sref = eServiceReference(4097,0,url)
+			sref.setName(name)
+#			self.session.open(MoviePlayer, sref)
+			self.playlist = []
+			from Plugins.Extensions.MediaCenter.MC_VideoPlayer import MoviePlayerObi
+#			self.session.openWithCallback(self.stopplayback, MoviePlayerObi, eServiceReference(0x1001, 0, self.destination + self.filename), self.showFileInfo, self.playlist)		
+			self.session.open(MoviePlayerObi, sref, self.showFileInfo, self.playlist)
+
+
+                
+		except:
+			self["info"].setText("No item available - Sorry !")
+
+	def keyLeft(self):
+		self["text"].left()
+	
+	def keyRight(self):
+		self["text"].right()
+	
+	def keyNumberGlobal(self, number):
+		if self.debug != "off":
+			print "[MC_MyVideo] pressed", number
+		self["text"].number(number)
+                
+class GetvidsFilm2(Screen):
+
+	skin = """
+		<screen position="center,center" size="700,400" title="" >
+			<!--widget name="text" position="0,0" size="550,25" font="Regular;20" /-->
+			<widget name="list" position="20,20" size="660,350" scrollbarMode="showOnDemand" />
+			<!--widget name="pixmap" position="200,0" size="190,250" /-->
+			<eLabel position="70,100" zPosition="-1" size="100,69" backgroundColor="#222222" />
+			<widget name="info" position="100,230" zPosition="4" size="300,25" font="Regular;18" foregroundColor="#ffffff" transparent="1" halign="center" valign="center" />
+		</screen>"""
+
+	def __init__(self, session, url, title):
+		self.skin = GetvidsFilm.skin
+		Screen.__init__(self, session)
+
+		self["list"] = MenuList([])
+		self["info"] = Label()
+		self["actions"] = ActionMap(["OkCancelActions"], {"ok": self.okClicked, "cancel": self.close}, -1)
+		self.setTitle(title)
+		self.url = url
+		self.urls = []
+		self.names = []
+		self.onLayoutFinish.append(self.search)
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')                
+
+	def search(self):
+		ipage = 14
+		self["info"].setText("Downloading list...")
+		while ipage<17 :
+			furl = self.url + "page=" + str(ipage)
+			if self.debug != "off":
+				print "[MC_MyVideo] furl 1 =", furl
+			getPage(furl).addCallback(self.downloadListCallback).addErrback(self.downloadListError)
+			ipage = ipage+1
+ 
+ #			self["info"].setText("")
+
+	def downloadListError(self, error=""):
+		if self.debug != "off":
+			print "[MC_MyVideo] ",str(error)
+		self["info"].setText("Connection Error!")
+		return
+
+	def downloadListCallback(self, fpage=""):
+		self["info"].setText("Downloading list...")
+		iurllast = " "
+		iname = []
+		surl = []
+ 
+		i = 0
+		j = 0
+		icount = 0
+		start = 0
+		while i<20 :
+			n1 = fpage.find("div class='vThumb'", start)
+			if n1<0:
+				break 
+			n2 = fpage.find('href=',(n1+3))
+			if n2<0:
+				break
+			n3 = fpage.find("'",(n2+9))
+			if n3<0:
+				break 
+
+			n4 = fpage.rfind("/",n2,n3)
+			if n4<0:
+				break 
+     
+			n5 = fpage.find("img id",(n3+1))
+			if n5<0:
+				break
+                
+			n6 = fpage.find("src",(n5+5))
+			if n6<0:
+				break
+                
+			n7 = fpage.find("covers",(n6+5))
+			if n7<0:
+				break
+                
+			n8 = fpage.find(".jpg",(n7+5))
+			if n8<0:
+				break
+                       
+			name = fpage[(n4+1):n3]
+			url1 = fpage[(n6+5):n7]
+			url2 = fpage[(n7+7):n8]
+                
+			url = url1 + url2 +".flv"
+                
+			inew= 0
+			for nam in self.names:
+				if name == nam:
+					inew = 1
+					break
+			if self.debug != "off":
+				print "[MC_MyVideo] inew= ", inew
+
+			if inew == 0 and httpExists(url) == 1:                                                
+				self.names.append(name)       
+				self.urls.append(url)
+				j = j+1
+				start = n8 + 10
+				i = i+1
+			else:         
+				start = n8 + 10
+				i = i+1
+ #				continue
+
+                
+		self["info"].setText("")
+		if self.debug != "off":
+			print "[MC_MyVideo] self.names =", self.names
+		self["list"].setList(self.names)
+
+   
+	def keyLeft(self):
+		self["text"].left()
+	
+	def keyRight(self):
+		self["text"].right()
+
+	def showFileInfo(self):
+		if self.debug != "off":
+			print "[MC_MyVideo] skip"
+
+	def okClicked(self):
+		itype = self["list"].getSelectionIndex()
+		try:
+			url = self.urls[itype]
+			name = self.names[itype]
+			sref = eServiceReference(4097,0,url)
+			sref.setName(name)
+#			self.session.open(MoviePlayer, sref)
+ 			self.playlist = []
+			from Plugins.Extensions.MediaCenter.MC_VideoPlayer import MoviePlayerObi
+#			self.session.openWithCallback(self.stopplayback, MoviePlayerObi, eServiceReference(0x1001, 0, self.destination + self.filename), self.showFileInfo, self.playlist)		
+			self.session.open(MoviePlayerObi, sref, self.showFileInfo, self.playlist)
+
+        
+		except:
+			self["info"].setText("No item available - Sorry !")
+
+	def keyLeft(self):
+		self["text"].left()
+
+	def keyRight(self):
+		self["text"].right()
+	
+	def keyNumberGlobal(self, number):
+		if self.debug != "off":
+			print "[MC_MyVideo] pressed", number
+		self["text"].number(number) 
+                
+class GetvidsChan(Screen):
+
+	skin = """
+		<screen position="center,center" size="700,400" title="" >
+			<!--widget name="text" position="0,0" size="550,25" font="Regular;20" /-->
+			<widget name="list" position="20,20" size="660,350" scrollbarMode="showOnDemand" />
+			<!--widget name="pixmap" position="200,0" size="190,250" /-->
+			<eLabel position="70,100" zPosition="-1" size="100,69" backgroundColor="#222222" />
+			<widget name="info" position="100,230" zPosition="4" size="300,25" font="Regular;18" foregroundColor="#ffffff" transparent="1" halign="center" valign="center" />
+		</screen>"""
+
+	def __init__(self, session, url, title):
+		self.skin = GetvidsChan.skin
+		Screen.__init__(self, session)
+
+		self["list"] = MenuList([])
+		self["info"] = Label()
+		self["actions"] = ActionMap(["OkCancelActions"], {"ok": self.okClicked, "cancel": self.close}, -1)
+		self.setTitle(title)
+		self.url = url
+		self.urls = []
+		self.names = []
+		self.onLayoutFinish.append(self.search)
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+
+	def search(self):
+		ipage = 1
+		self["info"].setText("Downloading list...")
+		while ipage<6 :
+			furl = self.url + "page=" + str(ipage)
+			if self.debug != "off":
+				print "[MC_MyVideo] furl 1 =", furl
+			getPage(furl).addCallback(self.downloadListCallback).addErrback(self.downloadListError)
+			ipage = ipage+1
+ 
+ #			self["info"].setText("")
+
+	def downloadListError(self, error=""):
+		if self.debug != "off":
+			print "[MC_MyVideo]", str(error)
+		self["info"].setText("Connection Error!")
+		return
+
+	def downloadListCallback(self, fpage1=""):
+		fpage =""
+		self["info"].setText("Downloading list...")
+		iurllast = " "
+		iname = []
+		surl = []
+ 
+		i = 0
+		j = 0
+		icount = 0
+		start = 0
+		m1 = fpage1.find("appendChild", start)
+#		if m1<0:
+#			return
+		m2 = fpage1.find("appendChild", (m1+2))
+#		if m2<0:
+#			return
+		fpage =  fpage1[start:m2]
+
+		while i<20 :
+			n1 = fpage.find("div class='vThumb", start)
+			if n1<0:
+				break 
+			n2 = fpage.find('href=',(n1+3))
+			if n2<0:
+				break
+			n3 = fpage.find("'",(n2+9))
+			if n3<0:
+				break 
+
+			n4 = fpage.rfind("/",n2,n3)
+			if n4<0:
+				break 
+     
+			n5 = fpage.find("img id",(n3+1))
+			if n5<0:
+				break
+                
+			n6 = fpage.find("src",(n5+5))
+			if n6<0:
+				break
+                
+			n7 = fpage.find("thumbs",(n6+5))
+			if n7<0:
+				break
+                
+			n8 = fpage.find(".jpg",(n7+5))
+			if n8<0:
+				break
+                       
+			name = fpage[(n4+1):n3]
+			url1 = fpage[(n6+5):n7]
+			url2 = fpage[(n7+7):(n8-2)]
+                
+			url = url1 + url2 +".flv"
+			inew= 0
+			for nam in self.names:
+				if name == nam:
+					inew = 1
+					break
+			if self.debug != "off":
+				print "[MC_MyVideo] inew= ", inew
+ 
+			if inew == 0 and httpExists(url) == 1:                                
+				self.names.append(name)       
+				self.urls.append(url)
+				j = j+1
+				start = n8 + 10
+				i = i+1
+			else:         
+				start = n8 + 10
+				i = i+1
+ #				continue
+
+                
+		self["info"].setText("")
+		if self.debug != "off":
+			print "[MC_MyVideo] self.names =", self.names
+		self["list"].setList(self.names)
+
+   
+	def keyLeft(self):
+		self["text"].left()
+	
+	def keyRight(self):
+		self["text"].right()
+
+	def showFileInfo(self):
+		if self.debug != "off":
+			print "[MC_MyVideo] skip"
+
+	def okClicked(self):
+		itype = self["list"].getSelectionIndex()
+		try:
+			url = self.urls[itype]
+			name = self.names[itype]
+			sref = eServiceReference(4097,0,url)
+			sref.setName(name)
+#			self.session.open(MoviePlayer, sref)
+ 			self.playlist = []
+			from Plugins.Extensions.MediaCenter.MC_VideoPlayer import MoviePlayerObi
+#			self.session.openWithCallback(self.stopplayback, MoviePlayerObi, eServiceReference(0x1001, 0, self.destination + self.filename), self.showFileInfo, self.playlist)		
+			self.session.open(MoviePlayerObi, sref, self.showFileInfo, self.playlist)
+
+		except:
+			self["info"].setText("No item available - Sorry !")     
+
+	def keyLeft(self):
+		self["text"].left()
+
+	def keyRight(self):
+		self["text"].right()
+	
+	def keyNumberGlobal(self, number):
+		if self.debug != "off":
+			print "[MC_MyVideo] pressed", number
+		self["text"].number(number)
+                                              
+
+class GetFilm100(Screen):
+
+	skin = """
+		<screen position="center,center" size="700,400" title="" >
+			<!--widget name="text" position="0,0" size="550,25" font="Regular;20" /-->
+			<widget name="list" position="20,20" size="660,350" scrollbarMode="showOnDemand" />
+			<!--widget name="pixmap" position="200,0" size="190,250" /-->
+			<eLabel position="70,100" zPosition="-1" size="100,69" backgroundColor="#222222" />
+			<widget name="info" position="100,230" zPosition="4" size="300,25" font="Regular;18" foregroundColor="#ffffff" transparent="1" halign="center" valign="center" />
+		</screen>"""
+
+	def __init__(self, session, url, title):
+		self.skin = GetFilm100.skin
+		Screen.__init__(self, session)
+		self["list"] = MenuList([])
+		self["info"] = Label()
+		self["actions"] = ActionMap(["OkCancelActions"], {"ok": self.okClicked, "cancel": self.close}, -1)
+		self.setTitle(title)
+		self.url = url
+		self.urls = []
+		self.names = []
+		self.onLayoutFinish.append(self.search)
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+
+	def search(self):
+		ipage = 1
+		self["info"].setText("Downloading list...")
+		while ipage<6 :
+			furl = self.url + "page=" + str(ipage)
+			if self.debug != "off":
+				print "[MC_MyVideo] furl 1 =", furl
+			getPage(furl).addCallback(self.downloadListCallback).addErrback(self.downloadListError)
+			ipage = ipage+1
+ 
+ #		self["info"].setText("")
+
+	def downloadListError(self, error=""):
+		if self.debug != "off":
+			print "[MC_MyVideo]", str(error)
+		self["info"].setText("Connection Error!")
+		return
+
+	def downloadListCallback(self, fpage=""):
+		self["info"].setText("Downloading list...")
+		iurllast = " "
+		iname = []
+		surl = []
+ 
+		i = 0
+		j = 0
+		icount = 0
+		start = 0
+		while i<20 :
+			n1 = fpage.find("div class='vThumb", start)
+
+			if n1<0:
+				break 
+			n2 = fpage.find('watch',(n1+3))
+			if n2<0:
+				break
+			n3 = fpage.find("'",(n2+9))
+			if n3<0:
+				break 
+
+			n4 = fpage.rfind("/",n2,n3)
+			if n4<0:
+				break 
+     
+			n5 = fpage.find("onmouseover",(n3+1))
+			if n5<0:
+				break
+                
+			n6 = fpage.find("http",(n5+5))
+			if n6<0:
+				break
+                
+			n7 = fpage.find("thumbs",(n6+5))
+			if n7<0:
+				break
+                
+			vid = fpage[(n2+6):n4]
+			url1 = url1 = fpage[(n6):n7]
+			url = url1 + vid + ".flv"
+			name = fpage[(n4+1):n3]
+			inew= 0
+			for nam in self.names:
+				if name == nam:
+					inew = 1
+					break
+			if self.debug != "off":
+				print "[MC_MyVideo] inew= ", inew
+ 
+			if inew == 0 and httpExists(url) == 1:                                                
+				self.names.append(name)       
+				self.urls.append(url)
+				j = j+1
+				start = n7 + 10
+				i = i+1
+			else:         
+				start = n7 + 10
+				i = i+1
+ #				continue
+
+                
+		self["info"].setText("")
+		if self.debug != "off":
+			print "[MC_MyVideo] self.names =", self.names
+		self["list"].setList(self.names)
+
+   
+	def keyLeft(self):
+		self["text"].left()
+	
+	def keyRight(self):
+		self["text"].right()
+
+	def showFileInfo(self):
+		if self.debug != "off":
+			print "[MC_MyVideo] skip"
+
+	def okClicked(self):
+   		itype = self["list"].getSelectionIndex()
+		try:
+			url = self.urls[itype]
+			name = self.names[itype]
+			sref = eServiceReference(4097,0,url)
+			sref.setName(name)
+#			self.session.open(MoviePlayer, sref)
+ 			self.playlist = []
+			from Plugins.Extensions.MediaCenter.MC_VideoPlayer import MoviePlayerObi
+#			self.session.openWithCallback(self.stopplayback, MoviePlayerObi, eServiceReference(0x1001, 0, self.destination + self.filename), self.showFileInfo, self.playlist)		
+			self.session.open(MoviePlayerObi, sref, self.showFileInfo, self.playlist)
+
+    
+		except:
+			self["info"].setText("No item available - Sorry !")
+                
+
+	def keyLeft(self):
+		self["text"].left()
+	
+	def keyRight(self):
+		self["text"].right()
+	
+	def keyNumberGlobal(self, number):
+		if self.debug != "off":
+			print "[MC_MyVideo] pressed", number
+		self["text"].number(number)
+		
+		
+class ThemeType(Screen):
+	skin = """
+		<screen position="center,center" size="500,400" title="Kategorien" >
+			<!--widget name="text" position="0,0" size="550,25" font="Regular;20" /-->
+			<widget name="list" position="50,20" size="450,350" scrollbarMode="showOnDemand" />
+			<!--widget name="pixmap" position="200,0" size="190,250" /-->
+			<eLabel position="70,100" zPosition="-1" size="100,69" backgroundColor="#222222" />
+			<widget name="info" position="100,230" zPosition="4" size="100,25" font="Regular;18" foregroundColor="#ffffff" transparent="1" halign="center" valign="center" />
+		</screen>"""
+
+	def __init__(self, session):
+		self.skin = ThemeType.skin
+		Screen.__init__(self, session)
+
+		self["list"] = MenuList([])
+		self["info"] = Label()
+		self["actions"] = ActionMap(["OkCancelActions"], {"ok": self.okClicked, "cancel": self.close}, -1)
+
+		self.ict = 0
+		self.onLayoutFinish.append(self.startSession)
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+
+	def startSession(self):
+		vidtype = []
+		self.urltype = []
+              
+		vidtype.append("Auto_Motor")
+		vidtype.append("Comedy")
+		vidtype.append("Talente")
+		vidtype.append("Lifestyle")
+		vidtype.append("Sport")
+		vidtype.append("Webisodes")
+		vidtype.append("TV_Filme")
+		vidtype.append("Infotainment")
+                           
+                   
+		self.urltype.append("http://www.myvideo.de/Themen/Auto_%26_Motor?l")
+		self.urltype.append("http://www.myvideo.de/Themen/Comedy?l")
+		self.urltype.append("http://www.myvideo.de/Themen/Talente?l")
+		self.urltype.append("http://www.myvideo.de/Themen/Lifestyle?l")
+		self.urltype.append("http://www.myvideo.de/Themen/Sport?l")
+		self.urltype.append("http://www.myvideo.de/Themen/Webisodes?l")
+		self.urltype.append("http://www.myvideo.de/Themen/TV_%26_Film?l")
+		self.urltype.append("http://www.myvideo.de/Themen/Infotainment?l")
+              
+		self["list"].setList(vidtype)
+    
+	def okClicked(self):
+		itype = self["list"].getSelectionIndex()
+		if self.debug != "off":
+			print "[MC_MyVideo] itype = ", itype 
+		try:
+			url = self.urltype[itype]
+			if itype == 0:
+				self.session.open(GetvidsChart, url, title = "Auto_Motor")
+			elif itype == 1:
+				self.session.open(GetvidsChart, url, title = "Comedy")
+			elif itype == 2:
+				self.session.open(GetvidsChart, url, title = "Talente")        
+			elif itype == 3:
+				self.session.open(GetvidsChart, url, title = "Lifestyle")        
+			elif itype == 4:
+				self.session.open(GetvidsChart, url, title = "Sport")                                     
+			elif itype == 5:
+				self.session.open(GetvidsChart, url, title = "Webisodes")
+			elif itype == 6:
+				self.session.open(GetvidsChart, url, title = "TV_Film")
+			elif itype == 7:
+				self.session.open(GetvidsChart, url, title = "Infotainment") 
+         
+			else:
+				self.session.open(GetvidsChart, url, title = "Videos")
+		except:              
+			return        
+		
+		
+		
+                               
+#################################                		
+
+def httpExists(url):
+	host, path = urlparse.urlsplit(url)[1:3]
+	found = 0
+	try:
+		connection = httplib.HTTPConnection(host)  ## Make HTTPConnection Object
+		connection.request("HEAD", path)
+		responseOb = connection.getresponse()      ## Grab HTTPResponse Object
+
+		if responseOb.status == 200:
+			found = 1
+		else:
+#			print "Status %d %s : %s" % (responseOb.status, responseOb.reason, url)
+			found = 0
+	except Exception, e:
+		print e.__class__,  e, url
+	return found
+
+def _test():
+	import doctest, httpExists
+	return doctest.testmod(httpExists)
+
+if __name__ == "__main__":
+	_test()
+
+
+
+#def main(session, **kwargs):
+#	session.open(Vidtype)
+#         
+# 		
+# 
+#def Plugins(**kwargs):
+#	return PluginDescriptor(name="MyVideoPlayer", description="Plays videos from MyVideo", where = [ PluginDescriptor.WHERE_EXTENSIONSMENU, PluginDescriptor.WHERE_PLUGINMENU ], icon="MyVideo.png",  fnc=main)
+# 
+
+
+
+
+
+
+
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_PictureViewer.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_PictureViewer.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_PictureViewer.py	(revision 9331)
@@ -0,0 +1,1779 @@
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+from Screens.HelpMenu import HelpableScreen
+from Screens.ServiceInfo import ServiceInfoList, ServiceInfoListEntry
+from Screens.InfoBarGenerics import InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSupport, InfoBarNotifications, \
+	InfoBarShowHide, InfoBarServiceErrorPopupSupport, InfoBarSecondInfobar, \
+	InfoBarPVRState, InfoBarSimpleEventView, InfoBarServiceNotifications, InfoBarResolutionSelection, \
+	InfoBarMoviePlayerSummarySupport, InfoBarSubtitleSupport, InfoBarTeletextPlugin
+from Components.AVSwitch import AVSwitch
+from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
+from Components.Button import Button
+from Components.config import *
+from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.Sources.List import List
+from Components.Console import Console
+from Components.Slider import Slider
+from Components.Sources.StaticText import StaticText
+from Components.Pixmap import Pixmap, MovingPixmap
+from Components.Label import Label
+from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
+from Tools.Directories import crawlDirectory, resolveFilename, fileExists, pathExists, createDir, SCOPE_MEDIA, SCOPE_SKIN_IMAGE
+from Tools.LoadPixmap import LoadPixmap
+from urllib import urlencode, unquote
+from urllib2 import urlopen, Request
+from twisted.web.client import downloadPage, getPage
+
+from enigma import getDesktop, evfd, ePicLoad, eAVSwitch, eTimer, eWidget, eRect, eServiceCenter, \
+	eConsoleAppContainer, eServiceReference, eBackgroundFileEraser, iPlayableService, iServiceInformation
+
+from os import path as os_path, system as os_system, makedirs as os_makedirs, stat as os_stat
+from time import sleep as time_sleep
+import os, glob, time, re, random
+from Screens.NetworkSetup import *
+from MC_FileListCover import FileListCover
+from MC_FileList import FileList
+from MC_Imdb import shortname
+from GlobalFunctions import MC_ChoiceBox, MC_MessageBox, InfoBarAspectSelection
+from Plugins.Extensions.Aafpanel.plugin import command
+from __init__ import _
+
+lastpath = "/"
+thumbsC = 1
+index = 0
+posvar = "center"
+tmppolicy = "None"
+imdbmain = "/var/swap"
+imdbautostatus = False
+speicherliste = False
+mounting = None
+netmounting = None
+
+T_INDEX = 0
+T_FRAME_POS = 1
+T_PAGE = 2
+T_TITLE = 3
+T_THUMB = 4
+T_URL = 5
+T_FILENAME = 6
+T_FULL = 4
+
+views = [('default',_("default")),('details',_("details")),('big',_("big")),('cover',_("graphical filelist with preview"))]
+config.plugins.mc_pp_view = ConfigSubsection()
+config.plugins.mc_pp_view.enabled = ConfigSelection(views)
+tmpview = config.plugins.mc_pp_view.enabled.getValue()
+
+sorts = [('default',_(" by default")),('alpha',_(" by alphabet")), ('alphareverse',_("by alphabet backward")),('date',_("by date")),('datereverse',_("by date backward")),('size',_("by size")),('sizereverse',_("by size backward"))]
+config.plugins.mc_pp_sort = ConfigSubsection()
+config.plugins.mc_pp_sort.enabled = ConfigSelection(sorts)
+tmpsort = config.plugins.mc_pp_sort.enabled.getValue()
+
+config.plugins.mc_pp = ConfigSubsection()
+config.plugins.mc_pp.slidetime = ConfigInteger(default=10, limits=(5, 60))
+config.plugins.mc_pp.resize = ConfigSelection(default="0", choices = [("0", _("simple")), ("1", _("better"))])
+config.plugins.mc_pp.bgcolor = ConfigSelection(default="#00000000", choices = [("#00000000", _("black")),("#009eb9ff", _("blue")),("#00ff5a51", _("red")), ("#00ffe875", _("yellow")), ("#0038FF48", _("green"))])
+config.plugins.mc_pp.textcolor = ConfigSelection(default="#0038FF48", choices = [("#00000000", _("black")),("#009eb9ff", _("blue")),("#00ff5a51", _("red")), ("#00ffe875", _("yellow")), ("#0038FF48", _("green"))])
+config.plugins.mc_pp.framesize = ConfigInteger(default=30, limits=(5, 99))
+config.plugins.mc_pp.infoline = ConfigEnableDisable(default=True)
+config.plugins.mc_pp.loop = ConfigEnableDisable(default=True)
+config.plugins.mc_pp.lastDir = ConfigText(default=resolveFilename(SCOPE_MEDIA))
+config.plugins.mc_pp.mp3 = ConfigText(default="none")
+
+def getScale():
+	return AVSwitch().getFramebufferScale()
+
+boxversion = command('cat /etc/model')
+
+class MC_PictureViewer(Screen, InfoBarBase, InfoBarSeek, InfoBarNotifications, HelpableScreen):
+	def __init__(self, session, tmpviewin = None):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		global currentview
+		currentview = tmpviewin
+		if currentview is None:
+			currentview = config.plugins.mc_pp_view.enabled.getValue()
+		if self.debug != "off":
+			print "[PictureViewer] start with current view",currentview
+		global tmpsort
+		global index
+		global currPage
+		global dirlistcount
+		global maxentry
+		global maxPage
+
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		global thumbsC
+		global size_w, size_h
+		
+		# workaround to detect exactly the MC SKIN resolution...avoids a GS when non fitting skin is uses
+		if config.plugins.mc_globalsettings.currentskin.path.value == '/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml':
+			size_w = getDesktop(0).size().width()
+			size_h = getDesktop(0).size().height()
+		else:
+			skinresolutionX = command('cat ' + config.plugins.mc_globalsettings.currentskin.path.value + ' | grep xres | tr " " "\n" | grep xres | cut -d "=" -f2')
+			if self.debug != "off":
+				print "[MC_PictureViewer] detected skinresolution for grapical view:", skinresolutionX
+			if skinresolutionX == '"1280"':
+				if self.debug != "off":
+					print "[MC_PictureViewer] using HD skin parameters..."
+				size_w = 1280
+				size_h = 720
+			elif skinresolutionX == '"1024"':
+				if self.debug != "off":
+					print "[MC_PictureViewer] using KS skin parameters..."
+				size_w = 1024
+				size_h = 576
+			elif skinresolutionX == '"720"':
+				if self.debug != "off":
+					print "[MC_PictureViewer] using SD skin parameters..."
+				size_w = 720
+				size_h = 576
+			else:
+				if self.debug != "off":
+					print "[MC_PictureViewer] no valid resolution detected, using default parameters..."
+				size_w = getDesktop(0).size().width()
+				size_h = getDesktop(0).size().height()
+
+		self.FramebufferScale = AVSwitch().getFramebufferScale()
+		
+		if size_w == 1280:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 25
+			self.picY = 230
+		elif size_w == 720:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 25
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+		else:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+
+		textsize = 18
+		self.textcolor = "#FFFFFF"
+		self.color = "#000000"
+
+		posX = -1
+		self.thumbsX = (size_w - self.spaceLeft) / (self.spaceX + self.picX) # thumbnails in X
+		self.thumbsY = (size_h - self.spaceTop) / (self.spaceY + self.picY) # thumbnails in Y
+		self.thumbsC = self.thumbsX * self.thumbsY # all thumbnails
+		thumbsC = self.thumbsC
+
+		self.positionlist = []
+
+		for x in range(self.thumbsC):
+			posY = x / self.thumbsX
+			posX += 1
+			if posX >= self.thumbsX:
+				posX = 0
+			absX = self.spaceLeft + self.spaceX + (posX*(self.spaceX + self.picX))
+			absY = self.spaceTop + self.spaceY + (posY*(self.spaceY + self.picY))
+			self.positionlist.append((absX, absY))
+			if self.debug != "off":
+				print "label(%s)     pos: %s,%s size: %s,%s" % (x,str(absX+5),str(absY+self.picY-textsize-5),str(self.picX - 10),str(textsize))
+				print "thump(%s)     pos: %s,%s size: %s,%s" % (x,str(absX),str(absY+5),self.picX-10,  str(self.picY - (textsize*2) + 10))
+				print "thumpreal(%s) pos: %s,%s size: %s,%s" % (x,str(absX+45),str(absY+5),self.picX -10,  str(self.picY - (textsize*2) + 10))
+
+		skincontent = ""
+
+		Screen.__init__(self, session)
+		HelpableScreen.__init__(self)
+		InfoBarNotifications.__init__(self)
+		InfoBarBase.__init__(self)
+		InfoBarSeek.__init__(self, actionmap = "MediaPlayerSeekActions")
+		self["key_red"] = Button(_("Sorting"))
+		self["key_green"] = Button(_("View"))
+		self["key_yellow"] = Button(_("Slideshow"))
+		self["key_blue"] = Button(_("Settings"))
+		self["currentfolder"] = Label("")
+		self["title"] = Label("")
+		self.firststart = True
+
+		self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions",
+			{
+				"ok": (self.KeyOk, "show selected picture"),
+				"left": (self.leftUp, "List Top"),
+				"right": (self.rightDown, "List Bottom"),
+				"up": (self.up, "List up"),
+				"down": (self.down, "List down"),
+				"red": (self.sort, "Sorting"),
+				"green": (self.view, "View"),
+				"blue": (self.KeySettings, "Settings"),
+				"yellow": (self.startSlideshowPicture, "Start Slideshow"),
+			}, -2)
+
+		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
+			{
+				"cancel": (self.Exit, "Exit Picture Player"),
+			}, -2)
+
+		self["MediaPlayerActions"] = HelpableActionMap(self, "MediaPlayerActions",
+			{
+				"play": (self.startSlideshowPicture, "Start Slideshow"),
+			}, -2)
+
+		self.rarFS = None
+		self.isoFS = None
+		self.imgFS = None
+		self.smbFS = None
+		self.upnpFS = None
+		self.ftpFS = None
+		self.isoMountDir = None
+		self.imgMountDir = None
+		self.rarMountDir = None
+
+		if config.plugins.mc_globalsettings.setstablestartdir.value != "no": # default directory set in global settings
+			currDir = config.plugins.mc_globalsettings.setstablestartdir.value
+		else:
+			currDir = config.plugins.mc_pp.lastDir.value
+		global lastpath
+
+		if currDir == "devicelist" or not pathExists(currDir):
+			currDir = None
+
+		lastpath = currDir
+		if self.debug != "off":
+			print "[MC_PictureViewer] currDir", currDir
+			print "[MC_PictureViewer] lastpath", lastpath
+		if lastpath is not None:
+			currDir = lastpath
+		self["currentfolder"].setText(str(currDir))
+		self["pageinfo"] = StaticText("")
+
+		if currentview == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+		elif currentview == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+		elif currentview == "cover":
+			art = 11
+			itemheight = 23
+			fontsize = 18
+		else: # default
+			art = 1
+			itemheight = 23
+			fontsize = 18
+			
+		if tmpsort is None:
+			sort = config.plugins.mc_pp_sort.enabled.getValue()
+		else:
+			sort = tmpsort
+
+		self.filelist = FileList(currDir, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(rar|iso|img|jpeg|jpg|jpe|png|bmp)", itemheight = itemheight, fontsize = fontsize, art = art, sort = sort )
+
+		self["filelist"] = self.filelist
+				
+		if currentview == "cover":
+			self["filelist"].hide()	
+
+		self["frame"] = MovingPixmap()
+		self["frame"].hide()
+	
+		for x in range(self.thumbsC):
+			self["label"+str(x)] = StaticText()
+			self["thumb"+str(x)] = Pixmap()
+			self["thumbreal"+str(x)] = Pixmap()
+
+
+		self.Thumbnaillist = []
+		self.trailerlist = []
+		self.currPage = -1
+		self.dirlistcount = 0
+		self.maxentry = 1
+		self.maxPage = 0
+		self.index = 0 - self.dirlistcount
+		if self.index < 0:
+			self.index = 0
+
+
+		# Init Thumb PicLoad
+		self.thumbload = ePicLoad()
+		self.thumbload.PictureData.get().append(self.showThumbPixmap)
+		self.thumbload.setPara((self.picX-10, self.picY-(textsize*2), self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+
+		# Remember old Service
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+
+		self.isVisible = True
+		self.currList = "filelist"
+
+		self.container=eConsoleAppContainer()
+		self.container.appClosed.append(self.finished)
+
+		if currentview == "cover":
+			self.onFirstExecBegin.append(self.GetTrailerList)
+		else:
+			self["filelist"].show()
+
+		self.firstFrame = True
+		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+			{
+				iPlayableService.evEOF: self.doEOF,
+			})
+
+	def GetTrailerList(self,firstFrame = True,filename = "/",tmpsort = None):
+		global thumbsC
+		global speicherliste
+		
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		
+		global lastpath
+		global maxPage
+		global trailerlist
+		self.firstFrame = firstFrame
+		currDir = config.plugins.mc_pp.lastDir.value
+		if not pathExists(currDir):
+			currDir = "/media/"
+
+		if self.firstFrame is True:
+			self.filename = lastpath
+			lastpath = currDir
+		else:	
+			lastpath = filename
+
+		if lastpath is not None:
+			currDir = lastpath
+		if self.debug != "off":
+			print "[MC_PictureViewer] currDir", currDir
+			print "[MC_PictureViewer] lastpath", lastpath
+		self["currentfolder"].setText(str(currDir))
+		
+		if tmpsort is not None:
+			self.filelist = FileListCover(currDir, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(rar|iso|img|jpeg|jpg|jpe|png|bmp)", itemheight = itemheight, fontsize = fontsize, art = art, sort = tmpsort, speicherliste_input = speicherliste )
+		else:
+			sort = config.plugins.mc_pp_sort.enabled.getValue()
+			self.filelist = FileListCover(currDir, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(rar|iso|img|jpeg|jpg|jpe|png|bmp)", itemheight = itemheight, fontsize = fontsize, art = art, sort = sort, speicherliste_input = speicherliste )
+			
+		maxPage = self.filelist.getMaxPage()
+		trailerlist = self.filelist.getTrailerlist()
+		thumbsC = self.filelist.getThumbsC()
+		self.index = 0
+		self.maxPage = int(maxPage) + 1
+		self.trailerlist = trailerlist
+		self.maxentry = len(self.trailerlist)-1
+		self.paintFrame(self.firstFrame)
+		time_sleep(1)
+
+		self["frame"].show()
+
+	def paintFrame(self,firstFrame = True):
+		textsize = 18
+		if size_w == 1280:
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 25
+			self.picY = 230
+		elif size_w == 720:
+			self.spaceX = 25
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+		else:
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+			
+		self.thumbload = ePicLoad()
+		self.thumbload.PictureData.get().append(self.showThumbPixmap)
+		self.thumbload.setPara((self.picX-10, self.picY-(textsize*2), self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+
+		global index
+	
+		if self.maxentry < index or index < 0:
+			return
+		self.firstFrame = firstFrame
+
+		if self.firstFrame is not True:
+			pos = (60, 130)
+			index = 0
+		else:
+			pos = self.positionlist[self.trailerlist[index][T_FRAME_POS]]
+		
+		self["frame"].moveTo( pos[0], pos[1], 1)
+		self["frame"].startMoving()
+
+		if self.currPage != self.trailerlist[index][T_PAGE]:
+			self.currPage = self.trailerlist[index][T_PAGE]
+			self.newPage()
+		elif self.firstFrame is not True:
+			self.currPage = self.trailerlist[0][0]
+			self.newPage()
+
+	def newPage(self):
+		global index
+		global posvar
+		self.Thumbnaillist = []
+		self["pageinfo"].setText(_("Page %s of %s" % (str(self.currPage+1),str(self.maxPage))))
+
+		#clear Labels and Thumbnail
+		for x in range(self.thumbsC):
+			posvar = "center"
+			self["label"+str(x)].setText("")
+			self["thumb"+str(x)].hide()
+			self["thumbreal"+str(x)].hide()
+			
+		#paint Labels and fill Thumbnail-List
+		count = -1
+		for x in self.trailerlist:
+			count +=1
+			if x[T_PAGE] == self.currPage:
+				short = shortname(self.trailerlist[count][3])
+				if self.trailerlist[count][7] is None:
+					if short is not None:
+						if len(short) > 20:
+							posvar = "left"
+						else:
+							posvar = "center"
+					else:
+						posvar = "center"
+
+					self["label"+str(x[T_FRAME_POS])].setText(short)
+				else:
+					if short is not None:
+						if len(short) > 20:
+							posvar = "left"
+						else:
+							posvar = "center"
+					else:
+						posvar = "center"
+
+					self["label"+str(x[T_FRAME_POS])].setText(short)
+				if self["thumb"+str(x[T_FRAME_POS])].instance is not None:
+					if self.trailerlist[count][6] is not None and self.trailerlist[count][7] is True:
+						if self.trailerlist[count][6].split('/')[1] == 'usr':			
+							outvar = self.trailerlist[count][6]		
+							self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile(self.trailerlist[count][6]+".png")
+						else:	
+							newshort = short.lower()
+							newshort = newshort.replace(" ", "")
+							outvar = self.trailerlist[count][6]+newshort
+							if fileExists(outvar+".png", 'r'):
+								self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile(outvar+".png")
+							else:	
+								self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile("/var/usr/local/share/enigma2/extensions/directory_cover.png")
+
+						self['thumb'+str(x[T_FRAME_POS])].show()	
+					else:
+						outvar = self.trailerlist[count][4]
+
+						self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile("/var/usr/local/share/enigma2/extensions/dummy.png")
+						self['thumb'+str(x[T_FRAME_POS])].show()
+
+				self.Thumbnaillist.append([0, x[T_FRAME_POS], x[T_THUMB], x[T_FILENAME], self.trailerlist[count][7], short, outvar])
+
+		#Get Thumbnails
+		self.thumbcount = -1
+		self.getThumbnail()
+		
+	def getThumbnail(self):
+		self.thumbcount += 1
+		if str(self.Thumbnaillist[self.thumbcount][4]) is not True:
+			self.thumbfile = str(self.Thumbnaillist[self.thumbcount][6])
+		if fileExists(self.thumbfile, 'r'):
+			self.gotThumbnail()
+		else:
+			if self.thumbcount+1 < len(self.Thumbnaillist):
+				self.getThumbnail()
+
+	def gotThumbnail(self, txt=""):
+		if self.thumbload.getThumbnail(self.thumbfile) == 1:
+			if self.thumbcount+1 < len(self.Thumbnaillist):
+				self.getThumbnail()
+
+				
+	def showThumbPixmap(self, picInfo=None):
+		ptr = self.thumbload.getData()
+		if ptr != None:
+			self["thumb" + str(self.thumbcount)].instance.setPixmap(ptr.__deref__())
+			self["thumb" + str(self.thumbcount)].show()
+		
+		if self.thumbcount+1 < len(self.Thumbnaillist):
+			self.getThumbnail()
+
+	def showThumbError(self, error):
+		if self.thumbcount+1 < self.thumbsC:
+			self.getThumbnail()
+
+# 	def KeyOk(self):
+# 		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+# 		self.filename = self.filelist.getFilename(index)
+# 		running = "other"
+# 		if self.debug != "off":
+# 			print "[MC_PictureViewer] %s file found %s start showing" % (running,self.filename)
+# 		self.playing()
+# 
+		
+	def getPlayerIndex(self):
+		global index
+		return index
+
+	def getActivSwap(self):
+		fp = tryOpen('/proc/swaps')
+		if fp == '':
+			return 0
+		for tmp in fp.readlines():
+			if tmp.startswith('/'):
+				line = tmp.split()
+				swap = line[0].split('/')
+				size = int(line[2])
+				return (size)
+		return 0
+
+	def finished(self,retval):
+		if self.debug != "off":
+			print "[MC_PictureViewer] finished retval", retval
+		global currentview
+		global mounting
+
+		currentdir = self.filelist.getCurrentDirectory()
+
+		self.container = eConsoleAppContainer()
+		if mounting is not None:
+			if self.debug != "off":
+				print "[MC_PictureViewer] %s mounting bind to lastdir" % (mounting)
+				print "str(lastpath)",str(currentdir)
+			if mounting == "rar":
+				print "mount rar"
+				self.container.execute('/bin/mount --bind /tmp/rarfs ' + str(currentdir))
+				print "mount rar fertig"
+				self.rarMountDir = str(currentdir)
+				self.rarFS = True
+			if mounting == "iso":
+				self.isoFS = True
+				self.isoMountDir = str(currentdir)
+				self.container.execute('/bin/mount --bind /media/dvd ' + str(currentdir))
+			if mounting == "img":
+				self.imgFS = True
+				self.imgMountDir = str(currentdir)
+				self.container.execute('/bin/mount --bind /media/dvd ' + str(currentdir))
+			if mounting == "smb":
+				self.smbFS == True
+			if mounting == "upnp":
+				self.upnpFS == True
+			if mounting == "ftp":
+				self.ftpFS == True
+
+			if self.debug != "off":
+				print "[MC_PictureViewer] finished: mounting=",mounting
+				print "[MC_PictureViewer] finished: self.rarFS =",self.rarFS
+				print "[MC_PictureViewer] finished: self.isoFS =",self.isoFS
+				print "[MC_PictureViewer] finished: self.imgFS =",self.imgFS
+				print "[MC_PictureViewer] finished: self.smbFS =",self.smbFS
+				print "[MC_PictureViewer] finished: self.upnpFS =",self.upnpFS
+				print "[MC_PictureViewer] finished: self.ftpFS =",self.ftpFS
+				print "[MC_PictureViewer] finished: self.rarMountDir =",self.rarMountDir
+				print "[MC_PictureViewer] finished: self.imgMountDir =",self.imgMountDir
+				print "[MC_PictureViewer] finished: self.isoMountDir =",self.isoMountDir	
+			import time		
+			time.sleep(3)
+#			sleep(4)
+
+			self.session.open(MC_MessageBox, '%s Successful closed.' % (mounting), MC_MessageBox.TYPE_INFO, timeout=5)
+			self.mountingmsg.close(True)
+
+			global art
+			global itemheight
+			global fontsize
+			global sort
+			global index
+			if currentview == "cover":
+				index = 0
+				self.filename = self.filelist.getCurrentDirectory()
+				self.firstFrame = False
+				self.GetTrailerList(self.firstFrame,self.filename,sort)	
+			else:
+				self.filelist.refresh(fontsize, itemheight, art, sort)
+
+		else:
+			if self.debug != "off":
+				print "[MC_PictureViewer] %s mounting error" % (running)
+			self.session.open(MC_MessageBox, '%s Mounting Error !' % (mounting), MC_MessageBox.TYPE_INFO, timeout=5)
+			self.mountingmsg.close(True)
+
+		self.container=eConsoleAppContainer()
+		self.container.appClosed.append(self.finished)
+
+	def KeyOk(self):	
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+		self.filename = self.filelist.getFilename(index)
+		running = "None"
+		if self.debug != "off":
+			print "self.filename",self.filename
+		if self.filename is not None:
+			if self.filename.upper().endswith(".RAR"):
+				if boxversion.upper() == 'UFS910':
+					p1 = self.getActivSwap()
+					if p1 == '' or p1 == '0':
+						if self.debug != "off":
+							print "[MC_PictureViewer] no swap % kb" % (p1)
+						self.session.open(MC_MessageBox, _('Use this only with SWAP !'), MC_MessageBox.TYPE_ERROR, timeout=5)
+					else:
+						if int(p1) >= int('16000'):
+							if self.debug != "off":
+								print "[MC_PictureViewer] ufs910 swap ok"
+							swapck = 1 
+						else:
+							if self.debug != "off":
+								print "[MC_PictureViewer] swap to smal %s kb min 15000 kb" % (p1)
+							self.session.open(MC_MessageBox, _('Your Swapsize %s kb is too small! Use min 15000 kb !' % (p1)), MC_MessageBox.TYPE_ERROR, timeout=5)
+				elif boxversion.upper() == 'UFS922':
+					swapck = 1
+				elif boxversion.upper() == 'UFS912':
+					swapck = 1
+				elif boxversion.upper() == 'TF7700':
+					swapck = 1
+				elif boxversion.upper() == 'IPBOX91':
+					swapck = 1
+				elif boxversion.upper() == 'IPBOX900':
+					swapck = 1
+				elif boxversion.upper() == 'IPBOX910':
+					swapck = 1
+				elif boxversion.upper() == 'IPBOX9000':
+					swapck = 1
+				elif boxversion.upper() == 'AT7000':
+					swapck = 1
+				elif boxversion.upper() == 'AT700':
+					swapck = 1
+				elif boxversion.upper() == 'AT7500':
+					swapck = 1						
+				else:
+					self.session.open(MC_MessageBox, _('Your Boxtype %s is not supportet ! message obi on AAF !' % (boxversion)), MC_MessageBox.TYPE_ERROR, timeout=5)
+				if swapck == 1:
+					running = "rar"
+					if self.debug != "off":
+						print "[MC_PictureViewer] %s file gefunden %s start mounter" % (running,self.filename)			
+					self.mounter(running)
+				else:
+					self.session.open(MC_MessageBox, _('Error! No Swapstick found !'), MC_MessageBox.TYPE_WARNING, timeout=5)
+					
+			elif self.filename.upper().endswith(".IMG"):
+				running = "img"
+				if self.debug != "off":
+					print "[MC_PictureViewer] %s file gefunden %s start mounter" % (running,self.filename)			
+					print "[MC_PictureViewer] %s mounting file to /media/dvd" % (running)
+				self.mounter(running)
+				
+			elif self.filename.upper().endswith(".ISO"):
+				running = "iso"
+				if self.debug != "off":
+					print "[MC_PictureViewer] %s file gefunden %s start mounter" % (running,self.filename)			
+					print "[MC_PictureViewer] %s mounting file to /media/dvd" % (running)
+				self.mounter(running)
+				
+			else:
+				running = "other"
+				if self.debug != "off":
+					print "[MC_PictureViewer] %s file gefunden %s start playing" % (running,self.filename)
+				self.playing()
+		else:
+			running = "other"
+			if self.debug != "off":
+				print "[MC_PictureViewer] %s file gefunden %s start playing" % (running,self.filename)
+			self.playing()
+				
+
+	def mounter(self, running):
+		global mounting
+				
+		if running == "rar":
+			if os.path.exists("/tmp/rarfs") is False:
+				os.makedirs("/tmp/rarfs")
+			if os.path.exists("/sbin/rarfs") is True:
+				if self.debug != "off":
+					print "[MC_PictureViewer] %s mounting file to /tmp/rarfs" % (running)
+ 				mounting = running
+ 				self.rarFS = True
+				self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+				self.container.execute('/sbin/rarfs ' + self.filelist.getCurrentDirectory() + str(self.filename) + ' /tmp/rarfs')
+				import time
+				time.sleep(10)
+				return
+
+		elif running == "img":
+			if self.debug != "off":
+				print "[MC_PictureViewer] %s mounting file to /tmp/rarfs" % (running)
+			mounting = running 
+			self.imgFS = True
+
+			self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+			self.container.execute('mount -o loop ' + self.filelist.getCurrentDirectory() + str(self.filename) + ' /media/dvd')
+
+		elif running == "iso":
+			if self.debug != "off":
+				print "[MC_PictureViewer] %s mounting file to /tmp/rarfs" % (running)
+			mounting = running 
+			self.isoFS == True
+
+			self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+			self.container.execute('mount ' + self.filelist.getCurrentDirectory() + str(self.filename) + ' /media/dvd')
+
+		elif running == "smb":
+			if pathExists("/var/usr/lib/libsmbclient.so.0") or pathExists("/var/swap/lib/libsmbclient.so.0") or pathExists("/lib/libsmbclient.so.0"):
+				running = "smb"
+				smbck = open("/proc/mounts", "r")
+				mount = smbck.read()
+				smbck.close()
+				if mount.find("/media/smb") is -1:
+					if self.debug != "off":
+						print "[MC_PictureViewer] %s mounter started" % (running)			
+						print "[MC_PictureViewer] %sFS mounting file to /media/smb" % (running)
+					mounting = running 
+					self.smbFS == True
+					
+					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+					self.container.execute('/bin/fusesmb -o nonempty /media/smb')
+			else:
+				self.session.open(MC_MessageBox, 'Error, please install ipk swapnetwork/libsmbclient over Pluginbrowser !', MC_MessageBox.TYPE_ERROR)
+
+		elif running == "upnp":
+			running = "upnp"
+			smbck = open("/proc/mounts", "r")
+			mount = smbck.read()
+			smbck.close()
+			if mount.find("/media/upnp") is -1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] %s mounter started" % (running)			
+					print "[MC_PictureViewer] %sFS mounting file to /media/upnp" % (running)
+				mounting = running 
+				self.upnpFS == True
+	
+				self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+				self.container.execute('/bin/djmount -o nonempty /media/upnp')
+
+		elif running == "ftp":
+			if pathExists("/var/bin/ftpfs.sh"):
+				running = "ftp"
+				smbck = open("/proc/mounts", "r")
+				mount = smbck.read()
+				smbck.close()
+				if mount.find("/media/ftp") is -1:
+					if self.debug != "off":
+						print "[MC_PictureViewer] %s mounter started" % (running)			
+						print "[MC_PictureViewer] %sFS mounting file to /media/ftp" % (running)
+					mounting = running 
+					self.ftpFS == True
+
+					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+					self.container.execute('/var/bin/ftpfs.sh')
+			else:
+				self.session.open(MC_MessageBox, 'Error, touch /var/bin/ftpfs.sh and edit this with your entrys !', MC_MessageBox.TYPE_ERROR)
+
+		if self.debug != "off":
+			print "[MC_PictureViewer] mounter: self.rarFS =",self.rarFS
+			print "[MC_PictureViewer] mounter: self.isoFS =",self.isoFS
+			print "[MC_PictureViewer] mounter: self.imgFS =",self.imgFS
+			print "[MC_PictureViewer] mounter: self.smbFS =",self.smbFS
+			print "[MC_PictureViewer] mounter: self.upnpFS =",self.upnpFS
+			print "[MC_PictureViewer] mounter: self.ftpFS =",self.ftpFS
+			print "[MC_PictureViewer] mounter: self.rarMountDir =",self.rarMountDir
+			print "[MC_PictureViewer] mounter: self.imgMountDir =",self.imgMountDir
+			print "[MC_PictureViewer] mounter: self.isoMountDir =",self.isoMountDir		
+
+	def umountRefresh(self):
+#		self.session.open(MC_MessageBox, _("Umount %s ! Please wait !" % (self.filename)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+		global fontsize
+		global art
+		global sort
+		global itemheight
+		currentdir = self.filelist.getCurrentDirectory()
+		if self.debug != "off":
+			print "[MC_PictureViewer] umountRefresh: self.rarFS =",self.rarFS
+			print "[MC_PictureViewer] umountRefresh: self.isoFS =",self.isoFS
+			print "[MC_PictureViewer] umountRefresh: self.imgFS =",self.imgFS
+			print "[MC_PictureViewer] umountRefresh: self.smbFS =",self.smbFS
+			print "[MC_PictureViewer] umountRefresh: self.upnpFS =",self.upnpFS
+			print "[MC_PictureViewer] umountRefresh: self.ftpFS =",self.ftpFS
+			print "[MC_PictureViewer] umountRefresh: self.rarMountDir =",self.rarMountDir
+			print "[MC_PictureViewer] umountRefresh: self.imgMountDir =",self.imgMountDir
+			print "[MC_PictureViewer] umountRefresh: self.isoMountDir =",self.isoMountDir
+
+		if self.rarFS is None and self.isoFS is None and self.imgFS is None and self.smbFS is None and self.upnpFS is None and self.ftpFS is None:
+			skip = 1
+			
+		elif self.isoFS is True:
+			self.session.open(MC_MessageBox, _("Umount isofile from %s" % (self.isoMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_PictureViewer] umount isoFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`"))
+			self.isoFS = None			
+			self.isoMountDir = None
+
+		elif self.imgFS is True:
+			self.session.open(MC_MessageBox, _("Umount imgfile from %s" % (self.imgMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_PictureViewer] umount imgFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`"))
+			self.imgFS = None		
+			self.imgMountDir = None
+
+		elif self.rarFS is True:
+			self.session.open(MC_MessageBox, _("Umount rarfile from %s" % (self.rarMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_PictureViewer] umount rarFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep rarfs | grep -v '/dev/' | cut -d ' ' -f3` " + currentdir + "; killall -9 rarfs"))
+			self.rarFS = None
+			self.rarMountDir = None
+
+		else:
+			self.imgFS = None		
+			self.rarFS = None
+			self.isoFS = None			
+			self.smbFS = None		
+			self.upnpFS = None
+			self.ftpFS = None			
+			self.rarMountDir = None
+			self.imgMountDir = None
+			self.isoMountDir = None
+									
+			Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep -v '/dev/' | cut -d ' ' -f3`; /bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`; killall -9 rarfs fusesmb curlftpfs"))
+
+	def playing(self, type = None):
+		global currentview
+		global index
+		global speicherliste
+		global showiframeStatus
+		
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+
+		self.filename = self.filelist.getFilename(index)
+		speicherliste = False
+
+		currPlay = self.session.nav.getCurrentService()
+		if self.debug != "off":
+			print "currPlay", currPlay  
+
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_PictureViewer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		Console().ePopen(('stfbcontrol a 255'))
+#		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+		self.firstFrame = False
+# 		art = 1
+# 		itemheight = 23
+# 		fontsize = 18
+		sort = config.plugins.mc_vp_sort.enabled.getValue()
+		if self.currList == "playlist":
+			selection = self["playlist"].getSelection()
+			self.changeEntry(self.playlist.getSelectionIndex())
+			
+		if self.isVisible == False:
+			self.visibility()
+			return
+
+		if self.filelist.getFilename(index) is not None:
+			if self.filelist.canDescent(index):
+
+
+#				if currentview == "fullcover":
+#					self.showiframe.finishStillPicture()
+#					self.fullcoverView(index)	
+
+				if self.debug != "off":
+					print "[MC_PictureViewer] changedir from" ,self.filelist.getCurrentDirectory()	
+				self.filelist.descent(index)
+				if self.debug != "off":
+					print "[MC_PictureViewer] changedir to" ,self.filelist.getCurrentDirectory()	
+
+				if self.isoFS is True:
+					if self.isoMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.isoMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.imgFS is True:
+					if self.imgMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.imgMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.rarFS is True:
+					if self.rarMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.rarMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.filelist.getCurrentDirectory() == "/media/":
+					self.umountRefresh()
+				
+ 				elif self.filelist.getCurrentDirectory() == "/media/smb/":
+					netmounting = "smb"
+					smbck = open("/proc/mounts", "r")
+					mount = smbck.read()
+					smbck.close()
+					if mount.find("/media/smb") is -1:
+						self.smbFS = True
+						self.mounter(netmounting)
+
+				elif self.filelist.getCurrentDirectory() == "/media/upnp/":
+					netmounting = "upnp"
+					upnpck = open("/proc/mounts", "r")
+					mount = upnpck.read()
+					upnpck.close()
+					if mount.find("/media/upnp") is -1:
+						self.upnpFS = True
+						self.mounter(netmounting)
+						
+				elif self.filelist.getCurrentDirectory() == "/media/ftp/":
+					netmounting = "ftp"
+					ftpck = open("/proc/mounts", "r")
+					mount = ftpck.read()
+					ftpck.close()
+					if mount.find("/media/ftp") is -1:
+						self.ftpFS = True
+						self.mounter(netmounting)
+				
+				self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+				if currentview == "cover":
+					index = 0
+					self.firstFrame = False
+					self.GetTrailerList(self.firstFrame,self.filename)
+			else:
+				if self.debug != "off":
+					print "[MC_PictureViewer] currref !!!!!!", self.filename
+				self.startSingelPicture()
+
+		else:
+
+			if self.filelist.canDescent(index):
+				self.filelist.descent(index)
+				self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+
+				if currentview == "cover":
+					index = 0
+					self.firstFrame = False	
+					speicherliste = True
+					self.GetTrailerList(self.firstFrame,self.filename,speicherliste)	
+			else:
+				self.session.open(MC_MessageBox, _("Error! Filelist is empty !"), type = MC_MessageBox.TYPE_ERROR, timeout = 10)
+				if self.debug != "off":
+					print "[MC_PictureViewer] filelist empty"
+
+			Console().ePopen(('rm -r /var/swap/imdb/.Thumbnails"'))
+			Console().ePopen(('rm -r /var/swap/imdbfolder/.Thumbnails"'))
+			Console().ePopen(('rm -r /var/usr/local/share/enigma2/extensions/.Thumbnails"'))
+
+	def rightDown(self):
+		global currentview
+		global index
+
+		if currentview != "cover":	
+			if len(self.filelist.getFileList()) == 1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] rightDown skipped"
+				return
+			elif len(self.filelist.getFileList()) == 0:
+				if self.debug != "off":
+					print "[MC_PictureViewer] rightDown skipped"
+				return
+		else:
+			if len(self.trailerlist) == 1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] rightDown skipped"
+				return
+			elif len(self.trailerlist) == 0:
+				if self.debug != "off":
+					print "[MC_PictureViewer] rightDown skipped"
+				return
+
+		Console().ePopen(('stfbcontrol a 255'))
+
+		if currentview != "cover":
+			self["filelist"].pageDown()	
+		else:		
+			self.maxentry = len(self.trailerlist)-1
+			self.firstFrame = True
+			index += 1
+			if index > self.maxentry:
+				index = 0
+			self.paintFrame()
+			self.firstFrame = False
+
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_PictureViewer] def rightdown filename", filename	
+
+	def leftUp(self):
+		global currentview
+		global index
+
+		if currentview != "cover":	
+			if len(self.filelist.getFileList()) == 1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] leftUp skipped"
+				return
+			elif len(self.filelist.getFileList()) == 0:
+				if self.debug != "off":
+					print "[MC_PictureViewer] leftUp skipped"
+				return
+		else:
+			if len(self.trailerlist) == 1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] leftUp skipped"
+				return
+			elif len(self.trailerlist) == 0:
+				if self.debug != "off":
+					print "[MC_PictureViewer] leftUp skipped"
+				return
+
+		Console().ePopen(('stfbcontrol a 255'))
+
+		if currentview != "cover":
+			self["filelist"].pageUp()			
+		else:		
+			self.maxentry = len(self.trailerlist)-1		 
+			self.firstFrame = True
+			index -= 1
+			if index < 0:
+				index = self.maxentry
+			self.paintFrame()
+			self.firstFrame = False
+
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_PictureViewer] def leftup filename", filename
+		
+
+	def up(self):
+		global currentview
+		global index
+
+		if currentview != "cover":	
+			if len(self.filelist.getFileList()) == 1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] up skipped"
+				return
+			elif len(self.filelist.getFileList()) == 0:
+				if self.debug != "off":
+					print "[MC_PictureViewer] up skipped"
+				return
+		else:
+			if len(self.trailerlist) == 1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] up skipped"
+				return
+			elif len(self.trailerlist) == 0:
+				if self.debug != "off":
+					print "[MC_PictureViewer] up skipped"
+				return
+
+		Console().ePopen(('stfbcontrol a 255'))
+
+		if currentview != "cover":
+			self["filelist"].up()			
+		else:
+			self.maxentry = len(self.trailerlist)-1		 
+			self.firstFrame = True
+			index -= self.thumbsX
+			if index < 0:
+				index = self.maxentry
+			self.paintFrame()
+			self.firstFrame = False
+			
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_PictureViewer] def up filename", filename	
+
+	def down(self):
+		global currentview
+		global index
+
+		if currentview != "cover":	
+			if len(self.filelist.getFileList()) == 1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] down skipped"
+				return
+			elif len(self.filelist.getFileList()) == 0:
+				if self.debug != "off":
+					print "[MC_PictureViewer] down skipped"
+				return
+		else:
+			if len(self.trailerlist) == 1:
+				if self.debug != "off":
+					print "[MC_PictureViewer] down skipped"
+				return
+			elif len(self.trailerlist) == 0:
+				if self.debug != "off":
+					print "[MC_PictureViewer] down skipped"
+				return
+
+		Console().ePopen(('stfbcontrol a 255'))
+		
+		if currentview != "cover":
+			self["filelist"].down()		
+		else:
+			self.maxentry = len(self.trailerlist)-1		 
+			self.firstFrame = True
+			index += self.thumbsX
+			if index > self.maxentry:
+				index = 0
+			self.paintFrame()
+			self.firstFrame = False
+
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_PictureViewer] def down filename", filename
+		global running
+		running = "None"
+
+# 		if filename == ("/media/upnp/upnp-automount/"):
+# 			upnpck = open("/proc/mounts", "r")
+# 			mount = upnpck.read()
+# 			upnpck.close()
+# 			if mount.find("upnp-automount") is -1:
+# 				if self.debug != "off":
+# 					print "[MC_PictureViewer] MOUNT UPNP obi"
+# 				running = "upnp"
+# 				self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, timeout=3)
+# 				self.container.execute('/bin/djmount -o nonempty /media/upnp/upnp-automount')
+# 
+# 				if currentview == "cover":
+# 					index = 0
+# 					self.filename = self.filelist.getCurrentDirectory()
+# 					self.firstFrame = False
+# 					self.GetTrailerList(self.firstFrame,self.filename,sort)
+# 				else:		
+# 					self.filelist.refresh(fontsize, itemheight, art, sort)
+# 
+# 		if filename == ("/media/smb/smb-automount/"):
+# 			if pathExists("/var/usr/lib/libsmbclient.so.0") or pathExists("/var/swap/lib/libsmbclient.so.0") or pathExists("/lib/libsmbclient.so.0"):
+# 				smbck = open("/proc/mounts", "r")
+# 				mount = smbck.read()
+# 				smbck.close()
+# 				if mount.find("smb-automount") is -1:
+# 					if self.debug != "off":
+# 						print "[MC_PictureViewer] MOUNT SMB obi"
+# 					running = "smb"
+# 					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, timeout=3)
+# 					self.container.execute('/bin/fusesmb -o nonempty /media/smb/smb-automount')
+# 					if currentview == "cover":
+# 						index = 0
+# 						self.filename = self.filelist.getCurrentDirectory()
+# 						self.firstFrame = False
+# 						self.GetTrailerList(self.firstFrame,self.filename,sort)
+# 					else:		
+# 						self.filelist.refresh(fontsize, itemheight, art, sort)
+# 			else:
+# 				self.session.open(MC_MessageBox, 'Error, please install ipk swapnetwork/libsmbclient over Pluginbrowser !', MC_MessageBox.TYPE_ERROR)
+# 
+# 		if filename == ("/media/ftp/ftp-automount/"):
+# 			if pathExists("/var/bin/ftpfs.sh"):
+# 				ftpck = open("/proc/mounts", "r")
+# 				mount = ftpck.read()
+# 				ftpck.close()						
+# 				if mount.find("ftp-automount") is -1:
+# 					if self.debug != "off":
+# 						print "[MC_PictureViewer] MOUNT FTP obi"
+# 					running = "ftp"
+# 					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, timeout=3)
+# 					self.container.execute('/var/bin/ftpfs.sh')
+# 					if currentview == "cover":
+# 						index = 0
+# 						self.filename = self.filelist.getCurrentDirectory()
+# 						self.firstFrame = False
+# 						self.GetTrailerList(self.firstFrame,self.filename,sort)
+# 					else:		
+# 						self.filelist.refresh(fontsize, itemheight, art, sort)
+# 			else:
+# 				self.session.open(MC_MessageBox, 'Error, touch /var/bin/ftpfs.sh and edit this with your entrys !', MC_MessageBox.TYPE_ERROR)
+# 
+	def error(self, error):
+		self.session.open(MC_MessageBox,("UNEXPECTED ERROR:\n%s") % (error),  MC_MessageBox.TYPE_INFO)
+		self.mountingmsg.close(True)
+
+	def Exit(self):
+		global lastpath
+		Console().ePopen(('stfbcontrol a 255'))
+		if self.isVisible == False:
+			self.visibility()
+			return
+		if self.filelist.getCurrentDirectory() is None:
+			config.plugins.mc_pp.lastDir.value = "devicelist"
+		else:
+			config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory()
+		self.session.nav.stopService()
+		config.plugins.mc_pp.save()
+
+		if self.debug != "off":
+			print "[MC_PictureViewer] Exit umount", lastpath
+		Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep rarfs | grep -v '/dev/' | cut -d ' ' -f3`; killall -9 rarfs"))
+		Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep -v '/dev/' | cut -d ' ' -f3`; /bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`; killall -9 rarfs fusesmb curlftpfs"))
+		self.close()
+
+	def view(self):
+		Console().ePopen(('stfbcontrol a 255'))
+		list = []
+		list.append((_("default file view"), "default"))
+		list.append((_("big file view"), "big"))
+		list.append((_("detailed file view"), "details"))
+		list.append((_("graphical file view with preview"), "cover"))
+		self.session.openWithCallback(self.viewingConfirmed, MC_ChoiceBox, title=_("Change view temporary to..."), list = list)
+
+	def viewingConfirmed(self, answer):
+		global art
+		global itemheight
+		global fontsize
+		
+		answer = answer and answer[1]
+		if answer == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+			tmpview = "big"
+		elif answer == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+			tmpview = "details"
+		elif answer == "cover":	
+			art = 1
+			itemheight = 23
+			fontsize = 18
+			tmpview = "cover"
+		else:
+			art = 1
+			itemheight = 23
+			fontsize = 18
+			tmpview = "default"
+
+		global currentview
+
+		if tmpsort is None:
+			sort = config.plugins.mc_pp_sort.enabled.getValue()
+		else:
+			sort = tmpsort
+		if currentview == tmpview:
+			if self.debug != "off":
+				print "[MC_PictureViewer] skipping change view from %s to %s" % (currentview,tmpview)
+		elif currentview == "cover":
+			if self.debug != "off":
+				print "[MC_PictureViewer] changing view from %s to %s" % (currentview,tmpview)
+			if tmpview != "cover":
+				if self.debug != "off":
+					print "[MC_PictureViewer] restart"
+				self.session.open(MC_PictureViewer,tmpviewin = tmpview)
+				self.close()
+		else:
+			if self.debug != "off":
+				print "[MC_PictureViewer] changing view from %s to %s" % (currentview,tmpview)
+			if tmpview == "cover":
+				if self.debug != "off":
+					print "[MC_PictureViewer] tmpview is cover..."
+				self["filelist"].hide()
+				currentview = tmpview	
+				index = 0
+				self.filename = self.filelist.getCurrentDirectory()
+				self.firstFrame = False
+				self.GetTrailerList(self.firstFrame,self.filename,sort)	
+			else:
+				if self.debug != "off":
+					print "[MC_PictureViewer] tmpview is not cover..."
+				currentview = tmpview	
+				self.filelist.refresh(fontsize, itemheight, art, sort)
+
+	def sort(self):
+		Console().ePopen(('stfbcontrol a 255'))
+		list = []
+		list.append((_("sorted by default"), "default"))
+		list.append((_("backward sorting by date"), "date"))
+		list.append((_("sorted by date in ascending order"), "datereverse"))
+		list.append((_("sorted by alphabet in ascending order"), "alpha"))
+		list.append((_("backward sorting by alphabet"), "alphareverse"))
+		list.append((_("backward sorting by size"), "size"))
+		list.append((_("sorted by size in ascending order"), "sizereverse"))
+		self.session.openWithCallback(self.sortingConfirmed, MC_ChoiceBox, title=_("How do you want to sort your filelist temporary?"), list = list)
+
+	def sortingConfirmed(self, answer):
+		global index
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		answer = answer and answer[1]
+		if answer == "date":
+			tmpsort = "date"
+		elif answer == "datereverse":
+			tmpsort = "datereverse"
+		elif answer == "alpha":
+			tmpsort = "alpha"
+		elif answer == "alphareverse":
+			tmpsort = "alphareverse"
+		elif answer == "size":
+			tmpsort = "size"
+		elif answer == "sizereverse":
+			tmpsort = "sizereverse"
+		else:
+			tmpsort = "default"
+
+		global currentview	
+		if self.debug != "off":
+			print "[MC_PictureViewer] current view", currentview
+		currentsort = sort
+		if currentsort == tmpsort:
+			if self.debug != "off":
+				print "[MC_PictureViewer] skipping change sort from %s to %s" % (currentsort,tmpsort)
+		else:
+			if self.debug != "off":
+				print "[MC_PictureViewer] changing sort from %s to %s" % (currentsort,tmpsort)
+			if currentview == "cover":
+				index = 0
+				self.filename = self.filelist.getCurrentDirectory()
+				if self.debug != "off":
+					print "[MC_PictureViewer] ",self.filename
+				self.firstFrame = False
+				self.GetTrailerList(self.firstFrame,self.filename,tmpsort)
+			else:
+				self.filelist.refresh(fontsize, itemheight, art, tmpsort)
+
+### mp3 support start
+
+	def checkSkipShowHideLock(self):
+		self.updatedSeekState()
+
+	def updatedSeekState(self):
+		if self.seekstate == self.SEEK_STATE_PAUSE:
+			self.playlist.pauseFile()
+		elif self.seekstate == self.SEEK_STATE_PLAY:
+			self.playlist.playFile()
+		elif self.isStateForward(self.seekstate):
+			self.playlist.forwardFile()
+		elif self.isStateBackward(self.seekstate):
+			self.playlist.rewindFile()
+
+	def doEOF(self):
+		print "[MC_PicturePlayer] EOF Event ..."
+		print "[MC_PicturePlayer] replay last File ..."
+		self.session.nav.stopService()
+		if config.plugins.mc_pp.mp3.value != "none":
+			if pathExists(config.plugins.mc_pp.mp3.value):
+				self.session.nav.playService(eServiceReference(4097,0,config.plugins.mc_pp.mp3.value))
+				
+### mp3 support end
+
+	def startSlideshowPicture(self):
+		global index
+		if self.filelist.canDescent(index):
+			self.filelist.descent(index)
+		else:
+			### mp3 support start
+			if config.plugins.mc_pp.mp3.value != "none":
+				if pathExists(config.plugins.mc_pp.mp3.value):
+					self.session.nav.playService(eServiceReference(4097,0,config.plugins.mc_pp.mp3.value))
+			### mp3 support end
+					
+			global currentview
+			if currentview == "cover":
+				self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), index , self.filelist.getCurrentDirectory(), True)
+			else:
+				self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex() , self.filelist.getCurrentDirectory(), True)
+
+	def startSingelPicture(self):
+		global index
+		if self.filelist.canDescent(index):
+			self.filelist.descent(index)
+		else:
+			global currentview
+			if currentview == "cover":
+				self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), index , self.filelist.getCurrentDirectory(), False)
+			else:
+				self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex() , self.filelist.getCurrentDirectory(), False)
+
+	def returnVal(self, val=0):
+		global currentview
+		if self.debug != "off":
+			print "[MC_PicturePlayer] returnVal"
+		if currentview == "cover":
+			if val > 0:
+				for x in self.filelist.getFileList():
+					if x[7] == True:
+						val += 1
+			### mp3 support start
+			else:
+				self.session.nav.stopService()
+			### mp3 support end
+
+		else:
+			if val > 0:
+				for x in self.filelist.getFileList():
+					if x[0][1] == True:
+						val += 1
+				self.filelist.moveToIndex(val)		
+			### mp3 support start
+			else:
+				self.session.nav.stopService()
+			### mp3 support end
+
+	def KeySettings(self):
+		self.session.open(MC_PicSetup, self.filelist)
+		self.close()
+
+class MC_PicView(Screen, InfoBarAspectSelection, InfoBarResolutionSelection):
+	def __init__(self, session, filelist, pindex, path, startslide):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		self.textcolor = config.plugins.mc_pp.textcolor.value
+		self.bgcolor = config.plugins.mc_pp.bgcolor.value
+		space = config.plugins.mc_pp.framesize.value
+		size_w = getDesktop(0).size().width()
+		size_h = getDesktop(0).size().height()
+		self.skindir = config.plugins.mc_globalsettings.currentskin.path.value.split('/')[0]
+		self.skin = "<screen position=\"0,0\" size=\"" + str(size_w) + "," + str(size_h) + "\" flags=\"wfNoBorder\" > \
+			<eLabel position=\"0,0\" zPosition=\"0\" size=\""+ str(size_w) + "," + str(size_h) + "\" backgroundColor=\""+ self.bgcolor +"\" /><widget name=\"pic\" position=\"" + str(space) + "," + str(space) + "\" size=\"" + str(size_w-(space*2)) + "," + str(size_h-(space*2)) + "\" zPosition=\"1\" alphatest=\"on\" /> \
+			<widget name=\"point\" position=\""+ str(space+5) + "," + str(space+2) + "\" size=\"20,20\" zPosition=\"2\" pixmap=\"/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/record.png\" alphatest=\"on\" /> \
+			<widget name=\"play_icon\" position=\""+ str(space+25) + "," + str(space+2) + "\" size=\"20,20\" zPosition=\"2\" pixmap=\"/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/ico_mp_play.png\"  alphatest=\"on\" /> \
+			<widget name=\"file\" position=\""+ str(space+45) + "," + str(space) + "\" size=\""+ str(size_w-(space*2)-50) + ",25\" font=\"Regular;20\" halign=\"left\" foregroundColor=\"" + self.textcolor + "\" zPosition=\"2\" noWrap=\"1\" transparent=\"1\" /></screen>"
+		Screen.__init__(self, session)
+		InfoBarAspectSelection.__init__(self)
+		self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "DirectionActions", "MovieSelectionActions"],
+		{
+			"cancel": self.Exit,
+			"yellow": self.PlayPause,
+			"blue": self.sleepTimer,
+			"left": self.prevPic,
+			"right": self.nextPic,
+			"showEventInfo": self.StartExif,
+		}, -1)
+		self["point"] = Pixmap()
+		self["pic"] = Pixmap()
+		self["play_icon"] = Pixmap()
+		self["file"] = Label(_("please wait, loading picture..."))
+		self.old_index = 0
+		self.picfilelist = []
+		self.lastindex = pindex
+		self.currPic = []
+		self.shownow = True
+		self.dirlistcount = 0
+
+		global currentview
+		if currentview == "cover":
+			for x in filelist:
+				self.picfilelist.append(x[T_FULL])
+		else:
+			for x in filelist:
+				if x[0][1] == False:
+					self.picfilelist.append(path + x[0][0])
+				else:
+					self.dirlistcount += 1
+							
+		self.maxentry = len(self.picfilelist)-1
+		self.pindex = pindex - self.dirlistcount
+		if self.pindex < 0:
+			self.pindex = 0
+		self.picload = ePicLoad()
+		self.picload.PictureData.get().append(self.finish_decode)
+		self.slideTimer = eTimer()
+		self.slideTimer.callback.append(self.slidePic)
+		if self.maxentry >= 0:
+			self.onLayoutFinish.append(self.setPicloadConf)
+		if startslide == True:
+			self.PlayPause();
+
+	def setPicloadConf(self):
+		sc = getScale()
+		self.picload.setPara([self["pic"].instance.size().width(), self["pic"].instance.size().height(), sc[0], sc[1], 0, int(config.plugins.mc_pp.resize.value), self.bgcolor])
+		self["play_icon"].hide()
+		if config.plugins.mc_pp.infoline.value == False:
+			self["file"].hide()
+		self.start_decode()
+
+	def ShowPicture(self):
+		if self.shownow and len(self.currPic):
+			self.shownow = False
+			self["file"].setText(self.currPic[0])
+			self.lastindex = self.currPic[1]
+			self["pic"].instance.setPixmap(self.currPic[2].__deref__())
+			self.currPic = []
+			self.next()
+			self.start_decode()
+
+	def finish_decode(self, picInfo=""):
+		self["point"].hide()
+		ptr = self.picload.getData()
+		if ptr != None:
+			text = ""
+			try:
+				text = picInfo.split('\n',1)
+				text = "(" + str(self.pindex+1) + "/" + str(self.maxentry+1) + ") " + text[0].split('/')[-1]
+			except:
+				pass
+			self.currPic = []
+			self.currPic.append(text)
+			self.currPic.append(self.pindex)
+			self.currPic.append(ptr)
+			self.ShowPicture()
+
+	def start_decode(self):
+		self.picload.startDecode(self.picfilelist[self.pindex])
+		self["point"].show()
+
+	def next(self):
+		self.pindex += 1
+		if self.pindex > self.maxentry:
+			self.pindex = 0
+
+	def prev(self):
+		self.pindex -= 1
+		if self.pindex < 0:
+			self.pindex = self.maxentry
+
+	def slidePic(self):
+		if self.debug != "off":
+			print "[MC_PictureViewer] slide to next Picture index=" + str(self.lastindex)
+		if config.plugins.mc_pp.loop.value==False and self.lastindex == self.maxentry:
+			self.PlayPause()
+		self.shownow = True
+		self.ShowPicture()
+
+	def PlayPause(self):
+		if self.slideTimer.isActive():
+			self.slideTimer.stop()
+			self["play_icon"].hide()
+		else:
+			self.slideTimer.start(config.plugins.mc_pp.slidetime.value*1000)
+			self["play_icon"].show()
+			self.nextPic()
+
+	def prevPic(self):
+		self.currPic = []
+		self.pindex = self.lastindex
+		self.prev()
+		self.start_decode()
+		self.shownow = True
+
+	def nextPic(self):
+		self.shownow = True
+		self.ShowPicture()
+
+	def StartExif(self):
+		if self.maxentry < 0:
+			return
+		self.session.open(Pic_Exif, self.picload.getInfo(self.picfilelist[self.lastindex]))
+
+	def Exit(self):
+		del self.picload
+
+		### mp3 support start
+		self.session.nav.stopService()
+		### mp3 support end
+
+		self.close(self.lastindex + self.dirlistcount)
+
+	def sleepTimer(self):
+		from Screens.SleepTimerEdit import SleepTimerEdit
+		self.session.open(SleepTimerEdit)
+
+class Pic_Exif(Screen):
+	def __init__(self, session, exiflist):
+		self.skin = """<screen position="center,center" size="560,440" title="Info" >
+				<widget source="menu" render="Listbox" position="2,2" size="556,436" scrollbarMode="showOnDemand" selectionDisabled="1" >
+				<convert type="TemplatedMultiContent">
+					{"template": [  MultiContentEntryText(pos = (5, 5), size = (250, 30), flags = RT_HALIGN_LEFT, text = 0), MultiContentEntryText(pos = (260, 5), size = (290, 30), flags = RT_HALIGN_LEFT, text = 1)], "fonts": [gFont("Regular", 20)], "itemHeight": 30 }
+				</convert>
+				</widget>
+			</screen>"""
+		Screen.__init__(self, session)
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions"],
+		{
+			"cancel": self.close,
+		}, -1)
+		exifdesc = [_("filename")+':', "EXIF-Version:", "Make:", "Camera:", "Date/Time:", "Width / Height:", "Flash used:", "Orientation:", "User Comments:", "Metering Mode:", "Exposure Program:", "Light Source:", "CompressedBitsPerPixel:", "ISO Speed Rating:", "X-Resolution:", "Y-Resolution:", "Resolution Unit:", "Brightness:", "Exposure Time:", "Exposure Bias:", "Distance:", "CCD-Width:", "ApertureFNumber:"]
+		list = []
+		for x in range(len(exiflist)):
+			if x>0:
+				list.append((exifdesc[x], exiflist[x]))
+			else:
+				name = exiflist[x].split('/')[-1]
+				list.append((exifdesc[x], name))
+		self["menu"] = List(list)
+
+class MC_PicSetup(Screen):
+	skin = """<screen position="center,center" size="700,430" title="MC-PictureViewer Settings" backgroundColor="#000000" >
+		<widget name="configlist" position="10,10" size="680,360" scrollbarMode="showOnDemand" enableWrapAround="1" />
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<eLabel backgroundColor="red" position="78,420" size="140,3" zPosition="2"/>
+		<widget name="key_red" position="78,388" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+		<eLabel backgroundColor="green" position="282,420" size="140,3" zPosition="2"/>
+		<eLabel backgroundColor="blue" position="482,420" size="140,3" zPosition="2"/>
+		<widget name="key_green" position="282,388" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+		<widget name="key_blue" position="482,388" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+	</screen>"""
+	
+	def __init__(self, session, filelist):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		self.skin = MC_PicSetup.skin
+		self.filelist = filelist
+		Screen.__init__(self, session)
+		self["key_blue"] = Button(_("Network"))
+		self["key_red"] = Button(_("Back"))
+		self["key_green"] = Button(_("Mp3"))
+		self["show_title"] = StaticText(_("MediaCenter Pictureviewer Settings"))
+		self["actions"] = NumberActionMap(["SetupActions","OkCancelActions"],
+		{
+			"ok": self.keyOK,
+			"cancel": self.keyOK,
+			"left": self.keyLeft,
+			"right": self.keyRight,
+			"0": self.keyNumber,
+			"1": self.keyNumber,
+			"2": self.keyNumber,
+			"3": self.keyNumber,
+			"4": self.keyNumber,
+			"5": self.keyNumber,
+			"6": self.keyNumber,
+			"7": self.keyNumber,
+			"8": self.keyNumber,
+			"9": self.keyNumber
+		}, -1)
+		self["ColorActions"] = HelpableActionMap(self, "ColorActions",
+			{
+				"blue": self.netWork,
+				"green": self.playMp3,
+			})
+		self.list = []
+		self["configlist"] = ConfigList(self.list)
+
+		shortmp3 = config.plugins.mc_pp.mp3
+#		shortmp3 = str(shortmp3).split["/"][:-1]
+
+		self.list.append(getConfigListEntry(_("Standard filelist sorting..."), config.plugins.mc_pp_sort.enabled))
+		self.list.append(getConfigListEntry(_("Standard filelist viewing"), config.plugins.mc_pp_view.enabled))
+		self.list.append(getConfigListEntry(_("Slideshow Interval (sec.)"), config.plugins.mc_pp.slidetime))
+		self.list.append(getConfigListEntry(_("Scaling Mode"), config.plugins.mc_pp.resize))
+		self.list.append(getConfigListEntry(_("show Infoline"), config.plugins.mc_pp.infoline))
+		self.list.append(getConfigListEntry(_("Frame size in full view"), config.plugins.mc_pp.framesize))
+		self.list.append(getConfigListEntry(_("slide picture in loop"), config.plugins.mc_pp.loop))
+		self.list.append(getConfigListEntry(_("backgroundcolor"), config.plugins.mc_pp.bgcolor))
+		self.list.append(getConfigListEntry(_("textcolor"), config.plugins.mc_pp.textcolor))
+		self.list.append(getConfigListEntry(_("mp3"), shortmp3))
+		
+	def keyOK(self):
+		config.plugins.mc_pp_sort.save()
+		config.plugins.mc_pp_view.save()
+		config.plugins.mc_pp.save()
+
+		global art
+		global itemheight
+		global fontsize
+		global tmpsort
+		global sort
+
+		if config.plugins.mc_pp_view.enabled.getValue() == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+		elif config.plugins.mc_pp_view.enabled.getValue() == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+		elif config.plugins.mc_pp_view.enabled.getValue() == "cover":
+			art = 11
+			itemheight = 23
+			fontsize = 18
+		else: # default
+			art = 1
+			itemheight = 23
+			fontsize = 18
+
+		if self.debug != "off":
+			print "[MC_PictureViewer] restart"
+		self.session.open(MC_PictureViewer)
+		self.close()
+
+	def keyLeft(self):
+		self["configlist"].handleKey(KEY_LEFT)
+	def keyRight(self):
+		self["configlist"].handleKey(KEY_RIGHT)
+	def keyNumber(self, number):
+		self["configlist"].handleKey(KEY_0 + number)
+	def netWork(self):
+		self.session.open(NetworkAdapterSelection)
+	def playMp3(self):
+		self.session.open(SelectMp3)
+	
+class SelectMp3(Screen):
+	skin = """<screen position="center,center" size="700,430" title="MC-PictureViewer Settings" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="280,28" text=" MP3 - RADIO" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1024,335" zPosition="0"/>
+			<widget name="filelist" transparent="1" position="30,120" zPosition="2" size="665,280" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<eLabel backgroundColor="#44444a" position="36,435" size="298,95" zPosition="0"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="45,95" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+	</screen>"""
+	
+	def __init__(self, session):
+		Screen.__init__(self, session)
+
+		self["actions"] = HelpableActionMap(self, "MC_AudioPlayerActions",
+			{
+				"ok": (self.KeyOk, "Play selected file"),
+				"left": (self.leftUp, "List Top"),
+				"right": (self.rightDown, "List Bottom"),
+				"up": (self.up, "List up"),
+				"down": (self.down, "List down"),
+			}, -2)
+		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
+			{
+				"cancel": (self.Exit, "Exit Audio Player"),
+			}, -2)
+
+		currDir = config.plugins.mc_ap.lastDir.value
+		if not pathExists(currDir):
+			currDir = "/"
+		
+		self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(m3u|mp2|mp3|wav|wave|wma|m4a|ogg|ra|flac)", itemheight = 23, fontsize = 18, art = 1, sort = sort)
+		self["filelist"] = self.filelist
+		self["currentfolder"] = Label()
+		self["currentfolder"].setText(str(currDir))
+
+	def up(self):
+		self["filelist"].up()
+
+	def down(self):
+		self["filelist"].down()
+			
+	def leftUp(self):
+		self["filelist"].pageUp()
+						
+	def rightDown(self):
+		self["filelist"].pageDown()
+
+	def KeyOk(self):
+		self.filename = self.filelist.getFilename(index)
+		print "self.filename", self.filename
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+		if self.filelist.getFilename(index) is not None:
+			if self.filelist.canDescent(index):
+				self.filelist.descent(index)
+			else:
+				config.plugins.mc_pp.mp3.value = self.filename
+				config.plugins.mc_pp.save()
+				self.close()
+		else:
+			if self.filelist.canDescent(index):
+				self.filelist.descent(index)
+			else:
+				config.plugins.mc_pp.mp3.value = self.filename
+				config.plugins.mc_pp.save()
+				self.close()
+		
+	def Exit(self):
+		self.close()
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_RadioPlayer.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_RadioPlayer.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_RadioPlayer.py	(revision 9331)
@@ -0,0 +1,391 @@
+from enigma import iPlayableService, eTimer, eWidget, eRect, eServiceReference, iServiceInformation, eAVSwitch, eConsoleAppContainer, evfd
+from ServiceReference import ServiceReference
+from Screens.Screen import Screen
+from Screens.ServiceInfo import ServiceInfoList, ServiceInfoListEntry
+from Screens.HelpMenu import HelpableScreen
+from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
+from Components.Pixmap import Pixmap, MovingPixmap
+from Components.Label import Label
+from Components.Sources.StaticText import StaticText
+from Components.Button import Button
+from Components.ServiceEventTracker import ServiceEventTracker
+from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.config import *
+from Tools.Directories import resolveFilename, fileExists, pathExists, createDir, SCOPE_MEDIA, SCOPE_PLAYLIST, SCOPE_CONFIG
+from Components.FileList import FileList
+from Components.AVSwitch import AVSwitch
+from Screens.InfoBar import MoviePlayer
+from Plugins.Plugin import PluginDescriptor
+from Components.Playlist import PlaylistIOInternal, PlaylistIOM3U, PlaylistIOPLS
+from GlobalFunctions import MC_MessageBox, MC_AudioInfoView, InfoBarAspectSelection
+from Screens.InfoBarGenerics import InfoBarSubtitleSupport
+from Components.MediaPlayer import PlayList
+import os
+from os import path as os_path
+from __init__ import _
+import time
+config.plugins.mc_rp = ConfigSubsection()
+config.plugins.mc_rp.showMvi = ConfigYesNo(default=True)
+config.plugins.mc_rp.mvi_delay = ConfigInteger(default=30, limits=(5, 300))
+config.plugins.mc_all = ConfigSubsection()
+config.plugins.mc_all.showDimmer = ConfigYesNo(default=True)
+config.plugins.mc_all.dimmer_delay = ConfigInteger(default=60, limits=(10, 90))
+
+class MyPlayList(PlayList):
+	def __init__(self):
+		PlayList.__init__(self)
+class MC_RadioPlayer(Screen, HelpableScreen):
+	def __init__(self, session):
+		Screen.__init__(self, session)
+		HelpableScreen.__init__(self)
+		self.isVisible = True
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+		self.session.nav.stopService()
+		if os.path.exists("/media/radio") is False:
+			os.makedirs("/media/radio")
+		self.playlistparsers = {}
+		self.addPlaylistParser(PlaylistIOM3U, "m3u")
+		self.playlist = MyPlayList()
+		self["playlist"] = self.playlist
+		self["Lplaylist"] = Label(_("playlist")+':')
+		self.MviTimer = eTimer()
+		self.MviTimer.callback.append(self.showBackgroundMVI)
+		self.mviList = []
+		self.mviIndex = 0
+		self.mviLastIndex = -1
+		self.getMVI()
+		self.FileInfoTimer = eTimer()
+		self.FileInfoTimer.callback.append(self.updateFileInfo)
+		self["fileinfo"] = Label()
+		self["key_blue"] = Button(_("Settings"))
+		self["currentfolder"] = Label("")
+		self["currentfavname"] = Label("")
+		self.curfavfolder = -1
+		self["curplayingtitle"] = Label()
+		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions",
+			{
+				"ok": (self.KeyOk, "Play selected file"),
+				"left": (self.leftUp, "List Top"),
+				"right": (self.rightDown, "List Bottom"),
+				"up": (self.up, "List up"),
+				"down": (self.down, "List down"),
+				"video": (self.visibility, "Show / Hide Player"),
+				"blue": (self.KeySettings, "Settings"),
+			}, -2)
+		self["InfobarShowHideActions"] = HelpableActionMap(self, "InfobarShowHideActions",
+			{
+				"toggleShow": (self.showFileInfo, "Show File Info"),
+			}, -2)
+		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
+			{
+				"cancel": (self.Exit, "Exit Video Player"),
+			}, -2)
+		self["MediaPlayerActions"] = HelpableActionMap(self, "MediaPlayerActions",
+			{
+				"stop": (self.StopPlayback, "Stop Playback"),
+				"prevBouquet": (self.switchToPlayList, _("switch to playlist")),
+				"nextBouquet": (self.switchToFileList, _("switch to filelist")),
+			}, -2)
+
+		currDir = "/media/radio/"
+		self["currentfolder"].setText(str(currDir))
+		self.filelist = FileList(currDir, showDirectories = False, useServiceRef = True, showFiles = True, matchingPattern = "(?i)^.*\.(m3u)", additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
+		self["filelist"] = self.filelist
+		self["filelist"].changeDir(currDir)
+		self["thumbnail"] = Pixmap()
+		self.filelist.refresh()
+		self.currList = "filelist"
+		evfd.getInstance().vfd_write_string("INTERNETRADIO")
+		self.DimmerTimer = eTimer()
+		self.DimmerTimer.callback.append(self.showDimmer)
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+			{
+				iPlayableService.evUser+11: self.__evDecodeError,
+				iPlayableService.evUser+12: self.__evPluginError
+			})
+		self.playlistIOInternal = PlaylistIOInternal()
+		list = self.playlistIOInternal.open(resolveFilename(SCOPE_PLAYLIST, "RadioPlayer.e2pls"))
+		if list:
+			for x in list:
+				self.playlist.addFile(x.ref)
+			self.playlist.updateList()
+		#self.filelist.selectionEnabled(1)
+		#self.playlist.selectionEnabled(0)
+	def addPlaylistParser(self, parser, extension):
+		self.playlistparsers[extension] = parser
+	def up(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		if self.currList == "filelist":
+			self["filelist"].up()
+		else:
+			self["playlist"].up()
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+	def down(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		if self.currList == "filelist":
+			self["filelist"].down()
+		else:
+			self["playlist"].down()
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+	def leftUp(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		self["filelist"].pageUp()
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+	def rightDown(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		self["filelist"].pageDown()
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+	def showDimmer(self):
+		if config.plugins.mc_all.showDimmer.getValue():
+			self.container = eConsoleAppContainer()
+			self.container.execute('stfbcontrol a 80')
+	def showFileInfo(self):
+		if self["filelist"].canDescent():
+			return
+		else:
+			self.updateFileInfo()
+			self.session.open(MC_AudioInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef())
+	def KeyOk(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		self.MviTimer.stop()
+		if self.isVisible == False:
+			self.visibility()
+			return
+		self.DimmerTimer.stop()
+		global lastpath
+		filename = self["filelist"].getFilename()
+		if self.currList == "filelist":
+			self.playlist.stopFile()
+			self.session.nav.stopService()
+			if filename is not None:
+				if filename.upper().endswith(".M3U"):
+					print "[MC_RadioPlayer] m3u file gefunden", filename
+					if self.filelist.getServiceRef().type == 4098:
+						ServiceRef = self.filelist.getServiceRef()
+						extension = ServiceRef.getPath()[ServiceRef.getPath().rfind('.') + 1:]
+						if self.playlistparsers.has_key(extension):
+							playlist = self.playlistparsers[extension]()
+							list = playlist.open(ServiceRef.getPath())
+							for x in list:
+								self.playlist.addFile(x.ref)
+						self.playlist.updateList()
+					else:
+						self.playlist.addFile(self.filelist.getServiceRef())
+						self.playlist.updateList()
+					if self.currList == "filelist": self.playlist.selectionEnabled(0)
+					currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
+					print "[MC_RadioPlayer] currref !!!!!", currref
+					self.session.nav.playService(currref)
+					self.FileInfoTimer.start(2000, True)
+					self.DimmerTimer.stop()
+					self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+					evfd.getInstance().vfd_write_string("PLAY")
+					if config.plugins.mc_rp.showMvi.getValue():
+						self.showBackgroundMVI()
+		else:
+			selection = self["playlist"].getSelection()
+			self.changeEntry(self.playlist.getSelectionIndex())
+		if self.filelist.canDescent():
+			self.filelist.descent()
+		if filename is not None:
+			lastpath = filename[0:filename.rfind("/")]
+	def switchToFileList(self):
+		self.currList = "filelist"
+		self.filelist.selectionEnabled(1)
+		self.playlist.selectionEnabled(0)
+		#self.updateCurrentInfo()
+	def switchToPlayList(self):
+		if len(self.playlist) != 0:
+			self.currList = "playlist"
+			self.filelist.selectionEnabled(0)
+			self.playlist.selectionEnabled(1)
+			#self.updateCurrentInfo()
+	def StartDimmer(self):
+		self.session.openWithCallback(self.returnVal, DimmerView, self.filelist.getFileList(), self.filelist.getFilename(), self.filelist.getCurrentDirectory())
+	def returnVal(self, val=0):
+		if val > 0:
+			for x in self.filelist.getFileList():
+				if x[0][1] == True:
+					val += 1
+			self.filelist.moveToIndex(val)
+	def StartExif(self):
+		if not self.filelist.canDescent():
+			self.session.open(ExifView, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
+	def visibility(self, force=1):
+		if self.isVisible == True:
+			self.isVisible = False
+			self.hide()
+		else:
+			self.isVisible = True
+			self.show()
+	def StopPlayback(self):
+		if self.isVisible == False:
+			self.visibility()
+			return
+		self.DimmerTimer.stop()
+		self.MviTimer.stop()
+		os.system("killall -9 showiframe; stfbcontrol a 255")
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+		self.playlist.stopFile()
+		self.session.nav.stopService()
+		evfd.getInstance().vfd_write_string("STOP")
+	def JumpToFolder(self, jumpto = None):
+		if jumpto is None:
+			return
+		else:
+			self["filelist"].changeDir(jumpto)
+			self["currentfolder"].setText(("%s") % (jumpto))
+	def KeySettings(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		evfd.getInstance().vfd_write_string("SETTINGS")
+		self.session.open(RadioPlayerSettings)
+	def __evDecodeError(self):
+		currPlay = self.session.nav.getCurrentService()
+		sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType)
+		print "[MC_RadioPlayer] [__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
+		self.session.open(MC_MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MC_MessageBox.TYPE_INFO,timeout = 10 )
+	def __evPluginError(self):
+		currPlay = self.session.nav.getCurrentService()
+		message = currPlay.info().getInfoString(iServiceInformation.sUser+12)
+		print "[MC_RadioPlayer] [__evPluginError]" , message
+		self.session.open(MC_MessageBox, ("GStreamer Error: missing %s") % message, type = MC_MessageBox.TYPE_INFO,timeout = 20 )
+	def Exit(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		if self.isVisible == False:
+			self.visibility()
+			return
+		config.plugins.mc_rp.save()
+		config.plugins.mc_all.save()
+		self.DimmerTimer.stop()
+		self.MviTimer.stop()
+		self.save_playlist2('RadioPlayer')
+		self.playlist.stopFile()
+		self.session.nav.stopService()
+		os.system("killall -9 showiframe; stfbcontrol a 255")
+		evfd.getInstance().vfd_write_string("MEDIACENTER")
+		self.close()
+	def getMVI(self):
+		path = "/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/saver/"
+		for root, dirs, files in os.walk(path):
+			for name in files:
+				if name.endswith(".mvi"):
+					self.mviList.append(name)
+		print "[MC_RadioPlayer]", self.mviList
+	def showBackgroundMVI(self):
+		if len(self.mviList) > 0:
+			order = "/usr/bin/showiframe /usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/saver/" + self.mviList[self.mviIndex] + " &"
+			if self.mviIndex < len(self.mviList) -1:
+				self.mviIndex += 1
+			else:
+				self.mviIndex = 0
+			print "[MC_RadioPlayer] Last MVI Index: " + str(self.mviLastIndex)
+			if self.mviLastIndex != self.mviIndex or self.mviLastIndex == -1:
+				print "[MC_RadioPlayer]", order
+				self.DimmerTimer.stop()
+				os.system("killall -9 showiframe; stfbcontrol a 0; " + order)
+				self.mviLastIndex = self.mviIndex
+				time = config.plugins.mc_rp.mvi_delay.getValue() * 1000
+				self.MviTimer.start(time, True)
+		else:
+			print "[MC_RadioPlayer] No Background MVI Files found ..."
+	def updateFileInfo(self):
+		print "[MC_RadioPlayer] updateFileInfo start"
+		if self["filelist"].canDescent():
+			return
+		currPlay = self.session.nav.getCurrentService()
+		if currPlay is not None:
+			sTagTitle = currPlay.info().getInfoString(iServiceInformation.sTagTitle)
+			sTagArtist = currPlay.info().getInfoString(iServiceInformation.sTagArtist)
+			sTagAlbum = currPlay.info().getInfoString(iServiceInformation.sTagAlbum)
+			sTagGenre = currPlay.info().getInfoString(iServiceInformation.sTagGenre)
+			sTagYear = currPlay.info().getInfoString(iServiceInformation.sTimeCreate)
+			sTagComment = currPlay.info().getInfoString(iServiceInformation.sTagComment)
+			if sTagTitle == "":
+				sTagTitle = currPlay.info().getName().split('/')[-1]
+			self["fileinfo"].setText("Title1: " + sTagTitle + "\nArtist: " +  sTagArtist + "\nAlbum: " + sTagAlbum + "\nGenre: " + sTagGenre + "\nComment: " + sTagComment)
+			self["curplayingtitle"].setText(sTagTitle)
+	def save_playlist2(self, name):
+		if name is not None and self.playlist.list:
+			print "[MC_RadioPlayer] save playlist"
+			name = name.strip()
+			name += ".e2pls"
+			self.playlistIOInternal.clear()
+			for x in self.playlist.list:
+				self.playlistIOInternal.addService(ServiceReference(x[0]))
+			self.playlistIOInternal.save(resolveFilename(SCOPE_PLAYLIST) + name)
+	def changeEntry(self, index):
+		self.playlist.setCurrentPlaying(index)
+		self.playEntry()
+	def playEntry(self):
+		self.playlist.stopFile()
+		self.session.nav.stopService()
+		if len(self.playlist.getServiceRefList()):
+			audio_extensions = (".mp2", ".mp3", ".wav", ".ogg", "flac", ".m4a")
+			currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
+			if self.session.nav.getCurrentlyPlayingServiceReference() is None or currref != self.session.nav.getCurrentlyPlayingServiceReference():
+				self.session.nav.playService(currref)
+
+class RadioPlayerSettings(Screen):
+	skin = """<screen position="center,center" size="400,160" title="MC-RadioPlayer Settings" backgroundColor="#000000" >
+		<widget name="configlist" position="10,10" size="380,100" />
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<eLabel backgroundColor="red" position="28,150" size="140,3" zPosition="2"/>
+		<widget name="key_red" position="28,118" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+	</screen>"""
+
+	def __init__(self, session):
+		self.skin = RadioPlayerSettings.skin
+		Screen.__init__(self, session)
+		self["key_red"] = Button(_("Back"))
+		self["show_title"] = StaticText(_("MediaCenter Radioplayer Settings"))
+		self["actions"] = NumberActionMap(["SetupActions"],
+		{
+			"ok": self.keyOK,
+			"cancel": self.keyCancel,
+			"left": self.keyLeft,
+			"right": self.keyRight,
+			"0": self.keyNumber,
+			"1": self.keyNumber,
+			"2": self.keyNumber,
+			"3": self.keyNumber,
+			"4": self.keyNumber,
+			"5": self.keyNumber,
+			"6": self.keyNumber,
+			"7": self.keyNumber,
+			"8": self.keyNumber,
+			"9": self.keyNumber
+		}, -1)
+		self.list = []
+		self["configlist"] = ConfigList(self.list)
+		self.list.append(getConfigListEntry(_("Screensaver Enable"), config.plugins.mc_rp.showMvi))
+		self.list.append(getConfigListEntry(_("Screensaver Interval"), config.plugins.mc_rp.mvi_delay))
+		self.list.append(getConfigListEntry(_("Autodimmer Enable"), config.plugins.mc_all.showDimmer))
+		self.list.append(getConfigListEntry(_("Dimmer Delay"), config.plugins.mc_all.dimmer_delay))
+	def keyLeft(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		self["configlist"].handleKey(KEY_LEFT)
+	def keyRight(self):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		self["configlist"].handleKey(KEY_RIGHT)
+	def keyNumber(self, number):
+		self.container = eConsoleAppContainer()
+		self.container.execute('stfbcontrol a 255')
+		self["configlist"].handleKey(KEY_0 + number)
+	def keyOK(self):
+		config.plugins.mc_rp.save()
+		config.plugins.mc_all.save()
+		evfd.getInstance().vfd_write_string("INTERNETRADIO")
+		self.close()
+	def keyCancel(self):
+		evfd.getInstance().vfd_write_string("INTERNETRADIO")
+		self.close()
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_Settings.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_Settings.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_Settings.py	(revision 9331)
@@ -0,0 +1,433 @@
+from Screens.Screen import Screen
+from Screens.Standby import TryQuitMainloop
+from Components.ActionMap import ActionMap
+from Components.Sources.StaticText import StaticText
+from Components.Sources.List import List
+from Components.ConfigList import ConfigListScreen
+from Components.Label import Label
+from Components.MenuList import MenuList
+from Components.FileList import FileList
+from Components.Button import Button
+from Components.Pixmap import Pixmap
+from Components.ConfigList import ConfigList
+from Components.config import config, ConfigSelection, getConfigListEntry, configfile, ConfigSubsection, ConfigInteger, ConfigSelection, ConfigText, ConfigNumber, ConfigSet, ConfigLocations, KEY_LEFT, KEY_RIGHT
+from os import path as os_path, system as os_system, walk as os_walk
+from GlobalFunctions import MC_ChoiceBox, MC_MessageBox
+from Tools.Directories import fileExists, pathExists, createDir, removeDir
+
+from __init__ import _
+from Plugins.Extensions.Aafpanel.plugin import command
+
+boxversion = command('cat /etc/model')
+
+class MC_Settings(Screen):
+	def __init__(self, session):
+		Screen.__init__(self, session)
+		list = []
+		list.append((_("Global Settings"), "MCS_GlobalSettings", "menu_globalsettings", "50"))
+		list.append((_("Skin Selector"), "MCS_SkinSelector", "menu_skinselector", "50"))
+		list.append((_("About..."), "MCS_About", "menu_about", "50"))
+		self["menu"] = List(list)
+		self["title"] = StaticText("")
+		self["actions"] = ActionMap(["OkCancelActions"],
+		{
+			"cancel": self.Exit,
+			"ok": self.okbuttonClick
+		}, -1)
+	def okbuttonClick(self):
+		global ShowSwapList
+		ShowSwapList = False
+		print "[MC_Settings] okbuttonClick"
+		selection = self["menu"].getCurrent()
+		if selection is not None:
+			if selection[1] == "MCS_GlobalSettings":
+				self.session.open(MCS_GlobalSettings)
+			elif selection[1] == "MCS_SkinSelector":
+				if os_path.isfile("/etc/.BAImage") or boxversion.upper() == 'AT700' or boxversion.upper() == 'AT7000' or boxversion.upper() == 'AT7500' or boxversion.upper() == 'UFS912':
+					if os_path.exists("/var/swap/mcskins"):
+						self.session.openWithCallback(self.fullChosen2, MC_ChoiceBox, title=_("Show Skinlist in Flash or on Swapstick?"), list=[(_("Show Skinlist in Flash"), "yes"), (_("Show Skinlist on swapstick"), "no")])
+					else:
+						self.session.open(MCS_SkinSelector)
+				else:
+					self.session.openWithCallback(self.fullChosen, MC_ChoiceBox, title=_("Load Default Skin or show Skinlist on Swapstick?"), list=[(_("Load Default Skin and restart GUI"), "yes"), (_("Show Skinlist on swapstick"), "no")])
+			elif selection[1] == "MCS_ScreenAdjustment":
+				self.session.open(MCS_ScreenAdjustment)
+			elif selection[1] == "MCS_About":
+				self.session.open(MCS_AboutScreen)
+			else:
+				self.session.open(MC_MessageBox,("Error: Could not find plugin %s\ncoming soon ... :)") % (selection[1]),  MC_MessageBox.TYPE_INFO)
+	def Exit(self):
+		self.close(0)
+
+	def fullChosen(self, result):
+		if result is not None:
+			if result[1] == "no":
+				print "[MC_Settings] result: is No"
+				global ShowSwapList
+				# set variable to show swapskins
+				ShowSwapList = True
+				self.session.open(MCS_SkinSelector)
+			if result[1] == "yes":
+				print "[MC_Settings] result: is Yes"
+				config.plugins.mc_globalsettings.currentskin.path.value = ("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml")
+				config.plugins.mc_globalsettings.currentskin.path.save()
+				self.session.open(TryQuitMainloop, 3)
+
+	def fullChosen2(self, result):
+		if result is not None:
+			if result[1] == "no":
+				print "[MC_Settings] result: Show Skinlist on Swapstick"
+				# set variable to show swapskins
+				global ShowSwapList
+				ShowSwapList = True
+				self.session.open(MCS_SkinSelector)
+			if result[1] == "yes":
+				print "[MC_Settings] result: Show Skinlist in Flash"
+				self.session.open(MCS_SkinSelector)
+
+class MCS_GlobalSettings(Screen, ConfigListScreen):
+	skin = """<screen position="center,center" size="600,380" title="Media Center - Global Settings" backgroundColor="#000000" >
+		<widget name="config" position="10,10" size="580,328" />
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<eLabel backgroundColor="red" position="40,370" size="140,3" zPosition="2"/>
+		<eLabel backgroundColor="green" position="250,370" size="140,3" zPosition="2"/>
+		<widget name="key_red" position="40,338" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+		<widget name="key_green" position="240,338" zPosition="3" size="160,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+	</screen>"""
+
+	def __init__(self, session):
+		self.skin = MCS_GlobalSettings.skin
+		Screen.__init__(self, session)
+
+		# grep default values (needed when canceling screen)
+		self.backupshowinmainmenu = config.plugins.mc_globalsettings.showinmainmenu.value
+		self.backupshowinextmenu = config.plugins.mc_globalsettings.showinextmenu.value
+		self.backupshowaudioplayer = config.plugins.mc_globalsettings.showaudioplayer.value
+		self.backupshowvideoplayer = config.plugins.mc_globalsettings.showvideoplayer.value
+		self.backupshowpictureviewer = config.plugins.mc_globalsettings.showpictureviewer.value
+		self.backupshowmultimediathek = config.plugins.mc_globalsettings.showmultimediathek.value
+		self.backupshowappletrailer = config.plugins.mc_globalsettings.showappletrailer.value
+		self.backupshowmyvideo = config.plugins.mc_globalsettings.showmyvideo.value
+		self.backupshowvlcplayer = config.plugins.mc_globalsettings.showvlcplayer.value
+		self.backupshowfilebrowser = config.plugins.mc_globalsettings.showfilebrowser.value
+		self.backupshowinternetbrowser = config.plugins.mc_globalsettings.showinternetbrowser.value
+		self.backupshowradioplayer = config.plugins.mc_globalsettings.showradioplayer.value
+		self.backupshowwebradio = config.plugins.mc_globalsettings.showwebradio.value
+		self.backupshowweatherinfo = config.plugins.mc_globalsettings.showweatherinfo.value
+		self.backupstablestartdirfolder = config.plugins.mc_globalsettings.setstablestartdir.value
+
+		ConfigListScreen.__init__(self, [])
+		self.initDirectoryList()
+
+		self["show_title"] = StaticText(_("MediaCenter Global Settings"))
+		self["key_red"] = Button(_("Back"))
+		self["key_green"] = Button("")
+
+		self["setupActions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
+		{
+			"cancel": self.keyCancel,
+			"left": self.keyLeft,
+			"right": self.keyRight,
+			"upUp": self.CheckConfigList,
+			"downUp": self.CheckConfigList,
+			"ok": self.keyOK,
+			"red": self.keyCancel,
+			"green": self.keyGreen,
+		}, -2)
+
+	def initDirectoryList(self):
+		# check if a directory is used and add it to the ConfigSelection...
+		print "[MC_Settings] default path is: ", config.plugins.mc_globalsettings.setstablestartdir.value
+		if config.plugins.mc_globalsettings.setstablestartdir.value != "no":
+			if config.plugins.mc_globalsettings.setstablestartdir.value == "devicelist":
+				self.styles = [ ("devicelist",_("devicelist")), "no" ]
+			else:
+				self.styles = [ config.plugins.mc_globalsettings.setstablestartdir.value, "no" ]
+		else:
+			self.styles = [ "no" ]
+		self.Default_dirname = ConfigSelection(self.styles)
+		self.Default_dirname.value = config.plugins.mc_globalsettings.setstablestartdir.value
+
+		self.list = []
+		self.list.append(getConfigListEntry(_("show MediaCenter in main menu"), config.plugins.mc_globalsettings.showinmainmenu))
+		self.list.append(getConfigListEntry(_("show MediaCenter in extension menu"), config.plugins.mc_globalsettings.showinextmenu))
+		self.list.append(getConfigListEntry(_("set default start directory"), self.Default_dirname)) # MUST be third list entry or you have to change index in def CheckConfigList
+		self.list.append(getConfigListEntry(_('show "My Music" in MediaCenter main menu'), config.plugins.mc_globalsettings.showaudioplayer))
+		self.list.append(getConfigListEntry(_('show "My Videos" in MediaCenter main menu'), config.plugins.mc_globalsettings.showvideoplayer))
+		self.list.append(getConfigListEntry(_('show "My Pictures" in MediaCenter main menu'), config.plugins.mc_globalsettings.showpictureviewer))
+		self.list.append(getConfigListEntry(_('show "MyVideo" in MediaCenter main menu'), config.plugins.mc_globalsettings.showmyvideo))
+		self.list.append(getConfigListEntry(_('show "Apple Trailer" in MediaCenter main menu'), config.plugins.mc_globalsettings.showappletrailer))
+		#self.list.append(getConfigListEntry(_('show "Multi Mediathek" in MediaCenter main menu'), config.plugins.mc_globalsettings.showmultimediathek))
+		self.list.append(getConfigListEntry(_('show "VLC Player" in MediaCenter main menu'), config.plugins.mc_globalsettings.showvlcplayer))
+		self.list.append(getConfigListEntry(_('show "Filebrowser" in MediaCenter main menu'), config.plugins.mc_globalsettings.showfilebrowser))
+		if boxversion.upper() == 'UFS912' or boxversion.upper() == 'AT7500':
+			self.list.append(getConfigListEntry(_('show "Internet Browser" in MediaCenter main menu'), config.plugins.mc_globalsettings.showinternetbrowser))
+		self.list.append(getConfigListEntry(_('show "Radioplayer" in MediaCenter main menu'), config.plugins.mc_globalsettings.showradioplayer))
+		self.list.append(getConfigListEntry(_('show "WebradioFS" in MediaCenter main menu'), config.plugins.mc_globalsettings.showwebradio))
+		self.list.append(getConfigListEntry(_('show "Weather Info" in MediaCenter main menu'), config.plugins.mc_globalsettings.showweatherinfo))
+		self["config"].setList(self.list)
+
+	def keyGreen(self):
+		if str(self["config"].getCurrentIndex()) == '2':
+			print "[MC_Settings] activate filelist button..."
+			self.session.openWithCallback(self.initDirectoryList, MCS_DirectoryPathFilelist)
+
+	def CheckConfigList(self):
+		if str(self["config"].getCurrentIndex()) == '2':
+			print "[MC_Settings] show filelist button..."
+			self["key_green"].setText(_("open filelist"))
+		else:
+			self["key_green"].setText("")
+
+	def keyLeft(self):
+		self["config"].handleKey(KEY_LEFT)
+
+	def keyRight(self):
+		self["config"].handleKey(KEY_RIGHT)
+
+	def keyOK(self):
+		if config.plugins.mc_globalsettings.showaudioplayer.value != self.backupshowaudioplayer \
+		or config.plugins.mc_globalsettings.showvideoplayer.value != self.backupshowvideoplayer \
+		or config.plugins.mc_globalsettings.showpictureviewer.value != self.backupshowpictureviewer \
+		or config.plugins.mc_globalsettings.showappletrailer.value != self.backupshowappletrailer \
+		or config.plugins.mc_globalsettings.showmyvideo.value != self.backupshowmyvideo \
+		or config.plugins.mc_globalsettings.showmultimediathek.value != self.backupshowmultimediathek \
+		or config.plugins.mc_globalsettings.showvlcplayer.value != self.backupshowvlcplayer \
+		or config.plugins.mc_globalsettings.showfilebrowser.value != self.backupshowfilebrowser \
+		or config.plugins.mc_globalsettings.showinternetbrowser.value != self.backupshowinternetbrowser \
+		or config.plugins.mc_globalsettings.showradioplayer.value != self.backupshowradioplayer \
+		or config.plugins.mc_globalsettings.showwebradio.value != self.backupshowwebradio \
+		or config.plugins.mc_globalsettings.showweatherinfo.value != self.backupshowweatherinfo:
+			self.session.open(MC_MessageBox, _("The changes of the main menu will take effect after restarting the Media Center plugin."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+		config.plugins.mc_globalsettings.save()
+		self.close()
+
+	def keyCancel(self):
+		# reset entries...
+		config.plugins.mc_globalsettings.showinmainmenu.value = self.backupshowinmainmenu
+		config.plugins.mc_globalsettings.showinextmenu.value = self.backupshowinextmenu
+		config.plugins.mc_globalsettings.showaudioplayer.value = self.backupshowaudioplayer
+		config.plugins.mc_globalsettings.showvideoplayer.value = self.backupshowvideoplayer
+		config.plugins.mc_globalsettings.showpictureviewer.value = self.backupshowpictureviewer
+		config.plugins.mc_globalsettings.showappletrailer.value = self.backupshowappletrailer
+		config.plugins.mc_globalsettings.showmyvideo.value = self.backupshowmyvideo
+		config.plugins.mc_globalsettings.showmultimediathek.value = self.backupshowmultimediathek
+		config.plugins.mc_globalsettings.showvlcplayer.value = self.backupshowvlcplayer
+		config.plugins.mc_globalsettings.showfilebrowser.value = self.backupshowfilebrowser
+		config.plugins.mc_globalsettings.showinternetbrowser.value = self.backupshowinternetbrowser
+		config.plugins.mc_globalsettings.showradioplayer.value = self.backupshowradioplayer
+		config.plugins.mc_globalsettings.showwebradio.value = self.backupshowwebradio
+		config.plugins.mc_globalsettings.showweatherinfo.value = self.backupshowweatherinfo
+		config.plugins.mc_globalsettings.setstablestartdir.value = self.backupstablestartdirfolder
+		self.close()
+
+class MCS_DirectoryPathFilelist(ConfigListScreen,Screen):
+	skin = """
+		<screen name="MCS_DirectoryPathFilelist" position="center,center" size="600,450" title="Media Center - Directory Path Filelist">
+			<widget name="filelist" transparent="1" position="5,5" zPosition="2" size="590,290" scrollbarMode="showOnDemand" enableWrapAround="1" />
+			<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+			<eLabel backgroundColor="#FFFFFF" position="0,300" size="600,1" zPosition="2"/>
+			<widget source="currentfolder" render="Label" backgroundColor="background" halign="center" valign="center" zPosition="5" transparent="1" position="5,300" size="590,100" font="Regular;19" />
+			<eLabel backgroundColor="#FFFFFF" position="0,400" size="600,1" zPosition="2"/>
+			<eLabel backgroundColor="red" position="60,430" size="120,3" zPosition="1"/>
+			<eLabel backgroundColor="green" position="240,430" size="120,3" zPosition="1"/>
+			<eLabel backgroundColor="blue" position="420,430" size="120,3" zPosition="1"/>
+			<widget font="Regular;16" halign="center" source="key_red" render="Label" position="60,405" size="120,25" transparent="1" valign="center" zPosition="1"/>
+			<widget font="Regular;16" halign="center" source="key_green" render="Label" position="240,405" size="120,25" transparent="1" valign="center" zPosition="1"/>
+			<widget font="Regular;16" halign="center" source="key_blue" render="Label" position="420,405" size="120,25" transparent="1" valign="center" zPosition="1"/>
+		</screen>"""
+
+	def __init__(self, session):
+		Screen.__init__(self, session)
+		self["show_title"] = StaticText(_("Choose a directory:"))
+		self["key_red"] = StaticText(_("Cancel"))
+		self["key_green"] = StaticText(_("Apply"))
+		self["key_blue"] = StaticText(_(" disable "))
+		self["currentfolder"] = StaticText("")
+
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
+		{
+			"cancel": self.Exit,
+			"ok": self.KeyOk,
+			"up": self.up,
+			"down": self.down,
+			"green": self.Green,
+			"red": self.Exit,
+			"blue": self.Blue
+		}, -2)
+
+		self.currentDir = config.plugins.mc_globalsettings.setstablestartdir.value
+		if not pathExists(self.currentDir):
+			self.currentDir = "/media/"
+		self["currentfolder"].setText(self.currentDir)
+
+		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib", "/proc", "/ram", "/root", "/sbin", "/swap", "/sys", "/usr"]
+		self.filelist = FileList( self.currentDir, showDirectories = True, showFiles = False, inhibitDirs = inhibitDirs, useServiceRef = False)
+		self["filelist"] = self.filelist
+
+	def up(self):
+		self["filelist"].up()
+
+	def down(self):
+		self["filelist"].down()
+
+	def leftUp(self):
+		self["filelist"].pageUp()
+
+	def rightDown(self):
+		self["filelist"].pageDown()
+
+	def KeyOk(self):
+		self.filelist.refresh()
+		if self.filelist.canDescent():
+			self.filelist.descent()
+		self.currentDir = self.filelist.getCurrentDirectory()
+		self["currentfolder"].setText(self.currentDir)
+
+	def Exit(self):
+		self.close()
+
+	def Green(self):
+		print "[MC_Settings] checking directory..."
+		if self.currentDir is not None:
+			if self.currentDir[0] == '/':
+				config.plugins.mc_globalsettings.setstablestartdir.value = self.currentDir
+				self.close()
+			else:
+				print "[MC_Settings]: Error: no valid directory!!!"
+				self.session.open(MC_MessageBox,_("The directory %s is not valid!\nPlease select a valid directory!")%self.currentDir, type = MC_MessageBox.TYPE_ERROR)
+		else:
+			config.plugins.mc_globalsettings.setstablestartdir.value = "devicelist"
+			self.close()
+
+	def Blue(self):
+		print "[MC_Settings] disable start directory..."
+		config.plugins.mc_globalsettings.setstablestartdir.value = "no"
+		self.close()
+
+class MCS_AboutScreen(Screen):
+	skin = """<screen position="center,center" size="480,200" title="Media Center - About..." >
+		<widget name="info" position="10,10" size="460,180" font="Regular;26"/>
+	</screen>"""
+
+	def __init__(self, session):
+		self.skin = MCS_AboutScreen.skin
+		Screen.__init__(self, session)
+		self["actions"] = ActionMap(["SetupActions","OkCancelActions"],
+		{
+			"ok": self.close,
+			"cancel": self.close
+		}, -1)
+		self["info"] = Label (_("AAF MediaCenter\n\noriginally based on MediaCenter 0.9.2 by Homey"))
+
+class MCS_SkinSelector(Screen):
+	skin = """<screen position="center,center" size="600,320" title="Choose your Skin" >
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<widget name="SkinList" position="10,10" size="275,300" scrollbarMode="showOnDemand" />
+		<widget name="Preview" position="305,45" size="280,210" alphatest="on"/>
+	</screen>"""
+
+	def __init__(self, session, args = None):
+		global ShowSwapList
+		# check variable to show swapskins
+		if ShowSwapList is True:
+			self.root = "/var/swap/mcskins/"
+		else:
+			self.root = "/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/"
+		self.skin = MCS_SkinSelector.skin
+		Screen.__init__(self, session)
+		self.skinlist = []
+		self.previewPath = ""
+		os_path.walk(self.root, self.find, "")
+		self.skinlist.sort()
+		self["SkinList"] = MenuList(self.skinlist)
+		self["Preview"] = Pixmap()
+		# check variable to show swapskins
+		if ShowSwapList is True:
+			self["show_title"] = StaticText(_("Choose your skin from stick..."))
+		else:
+			self["show_title"] = StaticText(_("Choose your skin from flash..."))
+		self["actions"] = ActionMap(["WizardActions", "InputActions", "EPGSelectActions"],
+		{
+			"ok": self.ok,
+			"back": self.close,
+			"up": self.up,
+			"down": self.down,
+			"left": self.left,
+			"right": self.right
+		}, -1)
+		self.onLayoutFinish.append(self.layoutFinished)
+	def layoutFinished(self):
+		tmp = config.plugins.mc_globalsettings.currentskin.path.value.find('/skin.xml')
+		if tmp != -1:
+			tmp = config.plugins.mc_globalsettings.currentskin.path.value[:tmp]
+			idx = 0
+			for skin in self.skinlist:
+				if skin == tmp:
+					break
+				idx += 1
+			if idx < len(self.skinlist):
+				self["SkinList"].moveToIndex(idx)
+		self.loadPreview()
+	def up(self):
+		self["SkinList"].up()
+		self.loadPreview()
+	def down(self):
+		self["SkinList"].down()
+		self.loadPreview()
+	def left(self):
+		self["SkinList"].pageUp()
+		self.loadPreview()
+	def right(self):
+		self["SkinList"].pageDown()
+		self.loadPreview()
+	def find(self, arg, dirname, names):
+		for x in names:
+			if x == "skin.xml":
+				if dirname <> self.root:
+					foldername = dirname.split('/')
+					subdir = foldername[-1]
+					self.skinlist.append(subdir)
+				else:
+					subdir = "Default Skin"
+					self.skinlist.append(subdir)
+	def ok(self):
+		if self["SkinList"].getCurrent() == "Default Skin":
+			skinfile = "default/skin.xml"
+		else:
+			skinfile = self["SkinList"].getCurrent()+"/skin.xml"
+		print "[MC_Settings] Skinselector: Selected Skin: "+self.root+skinfile
+		config.plugins.mc_globalsettings.currentskin.path.value = self.root+skinfile
+		config.plugins.mc_globalsettings.currentskin.path.save()
+		restartbox = self.session.openWithCallback(self.restartGUI,MC_MessageBox,_("GUI needs a restart to apply a new skin\nDo you want to Restart the GUI now?"), MC_MessageBox.TYPE_YESNO)
+		restartbox.setTitle(_("Restart GUI now?"))
+
+	def loadPreview(self):
+		if self["SkinList"].getCurrent() == "Default Skin":
+			pngpath = self.root+"/preview.png"
+		else:
+			# check variable to show swapskins
+			if ShowSwapList is True:
+				skinpath = "/var/swap/mcskins/"
+				i = 0
+				for root, dirs, files in os_walk(skinpath):
+					for x in files:
+						if x == "skin.xml":
+							i = i +1
+				if i >= 1:
+					print "[MC_Settings] Skins found. Load preview"
+					pngpath = self.root+self["SkinList"].getCurrent()+"/preview.png"
+				else:
+					print "[MC_Settings] Directory mcskins is empty. Load noprev.png"
+					pngpath = "/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/noprev.png"
+			else:
+				pngpath = self.root+self["SkinList"].getCurrent()+"/preview.png"
+		if not os_path.exists(pngpath):
+			pngpath = "/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/noprev.png"
+		if self.previewPath != pngpath:
+			self.previewPath = pngpath
+		self["Preview"].instance.setPixmapFromFile(self.previewPath)
+
+	def restartGUI(self, answer):
+		if answer is True:
+			self.session.open(TryQuitMainloop, 3)
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_VideoPlayer.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_VideoPlayer.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_VideoPlayer.py	(revision 9331)
@@ -0,0 +1,3017 @@
+from __init__ import _
+from Components.AVSwitch import AVSwitch
+from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
+from Components.Button import Button
+from Components.config import *
+from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.Console import Console
+from Components.Label import Label
+from Components.MediaPlayer import PlayList
+from Components.Pixmap import Pixmap, MovingPixmap
+from Components.Playlist import PlaylistIOInternal, PlaylistIOM3U, PlaylistIOPLS
+from Components.PluginComponent import plugins
+from Components.ProgressBar import ProgressBar
+from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
+from Components.Slider import Slider
+from Components.Sources.StaticText import StaticText
+from enigma import iPlayableService, eTimer, eWidget, eRect, eServiceReference, iServiceInformation, eAVSwitch, evfd, eServiceCenter, eConsoleAppContainer, getDesktop, ePicLoad, eBackgroundFileEraser
+from os import path as os_path, remove as os_remove, listdir as os_listdir
+from Plugins.Plugin import PluginDescriptor
+from RecordTimer import RecordTimer
+from Screens.InfoBar import MoviePlayer
+from Screens.NetworkSetup import *
+from Screens.MessageBox import MessageBox
+from Screens.HelpMenu import HelpableScreen
+from Screens.InfoBarGenerics import InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSupport, InfoBarNotifications, \
+	InfoBarShowHide, InfoBarServiceErrorPopupSupport, InfoBarSecondInfobar, \
+	InfoBarPVRState, InfoBarSimpleEventView, InfoBarServiceNotifications, InfoBarResolutionSelection, \
+	InfoBarMoviePlayerSummarySupport, InfoBarSubtitleSupport, InfoBarTeletextPlugin
+from Screens.Screen import Screen
+from Screens.ServiceInfo import ServiceInfoList, ServiceInfoListEntry
+from Screens.VirtualKeyBoard import VirtualKeyBoard
+from Tools.HardwareInfo import HardwareInfo
+from Tools.LoadPixmap import LoadPixmap
+from Tools.Directories import resolveFilename, fileExists, pathExists, createDir, SCOPE_MEDIA, SCOPE_SKIN_IMAGE, crawlDirectory
+from twisted.web.client import downloadPage, getPage
+from urllib import urlencode, unquote
+from urllib2 import urlopen, Request
+
+from GlobalFunctions import MC_ChoiceBox, MC_MessageBox, MC_VideoImdbView, MC_VideoPlaylistInfoView, Showiframe, InfoBarAspectSelection
+from MC_FileListCover import FileListCover
+from MC_FileList import FileList
+from MC_Imdb import shortname
+from Plugins.Extensions.Aafpanel.plugin import command
+
+import os, glob, time, re, random
+
+from Components.Harddisk import harddiskmanager
+
+T_INDEX = 0
+T_FRAME_POS = 1
+T_PAGE = 2
+T_TITLE = 3
+T_THUMB = 4
+T_URL = 5
+T_FILENAME = 6
+
+config.plugins.mc_imdb = ConfigSubsection()
+config.plugins.mc_imdb.savedir = ConfigText(default = "/var/swap")
+
+langlist = [('de',_("german")),('en',_("english"))]
+config.plugins.mc_imdblang = ConfigSubsection()
+config.plugins.mc_imdblang.default = ConfigSelection(langlist)
+
+config.plugins.mc_imdbauto = ConfigSubsection()
+config.plugins.mc_imdbauto.enabled = ConfigYesNo(default=False)
+
+config.plugins.mc_imdbreplace = ConfigSubsection()
+config.plugins.mc_imdbreplace.enabled = ConfigYesNo(default=False)
+		
+config.plugins.mc_vp = ConfigSubsection()
+config.plugins.mc_vp.showPreview = ConfigYesNo(default=False)
+config.plugins.mc_vp.preview_delay = ConfigInteger(default=5, limits=(1, 30))
+config.plugins.mc_vp.lastDir = ConfigText(default=resolveFilename(SCOPE_MEDIA))
+config.plugins.mc_all = ConfigSubsection()
+config.plugins.mc_all.showDimmer = ConfigYesNo(default=True)
+config.plugins.mc_all.dimmer_delay = ConfigInteger(default=60, limits=(10, 90))
+
+#config.plugins.mc_vp_imdbCover = ConfigSubsection()
+#config.plugins.mc_vp_imdbCover.enabled = ConfigYesNo(default=False)
+views = [('default',_("default")),('details',_("details")),('big',_("big")),('imdbcover',_("imdb cover mode 1")),('imdbcover2',_("imdb cover mode 2")),('imdbcover3',_("imdb cover mode 3")),('cover',_("graphical filelist with cover")),('fullcover',_("graphical filelist with imdb fullcover background"))]
+config.plugins.mc_vp_view = ConfigSubsection()
+config.plugins.mc_vp_view.enabled = ConfigSelection(views)
+tmpview = config.plugins.mc_vp_view.enabled.getValue()
+
+sorts = [('default',_(" by default")),('alpha',_(" by alphabet")), ('alphareverse',_("by alphabet backward")),('date',_("by date")),('datereverse',_("by date backward")),('size',_("by size")),('sizereverse',_("by size backward"))]
+config.plugins.mc_vp_sort = ConfigSubsection()
+config.plugins.mc_vp_sort.enabled = ConfigSelection(sorts)
+tmpsort = config.plugins.mc_vp_sort.enabled.getValue()
+
+config.plugins.mc_vp_autoSleep = ConfigSubsection()
+config.plugins.mc_vp_autoSleep.enabled = ConfigYesNo(default=False)
+config.plugins.mc_vp_autoSleep.delay = ConfigInteger(default=5, limits=(1, 180))
+
+config.plugins.mc_vpcover = ConfigSubsection()
+config.plugins.mc_vpcover.enabled = ConfigYesNo(default=False)
+
+config.plugins.mc_repeat = ConfigSubsection()
+config.plugins.mc_repeat.enabled = ConfigYesNo(default=False)
+
+lastpath = "/"
+thumbsC = 1
+index = 0
+posvar = "center"
+mounting = None
+netmounting = None
+tmppolicy = "None"
+imdbmain = config.plugins.mc_imdb.savedir.getValue()
+imdbautostatus = False
+speicherliste = False
+dimmerCK = None
+
+# rarFS = None
+# isoFS = None
+# imgFS = None
+# smbFS = None
+# upnpFS = None
+# ftpFS = None
+			
+os.system('rm /tmp/.imdbrunning')
+		
+boxversion = command('cat /etc/model')
+
+class MC_VideoPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarNotifications, HelpableScreen):
+	def __init__(self, session, tmpviewin = None):
+	
+#		harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
+#		harddiskmanager.Autofs()
+
+		
+#		enumerateBlockDevices
+
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		global currentview
+		global debug
+		self.showiframe = Showiframe()
+		currentview = tmpviewin
+		if currentview is None:
+			currentview = config.plugins.mc_vp_view.enabled.getValue()
+		if self.debug != "off":
+			print "[VideoPlayer] start with currentview",currentview
+		global tmpsort
+		global index
+		global currPage
+		global dirlistcount
+		global maxentry
+		global maxPage
+
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		global thumbsC
+		global size_w, size_h
+		global showiframeStatus
+		
+		self.rarFS = None
+		self.isoFS = None
+		self.imgFS = None
+# 		self.smbFS = None
+# 		self.upnpFS = None
+# 		self.ftpFS = None
+		self.isoMountDir = None
+		self.imgMountDir = None
+		self.rarMountDir = None
+
+		# workaround to detect exactly the MC SKIN resolution...avoids a GS when non fitting skin is uses
+		if config.plugins.mc_globalsettings.currentskin.path.value == '/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml':
+			size_w = getDesktop(0).size().width()
+			size_h = getDesktop(0).size().height()
+		else:
+			skinresolutionX = command('cat ' + config.plugins.mc_globalsettings.currentskin.path.value + ' | grep xres | tr " " "\n" | grep xres | cut -d "=" -f2')
+			if self.debug != "off":
+				print "[MC_VideoPlayer] detected Skinresolution for CoverView:", skinresolutionX
+			if skinresolutionX == '"1280"':
+				if self.debug != "off":
+					print "[MC_VideoPlayer] using HD skin parameters..."
+				size_w = 1280
+				size_h = 720
+			elif skinresolutionX == '"1024"':
+				if self.debug != "off":
+					print "[MC_VideoPlayer] using KS skin parameters..."
+				size_w = 1024
+				size_h = 576
+			elif skinresolutionX == '"720"':
+				if self.debug != "off":
+					print "[MC_VideoPlayer] using SD skin parameters..."
+				size_w = 720
+				size_h = 576
+			else:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] no valid resolution detected, using default parameters..."
+				size_w = getDesktop(0).size().width()
+				size_h = getDesktop(0).size().height()
+
+		self.FramebufferScale = AVSwitch().getFramebufferScale()
+
+		if size_w == 1280:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 25
+			self.picY = 230
+		elif size_w == 720:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 25
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+		else:
+			self.spaceTop = 100
+			self.spaceLeft = 25
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+
+		textsize = 18
+		self.textcolor = "#FFFFFF"
+		self.color = "#000000"
+
+		posX = -1
+		self.thumbsX = (size_w - self.spaceLeft) / (self.spaceX + self.picX) # thumbnails in X
+		self.thumbsY = (size_h - self.spaceTop) / (self.spaceY + self.picY) # thumbnails in Y
+		self.thumbsC = self.thumbsX * self.thumbsY # all thumbnails
+		thumbsC = self.thumbsC
+
+		self.positionlist = []
+
+		for x in range(self.thumbsC):
+			posY = x / self.thumbsX
+			posX += 1
+			if posX >= self.thumbsX:
+				posX = 0
+			absX = self.spaceLeft + self.spaceX + (posX*(self.spaceX + self.picX))
+			absY = self.spaceTop + self.spaceY + (posY*(self.spaceY + self.picY))
+			self.positionlist.append((absX, absY))
+			if self.debug != "off":
+				print "label(%s)     pos: %s,%s size: %s,%s" % (x,str(absX+5),str(absY+self.picY-textsize-5),str(self.picX - 10),str(textsize))
+				print "thump(%s)     pos: %s,%s size: %s,%s" % (x,str(absX),str(absY+5),self.picX-10,  str(self.picY - (textsize*2) + 10))
+				print "thumpreal(%s) pos: %s,%s size: %s,%s" % (x,str(absX+45),str(absY+5),self.picX -10,  str(self.picY - (textsize*2) + 10))
+
+		policy_input = open("/proc/stb/video/policy", "r")
+		self.policy = policy_input.read()
+		policy_input.close()
+		aspect_input = open("/proc/stb/video/aspect", "r")
+		self.aspect = aspect_input.read()
+		aspect_input.close()
+		wss_input = open("/proc/stb/denc/0/wss", "r")
+		self.wss = wss_input.read()
+		wss_input.close()
+		if self.debug != "off":
+			print "[MC_VideoPlayer] Current policy", self.policy
+			print "[MC_VideoPlayer] Current aspect", self.aspect
+			print "[MC_VideoPlayer] Current wss", self.wss
+
+		skincontent = ""
+
+		Screen.__init__(self, session)
+		HelpableScreen.__init__(self)
+		InfoBarNotifications.__init__(self)
+		InfoBarBase.__init__(self)
+		InfoBarSeek.__init__(self, actionmap = "MediaPlayerSeekActions")
+		self["key_red"] = Button(_("Sorting"))
+		self["key_green"] = Button(_("View"))
+		self["key_yellow"] = Button("Imdb")
+		self["key_blue"] = Button(_("Settings"))
+		self["currentfolder"] = Label("")
+		self["title"] = Label("")
+
+		self["stars"] = ProgressBar()
+		self["stars"].hide()
+		self["nostars"] = Pixmap()
+		self["nostars"].hide()
+
+		self["imdbtitle"] = Label("")
+ 		self["movieplot"] = Label()
+ 		self["tvplot"] = Label()
+ 
+		self["moviecover"] = Pixmap()
+		self["tvcover"] = Pixmap()
+		self["tvbanner"] = Pixmap()
+		self["tvpreview"] = Pixmap()
+
+		self.firststart = True
+
+		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions",
+			{
+				"ok": (self.KeyOk, "Play selected file"),
+				"left": (self.leftUp, "List Top"),
+				"right": (self.rightDown, "List Bottom"),
+				"up": (self.up, "List up"),
+				"down": (self.down, "List down"),
+				"red": (self.sort, "Sorting"),
+				"green": (self.view, "View"),
+				"blue": (self.KeySettings, "Settings"),
+				"yellow": (self.startShowImdbView, "Imdb"),
+			}, -2)
+		
+		self["InfobarShowHideActions"] = HelpableActionMap(self, "InfobarShowHideActions",
+			{
+				"toggleShow": (self.showFileInfo, "Show File Info"),	
+
+			}, -2)
+
+		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
+			{
+				"cancel": (self.Exit, "Exit Video Player"),
+			}, -2)
+
+		self["MediaPlayerActions"] = HelpableActionMap(self, "MediaPlayerActions",
+			{
+				"play": (self.xplayEntry, "play entry"),
+			}, -2)
+
+		if config.plugins.mc_globalsettings.setstablestartdir.value != "no": # default directory set in global settings
+			currDir = config.plugins.mc_globalsettings.setstablestartdir.value
+		else:
+			currDir = config.plugins.mc_vp.lastDir.value
+		global lastpath
+
+		if currDir == "devicelist" or not pathExists(currDir):
+			currDir = None
+
+		lastpath = currDir
+		if self.debug != "off":
+			print "[MC_VideoPlayer] currDir", currDir
+			print "[MC_VideoPlayer] lastpath", lastpath
+		if lastpath is not None:
+			currDir = lastpath
+		self["currentfolder"].setText(str(currDir))
+		self["pageinfo"] = StaticText("")
+
+		if currentview == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+		elif currentview == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+		elif currentview == "imdbcover":
+			art = 4
+			itemheight = 160
+			fontsize = 18
+		elif currentview == "imdbcover2":
+			art = 5
+			itemheight = 160
+			fontsize = 18
+		elif currentview == "imdbcover3":
+			art = 6
+			itemheight = 180
+			fontsize = 18
+		elif currentview == "cover":
+			art = 11
+			itemheight = 23
+			fontsize = 18
+		elif currentview == "default":
+			art = 1
+			itemheight = 23
+			fontsize = 18
+		elif currentview == "fullcover":
+			art = 7
+			itemheight = 32	
+			fontsize = 18
+			
+		if tmpsort is None:
+			sort = config.plugins.mc_vp_sort.enabled.getValue()
+		else:
+			sort = tmpsort
+
+		if os.path.exists("/var/usr/lib/enigma2/python/Plugins/Extensions/DVDPlayer") is True:
+			self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(ifo|rar|iso|img|avi|dat|divx|flv|mkv|m4v|mp4|mov|mpg|mpeg|mts|m2ts|pls|trp|ts|vdr|vob|wmv|rm)", additionalExtensions = "4098:m3u 4098:e2pls 4098:pls", itemheight = itemheight, fontsize = fontsize, art = art, sort = sort )
+		else:
+			self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(ifo|rar|img|avi|dat|divx|flv|mkv|m4v|mp4|mov|mpg|mpeg|mts|m2ts|pls|trp|ts|vdr|vob|wmv|rm)", additionalExtensions = "4098:m3u 4098:e2pls 4098:pls", itemheight = itemheight, fontsize = fontsize, art = art, sort = sort )
+
+		self["filelist"] = self.filelist
+		self["listview"] = MenuList(list)
+
+		Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control"))
+		self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+		showiframeStatus = True
+		if currentview == "cover":
+			self["filelist"].hide()	
+			self["listview"].hide()
+			self["movieplot"].hide()
+			self["tvplot"].hide()
+			self["tvpreview"].hide()	
+			self["imdbtitle"].hide()
+#			self.showiframe.finishStillPicture()
+#			Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+			
+		elif currentview == "fullcover":
+			if self.debug != "off":
+				print "[MC:VideoPlayer] start e2control"
+#			Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control"))
+			self["listview"] = self.filelist
+			self.fullcoverView(index)
+
+		else:
+			self["listview"].hide()
+			self["movieplot"].hide()
+			self["tvplot"].hide()
+			self["tvpreview"].hide()
+			self["imdbtitle"].hide()
+#			self.showiframe.finishStillPicture()
+#			Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+			self.showbanner = ePicLoad()
+						
+		self["frame"] = MovingPixmap()
+		self["frame"].hide()
+
+		for x in range(self.thumbsC):
+			self["label"+str(x)] = StaticText()
+			self["thumb"+str(x)] = Pixmap()
+			self["thumbreal"+str(x)] = Pixmap()
+
+		self.Thumbnaillist = []
+		self.trailerlist = []
+		self.currPage = -1
+		self.dirlistcount = 0
+		self.maxentry = 1
+		self.maxPage = 0
+		self.index = 0 - self.dirlistcount
+		if self.index < 0:
+			self.index = 0
+
+		self.playlistparsers = {}
+		self.addPlaylistParser(PlaylistIOM3U, "avi")
+		self.playlist = MyPlayList()
+
+		# Init Thumb PicLoad
+		self.thumbload = ePicLoad()
+		self.thumbload.PictureData.get().append(self.showThumbPixmap)
+		self.thumbload.setPara((self.picX-10, self.picY-(textsize*2), self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+
+		self.DimmerTimer = eTimer()
+		self.DimmerTimer.callback.append(self.showDimmer)
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		# Remember old Service
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+
+		self.container=eConsoleAppContainer()
+		self.container.appClosed.append(self.finished)
+
+		self.isVisible = True
+		self.currList = "filelist"
+
+
+		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+			{
+				iPlayableService.evUser+11: self.__evDecodeError,
+				iPlayableService.evUser+12: self.__evPluginError
+			})
+
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+		
+		if currentview == "cover":
+			self.onFirstExecBegin.append(self.GetTrailerList)
+		else:
+			self["filelist"].show()
+
+		self.firstFrame = True
+
+	def imdbAutoUpdate(self):
+		path = self.filelist.getCurrentDirectory()   
+		replaceimdb = config.plugins.mc_imdbreplace.enabled.getValue()
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+		language = config.plugins.mc_imdblang.default.getValue()
+		if pathExists('/tmp/.imdbrunning'):
+#			self.session.open(MC_MessageBox, 'Imdb AutoUpdate Directory is current running in Background !\n   Try again later !' % (replaceimdb,path), MC_MessageBox.TYPE_ERROR, timeout=5)
+			if self.debug != "off":
+				print "[MC_VideoPlayer] imdbAutoUpdate skipped is current running"
+			return
+		self.session.open(MC_MessageBox, 'Imdb AutoUpdate Directory scan\n\n Replace: %s\n Directory: %s\n\nstarted in Background !' % (replaceimdb,path), MC_MessageBox.TYPE_INFO, timeout=5)
+		evfd.getInstance().vfd_write_string("Imdb: started")
+		Console().ePopen(('/usr/bin/python /sbin/sync.pyc %s %s %s %s > %s/imdb/_imdbsync.log &' % (path,language,imdbmain,replaceimdb,imdbmain)))
+
+	def KeySettings(self):
+		global currentview
+		Console().ePopen(('stfbcontrol a 255'))
+		self.DimmerTimer.stop()
+		if self.filelist.getCurrentDirectory() is None:
+			config.plugins.mc_vp.lastDir.value = "/"
+		else:
+			config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
+		self["filelist"].hide()	
+		self["listview"].hide()
+		self["frame"].hide()
+		self["moviecover"].hide()
+		self["movieplot"].hide()
+		self["tvcover"].hide()
+		self["tvpreview"].hide()
+		self["tvplot"].hide()
+		self["imdbtitle"].hide()
+		self["nostars"].hide()
+		self["stars"].hide()
+		for x in range(self.thumbsC):
+			posvar = "center"
+			self["label"+str(x)].setText("")
+			self["thumb"+str(x)].hide()
+			self["thumbreal"+str(x)].hide()
+		self.showiframe.finishStillPicture()
+		Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+
+		self.session.open(VideoPlayerSettings, self.filelist, currentview)
+		self.close()
+
+	def startShowImdbView(self):
+		global index
+		global currentview
+		self.DimmerTimer.stop()
+		from MC_Imdb import showImdbView, showImdbViewingConfirmed, showImdbAlternativesConfirmed, VirtualKeyBoardCallback
+		self.showImdbView = showImdbView
+		self.showImdbViewingConfirmed = showImdbViewingConfirmed
+		self.showImdbAlternativesConfirmed = showImdbAlternativesConfirmed
+		self.VirtualKeyBoardCallback = VirtualKeyBoardCallback		
+		self.showiframe.finishStillPicture()
+ 		self.showImdbView(self, self.filelist, self.nextImdbFile, index, currentview)
+
+ 	def nextImdbFile(self):
+		global currentview
+		if currentview != "cover":
+			self["filelist"].down()	
+		else:
+			self.maxentry = len(self.trailerlist)-1		 
+			global index
+			if self.debug != "off":
+				print "rechts index", index
+				print "rechts self.maxentry",self.maxentry	
+			self.firstFrame = True
+			index += 1
+			if index > self.maxentry:
+				index = 0
+			if self.debug != "off":
+				print "rechts index", index
+				print "rechts self.maxentry",self.maxentry
+			self.paintFrame()
+			self.firstFrame = False
+
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_VideoPlayer] nextImdbFile get next file:", filename	
+		return filename
+								
+	def GetTrailerList(self,firstFrame = True,filename = "/",tmpsort = None):
+		global thumbsC
+		global speicherliste
+		
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		
+		global lastpath
+		global maxPage
+		global trailerlist
+		self.firstFrame = firstFrame
+		currDir = config.plugins.mc_vp.lastDir.value
+		if not pathExists(currDir):
+			currDir = "/media/"
+
+		if self.firstFrame is True:
+			self.filename = lastpath		
+			lastpath = currDir
+		else:	
+			lastpath = filename
+
+		if lastpath is not None:
+			currDir = lastpath
+		if self.debug != "off":
+			print "[MC_VideoPlayer] currDir", currDir
+			print "[MC_VideoPlayer] lastpath", lastpath		
+		self["currentfolder"].setText(str(currDir))
+		
+
+
+		if tmpsort is not None:
+			self.filelist = FileListCover(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(ifo|rar|iso|img|avi|dat|divx|flv|mkv|m4v|mp4|mov|mpg|mpeg|mts|m2ts|pls|trp|ts|vdr|vob|wmv)", additionalExtensions = "4098:m3u 4098:e2pls 4098:pls", itemheight = itemheight, fontsize = fontsize, art = art, sort = tmpsort, speicherliste_input = speicherliste )
+		else:
+			sort = config.plugins.mc_vp_sort.enabled.getValue()
+			self.filelist = FileListCover(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(ifo|rar|img|avi|dat|divx|flv|mkv|m4v|mp4|mov|mpg|mpeg|mts|m2ts|pls|trp|ts|vdr|vob|wmv)", additionalExtensions = "4098:m3u 4098:e2pls 4098:pls", itemheight = itemheight, fontsize = fontsize, art = art, sort = sort, speicherliste_input = speicherliste )
+			
+		maxPage = self.filelist.getMaxPage()
+		trailerlist = self.filelist.getTrailerlist()
+		thumbsC = self.filelist.getThumbsC()
+		self.index = 0
+		self.currList = "filelist"
+		self.maxPage = int(maxPage) + 1
+		self.trailerlist = trailerlist
+		self.maxentry = len(self.trailerlist)-1
+		self.paintFrame(self.firstFrame)
+		time.sleep(1)
+		
+#		self.mounterError()
+		self["frame"].show()
+
+
+	def paintFrame(self,firstFrame = True):
+		textsize = 18
+		if size_w == 1280:
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 25
+			self.picY = 230
+		elif size_w == 720:
+			self.spaceX = 25
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+		else:
+			self.spaceX = 35
+			self.picX = 200
+			self.spaceY = 15
+			self.picY = 200
+			
+		self.thumbload = ePicLoad()
+		self.thumbload.PictureData.get().append(self.showThumbPixmap)
+		self.thumbload.setPara((self.picX-10, self.picY-(textsize*2), self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+
+		global index
+	
+		if self.maxentry < index or index < 0:
+			return
+		self.firstFrame = firstFrame
+
+		if self.firstFrame is not True:
+			pos = (60, 130)
+			index = 0
+		else:
+			pos = self.positionlist[self.trailerlist[index][T_FRAME_POS]]
+		
+		self["frame"].moveTo( pos[0], pos[1], 1)
+		self["frame"].startMoving()
+
+		if self.currPage != self.trailerlist[index][T_PAGE]:
+			self.currPage = self.trailerlist[index][T_PAGE]
+			self.newPage()
+		elif self.firstFrame is not True:
+			self.currPage = self.trailerlist[0][0]
+			self.newPage()
+
+	def newPage(self):
+		global index
+		global posvar
+		self.Thumbnaillist = []
+		self["pageinfo"].setText(_("Page %s of %s" % (str(self.currPage+1),str(self.maxPage))))
+		
+		#clear Labels and Thumbnail
+		for x in range(self.thumbsC):
+			posvar = "center"
+			self["label"+str(x)].setText("")
+			self["thumb"+str(x)].hide()
+			self["thumbreal"+str(x)].hide()
+			
+		#paint Labels and fill Thumbnail-List
+		count = -1
+		for x in self.trailerlist:
+			count +=1
+			if x[T_PAGE] == self.currPage:
+				short = shortname(self.trailerlist[count][3])
+				if self.trailerlist[count][7] is None:
+					if short is not None:
+						if len(short) > 20:
+							posvar = "left"
+						else:
+							posvar = "center"
+					else:
+						posvar = "center"
+
+					self["label"+str(x[T_FRAME_POS])].setText(short)
+				else:
+					if short is not None:
+						if len(short) > 20:
+							posvar = "left"
+						else:
+							posvar = "center"
+					else:
+						posvar = "center"
+
+					self["label"+str(x[T_FRAME_POS])].setText(short)
+				if self["thumb"+str(x[T_FRAME_POS])].instance is not None:
+					if self.trailerlist[count][6] is not None and self.trailerlist[count][7] is True:
+						if self.trailerlist[count][6].split('/')[1] == 'usr':			
+							outvar = self.trailerlist[count][6]		
+							self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile(self.trailerlist[count][6]+".png")
+						else:	
+							newshort = short.lower()
+							newshort = newshort.replace(" ", "")
+							outvar = self.trailerlist[count][6]+newshort
+							if fileExists(outvar+".png", 'r'):
+								self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile(outvar+".png")
+							else:	
+								self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile("/var/usr/local/share/enigma2/extensions/directory_cover.png")
+
+						self['thumb'+str(x[T_FRAME_POS])].show()	
+					else:
+						newshort = short.lower()
+						newshort = newshort.replace(" ", "")
+						outvar = self.trailerlist[count][6]+newshort
+
+						if self.trailerlist[count][6] is not None and self.trailerlist[count][6].split('/')[1] == 'usr':			
+							outvar = self.trailerlist[count][6]		
+							self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile(self.trailerlist[count][6]+".png")
+ 							self['thumb'+str(x[T_FRAME_POS])].show()
+						elif fileExists(outvar+".posterpreview.jpg", 'r'):
+							self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile("/var/usr/local/share/enigma2/extensions/dummy.png")
+							self['thumb'+str(x[T_FRAME_POS])].show()
+						elif fileExists(outvar+".jpg", 'r'):
+							self["thumbreal"+str(x[T_FRAME_POS])].instance.setPixmap(LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, outvar+".jpg")))
+							self['thumbreal'+str(x[T_FRAME_POS])].show()
+						else:
+							self["thumb"+str(x[T_FRAME_POS])].instance.setPixmapFromFile("/var/usr/local/share/enigma2/extensions/dummy.png")
+							self['thumb'+str(x[T_FRAME_POS])].show()
+				self.Thumbnaillist.append([0, x[T_FRAME_POS], x[T_THUMB], x[T_FILENAME], self.trailerlist[count][7], short, outvar])
+
+		#Get Thumbnails
+		self.thumbcount = -1
+		self.getThumbnail()
+
+	def getThumbnail(self):		
+		self.thumbcount += 1
+		serie = False
+
+		newshort = str(self.Thumbnaillist[self.thumbcount][5]).lower()
+		newshort = newshort.replace(" ", "")
+		outvar = str(self.Thumbnaillist[self.thumbcount][3])+newshort+".posterpreview.jpg"
+
+		self.thumbfile = outvar
+		if self.debug != "off":
+			print "getThumbnail", outvar
+		if fileExists(outvar, 'r'):
+			if self.debug != "off":
+				print "getThumbnail true"
+			serie = True
+		else:
+			if self.debug != "off":
+				print "getThumbnail false"
+		
+
+		if config.plugins.mc_vpcover.enabled.getValue() == True or serie == True:		
+			if str(self.Thumbnaillist[self.thumbcount][4]) is not True:
+				if serie == True:
+					outvar = str(self.Thumbnaillist[self.thumbcount][3])+newshort+".posterpreview.jpg"
+				else:
+					outvar = str(self.Thumbnaillist[self.thumbcount][3])+newshort+".jpg"
+				self.thumbfile = outvar
+
+		if fileExists(self.thumbfile, 'r'):
+			self.gotThumbnail()
+		else:
+			if self.thumbcount+1 < len(self.Thumbnaillist):
+				self.getThumbnail()
+
+	def gotThumbnail(self, txt=""):
+		if self.thumbload.getThumbnail(self.thumbfile) == 1:
+			if self.thumbcount+1 < len(self.Thumbnaillist):
+				self.getThumbnail()
+
+	def showThumbPixmap(self, picInfo=None):				
+		ptr = self.thumbload.getData()
+		if ptr != None:
+			self["thumb" + str(self.thumbcount)].instance.setPixmap(ptr.__deref__())
+			self["thumb" + str(self.thumbcount)].show()
+		
+		if self.thumbcount+1 < len(self.Thumbnaillist):
+			self.getThumbnail()
+
+	def showThumbError(self, error):
+		if self.thumbcount+1 < self.thumbsC:
+			self.getThumbnail()
+
+	def getActivSwap(self):
+		fp = tryOpen('/proc/swaps')
+		if fp == '':
+			return 0
+		for tmp in fp.readlines():
+			if tmp.startswith('/'):
+				line = tmp.split()
+				swap = line[0].split('/')
+				size = int(line[2])
+				return (size)
+		return 0
+
+	def finished(self,retval):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] finished retval", retval
+		global currentview
+		global mounting
+
+		currentdir = self.filelist.getCurrentDirectory()
+
+		self.container = eConsoleAppContainer()
+		if mounting is not None:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] %s mounting bind to lastdir" % (mounting)
+				print "str(lastpath)",str(currentdir)
+			if mounting == "rar":
+				self.container.execute('/bin/mount --bind /tmp/rarfs ' + str(currentdir))
+				self.rarMountDir = str(currentdir)
+				self.rarFS = True
+			if mounting == "iso":
+				self.isoFS = True
+				self.isoMountDir = str(currentdir)
+				self.container.execute('/bin/mount --bind /tmp/dvd ' + str(currentdir))
+			if mounting == "img":
+				self.imgFS = True
+				self.imgMountDir = str(currentdir)
+				self.container.execute('/bin/mount --bind /tmp/dvd ' + str(currentdir))
+# 			if mounting == "smb":
+# 				self.smbFS == True
+# 			if mounting == "upnp":
+# 				self.upnpFS == True
+# 			if mounting == "ftp":
+# 				self.ftpFS == True
+
+			if self.debug != "off":
+				print "[MC_VideoPlayer] finished: mounting=",mounting
+				print "[MC_VideoPlayer] finished: self.rarFS =",self.rarFS
+				print "[MC_VideoPlayer] finished: self.isoFS =",self.isoFS
+				print "[MC_VideoPlayer] finished: self.imgFS =",self.imgFS
+# 				print "[MC_VideoPlayer] finished: self.smbFS =",self.smbFS
+# 				print "[MC_VideoPlayer] finished: self.upnpFS =",self.upnpFS
+# 				print "[MC_VideoPlayer] finished: self.ftpFS =",self.ftpFS
+				print "[MC_VideoPlayer] finished: self.rarMountDir =",self.rarMountDir
+				print "[MC_VideoPlayer] finished: self.imgMountDir =",self.imgMountDir
+				print "[MC_VideoPlayer] finished: self.isoMountDir =",self.isoMountDir	
+		
+			time.sleep(3)
+			self.session.open(MC_MessageBox, '%s Successful closed.' % (mounting), MC_MessageBox.TYPE_INFO, timeout=5)
+			self.mountingmsg.close(True)
+
+			global art
+			global itemheight
+			global fontsize
+			global sort
+			global index
+			if currentview == "cover":
+				index = 0
+				self.filename = self.filelist.getCurrentDirectory()
+				self.firstFrame = False
+				self.GetTrailerList(self.firstFrame,self.filename,sort)	
+			else:
+				self.filelist.refresh(fontsize, itemheight, art, sort)
+
+		else:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] %s mounting error" % (running)
+			self.session.open(MC_MessageBox, '%s Mounting Error !' % (mounting), MC_MessageBox.TYPE_INFO, timeout=5)
+			self.mountingmsg.close(True)
+
+		self.container=eConsoleAppContainer()
+		self.container.appClosed.append(self.finished)
+
+	def KeyOk(self):	
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+		self.filename = self.filelist.getFilename(index)
+		running = "None"
+		if self.debug != "off":
+			print "self.filename",self.filename
+		if self.filename is not None:
+			if self.filename.upper().endswith(".RAR"):
+				if boxversion.upper() == 'UFS910':
+					p1 = self.getActivSwap()
+					if p1 == '' or p1 == '0':
+						if self.debug != "off":
+							print "[MC_VideoPlayer] no swap % kb" % (p1)
+						self.session.open(MC_MessageBox, _('Use this only with SWAP !'), MC_MessageBox.TYPE_ERROR, timeout=5)
+					else:
+						if int(p1) >= int('16000'):
+							if self.debug != "off":
+								print "[MC_VideoPlayer] ufs910 swap ok"
+							swapck = 1 
+						else:
+							if self.debug != "off":
+								print "[MC_VideoPlayer] swap to smal %s kb min 15000 kb" % (p1)
+							self.session.open(MC_MessageBox, _('Your Swapsize %s kb is too small! Use min 15000 kb !' % (p1)), MC_MessageBox.TYPE_ERROR, timeout=5)
+# 				elif boxversion.upper() == 'UFS922':
+# 					swapck = 1
+# 				elif boxversion.upper() == 'UFS912':
+# 					swapck = 1
+# 				elif boxversion.upper() == 'TF7700':
+# 					swapck = 1
+# 				elif boxversion.upper() == 'IPBOX91':
+# 					swapck = 1
+# 				elif boxversion.upper() == 'IPBOX900':
+# 					swapck = 1
+# 				elif boxversion.upper() == 'IPBOX910':
+# 					swapck = 1
+# 				elif boxversion.upper() == 'IPBOX9000':
+# 					swapck = 1
+# 				elif boxversion.upper() == 'AT7500':
+# 					swapck = 1					
+# 				elif boxversion.upper() == 'AT7000':
+# 					swapck = 1
+# 				elif boxversion.upper() == 'AT700':
+# 					swapck = 1
+# 				else:
+# 					self.session.open(MC_MessageBox, _('Your Boxtype %s is not supportet ! message obi on AAF !' % (boxversion)), MC_MessageBox.TYPE_ERROR, timeout=5)
+				else:
+					swapck = 1
+				if swapck == 1:
+					running = "rar"
+					if self.debug != "off":
+						print "[MC_VideoPlayer] %s file gefunden %s start mounter" % (running,self.filename)			
+					self.mounter(running)
+				else:
+					self.session.open(MC_MessageBox, _('Error! No Swapstick found !'), MC_MessageBox.TYPE_WARNING, timeout=5)
+					
+			elif self.filename.upper().endswith(".IMG"):
+				running = "img"
+				if self.debug != "off":
+					print "[MC_VideoPlayer] %s file gefunden %s start mounter" % (running,self.filename)			
+					print "[MC_VideoPlayer] %s mounting file to /tmp/dvd" % (running)
+				self.mounter(running)
+				
+			elif self.filename.upper().endswith(".ISO"):
+				list = []
+				list.append((_("start playing content with the DVD player"), "skip"))
+				list.append((_("open the folder with the fileList"), "mounter"))
+#				list.append((_("start playing this file directly"), "play"))
+				self.session.openWithCallback(self.startDvdplayer, MC_ChoiceBox, title=_("DVD player autostart..."), list = list)
+
+# 				running = "iso"
+# 				if self.debug != "off":
+# 					print "[MC_VideoPlayer] %s file gefunden %s start mounter" % (running,self.filename)			
+# 					print "[MC_VideoPlayer] %s mounting file to /tmp/dvd" % (running)
+# 				self.mounter(running)
+				
+			else:
+				running = "other"
+				if self.debug != "off":
+					print "[MC_VideoPlayer] %s file gefunden %s start playing" % (running,self.filename)
+				self.playing()
+		else:
+			running = "other"
+			if self.debug != "off":
+				print "[MC_VideoPlayer] %s file gefunden %s start playing" % (running,self.filename)
+			self.playing()
+				
+
+	def mounter(self, running):
+		global mounting
+				
+		if running == "rar":
+			if os.path.exists("/tmp/rarfs") is False:
+				os.makedirs("/tmp/rarfs")
+			if os.path.exists("/sbin/rarfs") is True:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] %s mounting file to /tmp/rarfs" % (running)
+ 				mounting = running
+ 				self.rarFS = True
+				self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+				self.container.execute('/sbin/rarfs ' + str(self.filename) + ' /tmp/rarfs')
+				return
+
+		elif running == "img":
+			if os.path.exists("/tmp/dvd") is False:
+				os.makedirs("/tmp/dvd")
+			if self.debug != "off":
+				print "[MC_VideoPlayer] %s mounting file to /tmp/rarfs" % (running)
+			mounting = running 
+			self.imgFS = True
+
+			self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+			self.container.execute('mount -o loop ' + str(self.filename) + ' /tmp/dvd')
+
+		elif running == "iso":
+			if os.path.exists("/tmp/dvd") is False:
+				os.makedirs("/tmp/dvd")
+			if self.debug != "off":
+				print "[MC_VideoPlayer] %s mounting file to /tmp/rarfs" % (running)
+			mounting = running 
+			self.isoFS == True
+
+			self.mountingmsg = self.session.open(MC_MessageBox, 'Caching files, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+			self.container.execute('mount ' + str(self.filename) + ' /tmp/dvd')
+# 			dvdFilelist = [ ]
+# 			dvdDevice = None
+# 				
+# 			if self.filelist.getFilename(index).lower().endswith(u"ifo"): # DVD
+# 				isDVD = True
+# 				dvdFilelist.append(self.filelist.getFilename(index).replace(u"VIDEO_TS.IFO", "").strip())
+# 			elif self.filelist.getFilename(index).lower().endswith(u"iso"): # DVD
+# 				isDVD = True
+# 				dvdFilelist.append(self.filelist.getFilename(index))
+# 
+# 			if isDVD:
+# 				try:				
+# 					from Plugins.Extensions.DVDPlayer.plugin import DVDPlayer
+# 					self.session.openWithCallback(self.leaveMoviePlayer, DVDPlayer, dvd_device = dvdDevice, dvd_filelist = dvdFilelist)
+# 				except Exception, ex:
+# 					print "KeyOk::", ex
+					
+						
+# 		elif running == "smb":
+# 			if pathExists("/var/usr/lib/libsmbclient.so.0") or pathExists("/var/swap/lib/libsmbclient.so.0") or pathExists("/lib/libsmbclient.so.0"):
+# 				running = "smb"
+# 				smbck = open("/proc/mounts", "r")
+# 				mount = smbck.read()
+# 				smbck.close()
+# 				if mount.find("/media/smb") is -1:
+# 					if self.debug != "off":
+# 						print "[MC_VideoPlayer] %s mounter started" % (running)			
+# 						print "[MC_VideoPlayer] %sFS mounting file to /media/smb" % (running)
+# 					mounting = running 
+# 					self.smbFS == True
+# 					
+# 					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+# 					self.container.execute('/bin/fusesmb -o nonempty /media/smb')
+# 			else:
+# 				self.session.open(MC_MessageBox, 'Error, please install ipk swapnetwork/libsmbclient over Pluginbrowser !', MC_MessageBox.TYPE_ERROR)
+# 
+# 		elif running == "upnp":
+# 			running = "upnp"
+# 			smbck = open("/proc/mounts", "r")
+# 			mount = smbck.read()
+# 			smbck.close()
+# 			if mount.find("/media/upnp") is -1:
+# 				if self.debug != "off":
+# 					print "[MC_VideoPlayer] %s mounter started" % (running)			
+# 					print "[MC_VideoPlayer] %sFS mounting file to /media/upnp" % (running)
+# 				mounting = running 
+# 				self.upnpFS == True
+# 	
+# 				self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+# 				self.container.execute('/bin/djmount -o nonempty /media/upnp')
+# 
+# 		elif running == "ftp":
+# 			if pathExists("/var/bin/ftpfs.sh"):
+# 				running = "ftp"
+# 				smbck = open("/proc/mounts", "r")
+# 				mount = smbck.read()
+# 				smbck.close()
+# 				if mount.find("/media/ftp") is -1:
+# 					if self.debug != "off":
+# 						print "[MC_VideoPlayer] %s mounter started" % (running)			
+# 						print "[MC_VideoPlayer] %sFS mounting file to /media/ftp" % (running)
+# 					mounting = running 
+# 					self.ftpFS == True
+# 
+# 					self.mountingmsg = self.session.open(MC_MessageBox, 'Mounting, please wait !', MC_MessageBox.TYPE_INFO, enable_input = False)	
+# 					self.container.execute('/var/bin/ftpfs.sh')
+# 			else:
+# 				self.session.open(MC_MessageBox, 'Error, touch /var/bin/ftpfs.sh and edit this with your entrys !', MC_MessageBox.TYPE_ERROR)
+
+		if self.debug != "off":
+			print "[MC_VideoPlayer] mounter: self.rarFS =",self.rarFS
+			print "[MC_VideoPlayer] mounter: self.isoFS =",self.isoFS
+			print "[MC_VideoPlayer] mounter: self.imgFS =",self.imgFS
+# 			print "[MC_VideoPlayer] mounter: self.smbFS =",self.smbFS
+# 			print "[MC_VideoPlayer] mounter: self.upnpFS =",self.upnpFS
+# 			print "[MC_VideoPlayer] mounter: self.ftpFS =",self.ftpFS
+			print "[MC_VideoPlayer] mounter: self.rarMountDir =",self.rarMountDir
+			print "[MC_VideoPlayer] mounter: self.imgMountDir =",self.imgMountDir
+			print "[MC_VideoPlayer] mounter: self.isoMountDir =",self.isoMountDir		
+
+	def umountRefresh(self):
+#		self.session.open(MC_MessageBox, _("Umount %s ! Please wait !" % (self.filename)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+		global fontsize
+		global art
+		global sort
+		global itemheight
+		currentdir = self.filelist.getCurrentDirectory()
+		if self.debug != "off":
+			print "[MC_VideoPlayer] umountRefresh: self.rarFS =",self.rarFS
+			print "[MC_VideoPlayer] umountRefresh: self.isoFS =",self.isoFS
+			print "[MC_VideoPlayer] umountRefresh: self.imgFS =",self.imgFS
+# 			print "[MC_VideoPlayer] umountRefresh: self.smbFS =",self.smbFS
+# 			print "[MC_VideoPlayer] umountRefresh: self.upnpFS =",self.upnpFS
+# 			print "[MC_VideoPlayer] umountRefresh: self.ftpFS =",self.ftpFS
+			print "[MC_VideoPlayer] umountRefresh: self.rarMountDir =",self.rarMountDir
+			print "[MC_VideoPlayer] umountRefresh: self.imgMountDir =",self.imgMountDir
+			print "[MC_VideoPlayer] umountRefresh: self.isoMountDir =",self.isoMountDir
+
+#		if self.rarFS is None and self.isoFS is None and self.imgFS is None and self.smbFS is None and self.upnpFS is None and self.ftpFS is None:
+		if self.rarFS is None and self.isoFS is None and self.imgFS is None:
+			skip = 1
+			
+		elif self.isoFS is True:
+			self.session.open(MC_MessageBox, _("Umount isofile from %s" % (self.isoMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_VideoPlayer] umount isoFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`"))
+			self.isoFS = None			
+			self.isoMountDir = None
+
+		elif self.imgFS is True:
+			self.session.open(MC_MessageBox, _("Umount imgfile from %s" % (self.imgMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_VideoPlayer] umount imgFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`"))
+			self.imgFS = None		
+			self.imgMountDir = None
+
+		elif self.rarFS is True:
+			self.session.open(MC_MessageBox, _("Umount rarfile from %s" % (self.rarMountDir)), type = MC_MessageBox.TYPE_ERROR, timeout = 3)
+			if self.debug != "off":
+				print "[MC_VideoPlayer] umount rarFS"
+			Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep rarfs | grep -v '/dev/' | cut -d ' ' -f3` " + currentdir + "; killall -9 rarfs"))
+			self.rarFS = None
+			self.rarMountDir = None
+
+		else:
+			self.imgFS = None		
+			self.rarFS = None
+			self.isoFS = None			
+# 			self.smbFS = None		
+# 			self.upnpFS = None
+# 			self.ftpFS = None			
+			self.rarMountDir = None
+			self.imgMountDir = None
+			self.isoMountDir = None
+									
+			Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep -v '/dev/' | cut -d ' ' -f3`; /bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`; killall -9 rarfs fusesmb curlftpfs"))
+		
+	def getPlayerIndex(self):
+		global index
+		return index
+
+	def startDvdplayer(self, answer):
+		answer = answer and answer[1]
+		print "[Mc_VideoPlayer] startDvdplayer:", answer
+		if answer == "dvdplayer":
+			dvdFilelist = [ ]
+			dvdDevice = None
+			isDVD = None
+#					if self.filelist.getFilename(index).lower().endswith(u"ifo"): # DVD
+			print "[MC_VideoPlayer] found dvd video_ts folder"
+			isDVD = True
+			dvdFilelist.append(self.filelist.getCurrentDirectory())
+
+			if isDVD:
+				try:				
+					from Plugins.Extensions.DVDPlayer.plugin import DVDPlayer
+					self.DimmerTimer.stop()
+	
+					self.showiframe.finishStillPicture()
+					self.DimmerTimer.stop()
+					showiframeStatus = False	
+					self.session.openWithCallback(self.leaveMoviePlayer, DVDPlayer, dvd_device = dvdDevice, dvd_filelist = dvdFilelist)
+					
+				except Exception, ex:
+					print "KeyOk::", ex
+		elif answer == "mounter":
+			running = "iso"
+			if self.debug != "off":
+				print "[MC_VideoPlayer] %s file gefunden %s start mounter" % (running,self.filename)			
+				print "[MC_VideoPlayer] %s mounting file to /tmp/dvd" % (running)
+			self.mounter(running)
+		elif answer == "skip":
+			dvdFilelist = [ ]
+			dvdDevice = None
+			isDVD = None
+			print "[MC_VideoPlayer] found dvd video_ts folder"
+			isDVD = True
+			dvdFilelist.append(self.filelist.getFilename(index))
+
+			if isDVD:
+				try:				
+					from Plugins.Extensions.DVDPlayer.plugin import DVDPlayer
+					self.DimmerTimer.stop()
+	
+					self.showiframe.finishStillPicture()
+					self.DimmerTimer.stop()
+					showiframeStatus = False	
+					self.session.openWithCallback(self.leaveMoviePlayer, DVDPlayer, dvd_device = dvdDevice, dvd_filelist = dvdFilelist)
+					
+				except Exception, ex:
+					print "KeyOk::", ex
+					
+#		elif answer == "play":
+#			print "[MC_VideoPlayer] dvd directplay"
+#			self.playing()
+					
+	def playing(self, type = None):
+		global currentview
+		global index
+		global speicherliste
+		global showiframeStatus
+		
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+
+		self.filename = self.filelist.getFilename(index)
+		speicherliste = False
+
+		currPlay = self.session.nav.getCurrentService()
+		if self.debug != "off":
+			print "currPlay", currPlay  
+
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		Console().ePopen(('stfbcontrol a 255'))
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+		self.firstFrame = False
+# 		art = 1
+# 		itemheight = 23
+# 		fontsize = 18
+		sort = config.plugins.mc_vp_sort.enabled.getValue()
+		if self.currList == "playlist":
+			selection = self["playlist"].getSelection()
+			self.changeEntry(self.playlist.getSelectionIndex())
+			
+		if self.isVisible == False:
+			self.visibility()
+			return
+
+		if self.filelist.getFilename(index) is not None:
+			if self.filelist.canDescent(index):
+				if currentview == "fullcover":
+#					self.showiframe.finishStillPicture()
+					self.fullcoverView(index)	
+
+				if self.debug != "off":
+					print "[MC_VideoPlayer] changedir from" ,self.filelist.getCurrentDirectory()	
+				self.filelist.descent(index)
+				if self.debug != "off":
+					print "[MC_VideoPlayer] changedir to" ,self.filelist.getCurrentDirectory()	
+
+				print "CurrentDirectory",self.filelist.getCurrentDirectory()
+				print "CurrentDirectory",str(self.filelist.getCurrentDirectory()).upper()	
+				print "CurrentDirectory", self.filelist.getCurrentDirectory().split("/")[-1]
+				print "CurrentDirectory", self.filelist.getCurrentDirectory().split("/")[-2]
+				print "CurrentDirectory", str(self.filelist.getCurrentDirectory()).upper().split("/")[-2]
+				
+				if str(self.filelist.getCurrentDirectory()).upper().split("/")[-2] == "VIDEO_TS":
+					list = []
+					list.append((_("start playing content with the DVD player"), "dvdplayer"))
+					list.append((_("open the folder with the fileList"), "filelist"))
+					self.session.openWithCallback(self.startDvdplayer, MC_ChoiceBox, title=_("DVD player autostart..."), list = list)
+
+				if self.isoFS is True:
+					if self.isoMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.isoMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.imgFS is True:
+					if self.imgMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.imgMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.rarFS is True:
+					if self.rarMountDir is not None:
+						if self.filelist.getCurrentDirectory().split("/")[:-1] == self.rarMountDir.split("/")[:-2]:
+							self.umountRefresh()
+
+				elif self.filelist.getCurrentDirectory() == "/media/":
+					self.umountRefresh()
+				
+#  				elif self.filelist.getCurrentDirectory() == "/media/smb/":
+# 					netmounting = "smb"
+# 					smbck = open("/proc/mounts", "r")
+# 					mount = smbck.read()
+# 					smbck.close()
+# 					if mount.find("/media/smb") is -1:
+# 						self.smbFS = True
+# 						self.mounter(netmounting)
+# 
+# 				elif self.filelist.getCurrentDirectory() == "/media/upnp/":
+# 					netmounting = "upnp"
+# 					upnpck = open("/proc/mounts", "r")
+# 					mount = upnpck.read()
+# 					upnpck.close()
+# 					if mount.find("/media/upnp") is -1:
+# 						self.upnpFS = True
+# 						self.mounter(netmounting)
+# 						
+# 				elif self.filelist.getCurrentDirectory() == "/media/ftp/":
+# 					netmounting = "ftp"
+# 					ftpck = open("/proc/mounts", "r")
+# 					mount = ftpck.read()
+# 					ftpck.close()
+# 					if mount.find("/media/ftp") is -1:
+# 						self.ftpFS = True
+# 						self.mounter(netmounting)
+				
+				self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+				if currentview == "cover":
+					index = 0
+					self.firstFrame = False
+					self.GetTrailerList(self.firstFrame,self.filename)
+			else:
+				print "[MC_VideoPlayer] currdir is none" ,self.filelist.getCurrentDirectory()	
+				self.playlist.clear()
+				evfd.getInstance().vfd_write_string("PLAY")
+				
+				dvdFilelist = [ ]
+				dvdDevice = None
+				isDVD = None
+				if self.filelist.getFilename(index).lower().endswith(u"ifo"): # DVD
+					print "[MC_VideoPlayer] found dvd ifo file"
+					isDVD = True
+					dvdFilelist.append(self.filelist.getCurrentDirectory())
+
+				if isDVD:
+					try:				
+						from Plugins.Extensions.DVDPlayer.plugin import DVDPlayer
+						self.DimmerTimer.stop()
+		
+						self.showiframe.finishStillPicture()
+						self.DimmerTimer.stop()
+						showiframeStatus = False	
+						self.session.openWithCallback(self.leaveMoviePlayer, DVDPlayer, dvd_device = dvdDevice, dvd_filelist = dvdFilelist)
+						
+					except Exception, ex:
+						print "KeyOk::", ex
+				else:
+					if self.filelist.getServiceRef().type == 4098:
+						ServiceRef = self.filelist.getServiceRef()
+						extension = ServiceRef.getPath()[ServiceRef.getPath().rfind('.') + 1:]
+						if self.playlistparsers.has_key(extension):
+							playlist = self.playlistparsers[extension]()
+							list = playlist.open(ServiceRef.getPath())
+							for x in list:
+								self.playlist.addFile(x.ref)
+						self.playlist.updateList()
+					else:
+						self.playlist.addFile(self.filelist.getServiceRef())
+						self.playlist.updateList()
+	
+					self.DimmerTimer.stop()
+	
+					self.showiframe.finishStillPicture()
+					self.DimmerTimer.stop()
+					showiframeStatus = False		
+	
+					if self.debug != "off":
+						print "[MC_VideoPlayer] playing: start self.playEntry =", self.filename
+	
+					self.playlist.setCurrentPlaying(0)
+					self.playEntry()
+	
+					found = False
+					m = re.search(r'\Ws(?P<season>\d+)\s?e(?P<episode>\d+)(\D|$)', self.filename)
+					if m and m.group("season") and m.group("episode"):
+						found = True
+	
+						self.Season = int(m.group("season"))
+						self.Episode = int(m.group("episode"))
+						
+						if self.Season > 9:
+							searchstring = 's%se' % (self.Season)
+						else:
+							searchstring = 's0%se' % (self.Season)
+	
+						self.listtype = [ searchstring ]
+	
+						self.listcount = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ]
+						for a in self.listtype:
+							for i in self.listcount:
+								j = int(i) + 1
+								for k in self.listcount:
+									nextfile = self.filename
+									if i > 9:
+										nextfile = re.sub("%s%s" % (a,i),"%s%s" % (a,j), nextfile)
+									else:
+										nextfile = re.sub("%s0%s" % (a,i),"%s0%s" % (a,j), nextfile)
+									if pathExists(nextfile) and nextfile != self.filename:
+										print "[MC_VideoPlayer] self.playlist.addFile:",nextfile
+										nextfile = eServiceReference(0x1001,0,nextfile)				
+										self.playlist.addFile(nextfile)
+	
+									nextfile = self.filename
+									if i < 10:
+										nextfile = re.sub("%s0%s" % (a,i),"%s%s" % (a,j), nextfile)
+										if pathExists(nextfile) and nextfile != self.filename:
+											print "[MC_VideoPlayer] self.playlist.addFile:",nextfile
+											nextfile = eServiceReference(0x1001,0,nextfile)				
+											self.playlist.addFile(nextfile)
+									j += 1
+	
+					m = re.search(r'vts_(?P<season>\d+)\s?_(?P<episode>\d+)(\D|$)', self.filename)
+					if m and m.group("season") and m.group("episode"):
+						found = True
+						self.Season = int(m.group("season"))
+						self.Episode = int(m.group("episode"))
+						
+						if self.Season > 9:
+							searchstring = 'vts_%s_' % (self.Season)
+						else:
+							searchstring = 'vts_0%s_' % (self.Season)
+	
+						self.listtype = [ searchstring ]
+						self.listcount = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
+	
+						for a in self.listtype:
+							for i in self.listcount:
+								j = i + 1
+								for k in self.listcount:
+									nextfile = self.filename
+									nextfile = re.sub("%s%s" % (a,i),"%s%s" % (a,j), nextfile)
+									if pathExists(nextfile) and nextfile != self.filename:
+										print "[MC_VideoPlayer] self.playlist.addFile:",nextfile
+										nextfile = eServiceReference(0x1001,0,nextfile)				
+										self.playlist.addFile(nextfile)
+									j += 1
+	
+					if found == False:
+						self.listtype = [ 'cd', 'dvd' ]
+						self.listcount = [ 1, 2, 3, 4, 5, 6 ]
+						for a in self.listtype:
+							for i in self.listcount:
+								j = i + 1
+								for k in self.listcount:
+									nextfile = self.filename
+									nextfile = re.sub("%s%s" % (a,i),"%s%s" % (a,j), nextfile)
+									if pathExists(nextfile) and nextfile != self.filename:
+										print "[MC_VideoPlayer] self.playlist.addFile:",nextfile
+										nextfile = eServiceReference(0x1001,0,nextfile)				
+										self.playlist.addFile(nextfile)
+									j += 1
+	
+					if config.plugins.mc_imdbauto.enabled.getValue() == True:
+						if self.debug != "off":
+							print "[MC_VideoPlayer] Imdb autosearch startet in 100s"
+						self.timerallwogui = eTimer()
+						self.timerallwogui.callback.append(self.imdbAutoUpdate)
+						self.timerallwogui.start(70 * 1000, True)
+
+		else:
+			if currentview == "fullcover":
+#				self.showiframe.finishStillPicture()
+				self.fullcoverView(index)	
+
+# 			if mounting is not None:
+# 				if self.debug != "off":
+# 					print "playing videoplayer not startet this is incorected file/folder umount all!"
+# 				self.umountRefresh()
+
+			if self.filelist.canDescent(index):
+				self.filelist.descent(index)
+				self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
+						
+				if currentview == "cover":
+					index = 0
+					self.firstFrame = False	
+					speicherliste = True
+					self.GetTrailerList(self.firstFrame,self.filename,speicherliste)	
+			else:
+				self.session.open(MC_MessageBox, _("Error, filelist empty !!"), type = MC_MessageBox.TYPE_ERROR, timeout = 10)
+				if self.debug != "off":
+					print "[MC_VideoPlayer] filelist empty"
+				
+			self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+			Console().ePopen(('rm -r ' + imdbmain + '/imdb/.Thumbnails'))
+#			Console().ePopen(('rm -r ' + imdbmain + 'imdbfolder/.Thumbnails'))
+			Console().ePopen(('rm -r /var/swap/imdbfolder/.Thumbnails'))
+			Console().ePopen(('rm -r /var/imdbfolder/.Thumbnails'))
+			Console().ePopen(('rm -r /var/usr/local/share/enigma2/extensions/.Thumbnails'))
+
+	def rightDown(self):
+		global currentview
+		global index
+		global showiframeStatus
+		self.DimmerTimer.stop()
+		if currentview != "cover":	
+			if len(self.filelist.getFileList()) == 1:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] rightDown skipped"
+				return
+			elif len(self.filelist.getFileList()) == 0:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] rightDown skipped"
+				return
+		else:
+			if len(self.trailerlist) == 1:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] rightDown skipped"
+				return
+			elif len(self.trailerlist) == 0:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] rightDown skipped"
+				return
+
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		global dimmerCK
+		if dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		if currentview != "cover":
+			self["filelist"].pageDown()
+			if currentview == "fullcover":
+				self.fullcoverView(index)
+			elif showiframeStatus == False:
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus == True
+		else:
+			
+			if showiframeStatus == False:	
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus == True
+			self.maxentry = len(self.trailerlist)-1		 
+			if self.debug != "off":
+				print "rechts1 index", index
+				print "rechts1 self.maxentry",self.maxentry	
+			self.firstFrame = True
+			index += 1
+			if index > self.maxentry:
+				index = 0
+			self.paintFrame()
+			self.firstFrame = False
+
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_VideoPlayer] def rightdown filename", filename	
+
+		if self.filelist.canDescent(index):
+			self["tvbanner"].hide()
+		else:	
+			if currentview != "fullcover":
+				self.showbanner = ePicLoad()
+				self.showbanner.PictureData.get().append(self.showScaledBanner)
+				short = shortname(filename)
+				newshort = short.lower()
+				newshort = newshort.replace(" ", "")
+				imdbmain = config.plugins.mc_imdb.savedir.getValue()
+		#		self["imdbbanner"].instance.setPixmap(LoadPixmap("/var/swap/imdb/" + newshort + ".posterorginal.jpg"))
+		
+				movienameserie = re.sub("e[0-9]{2}","",newshort.lower())
+				bannerdir = imdbmain + "/imdb/" + movienameserie + ".banner.jpg"
+				if pathExists(bannerdir):	
+					if self["tvbanner"].instance is not None:
+						self.showbanner.setPara((500, 100, self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+						self.showbanner_decode(bannerdir)
+				else:
+					self["tvbanner"].hide()
+						
+	def leftUp(self):
+		global currentview
+		global index
+		global showiframeStatus
+		self.DimmerTimer.stop()
+		if currentview != "cover":	
+			if len(self.filelist.getFileList()) == 1:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] leftUp skipped"
+				return
+			elif len(self.filelist.getFileList()) == 0:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] leftUp skipped"
+				return
+		else:
+			if len(self.trailerlist) == 1:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] leftUp skipped"
+				return
+			elif len(self.trailerlist) == 0:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] leftUp skipped"
+				return
+
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		global dimmerCK
+		if dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		if currentview != "cover":
+			self["filelist"].pageUp()
+			if currentview == "fullcover":
+				self.fullcoverView(index)		
+			elif showiframeStatus == False:
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus = True
+		else:
+			if showiframeStatus == False:	
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus = True
+
+			self.maxentry = len(self.trailerlist)-1		 
+			self.firstFrame = True
+			index -= 1
+			if index < 0:
+				index = self.maxentry
+			self.paintFrame()
+			self.firstFrame = False
+
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_VideoPlayer] def leftup filename", filename
+
+		if self.filelist.canDescent(index):
+			self["tvbanner"].hide()
+		else:
+			if currentview != "fullcover":
+				self.showbanner = ePicLoad()
+				self.showbanner.PictureData.get().append(self.showScaledBanner)
+				short = shortname(filename)
+				newshort = short.lower()
+				newshort = newshort.replace(" ", "")
+		#		self["imdbbanner"].instance.setPixmap(LoadPixmap("/var/swap/imdb/" + newshort + ".posterorginal.jpg"))
+				imdbmain = config.plugins.mc_imdb.savedir.getValue()
+				movienameserie = re.sub("e[0-9]{2}","",newshort.lower())
+				bannerdir = imdbmain + "/imdb/" + movienameserie + ".banner.jpg"
+				if pathExists(bannerdir):	
+					if self["tvbanner"].instance is not None:
+						self.showbanner.setPara((500, 100, self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+						self.showbanner_decode(bannerdir)
+				else:
+					self["tvbanner"].hide()
+
+
+	def up(self):
+		global currentview
+		global index
+		global showiframeStatus
+		self.DimmerTimer.stop()
+		if currentview != "cover":	
+			if len(self.filelist.getFileList()) == 1:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] up skipped"
+				return
+			elif len(self.filelist.getFileList()) == 0:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] up skipped"
+				return
+		else:
+			if len(self.trailerlist) == 1:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] up skipped"
+				return
+			elif len(self.trailerlist) == 0:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] up skipped"
+				return
+
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+
+		global dimmerCK
+		if dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+		
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		if currentview != "cover":
+			self["filelist"].up()
+			if currentview == "fullcover":
+				self.fullcoverView(index)
+			elif showiframeStatus == False:
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus = True
+		else:
+			if showiframeStatus == False:
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus = True
+
+			self.maxentry = len(self.trailerlist)-1
+			self.firstFrame = True
+			index -= self.thumbsX
+			if index < 0:
+				index = self.maxentry
+			self.paintFrame()
+			self.firstFrame = False
+			
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_VideoPlayer] def up filename", filename
+		
+		if self.filelist.canDescent(index):
+			self["tvbanner"].hide()
+		else:
+			if currentview != "fullcover":
+				self.showbanner = ePicLoad()
+				self.showbanner.PictureData.get().append(self.showScaledBanner)
+				short = shortname(filename)
+				newshort = short.lower()
+				newshort = newshort.replace(" ", "")
+		#		self["imdbbanner"].instance.setPixmap(LoadPixmap("/var/swap/imdb/" + newshort + ".posterorginal.jpg"))
+				imdbmain = config.plugins.mc_imdb.savedir.getValue()
+				movienameserie = re.sub("e[0-9]{2}","",newshort.lower())
+				bannerdir = imdbmain + "/imdb/" + movienameserie + ".banner.jpg"
+				if pathExists(bannerdir):	
+					if self["tvbanner"].instance is not None:
+						self.showbanner.setPara((500, 100, self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+						self.showbanner_decode(bannerdir)
+				else:
+					self["tvbanner"].hide()
+	
+	def down(self):
+		global currentview
+		global index
+		global showiframeStatus
+
+		self.DimmerTimer.stop()
+		if currentview != "cover":	
+			if len(self.filelist.getFileList()) == 1:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] down skipped"
+				return
+			elif len(self.filelist.getFileList()) == 0:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] down skipped"
+				return
+		else:
+			if len(self.trailerlist) == 1:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] down skipped"
+				return
+			elif len(self.trailerlist) == 0:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] down skipped"
+				return
+
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		global dimmerCK
+		if dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+		
+		if currentview != "cover":
+			self["filelist"].down()
+			if currentview == "fullcover":
+				self.fullcoverView(index)				
+			elif showiframeStatus == False:
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus = True
+		else:
+			if showiframeStatus == False:	
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus = True
+
+			self.maxentry = len(self.trailerlist)-1		 
+			self.firstFrame = True
+			index += self.thumbsX
+			if index > self.maxentry:
+				index = 0
+			self.paintFrame()
+			self.firstFrame = False
+
+		filename = self.filelist.getFilename(index)
+		if self.debug != "off":
+			print "[MC_VideoPlayer] def down filename", filename
+
+		if self.filelist.canDescent(index):
+			self["tvbanner"].hide()
+		else:
+			if currentview != "fullcover":
+				self.showbanner = ePicLoad()
+				self.showbanner.PictureData.get().append(self.showScaledBanner)
+				short = shortname(filename)
+				newshort = short.lower()
+				newshort = newshort.replace(" ", "")
+		#		self["imdbbanner"].instance.setPixmap(LoadPixmap("/var/swap/imdb/" + newshort + ".posterorginal.jpg"))
+				imdbmain = config.plugins.mc_imdb.savedir.getValue()
+				movienameserie = re.sub("e[0-9]{2}","",newshort.lower())
+				bannerdir = imdbmain + "/imdb/" + movienameserie + ".banner.jpg"
+				if pathExists(bannerdir):	
+					if self["tvbanner"].instance is not None:
+						self.showbanner.setPara((500, 100, self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+						self.showbanner_decode(bannerdir)
+				else:
+					self["tvbanner"].hide()
+
+	def showbanner_decode(self, input):
+		self.showbanner.startDecode(input)
+				
+	def showScaledBanner(self, picInfo=None):
+		ptr = self.showbanner.getData()
+		if ptr != None:
+			self["tvbanner"].instance.setPixmap(ptr.__deref__())
+			self["tvbanner"].show()
+			
+	def fullcoverView(self, index):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] fullcoverView" 
+		global currentview
+		global showiframeStatus
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+	
+		if self.filelist.canDescent(index):
+			self["stars"].hide()
+			self["nostars"].hide()
+			self["moviecover"].hide()
+			self["movieplot"].hide()
+			self["tvcover"].hide()
+			self["tvpreview"].hide()
+			self["tvplot"].hide()
+			self["imdbtitle"].hide()
+		  	if showiframeStatus == False:	
+				self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")	
+				showiframeStatus = True
+		else:
+			if currentview == "fullcover":
+				if self.debug != "off":
+					print "[MC_VideoPlayer] fullcoverView ok"
+				filename = self.filelist.getFilename(index)
+				short = shortname(filename)
+				newshort = short.lower()
+				newshort = newshort.replace(" ", "")
+				
+				if pathExists(imdbmain + "/imdb/" + newshort + ".imdb"):			
+					db = open(imdbmain + "/imdb/" + newshort + ".imdb").read()[:-1]
+	 				filter = []
+	 				list = []
+	 				filter.append("Plot")
+	 				filter.append("Popularity")
+	 				filter.append("Title")
+	 				filter.append("Network")
+	  				filter.append("Status")
+	   				filter.append("isMovie")
+	   				filter.append("isMvid")
+	   				filter.append("Band")
+	  				filter.append("Countrys")
+	   														
+	 				try:
+						lines = db.split('\n')
+						d = {}
+						self.moviedb = {}
+						key = ""
+						self.genreFilter = ""
+						for line in lines: 
+							if self.debug != "off":
+								print "Line: ", line
+							if ":" in line: 
+								key, text = (s.strip() for s in line.split(":", 1)) 
+		
+							if key in filter: 
+								d[key] = text
+
+						if d.has_key("Popularity"):
+							self["stars"].setValue(int(d["Popularity"])*10)
+							self["stars"].show()
+							self["nostars"].show()
+
+						isMovie = "True"
+						if d.has_key("isMovie"):
+							isMovie = d["isMovie"]
+
+						isMvid = "False"
+						if d.has_key("isMvid"):
+							isMvid = d["isMvid"]
+
+						Countrys = ""
+						if d.has_key("Countrys"):
+							Countrys = d["Countrys"]
+
+						Band = ""
+						if d.has_key("Band"):
+							Band = d["Band"]
+			
+						if str(isMovie) == "True":	
+							if self.debug != "off":
+								print "[MC_VideoPlayer] fullcoverView isMovie", isMovie 
+							if d.has_key("Plot"):
+								self["movieplot"].setText(str(d["Plot"]))
+	
+							if self["moviecover"].instance is not None:
+								self["moviecover"].instance.setPixmap(LoadPixmap(imdbmain + "/imdb/" + newshort + ".jpg"))
+							if d.has_key("Title"):
+								self["imdbtitle"].setText(d["Title"])
+							self["moviecover"].show()
+							self["movieplot"].show()
+							self["tvcover"].hide()
+							self["tvpreview"].hide()
+							self["tvplot"].hide()
+						else:
+							if self.debug != "off":
+								print "[MC_VideoPlayer] fullcoverView isMovie", isMovie
+							if d.has_key("Plot"):
+								self["tvplot"].setText(str(d["Plot"]))
+	
+							self.showcover = ePicLoad()
+							self.showcover.PictureData.get().append(self.showScaledCover)
+							if self["tvpreview"].instance is not None:
+								self.showcover.setPara((250, 150, self.FramebufferScale[0], self.FramebufferScale[1], True, 1, "#00000000"))
+								self.showcover_decode(imdbmain + "/imdb/" + newshort + ".posterpreview.jpg")
+							if self["tvcover"].instance is not None:
+								self["tvcover"].instance.setPixmap(LoadPixmap(imdbmain + "/imdb/" + newshort + ".jpg"))
+	
+							tvtitle = ""
+							if d.has_key("Title"):
+								tvtitle = d["Title"]
+							
+							if str(isMvid) == "True":
+								if d.has_key("Band"):
+									tvtitle += " @ " + str(d["Band"])	
+								if d.has_key("Countrys"):
+									tvtitle += " @ (" + str(d["Countrys"]) + ")"
+							else:
+								if d.has_key("Network"):
+									tvtitle += " @ " + str(d["Network"]) + " TV"
+								if d.has_key("Status"):
+									tvtitle += " @ (" + str(d["Status"]) + ")"
+
+							self["tvcover"].show()
+							self["tvpreview"].show()
+							self["tvplot"].show()
+							self["imdbtitle"].setText(str(tvtitle))
+							self["moviecover"].hide()
+							self["movieplot"].hide()			
+						self["imdbtitle"].show()
+
+					except OSError, e: 
+						if self.debug != "off":
+							print "OSError: ", e
+					except IOError, e: 
+						if self.debug != "off":
+							print "OSError: ", e
+				else:
+					self["stars"].hide()
+					self["nostars"].hide()
+					self["moviecover"].hide()
+					self["movieplot"].hide()
+					self["tvcover"].hide()
+					self["tvpreview"].hide()
+					self["tvplot"].hide()
+					self["imdbtitle"].hide()
+
+				movienameserie = re.sub("e[0-9]{2}","",newshort.lower())
+				filestring = imdbmain + "/imdb/" + str(movienameserie) + ".backdrop.mvi"
+
+				if not pathExists(imdbmain + "/imdb/" + str(movienameserie) + ".backdrop.mvi"):
+					if showiframeStatus == False:
+						self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")
+						showiframeStatus = True
+				else:
+					self.showiframe.showStillpicture(imdbmain + "/imdb/" + str(movienameserie) + ".backdrop.mvi")
+					showiframeStatus = False
+
+	def showcover_decode(self, input):
+		self.showcover.startDecode(input)
+				
+	def showScaledCover(self, picInfo=None):
+		ptr = self.showcover.getData()
+		if ptr != None:
+			self["tvpreview"].instance.setPixmap(ptr.__deref__())
+			self["tvpreview"].show()
+
+	def addPlaylistParser(self, parser, extension):
+		self.playlistparsers[extension] = parser	
+
+	def stopEntry(self):
+		self.playlist.stopFile()
+		self.session.nav.playService(None)
+		self.show()
+		config.plugins.mc_playing.Enabled = ConfigYesNo(default=False)
+
+	def changeEntry(self, playindex):
+		self.playlist.setCurrentPlaying(playindex)
+		if self.debug != "off":
+			print "[MC_VideoPlayer] playlist index", playindex
+		self.playEntry()
+
+	def nextEntry(self):
+		next = self.playlist.getCurrentIndex() + 1
+		if self.debug != "off":
+			print "[MC_VideoPlayer] nextEntry: self.playlist.getCurrentIndex()",self.playlist.getCurrentIndex()
+			print "[MC_VideoPlayer] nextEntry: next",next
+			print "[MC_VideoPlayer] nextEntry: len(self.playlist)",len(self.playlist)
+
+		if next < len(self.playlist):
+			if self.debug != "off":
+				print "[MC_VideoPlayer] nextEntry: self.changeEntry"
+			self.changeEntry(next)
+		elif ( len(self.playlist) > 0 ) and ( config.plugins.mc_repeat.enabled.getValue() == True ):
+			if self.debug != "off":
+				print "[MC_VideoPlayer] nextEntry: self.stopEntry > self.changeEntry"
+			self.stopEntry()
+			self.changeEntry(0)
+		else:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] nextEntry: self.stopEntry"
+			self.stopEntry()
+
+	def previousEntry(self):
+		next = self.playlist.getCurrentIndex() - 1
+		if next >= 0:
+			self.changeEntry(next)
+
+	def playEntry(self):
+		if len(self.playlist.getServiceRefList()):
+			global showiframeStatus
+			currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
+			self.MoviePlayerOpen = True
+			self.DimmerTimer.stop()
+			liste = self.playlist.getServiceRefList()
+			self.showiframe.finishStillPicture()
+			showiframeStatus = False	
+			self.session.openWithCallback(self.leaveMoviePlayer, MoviePlayerObi, currref, self.showFileInfo, self.playlist)
+			self.unPauseService()
+
+	def leaveMoviePlayer(self, answer = None):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] leaveMoviePlayer: ", answer
+		self.MoviePlayerOpen = False
+		print "[MC_VideoPlayer] leaveMoviePlayer: ", answer
+		if answer == 1:
+			self.session.nav.playService(None)
+			self.nextEntry()
+		elif answer == -1:
+			self.session.nav.playService(None)
+			self.previousEntry()
+		else:
+			self.stopEntry()
+
+	def unPauseService(self):
+		self.setSeekState(self.SEEK_STATE_PLAY)
+
+	def updatedSeekState(self):
+		if self.seekstate == self.SEEK_STATE_PAUSE:
+			self.playlist.pauseFile()
+		elif self.seekstate == self.SEEK_STATE_PLAY:
+			self.playlist.playFile()
+		elif self.isStateForward(self.seekstate):
+			self.playlist.forwardFile()
+		elif self.isStateBackward(self.seekstate):
+			self.playlist.rewindFile()
+
+	def showAfterSeek(self):
+		self.show()
+
+	def checkSkipShowHideLock(self):
+		self.updatedSeekState()
+
+	def xplayEntry(self):
+		if self.currList == "playlist":
+			self.playEntry()
+		else:
+			self.stopEntry()
+			self.playlist.clear()
+			self.savePlaylistOnExit = True
+			sel = self.filelist.getSelection()
+			if sel:
+				if currentview == "cover":
+					if sel[7]: # can descent
+						self.copyDirectory(sel[5])
+					else:
+						if self.filelist.getServiceRef().type == 4098: # playlist
+							self.copyFile()
+						else:
+							# add files to playlist
+							self.copyDirectory(os_path.dirname(sel[5].getPath()) + "/", recursive = False)
+				else:
+					if sel[1]: # can descent
+						# add directory to playlist
+						self.copyDirectory(sel[0])
+					else:
+						if self.filelist.getServiceRef().type == 4098: # playlist
+							self.copyFile()
+						else:
+							# add files to playlist
+							self.copyDirectory(os_path.dirname(sel[0].getPath()) + "/", recursive = False)
+
+			if len(self.playlist) > 0:
+				self.changeEntry(0)
+
+	def copyDirectory(self, directory, recursive = True):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] copyDirectory", directory
+		if directory == '/':
+			if self.debug != "off":
+				print "[MC_VideoPlayer] refusing to operate on /"
+			return
+		global currentview
+		filelist = FileList(directory, useServiceRef = True, showMountpoints = False, isTop = True)
+		for x in filelist.getFileList():
+			if x[0][1] == True: #isDir
+				if recursive:
+					if x[0][0] != directory:
+						self.copyDirectory(x[0][0])
+			else:
+				if x[0][0].getPath().upper().endswith(".RAR"):
+					if self.debug != "off":
+						print "[MC_VideoPlayer] skip rar file"
+				else:
+					self.playlist.addFile(x[0][0])
+		
+		self.playlist.updateList()
+		if self.debug != "off":
+			print "[MC_VideoPlayer] copyDirectory done", directory
+
+	def error(self, error):
+		self.session.open(MC_MessageBox,("UNEXPECTED ERROR:\n%s") % (error),  MC_MessageBox.TYPE_INFO)
+
+	def showDimmer(self):
+		global currentview
+		global dimmerCK
+		if config.plugins.mc_all.showDimmer.getValue() and currentview != "fullcover":
+			dimmerCK = True
+			Console().ePopen(('stfbcontrol a 80'))					
+
+	def Exit(self):
+		global lastpath
+		config.plugins.mc_playing.Enabled = ConfigYesNo(default=False)
+		config.SecondInfobar.Enabled = ConfigYesNo(default=True)
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.clear()
+		global dimmerCK
+		if dimmerCK == True:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] saverCK=", dimmerCK
+			Console().ePopen(('stfbcontrol a 255'))
+		dimmerCK = False
+		if self.isVisible == False:
+			self.visibility()
+			return
+		if self.filelist.getCurrentDirectory() is None:
+			config.plugins.mc_vp.lastDir.value = "devicelist"
+		else:
+			config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
+		self.session.nav.stopService()
+		self.DimmerTimer.stop()
+		config.plugins.mc_vp.save()
+		config.plugins.mc_all.save()
+		config.plugins.mc_vp_view.save()
+		config.plugins.mc_vp_sort.save()
+		config.plugins.mc_vpcover.save()
+		config.plugins.mc_imdb.save()
+		config.plugins.mc_imdblang.save()
+		config.plugins.mc_repeat.save()
+
+		if self.debug != "off":
+			print "[MC_VideoPlayer] Exit umount", lastpath
+
+		Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep rarfs | grep -v '/dev/' | cut -d ' ' -f3`; killall -9 rarfs"))
+		Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep -v '/dev/' | cut -d ' ' -f3`; /bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`; killall -9 rarfs fusesmb curlftpfs"))
+		if currentview == "fullcover":
+			if self.debug != "off":
+				print "[MC:VideoPlayer] stop e2control"
+			self["listview"].setList(self.filelist)						
+			self.showiframe.finishStillPicture()
+			Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+		else:
+			self.showiframe.finishStillPicture()
+			Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+
+		if self.debug != "off":
+			print "[MC_VideoPlayer] Set policy to " + self.policy + "again..."
+			print "[MC_VideoPlayer] Set aspect to " + self.aspect + "again..."
+			print "[MC_VideoPlayer] Set wss to " + self.wss + "again..."
+		open("/proc/stb/video/aspect", "w").write(self.aspect)
+		open("/proc/stb/video/policy", "w").write(self.policy)
+		open("/proc/stb/denc/0/wss", "w").write(self.wss)
+
+		self.close()
+		
+	def __evDecodeError(self):
+		currPlay = self.session.nav.getCurrentService()
+		sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType)
+		if self.debug != "off":
+			print "[MC_VideoPlayer] [__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
+		self.session.open(MC_MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MC_MessageBox.TYPE_INFO,timeout = 10 )
+
+	def __evPluginError(self):
+		currPlay = self.session.nav.getCurrentService()
+		message = currPlay.info().getInfoString(iServiceInformation.sUser+12)
+		if self.debug != "off":
+			print "[MC_VideoPlayer] [__evPluginError]" , message
+		self.session.open(MC_MessageBox, ("GStreamer Error: missing %s") % message, type = MC_MessageBox.TYPE_INFO,timeout = 20 ) 
+		
+	def showFileInfo(self):
+		self.DimmerTimer.stop()
+
+		global index
+		if self.debug != "off":
+			print "showfileinfo",index
+		imdbmain = config.plugins.mc_imdb.savedir.getValue()
+
+		currPlay = self.session.nav.getCurrentService()
+		if self.debug != "off":
+			print "currPlay", currPlay
+#		check = False
+		if currPlay is not None:
+			check = True
+		elif self.filelist.canDescent(index):
+			check = False
+		else:
+			check = True		
+		if check is True:	
+#			return
+#		else:
+			Console().ePopen(('stfbcontrol a 255'))
+			currPlay = self.session.nav.getCurrentService()
+			moviename = self.filelist.getFilename(index)
+			if self.debug != "off":
+				print moviename
+			short = shortname(moviename)
+			newshort = short.lower()
+			newshort = newshort.replace(" ", "")
+			#moviename = newshort		
+
+			text0 = "\n"
+#				text1 = "--------------------------------------------------\n"
+			text1 = "--------------"
+#				text11 = "--------------"
+			text2 = "Imdb Details:\n"
+			error2 = "no data found on your drive, please press i in your filelist and add imdb infos from imdb.com !\n"
+			bunner2 = "-------------\n"
+			text3 = "FileInfos:\n"
+			bunner3 = "-----------\n"
+			text4 = "VideoInfos:\n"
+			bunner4 = "------------\n"
+			text5 = "PlayList:\n"
+			bunner5 = "----------\n"
+			text6 = "End of line.\n"
+				
+			showtext_file = "\n"
+			showtext_imdb = "\n"
+			
+			# imdb
+			imdbfile = imdbmain + "/imdb/" + newshort + ".imdb"
+			tlist = [ ]
+			if fileExists(imdbfile):
+				headertext = text2 + text1
+#					headertext = bunner2 + text2
+				text = command('cat ' + imdbfile)
+				
+				text = re.sub("Plot:\t","Plot:\n",text)
+				showtext_imdb = headertext + text + text0	
+			else:
+				headertext = text2 + text1
+				text = error2
+				showtext_imdb = headertext + text + text0	
+			
+			# file	
+			headertext = text3 + text1 + text0
+#				headertext = bunner3 + text3
+			stats = os.stat(moviename)
+			filesize = stats[6]
+			timestamp = time.localtime(stats[8])
+			date = time.strftime("%m/%d/%y %H:%M:%S", timestamp)
+
+			if filesize >= 1024:
+				filesize = filesize / 1024
+				end = " KB"
+				if filesize >= 1024:
+					filesize = filesize / 1024
+					end = " MB"
+				if filesize >= 1024:
+					filesize = float(filesize) / float(1024)
+					# float auf 2 Nachkommastellen runden
+					filesize = round(filesize,2)
+					end = " GB"
+			elif filesize == 0:
+				filesize = ""
+				end = ""
+			else:
+				end = " B"
+			
+			text_size = "Filesize: " + str(filesize) + end + text0
+			text_date = "Timestamp: " + date + text0
+			text = text_size + text_date
+			showtext_file = headertext + text + text0
+
+			headertext = text4 + text1 + text0
+#				headertext = bunner4 + text4
+			
+			xresString = open("/proc/stb/vmpeg/0/xres", "r").read()
+			yresString = open("/proc/stb/vmpeg/0/yres", "r").read()
+			fpsString = open("/proc/stb/vmpeg/0/framerate", "r").read()
+			xres = int(xresString, 16)
+			yres = int(yresString, 16)
+			fps = int(fpsString, 16)
+			fpsFloat = float(fps)
+			fpsFloat = fpsFloat/1000
+
+			text = "Format: " + str(xres) + "x" + str(yres) + "@" + str(fpsFloat) + "hz\n"
+			showtext_video = headertext + text + text0
+
+			if currPlay is not None:
+				# playlist
+				if len(self.playlist.getServiceRefList()):
+					currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
+					liste = self.playlist.getServiceRefList()
+					count = 0
+					headertext = text5 + text1 + text0
+	#					headertext = bunner5 + text5
+					text = ""
+					for a in liste:
+						count += 1
+						files = a.getPath()
+						name = files.split('/')[-1]
+						text_playlist = "(" + str(count) + ")" + name + text0
+						text += text_playlist
+					showtext_playlist = headertext + text + text0 
+
+				showtext = showtext_playlist + showtext_video + showtext_file + showtext_imdb 				
+			else:
+				showtext = showtext_video + showtext_file + showtext_imdb 				
+			moviename = newshort					
+			savedir = str(imdbmain) + "/imdb/"
+			showinfo = True
+			
+			movienameserie = re.sub("e[0-9]{2}","",moviename.lower())
+			self.session.open(MC_VideoImdbView, showtext, savedir + moviename + ".jpg", savedir + moviename + ".coverbig.jpg", savedir + moviename + ".posterorginal.jpg", savedir + moviename + ".postermid.jpg", savedir + moviename + ".posterthumb.jpg", savedir + moviename + ".postercover.jpg" , savedir + moviename + ".posterpreview.jpg" , savedir + movienameserie + ".banner.jpg" , savedir + movienameserie + ".backdrop.jpg", savedir + movienameserie + ".backdrop.mvi", savedir, moviename, showinfo)
+
+	def view(self):
+		self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")
+		self.DimmerTimer.stop()
+		Console().ePopen(('stfbcontrol a 255'))
+		list = []
+		list.append((_("default file view"), "default"))
+		list.append((_("big file view"), "big"))
+		list.append((_("detailed file view"), "details"))
+		list.append((_("graphical file view with IMDB cover"), "cover"))
+		list.append((_("graphical file view with IMDB fullcover background"), "fullcover"))
+		list.append((_("file view with IMDB cover option 1"), "imdbcover"))
+		list.append((_("file view with IMDB cover option 2"), "imdbcover2"))
+		list.append((_("file view with IMDB cover option 3"), "imdbcover3"))
+		self.session.openWithCallback(self.viewingConfirmed, MC_ChoiceBox, title=_("Change view temporary to..."), list = list)
+
+	def viewingConfirmed(self, answer):
+		global art
+		global itemheight
+		global fontsize
+		
+		answer = answer and answer[1]
+		if answer == "big":
+			art = 3
+			itemheight = 35
+			fontsize = 25
+			tmpview = "big"
+		elif answer == "details":
+			art = 2
+			itemheight = 23
+			fontsize = 18
+			tmpview = "details"
+		elif answer == "imdbcover":
+			art = 4
+			itemheight = 160
+			fontsize = 18
+			tmpview = "imdbcover"
+		elif answer == "imdbcover2":
+			art = 5
+			itemheight = 160
+			fontsize = 18
+			tmpview = "imdbcover2"
+		elif answer == "imdbcover3":
+			art = 6
+			itemheight = 180
+			fontsize = 18	
+			tmpview = "imdbcover3"
+		elif answer == "cover":			
+			art = 11
+			itemheight = 23
+			fontsize = 18
+			tmpview = "cover"
+		elif answer == "fullcover":
+			mencoder = command("which mencoder | wc -l")
+			if self.debug != "off":
+				print "mencoder", mencoder 
+#			if str(mencoder) == "0":
+#				self.session.open(MC_MessageBox, 'Please install ipk-swapmediacenter-mencoder checkputput: (%s)' % (mencoder), MC_MessageBox.TYPE_ERROR)
+				#return	
+			art = 7
+			itemheight = 32	
+			fontsize = 18
+			tmpview = "fullcover"
+		elif answer == "default":
+			art = 1
+			itemheight = 23
+			fontsize = 18
+			tmpview = "default"
+		else:
+			art = 1
+			itemheight = 23
+			fontsize = 18
+			tmpview = "error"
+
+		global currentview
+
+		Console().ePopen(('stfbcontrol a 255'))
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		if tmpview == "error" or tmpview == currentview:
+			if self.debug != "off":
+				print "[VideoPlayer] skip viewchange from %s to %s" % (currentview,tmpview)
+			return
+		if tmpsort is None:
+			sort = config.plugins.mc_vp_sort.enabled.getValue()
+		else:
+			sort = tmpsort
+
+		if self.filelist.getCurrentDirectory() is None:
+			config.plugins.mc_vp.lastDir.value = "/"
+		else:
+			config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
+					
+		if currentview == tmpview:
+			if self.debug != "off":
+				print "[VideoPlayer] skip viewchange from %s to %s" % (currentview,tmpview)
+		elif currentview == "fullcover":
+			if self.debug != "off":
+				print "[VideoPlayer] viewchange from %s to %s" % (currentview,tmpview)
+			if tmpview != "fullcover":
+				if self.debug != "off":
+					print "[VideoPlayer] restart VideoPlayer"
+				self["filelist"].hide()	
+				self["listview"].hide()
+				self["frame"].hide()
+				self["moviecover"].hide()
+				self["movieplot"].hide()
+				self["tvcover"].hide()
+				self["tvpreview"].hide()
+				self["tvplot"].hide()
+				self["imdbtitle"].hide()
+				self["nostars"].hide()
+				self["stars"].hide()
+				for x in range(self.thumbsC):
+					posvar = "center"
+					self["label"+str(x)].setText("")
+					self["thumb"+str(x)].hide()
+					self["thumbreal"+str(x)].hide()
+				self.showiframe.finishStillPicture()
+				Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+				self.session.open(MC_VideoPlayer,tmpviewin = tmpview)
+				self.close()
+		elif currentview == "cover":
+			if self.debug != "off":
+				print "[VideoPlayer] viewchange from %s to %s" % (currentview,tmpview)
+			if tmpview != "cover":
+				if self.debug != "off":
+					print "[VideoPlayer] restart VideoPlayer"
+				self["filelist"].hide()	
+				self["listview"].hide()
+				self["frame"].hide()
+				self["moviecover"].hide()
+				self["movieplot"].hide()
+				self["tvcover"].hide()
+				self["tvpreview"].hide()
+				self["tvplot"].hide()
+				self["imdbtitle"].hide()
+				self["nostars"].hide()
+				self["stars"].hide()
+				for x in range(self.thumbsC):
+					posvar = "center"
+					self["label"+str(x)].setText("")
+					self["thumb"+str(x)].hide()
+					self["thumbreal"+str(x)].hide()
+				self.showiframe.finishStillPicture()
+				Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+				self.session.open(MC_VideoPlayer,tmpviewin = tmpview)
+				self.close()
+		else:
+			if self.debug != "off":
+				print "[VideoPlayer] viewchange from %s to %s" % (currentview,tmpview)
+			if tmpview == "cover":
+				if self.debug != "off":
+					print "[VideoPlayer] tmpview == cover"
+				self["filelist"].hide()				
+				currentview = tmpview	
+				index = 0
+				self.filename = self.filelist.getCurrentDirectory()
+				self.firstFrame = False
+				self.GetTrailerList(self.firstFrame,self.filename,sort)	
+			elif tmpview == "fullcover":
+				if self.debug != "off":
+					print "[VideoPlayer] restart VideoPlayer"
+				self["filelist"].hide()	
+				self["listview"].hide()
+				self["frame"].hide()
+				self["moviecover"].hide()
+				self["movieplot"].hide()
+				self["tvcover"].hide()
+				self["tvpreview"].hide()
+				self["tvplot"].hide()
+				self["imdbtitle"].hide()
+				self["nostars"].hide()
+				self["stars"].hide()
+				for x in range(self.thumbsC):
+					posvar = "center"
+					self["label"+str(x)].setText("")
+					self["thumb"+str(x)].hide()
+					self["thumbreal"+str(x)].hide()
+				self.showiframe.finishStillPicture()
+				Console().ePopen(("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/e2control stop"))
+
+				self.session.open(MC_VideoPlayer,tmpviewin = tmpview)
+				self.close()
+			else:
+				if self.debug != "off":
+					print "[VideoPlayer] tmpview != cover else"
+				currentview = tmpview	
+				self.filelist.refresh(fontsize, itemheight, art, sort)
+		# self.show() vieleichjt wird filelist sichtbar			
+	def sort(self):
+		self.showiframe.showStillpicture("/var/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/default.mvi")
+		self.DimmerTimer.stop()
+		Console().ePopen(('stfbcontrol a 255'))
+		list = []
+		list.append((_("sorted by default"), "default"))
+		list.append((_("backward sorting by date"), "date"))
+		list.append((_("sorted by date in ascending order"), "datereverse"))
+		list.append((_("sorted by alphabet in ascending order"), "alpha"))
+		list.append((_("backward sorting by alphabet"), "alphareverse"))
+		list.append((_("backward sorting by size"), "size"))
+		list.append((_("sorted by size in ascending order"), "sizereverse"))
+		self.session.openWithCallback(self.sortingConfirmed, MC_ChoiceBox, title=_("How do you want to sort your filelist temporary?"), list = list)
+
+	def sortingConfirmed(self, answer):
+		global index
+		global art
+		global itemheight
+		global fontsize
+		global sort
+		global currentview
+		answer = answer and answer[1]
+		if answer == "date":
+			tmpsort = "date"
+		elif answer == "datereverse":
+			tmpsort = "datereverse"
+		elif answer == "alpha":
+			tmpsort = "alpha"
+		elif answer == "alphareverse":
+			tmpsort = "alphareverse"
+		elif answer == "size":
+			tmpsort = "size"
+		elif answer == "sizereverse":
+			tmpsort = "sizereverse"
+		elif answer == "default":
+			tmpsort = "default"
+		else:
+			tmpsort = "error"
+
+		Console().ePopen(('stfbcontrol a 255'))
+		self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		currentsort = sort
+		if tmpsort == "error" or tmpsort == currentsort:
+			if self.debug != "off":
+				print "[VideoPlayer] skip sortchange from %s to %s" % (currentsort,tmpsort)
+			return
+		else:
+			if self.debug != "off":
+				print "[VideoPlayer] sortchange from %s to %s" % (currentsort,tmpsort)
+			if currentview == "cover":
+				self.filename = self.filelist.getCurrentDirectory()
+				self.firstFrame = False
+				self.GetTrailerList(self.firstFrame,self.filename,tmpsort)
+			else:
+				self.filelist.refresh(fontsize, itemheight, art, tmpsort)
+		
+class MyPlayList(PlayList):
+	def __init__(self):
+		PlayList.__init__(self)
+
+	def PlayListShuffle(self):
+		random.shuffle(self.list)
+		self.l.setList(self.list)
+		self.currPlaying = -1
+		self.oldCurrPlaying = -1
+  		
+class VideoPlayerSettings(Screen):
+	skin = """<screen position="center,center" size="630,350" title="MC-VideoPlayer Settings" backgroundColor="#000000" >
+		<widget name="configlist" position="10,10" size="610,300" />
+		<eLabel backgroundColor="red" position="143,340" size="140,3" zPosition="2"/>
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+		<widget name="key_red" position="143,308" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+		<eLabel backgroundColor="blue" position="347,340" size="140,3" zPosition="2"/>
+		<widget name="key_blue" position="347,308" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
+	</screen>"""
+
+	def __init__(self, session, filelist, currentview):
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+		self.skin = VideoPlayerSettings.skin
+		self.filelist = filelist
+		self.view = currentview
+		self.lastview = config.plugins.mc_vp_view.enabled.getValue()
+		Screen.__init__(self, session)
+		self["key_blue"] = Button(_("Network"))
+		self["key_red"] = Button(_("Back"))
+		self["show_title"] = StaticText(_("MediaCenter Videoplayer Settings"))
+		self["actions"] = NumberActionMap(["SetupActions","OkCancelActions"],
+		{
+			"ok": self.keyOK,
+			"cancel": self.keyOK,
+			"left": self.keyLeft,
+			"right": self.keyRight,
+			"0": self.keyNumber,
+			"1": self.keyNumber,
+			"2": self.keyNumber,
+			"3": self.keyNumber,
+			"4": self.keyNumber,
+			"5": self.keyNumber,
+			"6": self.keyNumber,
+			"7": self.keyNumber,
+			"8": self.keyNumber,
+			"9": self.keyNumber
+		}, -1)
+		self["ColorActions"] = HelpableActionMap(self, "ColorActions",
+			{
+				"blue": self.netWork,
+			})
+
+		savedir = config.plugins.mc_imdb.savedir.getValue()
+		self.imdblist = [(savedir)] 
+
+		if savedir != "/var/swap":
+			self.imdblist += ["/var/swap"]
+
+		cifs = command('cat /proc/mounts | grep cifs | cut -d " " -f2')
+		if cifs != "":
+			check = command('cat /proc/mounts | grep cifs | cut -d " " -f1')
+			if check != "/dev/root":
+				cifs = cifs.split("\n")
+				self.imdblist += cifs
+
+		nfs = command('cat /proc/mounts | grep nfs | cut -d " " -f2')
+		if nfs != "":
+			check = command('cat /proc/mounts | grep nfs | cut -d " " -f1')
+			if check != "/dev/root":
+				nfs = nfs.split("\n")
+				self.imdblist += nfs
+
+		jfs = command('cat /proc/mounts | grep jfs | cut -d " " -f2')
+		if jfs != "":
+			check = command('cat /proc/mounts | grep jfs | cut -d " " -f1')
+			if check != "/dev/root":
+				jfs = jfs.split("\n")
+				self.imdblist += jfs
+
+		ext3 = command('cat /proc/mounts | grep ext3 | cut -d " " -f2')
+		if ext3 != "":
+			check = command('cat /proc/mounts | grep ext3 | cut -d " " -f1')
+			if check != "/dev/root":
+				ext3 = ext3.split("\n")
+				self.imdblist += ext3
+
+		ext2 = command('cat /proc/mounts | grep ext2 | cut -d " " -f2')
+		if ext2 != "":
+			check = command('cat /proc/mounts | grep ext2 | cut -d " " -f1')
+			if check != "/dev/root":
+				ext2 = ext2.split("\n")
+				self.imdblist += ext2
+
+		vfat = command('cat /proc/mounts | grep vfat | cut -d " " -f2')
+		if vfat != "":
+			check = command('cat /proc/mounts | grep vfat | cut -d " " -f2')
+			if check != "/var/swap":
+				vfat = vfat.split("\n")
+				self.imdblist += vfat
+
+		ntfs3g = command('cat /proc/mounts | grep ntfs-3g | cut -d " " -f2')
+		if ntfs3g != "":
+			ntfs3g = ntfs3g.split("\n")
+			self.imdblist += ntfs3g
+
+		ntfsmount = command('cat /proc/mounts | grep ntfsmount | cut -d " " -f2')
+		if ntfsmount != "":
+			ntfsmount = ntfsmount.split("\n")
+			self.imdblist += ntfsmount
+
+
+		self.mc_imdb_savedir = ConfigSelection(self.imdblist) 
+		self.mc_imdb_savedir.value = config.plugins.mc_imdb.savedir.getValue()
+
+		self.list = []
+		self["configlist"] = ConfigList(self.list)
+		self.list.append(getConfigListEntry(_("Dimmer Enable"), config.plugins.mc_all.showDimmer))
+		self.list.append(getConfigListEntry(_("Dimmer Delay"), config.plugins.mc_all.dimmer_delay))
+		self.list.append(getConfigListEntry(_("Standard filelist sorting..."), config.plugins.mc_vp_sort.enabled))
+		self.list.append(getConfigListEntry(_("Standard filelist viewing"), config.plugins.mc_vp_view.enabled))
+		self.list.append(getConfigListEntry(_("AutoSleep Enable"), config.plugins.mc_vp_autoSleep.enabled))
+		self.list.append(getConfigListEntry(_("AutoSleep Delay"), config.plugins.mc_vp_autoSleep.delay))
+		self.list.append(getConfigListEntry(_("Repeat current file"), config.plugins.mc_repeat.enabled))
+		self.list.append(getConfigListEntry(_("resize covers for filelist"), config.plugins.mc_vpcover.enabled))
+		self.list.append(getConfigListEntry(_("Imdb data: save directory"), self.mc_imdb_savedir))
+		self.list.append(getConfigListEntry(_("Imdb data: update existing data"), config.plugins.mc_imdbreplace.enabled))
+		self.list.append(getConfigListEntry(_("Imdb data: prefered search language"), config.plugins.mc_imdblang.default))
+		self.list.append(getConfigListEntry(_("Imdb data: background search during playing"), config.plugins.mc_imdbauto.enabled))
+
+	def keyExit(self):
+		evfd.getInstance().vfd_write_string("VIDEOPLAYER")	
+		if self.debug != "off":
+			print "[MC_VideoPlayer] settings closed (skiped saved settings)"  
+		changeview = config.plugins.mc_vp_view.enabled.getValue()
+		if self.lastview == changeview:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] restart and give last view back:", self.view
+			self["configlist"].hide()
+			self.session.open(MC_VideoPlayer,tmpviewin = self.view)
+		else:		
+			if self.debug != "off":
+				print "[MC_VideoPlayer] restart"
+			self["configlist"].hide()
+			self.session.open(MC_VideoPlayer)
+		self.close()
+
+	def keyOK(self):
+		evfd.getInstance().vfd_write_string("VIDEOPLAYER")	
+		if self.debug != "off":
+			print "[MC_VideoPlayer] settings closed (saved settings)"  
+			
+		config.plugins.mc_vp.save()
+		config.plugins.mc_all.save()
+		config.plugins.mc_vp_view.save()
+		config.plugins.mc_vp_sort.save()
+		config.plugins.mc_vp_autoSleep.save()
+		config.plugins.mc_vpcover.save()
+		config.plugins.mc_imdb.savedir.value = self.mc_imdb_savedir.value
+		config.plugins.mc_imdb.save()
+		config.plugins.mc_imdblang.save()
+		config.plugins.mc_imdbauto.save()
+		config.plugins.mc_imdbreplace.save()
+		config.plugins.mc_repeat.save()
+		
+		changeview = config.plugins.mc_vp_view.enabled.getValue()
+		if self.lastview == changeview:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] restart and give last view back:", self.view
+			self["configlist"].hide()
+			self.session.open(MC_VideoPlayer,tmpviewin = self.view)
+		else:		
+			if self.debug != "off":
+				print "[MC_VideoPlayer] restart"
+			self["configlist"].hide()
+			self.session.open(MC_VideoPlayer)
+		self.close()
+
+	def keyLeft(self):
+		self["configlist"].handleKey(KEY_LEFT)
+	def keyRight(self):
+		self["configlist"].handleKey(KEY_RIGHT)
+	def keyNumber(self, number):
+		self["configlist"].handleKey(KEY_0 + number)
+	def netWork(self):
+		self.session.open(NetworkAdapterSelection)
+
+class MoviePlayerObi(InfoBarShowHide, \
+		InfoBarSeek, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications, InfoBarAspectSelection, InfoBarSecondInfobar,
+		InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarSimpleEventView, InfoBarResolutionSelection,
+		InfoBarMoviePlayerSummarySupport, InfoBarSubtitleSupport, Screen, InfoBarTeletextPlugin,
+		InfoBarServiceErrorPopupSupport):
+	ENABLE_RESUME_SUPPORT = True
+	ALLOW_SUSPEND = True
+
+	def __init__(self, session, service, showFileInfo, playlist):
+		Screen.__init__(self, session)
+		InfoBarSubtitleSupport.__init__(self)
+		InfoBarAspectSelection.__init__(self)
+		InfoBarAudioSelection.__init__(self)
+		InfoBarSecondInfobar.__init__(self)
+		InfoBarSeek.__init__(self, actionmap = "MediaCenterSeekActions")
+		self.debug = command('cat /var/etc/autostart/start-config | grep debug | cut -d = -f2')
+
+		config.plugins.mc_playing.Enabled = ConfigYesNo(default=True)
+
+		self["actions"] = HelpableActionMap(self, "MoviePlayerActions",
+			{
+				"leavePlayer": (self.leavePlayer, _("leave movie player..."))
+			})
+
+		self["MediaPlayerActions"] = HelpableActionMap(self, "MediaPlayerActions",
+			{
+				"subtitles": (self.subtitleSelection, _("Subtitle selection")),
+				"prevBouquet": (self.previousMarkOrEntry, _("play from previous mark or playlist entry")),
+				"nextBouquet": (self.nextMarkOrEntry, _("play from next mark or playlist entry")),
+				"play": (self.showPlaylist, "show playlist"),
+			}, -2)
+			
+		self["ColorActions"] = HelpableActionMap(self, "ColorActions",
+			{
+				"blue": (self.sleepTimer, _("Sleep Timer")),
+				"red": (self.videoTune, _("Video Tune")),
+				"yellow": (self.audioSelection, _("Audio Menu")),				
+			})
+		
+		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
+			{
+				"ok": (self.change_ratio, "Change Ratio old"),
+			}, -2)
+
+		for x in HelpableScreen, InfoBarShowHide, \
+				InfoBarSeek, \
+				InfoBarAudioSelection, InfoBarNotifications, InfoBarSimpleEventView, \
+				InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport,\
+				InfoBarMoviePlayerSummarySupport, InfoBarSubtitleSupport, \
+				InfoBarTeletextPlugin, InfoBarServiceErrorPopupSupport:
+			x.__init__(self)
+		self.session.nav.playService(service)
+		self.showFileInfo = showFileInfo
+		self.returning = False
+		self.playlist = playlist
+
+	def showPlaylist(self):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] showPlaylist playlist leng (%s)" % (len(self.playlist))
+
+		print "[MC_VideoPlayer] showPlaylist playlist leng (%s)" % (len(self.playlist))
+
+		if len(self.playlist) > 1:
+			if len(self.playlist.getServiceRefList()) and len(self.playlist) > 1 and self.seekstate[3] == '>':
+				currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
+				liste = self.playlist.getServiceRefList()
+				count = 0
+				text0 = "\n"
+				text1 = "--------------"
+				text5 = "PlayList:\n"
+				bunner5 = "----------\n"
+				headertext = text5 + text1 + text0
+				text = ""
+				for a in liste:
+					count += 1
+					files = a.getPath()
+					name = files.split('/')[-1]
+					text_playlist = "(" + str(count) + ")" + name + text0
+					text += text_playlist
+				showtext_playlist = headertext + text + text0 
+				showtext = showtext_playlist
+				showinfo = True
+				self.session.open(MC_VideoPlaylistInfoView, showtext, self.playlist)
+			else:
+				self.setSeekState(self.SEEK_STATE_PLAY)
+	
+				if self.debug != "off":
+					print "[MC_VideoPlayer] showPlaylist  skipped singel play"
+		else:
+			self.setSeekState(self.SEEK_STATE_PLAY)
+
+			if self.debug != "off":
+				print "[MC_VideoPlayer] showPlaylist  skipped singel play"
+
+
+	def nextMarkOrEntry(self):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] nextMarkOrEntry  playlist leng (%s)" % (len(self.playlist))
+		if len(self.playlist) > 0:
+			if not self.jumpPreviousNextMark(lambda x: x):
+				if self.debug != "off":
+					print "[MC_VideoPlayer] nextMarkOrEntry if"
+				self.is_closing = True
+				self.close(1)
+			else:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] nextMarkOrEntry else"
+		else:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] nextMarkOrEntry  skipped singel play"
+
+	def previousMarkOrEntry(self):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] previousMarkOrEntry playlist leng (%s)" % (len(self.playlist))
+		if len(self.playlist) > 0:
+			if not self.jumpPreviousNextMark(lambda x: -x-5*90000, start=True):
+				if self.debug != "off":
+					print "[MC_VideoPlayer] previousMarkOrEntry if"
+				self.is_closing = True
+				self.close(-1)
+			else:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] previousMarkOrEntry else"
+		else:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] previousMarkOrEntry  skipped singel play"
+
+	def leavePlayer(self):
+		self.is_closing = True
+		if config.usage.on_movie_stop.value == "ask":
+			list = []
+			list.append((_("Yes"), "quit"))
+			list.append((_("No"), "continue"))
+			if config.usage.setup_level.index >= 2:
+				list.append((_("No, but restart from begin"), "restart"))
+			self.session.openWithCallback(self.leavePlayerConfirmed, MC_ChoiceBox, title=_("Stop playing this movie?"), list = list)
+		else:
+			self.close(0)
+	def leavePlayerConfirmed(self, answer):
+		answer = answer and answer[1]
+		if answer == "quit":
+			if os_path.isfile("/tmp/3don"):
+				commands.getoutput('rm -r /tmp/3don')
+				config.av.threedmode.value = "off"
+				config.av.threedmode.save()
+			self.session.nav.stopService()
+
+			if self.playlist != []:
+				self.playlist.clear()
+
+			evfd.getInstance().vfd_write_string("MEDIACENTER")
+			os.system("vfdctl -play")
+			
+			self.close(0)
+		elif answer == "restart":
+			self.doSeek(0)
+
+	def doEofInternal(self, playing):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] --- eofint movieplayer ---"
+		if config.plugins.mc_vp_autoSleep.enabled.getValue() == True and self.session.nav.RecordTimer.isRecording() is False:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] set autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+			self.session.nav.SleepTimer.setSleepTime(config.plugins.mc_vp_autoSleep.delay.getValue())
+#		else: 															### FIX ME ! Dimmer.Timer gives a GS here (not an attribute) !#######
+#			self.DimmerTimer.start(config.plugins.mc_all.dimmer_delay.getValue() * 1000, True)
+
+		print "len(self.playlist)", len(self.playlist)
+
+		if ( len(self.playlist) > 0 ):
+			print "[MC_VideoPlayer] stop playlist"
+			self.playlist.stopFile()
+			if config.plugins.mc_vp_autoSleep.enabled.getValue() == True:
+				if self.debug != "off":
+					print "[MC_VideoPlayer] stop autoSleep %s min" % (config.plugins.mc_vp_autoSleep.delay.getValue())
+				self.session.nav.SleepTimer.clear()
+
+		self.session.nav.playService(None)
+
+		self.is_closing = True
+		evfd.getInstance().vfd_write_string("MEDIACENTER")
+		os.system("vfdctl -play")
+		
+		self.close(1)
+
+	def subtitleSelection(self):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] start subtitleSelection"
+		from Screens.AudioSelection import SubtitleSelection
+		self.session.open(SubtitleSelection, self)
+
+	def audioSelection(self):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] start audioSelection"
+		from Screens.AudioSelection import AudioSelection
+		self.session.openWithCallback(self.audioSelected, AudioSelection, infobar=self)		
+
+	def videoSelection(self):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] start videoSelection"
+#		from Screens.InfoBarGenerics import InfoBarAudioSelection
+#		from Screens.AudioSelection import AudioSelection
+
+		
+#		self.session.open(InfoBarAudioSelection.aspectSelection)	
+
+# 		from Screens.AudioSelection import AudioSelection
+# 		self.session.openWithCallback(self.aspectSelection, AudioSelection)		
+		
+		from Screens.InfoBarGenerics import InfoBarAudioSelection
+#		self.aspectSelection = aspectSelection
+		self.session.open(self.aspectSelection)
+#		self.session.open(aspectSelection)		
+
+	def sleepTimer(self):
+		from Screens.SleepTimerEdit import SleepTimerEdit
+		self.session.open(SleepTimerEdit)
+
+	def videoTune(self):
+		if os_path.isfile("/usr/lib/enigma2/python/Plugins/Extensions/Aafpanel/plugin.pyc") is True:
+			try:
+				from Plugins.Extensions.Aafpanel.plugin import VideoTuneMain
+				self.session.open(VideoTuneMain)
+			except:
+				pass
+
+	def change_ratio(self):
+		if self.debug != "off":
+			print "[MC_VideoPlayer] change ratio by obi"
+		policy_input = open("/proc/stb/video/policy", "r")
+		policy = policy_input.read()
+		policy_input.close()
+		if self.debug != "off":
+			print "[MC_VideoPlayer] VideoModeLight policy current", policy
+		global tmppolicy
+		if self.debug != "off":
+			print "[MC_VideoPlayer] VideoModeLight tmppolicy current", tmppolicy
+		if tmppolicy == "None":
+			tmppolicy = policy
+		if tmppolicy.find("letterbox") != -1:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] VideoModeLight set policy letterbox"
+			tmppolicy = "non"
+			eAVSwitch.getInstance().setAspectRatio(0)
+			self.session.open(MC_MessageBox, 'LETTERBOX', MC_MessageBox.TYPE_WARNING, timeout=2)
+		elif tmppolicy.find("non") != -1:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] VideoModeLight set policy non"
+			tmppolicy = "panscan"
+			eAVSwitch.getInstance().setAspectRatio(3)
+			self.session.open(MC_MessageBox, 'NONLINEAR', MC_MessageBox.TYPE_WARNING, timeout=2)
+		elif tmppolicy.find("panscan") != -1:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] VideoModeLight set policy panscan"
+			tmppolicy = "bestfit"
+			eAVSwitch.getInstance().setAspectRatio(1)
+			self.session.open(MC_MessageBox, 'PANSCAN', MC_MessageBox.TYPE_WARNING, timeout=2)
+		elif tmppolicy.find("bestfit") != -1:
+			if self.debug != "off":
+				print "[MC_VideoPlayer] VideoModeLight set policy bestfit"
+			tmppolicy = "letterbox"
+			eAVSwitch.getInstance().setAspectRatio(2)
+			self.session.open(MC_MessageBox, 'BESTFIT', MC_MessageBox.TYPE_WARNING, timeout=2)
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WeatherInfo.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WeatherInfo.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WeatherInfo.py	(revision 9331)
@@ -0,0 +1,489 @@
+# -*- coding: utf-8 -*-
+#  Weather Plugin E2
+#  $Id: setup.py,v 1.5 2009-11-08 17:27:01 dr_best Exp $
+#  Coded by Dr.Best (c) 2009
+#  Support: www.dreambox-tools.info
+#  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
+#  of the License, or (at your option) any later version.
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+from Components.ActionMap import ActionMap, NumberActionMap
+from Components.Label import Label
+from Components.Button import Button
+from Components.Sources.StaticText import StaticText
+from Tools.LoadPixmap import LoadPixmap
+import xml.etree.cElementTree
+from twisted.internet import reactor, defer
+from twisted.web import client
+import urllib
+from Components.MenuList import MenuList
+from Components.Pixmap import Pixmap
+import string
+import os
+from enigma import ePicLoad, eListboxPythonMultiContent, eListbox, gFont, \
+	RT_HALIGN_LEFT, RT_VALIGN_CENTER
+from Components.AVSwitch import AVSwitch
+from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.config import *
+from GlobalFunctions import MC_MessageBox
+from __init__ import _
+
+def initWeatherPluginEntryConfig():
+	config.plugins.WeatherPlugin.Entries.append(ConfigSubsection())
+	i = len(config.plugins.WeatherPlugin.Entries) -1
+	config.plugins.WeatherPlugin.Entries[i].city = ConfigText(default = "Heidelberg", visible_width = 50, fixed_size = False)
+	config.plugins.WeatherPlugin.Entries[i].language = ConfigText(default = "de", visible_width = 50, fixed_size = False)
+	return config.plugins.WeatherPlugin.Entries[i]
+
+def initConfig():
+	count = config.plugins.WeatherPlugin.entriescount.value
+	if count != 0:
+		i = 0
+		while i < count:
+			initWeatherPluginEntryConfig()
+			i += 1
+
+config.plugins.WeatherPlugin = ConfigSubsection()
+config.plugins.WeatherPlugin.entriescount =  ConfigInteger(0)
+config.plugins.WeatherPlugin.Entries = ConfigSubList()
+initConfig()
+
+
+UserAgent = "Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3."
+
+class WeatherIconItem:
+	def __init__(self, url = "", filename = "", index = -1, error = False):
+		self.url = url
+		self.filename = filename
+		self.index = index
+		self.error = error
+
+def getXML(url):
+	return client.getPage(url, agent=UserAgent)
+
+def download(item):
+	return client.downloadPage(item.url, file(item.filename, 'wb'), agent=UserAgent)
+
+
+def main(session,**kwargs):
+	session.open(WeatherPlugin)
+
+class WeatherPlugin(Screen):
+
+	skin = """
+		<screen name="WeatherPlugin" position="center,center" size="664,170" title="Weather Plugin">
+			<widget name="caption" position="10,20" zPosition="1" size="300,23" font="Regular;22" transparent="1"/>
+			<widget name="currentTemp" position="10,45" zPosition="1" size="300,23" font="Regular;22" transparent="1"/>
+			<widget name="condition" position="10,80" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>
+			<widget name="wind_condition" position="10,105" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>
+			<widget name="humidity" position="10,130" zPosition="1" size="300,20" font="Regular;18" valign="bottom" transparent="1"/>
+			<widget name="weekday1" position="255,30" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday1_icon" position="255,50" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday1_temp" position="241,130" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday2" position="358,30" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday2_icon" position="358,50" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday2_temp" position="344,130" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday3" position="461,30" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday3_icon" position="461,50" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday3_temp" position="448,130" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday4" position="564,30" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday4_icon" position="564,50" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday4_temp" position="550,130" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="statustext" position="0,0" zPosition="1" size="664,170" font="Regular;20" halign="center" valign="center" transparent="1"/>
+			<widget name="key_blue" position="700,205" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" />
+			<widget name="info" position="700,205" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" />
+		</screen>"""
+	
+	def __init__(self, session):
+		self.session = session
+		Screen.__init__(self, session)
+		self["actions"] = ActionMap(["WizardActions", "DirectionActions", "ColorActions", "EPGSelectActions"],
+		{
+			"back": self.close,
+			"input_date_time": self.config,
+			"right": self.nextItem,
+			"left": self.previousItem,
+			"blue": self.key_blue
+		}, -1)
+
+		self["statustext"] = Label()
+
+		self["caption"] = Label()
+		self["currentTemp"] = Label()
+		self["condition"] = Label()
+		self["wind_condition"] = Label()
+		self["humidity"] = Label()
+
+		self["key_blue"] = Button(_("Settings"))
+		self["info"] = Label(_("Info: press arrow left/right to see previous/next entry"))
+
+		for i in range(1, 5):
+			self["weekday%s" % i] = Label()
+			self["weekday%s_icon" %i] = WeatherIcon()
+			self["weekday%s_temp" % i] = Label()
+
+		self.appdir = "/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/"
+
+		if not os.path.exists(self.appdir):
+			os.mkdir(self.appdir)
+
+		self.weatherPluginEntryIndex = -1
+		self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entriescount.value
+		if self.weatherPluginEntryCount >= 1:
+			self.weatherPluginEntry = config.plugins.WeatherPlugin.Entries[0]
+			self.weatherPluginEntryIndex = 1
+		else:
+			self.weatherPluginEntry = None
+
+		self.onLayoutFinish.append(self.startRun)
+
+	def startRun(self):
+		if self.weatherPluginEntry is not None:
+			self["statustext"].setText(_("Getting weather information..."))
+			url = ("http://www.google.com/ig/api?weather=%s&hl=%s" % (urllib.quote(self.weatherPluginEntry.city.value), self.weatherPluginEntry.language.value))
+			getXML(url).addCallback(self.xmlCallback).addErrback(self.error)
+		else:
+			self["statustext"].setText(_("No locations defined...\nPress 'Menu' to do that."))
+		self["statustext"].show()
+
+	def nextItem(self):
+		if self.weatherPluginEntryCount != 0:
+			if self.weatherPluginEntryIndex < self.weatherPluginEntryCount:
+				self.weatherPluginEntryIndex = self.weatherPluginEntryIndex + 1
+			else:
+				self.weatherPluginEntryIndex = 1
+			self.setItem()
+
+	def previousItem(self):
+		if self.weatherPluginEntryCount != 0:
+			if self.weatherPluginEntryIndex >= 2:
+				self.weatherPluginEntryIndex = self.weatherPluginEntryIndex - 1
+			else:
+				self.weatherPluginEntryIndex = self.weatherPluginEntryCount
+			self.setItem()
+
+	def setItem(self):
+		self.weatherPluginEntry = config.plugins.WeatherPlugin.Entries[self.weatherPluginEntryIndex-1]
+		self.clearFields()
+		self.startRun()
+
+	def clearFields(self):
+		self["caption"].setText("")
+		self["currentTemp"].setText("")
+		self["condition"].setText("")
+		self["wind_condition"].setText("")
+		self["humidity"].setText("")
+		for i in range(1, 5):
+			self["weekday%s" % i].setText("")
+			self["weekday%s_icon" %i].hide()
+			self["weekday%s_temp" % i].setText("")
+
+	def errorIconDownload(self, error = None, item = None):
+		item.error = True
+
+	def finishedIconDownload(self, result, item):
+		if not item.error:
+			self.showIcon(item.index,item.filename)
+
+	def showIcon(self,index, filename):
+		self["weekday%s_icon" % index].updateIcon(filename)
+		self["weekday%s_icon" % index].show()
+
+	def xmlCallback(self, xmlstring):
+		self["statustext"].hide()
+		metric = 0
+		index = 0
+		UnitSystemText = "F"
+		IconDownloadList = []
+		root = xml.etree.cElementTree.fromstring(xmlstring)
+		for childs in root.findall("weather"):
+			for items in childs:
+				if items.tag == "problem_cause":
+					self["statustext"].setText(items.attrib.get("data").encode("utf-8", 'ignore'))
+					self["statustext"].show()
+				if items.tag == "forecast_information":
+					for items2 in items:
+						if items2.tag == "city":
+							self["caption"].setText(items2.attrib.get("data").encode("utf-8", 'ignore'))
+						elif items2.tag == "unit_system":
+							if items2.attrib.get("data").encode("utf-8", 'ignore') == "SI":
+								metric = 1
+								UnitSystemText = "C"
+				elif items.tag == "current_conditions":
+					for items2 in items:
+						if items2.tag == "condition":
+							self["condition"].setText(_("Current: %s") % items2.attrib.get("data").encode("utf-8", 'ignore'))
+						elif items2.tag == "temp_f" and metric == 0:
+							self["currentTemp"].setText( ("%s °F" % items2.attrib.get("data").encode("utf-8", 'ignore')) )
+						elif items2.tag == "temp_c" and metric == 1:
+							self["currentTemp"].setText( ("%s °C" % items2.attrib.get("data").encode("utf-8", 'ignore')) )
+						elif items2.tag == "humidity":
+							self["humidity"].setText(items2.attrib.get("data").encode("utf-8", 'ignore'))
+						elif items2.tag == "wind_condition":
+							self["wind_condition"].setText(items2.attrib.get("data").encode("utf-8", 'ignore'))
+				elif items.tag == "forecast_conditions":
+					index = index + 1
+					lowTemp = ""
+					highTemp = ""
+					icon = ""
+					for items2 in items:
+						if items2.tag == "day_of_week":
+							self["weekday%s" % index].setText(items2.attrib.get("data").encode("utf-8", 'ignore'))
+						if items2.tag == "low":
+							lowTemp = items2.attrib.get("data").encode("utf-8", 'ignore')
+						if items2.tag == "high":
+							highTemp = items2.attrib.get("data").encode("utf-8", 'ignore')
+							self["weekday%s_temp" % index].setText("%s °%s | %s °%s" % (highTemp, UnitSystemText, lowTemp, UnitSystemText))
+						if items2.tag == "icon":
+							url = "http://www.google.com%s" % items2.attrib.get("data").encode("utf-8", 'ignore')
+							parts = string.split(url,"/")
+							filename = self.appdir + parts[-1]
+							if not os.path.exists(filename):
+								IconDownloadList.append(WeatherIconItem(url = url,filename = filename, index = index))
+							else:
+								self.showIcon(index,filename)
+		if len(IconDownloadList) != 0:
+			ds = defer.DeferredSemaphore(tokens=len(IconDownloadList))
+			downloads = [ds.run(download,item ).addErrback(self.errorIconDownload, item).addCallback(self.finishedIconDownload,item) for item in IconDownloadList]
+			finished = defer.DeferredList(downloads).addErrback(self.error)
+
+	def config(self):
+		self.session.openWithCallback(self.setupFinished, WeatherPluginEntriesListConfigScreen)
+	def key_blue(self):
+		self.session.openWithCallback(self.setupFinished, WeatherPluginEntriesListConfigScreen)
+
+	def setupFinished(self, index, entry = None):
+		self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entriescount.value
+		if self.weatherPluginEntryCount >= 1:
+			if entry is not None:
+				self.weatherPluginEntry = entry
+				self.weatherPluginEntryIndex = index + 1
+			if self.weatherPluginEntry is None:
+				self.weatherPluginEntry = config.plugins.WeatherPlugin.Entries[0]
+				self.weatherPluginEntryIndex = 1
+		else:
+			self.weatherPluginEntry = None
+			self.weatherPluginEntryIndex = -1
+
+		self.clearFields()
+		self.startRun()
+
+	def error(self, error = None):
+		if error is not None:
+			self.clearFields()
+			self["statustext"].setText(str(error.getErrorMessage()))
+			self["statustext"].show()
+		
+		
+class WeatherIcon(Pixmap):
+	def __init__(self):
+		Pixmap.__init__(self)
+		self.IconFileName = ""
+		self.picload = ePicLoad()
+		self.picload.PictureData.get().append(self.paintIconPixmapCB)
+
+	def onShow(self):
+		Pixmap.onShow(self)
+		sc = AVSwitch().getFramebufferScale()
+		self.picload.setPara((self.instance.size().width(), self.instance.size().height(), sc[0], sc[1], 0, 0, '#00000000'))
+
+	def paintIconPixmapCB(self, picInfo=None):
+		ptr = self.picload.getData()
+		if ptr != None:
+			self.instance.setPixmap(ptr.__deref__())
+
+	def updateIcon(self, filename):
+		new_IconFileName = filename
+		if (self.IconFileName != new_IconFileName):
+			self.IconFileName = new_IconFileName
+			self.picload.startDecode(self.IconFileName)
+
+#----------------------------------------------------------------------
+#---------------------- SETUP SCREENS----------------
+#----------------------------------------------------------------------
+class WeatherPluginEntriesListConfigScreen(Screen):
+	skin = """
+		<screen position="center,center" size="580,400" title="" >
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+			<widget name="city" position="15,0" size="150,50" font="Regular;20" halign="left"/>
+			<widget name="language" position="165,0" size="150,50" font="Regular;20" halign="left"/>
+			<widget name="entrylist" position="10,50" size="550,300" scrollbarMode="showOnDemand"/>
+			<widget name="key_red" position="10,357" size="140,40" zPosition="5" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" />
+			<widget name="key_yellow" position="290,355" size="140,40" zPosition="5" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" />
+			<widget name="key_blue" position="430,355" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" />
+			<eLabel backgroundColor="blue" position="430,390" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="290,390" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="10,390" size="140,3" zPosition="5"/>
+		</screen>"""
+
+	def __init__(self, session):
+		Screen.__init__(self, session)
+		self.session = session
+		self["show_title"] = StaticText(_("MediaCenter Weatherinfo Settings"))
+		self["city"] = Button(_("City"))
+		self["language"] = Button(_("Language"))
+		self["key_red"] = Button(_("Add"))
+		self["key_yellow"] = Button(_("Edit"))
+		self["key_blue"] = Button(_("Delete"))
+		self["entrylist"] = WeatherPluginEntryList([])
+		self["actions"] = ActionMap(["WizardActions","MenuActions","ShortcutActions"],
+			{
+			 "ok"	:	self.keyOK,
+			 "back"	:	self.keyClose,
+			 "red"	:	self.keyRed,
+			 "yellow":	self.keyYellow,
+			 "blue": 	self.keyDelete,
+			 }, -1)
+		self.updateList()
+		self.onShown.append(self.setWindowTitle)
+
+	def setWindowTitle(self):
+		self.setTitle(_("WeatherPlugin: List of Entries"))
+
+	def updateList(self):
+		self["entrylist"].buildList()
+
+	def keyClose(self):
+		self.close(-1, None)
+
+	def keyRed(self):
+		self.session.openWithCallback(self.updateList,WeatherPluginEntryConfigScreen,None)
+
+	def keyOK(self):
+		try:sel = self["entrylist"].l.getCurrentSelection()[0]
+		except: sel = None
+		self.close(self["entrylist"].getCurrentIndex(), sel)
+
+	def keyYellow(self):
+		try:sel = self["entrylist"].l.getCurrentSelection()[0]
+		except: sel = None
+		if sel is None:
+			return
+		self.session.openWithCallback(self.updateList,WeatherPluginEntryConfigScreen,sel)
+
+	def keyDelete(self):
+		try:sel = self["entrylist"].l.getCurrentSelection()[0]
+		except: sel = None
+		if sel is None:
+			return
+		self.session.openWithCallback(self.deleteConfirm, MC_MessageBox, _("Really delete this WeatherPlugin Entry?"))
+
+	def deleteConfirm(self, result):
+		if not result:
+			return
+		sel = self["entrylist"].l.getCurrentSelection()[0]
+		config.plugins.WeatherPlugin.entriescount.value = config.plugins.WeatherPlugin.entriescount.value - 1
+		config.plugins.WeatherPlugin.entriescount.save()
+		config.plugins.WeatherPlugin.Entries.remove(sel)
+		config.plugins.WeatherPlugin.Entries.save()
+		config.plugins.WeatherPlugin.save()
+		configfile.save()
+		self.updateList()
+
+class WeatherPluginEntryList(MenuList):
+	def __init__(self, list, enableWrapAround = True):
+		MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
+		self.l.setFont(0, gFont("Regular", 20))
+		self.l.setFont(1, gFont("Regular", 18))
+	def postWidgetCreate(self, instance):
+		MenuList.postWidgetCreate(self, instance)
+		instance.setItemHeight(20)
+
+	def getCurrentIndex(self):
+		return self.instance.getCurrentIndex()
+
+	def buildList(self):
+		self.list=[]
+		for c in config.plugins.WeatherPlugin.Entries:
+			res = [c]
+			res.append((eListboxPythonMultiContent.TYPE_TEXT, 5, 0, 150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(c.city.value)))
+			res.append((eListboxPythonMultiContent.TYPE_TEXT, 155, 0, 150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(c.language.value)))
+			self.list.append(res)
+		self.l.setList(self.list)
+		self.moveToIndex(0)
+
+class WeatherPluginEntryConfigScreen(ConfigListScreen, Screen):
+	skin = """
+		<screen name="WeatherPluginEntryConfigScreen" position="center,center" size="580,250" title="">
+		<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+			<widget name="config" position="20,10" size="520,200" scrollbarMode="showOnDemand" />
+			<eLabel backgroundColor="blue" position="430,240" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="150,240" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="10,240" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="10,205" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" />
+			<widget name="key_green" position="150,205" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" />
+			<widget name="key_blue" position="430,205" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" />
+		</screen>"""
+
+	def __init__(self, session, entry):
+		self.session = session
+		Screen.__init__(self, session)
+		self.onShown.append(self.setWindowTitle)
+
+		self["actions"] = ActionMap(["SetupActions", "ColorActions"],
+		{
+			"green": self.keySave,
+			"red": self.keyCancel,
+			"blue": self.keyDelete,
+			"cancel": self.keyCancel
+		}, -2)
+
+		self["show_title"] = StaticText(_("MediaCenter Weatherinfo Settings"))
+		self["key_red"] = Button(_("Cancel"))
+		self["key_green"] = Button(_("OK"))
+		self["key_blue"] = Button(_("Delete"))
+
+		if entry is None:
+			self.newmode = 1
+			self.current = initWeatherPluginEntryConfig()
+		else:
+			self.newmode = 0
+			self.current = entry
+
+		cfglist = [
+			getConfigListEntry(_("City or Postal Code"), self.current.city),
+			getConfigListEntry(_("Language"), self.current.language)
+		]
+
+		ConfigListScreen.__init__(self, cfglist, session)
+
+	def setWindowTitle(self):
+		self.setTitle(_("WeatherPlugin: Edit Entry"))
+
+	def keySave(self):
+		if self.newmode == 1:
+			config.plugins.WeatherPlugin.entriescount.value = config.plugins.WeatherPlugin.entriescount.value + 1
+			config.plugins.WeatherPlugin.entriescount.save()
+		ConfigListScreen.keySave(self)
+		config.plugins.WeatherPlugin.save()
+		configfile.save()
+		self.close()
+
+	def keyCancel(self):
+		if self.newmode == 1:
+			config.plugins.WeatherPlugin.Entries.remove(self.current)
+		ConfigListScreen.cancelConfirm(self, True)
+
+	def keyDelete(self):
+		if self.newmode == 1:
+			self.keyCancel()
+		else:		
+			self.session.openWithCallback(self.deleteConfirm, MC_MessageBox, _("Really delete this WeatherPlugin Entry?"))
+
+	def deleteConfirm(self, result):
+		if not result:
+			return
+		config.plugins.WeatherPlugin.entriescount.value = config.plugins.WeatherPlugin.entriescount.value - 1
+		config.plugins.WeatherPlugin.entriescount.save()
+		config.plugins.WeatherPlugin.Entries.remove(self.current)
+		config.plugins.WeatherPlugin.Entries.save()
+		config.plugins.WeatherPlugin.save()
+		configfile.save()
+		self.close()
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS.py	(revision 9331)
@@ -0,0 +1,798 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+# webradioFS von shadowrider
+# Chrashlogs, Vorschlaege, Beschwerden usw. bitte im iHAD-Board http://www.i-have-a-dreambox.com/ als PM an shadowrider senden
+#
+# Plugin.png by Swiss-MAD
+#
+# freizuegig bedient habe ich mich bei den plugins:
+# netcaster von Rico Schulte, 3c5x9 (shoutcast-scripte)
+# MerlinMP3Player Dr.Best (screensaver, config)
+###############################################################################
+
+from Screens.Screen import Screen
+from Screens.Standby import Standby
+from Screens.InfoBarGenerics import InfoBarShowHide
+from Components.config import *
+from Screens.InputBox import InputBox
+#from Screens.MessageBox import MessageBox
+from Components.ActionMap import ActionMap
+from Components.ScrollLabel import ScrollLabel
+from Components.Label import Label
+from Components.MenuList import MenuList
+from Components.Sources.StaticText import StaticText
+from Components.MultiContent import MultiContentEntryText
+from Components.Pixmap import Pixmap
+from Components.Input import Input
+from Components.ConfigList import ConfigListScreen, ConfigList
+from enigma import eListboxPythonMultiContent, eListbox, gFont, getDesktop, eTimer, ePoint, eDVBVolumecontrol, evfd
+from Plugins.Plugin import PluginDescriptor
+from os import path as os_path, listdir as os_listdir
+from Tools.Import import my_import
+from ConfigParser import ConfigParser
+import os
+import sys
+import random
+from time import *
+import time
+import datetime
+import Screens.Standby
+from MC_WebRadioFS_StreamPlayer1 import StreamPlayer
+from GlobalFunctions import MC_ChoiceBox, MC_MessageBox
+
+config.plugins.webradioFS = ConfigSubsection()
+config.plugins.webradioFS.wbrScreenSaver = ConfigSelection(default="0", choices = [
+	("0","kein"),
+	("60","nach 1 Minute"),
+	("300","nach 5 Minuten"),
+	("600","nach 10 Minuten"),
+	("1800","nach 30 Minuten"),
+	("3600","nach 1 Stunde"),
+	("10","nach 10 Sek"),
+	("30","nach 30 Sek")])
+
+
+config.plugins.webradioFS.startplay = ConfigYesNo(default = False)
+config.plugins.webradioFS.startindex = ConfigInteger(0, limits = (0, 999))
+config.plugins.webradioFS.offtimer_time = ConfigNumber(default = 10)
+config.plugins.webradioFS.offtimer_art = ConfigSelection(default="0", choices = [("0","Standby"),("1","DeepStandby")])
+
+myname = "webradioFS"
+myversion = "1.4"
+streamingtargetfile = "/tmp/streaming.mpg"
+valid_types = ("MP3")
+streamtitel = ""
+streamplayer = None
+onwbrScreenSaver = None
+plugin_path = "/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter"
+wahl = 1
+session = None
+startindex = 0
+offtimer = "starten"
+###############################################################################        
+
+
+############################################################################### 
+
+class WebradioScreenBrowser(Screen):
+
+	global streamplayer
+	global wahl
+	skin = """
+		<screen name="webradioFS" position="167,55" size="690,500" title="Webradio - Favoriten" >
+			<widget name="titeltext" position="10,5" zPosition="1" size="720,30" font="Regular;20" transparent="1" />
+			<eLabel backgroundColor="blue" position="543,490" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="400,490" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="153,490" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="10,490" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="10,460" zPosition="5" size="140,40" font="Regular;16" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="153,460" zPosition="5" size="140,40" font="Regular;16" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="400,460" zPosition="5" size="140,40" font="Regular;16" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="543,460" zPosition="5" size="140,40" font="Regular;16" valign="center" halign="center" transparent="1" />
+			<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/wbrl_sd.png" zPosition="5" position="295,480" size="100,30" alphatest="on" />
+			<widget name="streamlist" position="10,30" size="670,430" scrollbarMode="showOnDemand" transparent="1"/>
+			<widget name="playbalken" position="0,470" zPosition="2" size="690,40" font="Regular;16" backgroundColor="#000000" transparent="0" />
+			<widget name="playtext" position="0,470" zPosition="3" size="670,40" font="Regular;16" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
+		</screen>"""
+
+	streamlist = []
+	currentPlugin = None
+
+	def __init__(self, session, args = 0):
+		self.session = session
+		Screen.__init__(self, session)
+		global streamplayer
+		streamplayer = StreamPlayer(session)
+		self["streamlist"] = StreamMenu([])
+		self["titelbalken"] = Label("")
+		self["playbalken"] = Label("")
+		self["playtext"] = Label("")
+		self["titeltext"] = Label("webradioFs - Favoriten (oder gelb drücken um in Genre-Liste zu wechseln)")
+		self["key_red"] = Label("Favoriten")
+		self["key_green"] = Label("Start Sleeptimer")
+		self["key_yellow"] = Label("Genre-Liste")
+		self["key_blue"] = Label("Einstellungen")
+		self["actions"] = ActionMap(["WizardActions", "DirectionActions","MenuActions","ShortcutActions","GlobalActions","HelpActions","EPGSelectActions"], 
+			{
+				"ok": self.ok,
+				"cancel": self.exit,
+				"back": self.exit,
+				"red": self.favoriten,
+				"green": self.green,
+				"blue": self.showConfig,
+				"yellow": self.genre,
+				"menu": self.showMainMenu,
+				"displayHelp": self.showHelp,
+				"info": self.showInfo,
+			}, -1)
+
+		self.onClose.append(self.exit)
+		self.num = 0
+		#self.CurrentService = self.session.nav.getCurrentlyPlayingServiceReference()
+		#self.session.nav.stopService()
+		self.bScreen = self.session.instantiateDialog(Blackscreen)
+		self.bScreen.show()
+		self.getInterfaceList()
+		for plugin in self.pluginlist:
+			if plugin.nameshort == "Favorites":
+				wahl = 1
+				self.setCurrentPlugin(plugin)
+		#self.onShown.append(self.updateTitle)
+
+		self.onClose.append(self.disconnectFromMetadataUpdates)
+
+		self.wbrScreenSaverconfig = int(config.plugins.webradioFS.wbrScreenSaver.value)
+		self.wbrScreenSaverTimer = eTimer()
+		self.wbrScreenSaverTimer.timeout.get().append(self.wbrScreenSaverTimer_Timeout)
+		self.ResetwbrScreenSaverTimer()
+
+		self.start_timer = eTimer()
+		self.start_timer.timeout.get().append(self.onLayoutFinished) 
+		self.standby_timer = eTimer()
+		self.standby_timer.timeout.get().append(self.standby_on)
+		self.standby_timer.stop()
+
+		if config.plugins.webradioFS.startplay.value:
+			if int(config.plugins.webradioFS.startplay.value) >0:
+				self.onLayoutFinish.append(self.onLayoutFinished)
+####################################################################################
+#metadaten
+	def connectToMetadataUpdates(self):
+		global streamplayer
+		if streamplayer is not None:
+			streamplayer.metadatachangelisteners.append(self.onMetadataChanged)
+
+	def disconnectFromMetadataUpdates(self):
+		global streamplayer
+		try:
+			streamplayer.metadatachangelisteners.remove(self.onMetadataChanged)
+		except Exception,e:
+			pass
+
+	def onMetadataChanged(self,title):
+		try:
+			self["playtext"].setText("%s"%title)
+		except Exception,e:
+			self.disconnectFromMetadataUpdates()
+#---- CIVER TEST added try....except....
+		try:
+			self["titeltext"].setText("%s"%streamtitel)
+		except:
+			None
+#-----------------------------------------
+##############################################################################
+	def onLayoutFinished(self):
+		global startindex
+		self.startindex = startindex
+		self.num += 1
+		if startindex is not None and streamplayer is not None:
+			self.start_timer.stop()
+			self.starters()
+		else:
+			if self.num < 30:
+				self.start_timer.start(2000)
+			else:
+				self.start_timer.stop()
+				fehler = "Fehler beim automatischen Start"
+				self.session.open(MC_MessageBox,_("%s" %fehler), MC_MessageBox.TYPE_INFO)
+
+	def starters(self):
+		global streamplayer
+		global startindex
+		global streamtitel
+		if self["streamlist"].l.getCurrentSelection() is not None:
+			self["streamlist"].instance.moveSelectionTo(startindex)
+			stream = self["streamlist"].l.getCurrentSelection()[0]
+			self.connectToMetadataUpdates()
+			streamtitel = stream.getName().split('-')[0]
+			self.setTitle("%s"%streamtitel)
+			s_titeltext="akt. Stream: " +streamtitel
+			self["titeltext"].setText("%s"%s_titeltext)
+			streamplayer.play(stream)
+############################################################################
+	def getInterfaceList(self):
+		self.pluginlist = []
+		global plugin_path,myname
+		interfacepath = plugin_path + "/webradiointerface"
+		for iface in os_listdir(interfacepath):
+			if iface.endswith(".pyc") and not iface.startswith("_"):
+				pluginp = '.'.join(["Plugins", "Extensions", "MediaCenter", "webradiointerface",iface.replace(".pyc","")])
+				plugin = my_import(pluginp)
+				self.pluginlist.append(plugin.Interface(self.session,cbListLoaded=self.onStreamlistLoaded))
+				#if iface == "favorites.py":
+					#self.favo = plugin.Interface(self.session,cbListLoaded=self.onStreamlistLoaded)
+				#if iface == "shoutcast.py":
+					#self.shoutcast = plugin.Interface(self.session,cbListLoaded=self.onStreamlistLoaded)
+
+	#def selectPlugin(self):
+	#	glist=[]
+	#	for i in self.pluginlist:
+	#		glist.append((i.name,i))
+	#	self.session.openWithCallback(self.selectedPlugin,MC_ChoiceBox,_("select Plugin"),glist)
+
+	#def selectedPlugin(self,splugin):
+	#	if splugin is not None:
+	#		self.setCurrentPlugin(splugin[1])
+	#		self.updateTitle()
+
+	def setCurrentPlugin(self, plugin):
+		self.currentPlugin = plugin
+		plugin.getList()
+
+	def genre(self):
+		for plugin in self.pluginlist:
+			if plugin.nameshort == "SHOUTcast":
+				global wahl
+				wahl = 2
+				plugin.getList()
+				self["titeltext"].setText("%s (%s)"%(myname,"SHOUTcast"))
+
+	def suche(self):
+		#self.suchwort = "*schlager*".lower()
+		self.suchstart()
+		#self.session.openWithCallback(
+		#	self.suchstart,
+		#	InputBox,
+		#	title = "Suchtext eingeben:",
+		#	text = "",
+		#	maxSize = False,
+		#	type = Input.TEXT
+		#	)
+
+	def suchstart(self):
+		for plugin in self.pluginlist:
+			if plugin.nameshort == "SHOUTcastsearch":
+				self["titeltext"].setText("%s (Suchergebnis)"%myname)
+				self.suchwort="*schlager*".lower()
+				if self.suchwort:
+					global wahl
+					wahl = 2
+					Suchstring = "*" + self.suchwort.replace(' ','*') + "*".lower()
+					plugin.searchList(Suchstring)
+
+	def favoriten(self):
+		for plugin in self.pluginlist:
+			if plugin.nameshort == "Favorites":
+				global wahl
+				wahl = 1
+				plugin.getList()
+				self["titeltext"].setText("%s (%s)"%(myname,"Favoriten1"))
+######################################################################
+
+	def ok(self):
+		if self["streamlist"].l.getCurrentSelection() is not None:
+			global streamplayer
+			if streamplayer.is_playing:
+				print "[",myname,"] stream_startstop -> stop"
+				streamplayer.stop()
+				self.disconnectFromMetadataUpdates()
+				self.setTitle("%s (%s)"%(myname,self.currentPlugin.nameshort))
+				stream = self["streamlist"].l.getCurrentSelection()[0]
+				streamtitel = stream.getName().split('-')[0]
+				self.setTitle("%s"%streamtitel)
+				s_titeltext="akt. Stream: " +streamtitel
+				self["titeltext"].setText("%s"%s_titeltext)
+				self.connectToMetadataUpdates()
+				streamplayer.play(stream)
+			else:
+				if self["streamlist"].l.getCurrentSelection() is not None:
+					stream = self["streamlist"].l.getCurrentSelection()[0]
+					streamtitel = stream.getName().split('-')[0]
+					self.setTitle("%s"%streamtitel)
+					s_titeltext="akt. Stream: " +streamtitel
+					self["titeltext"].setText("%s"%s_titeltext)
+					self.connectToMetadataUpdates()
+					streamplayer.play(stream)
+
+	def green(self):
+		global offtimer
+		if offtimer == "starten":
+			self.get_offtimer()
+			self["key_green"].setText("Stop Sleeptimer")
+			offtimer = "stoppen"
+		else:
+			if self.vol_down_timer.isActive():
+				self.vol_down_timer.stop()
+			if self.standby_timer.isActive():
+				self.standby_timer.stop()
+			self["key_green"].setText("Start Sleeptimer")
+			offtimer = "starten"
+
+	def meldung(self):
+		self.session.open(MC_MessageBox," ", MC_MessageBox.TYPE_INFO,timeout=3)
+
+	def exit(self):
+		if streamplayer.is_playing:
+			global streamplayer
+			if self.wbrScreenSaverTimer.isActive():
+				self.wbrScreenSaverTimer.stop()
+			streamplayer.stop()
+			self.disconnectFromMetadataUpdates()
+			self.setTitle("%s (%s)"%(myname,self.currentPlugin.nameshort))
+			self["titeltext"].setText("%s (%s)"%(myname,self.currentPlugin.nameshort))
+		else:
+			if self.standby_timer.isActive():
+				self.standby_timer.stop()
+			if self.wbrScreenSaverTimer.isActive():
+				self.wbrScreenSaverTimer.stop()
+			global streamplayer
+			streamplayer.stop()
+			streamplayer.exit()
+			evfd.getInstance().vfd_write_string("MEDIACENTER")
+			self.close()
+
+	def onStreamlistLoaded(self,list):
+		if wahl == 1:
+			self["streamlist"].buildList_favoriten(list)
+		else:
+			self["streamlist"].buildList_shoutcast(list)
+
+	def showMainMenu(self):
+		menu = []
+		if self["streamlist"].l.getCurrentSelection() is not None:
+			selectedStream = self["streamlist"].l.getCurrentSelection()[0]
+			self.stream_name = selectedStream.getName()
+		else:
+			selectedStream = None
+		global offtimer
+
+		# generic menuitems
+		for p in self.pluginlist:
+			for i in p.getMenuItems(selectedStream,generic=True):
+				menu.append((i[0],i[1]))
+
+		# non generic menuitems
+		if self.currentPlugin is not None:
+			for i in self.currentPlugin.getMenuItems(selectedStream):
+				menu.append((i[0],i[1]))
+		menu.append((_("Shoutcast durchsuchen"), self.suche));        menu.append((_("About"), self.showAbout));
+		menu.append((_("Hilfe"), self.showHelp));
+		menu.append((_("Einstellungen"), self.showConfig));
+
+		if wahl == 1:
+			menu.append((_("Stream als Startstream setzen"), self.set_startstream));
+			menu.append((_("Stream aus Favoriten entfernen"), self.stream2deleteSelected));
+		self.session.openWithCallback(self.menuCallback, MC_ChoiceBox, title=_("Menu"), list=menu)
+
+	def menuCallback(self,choice):
+		if choice is not None:
+			choice[1]()
+
+	def get_offtimer(self):
+		global offtimer
+		if offtimer == "starten":
+			self.exit_timer(config.plugins.webradioFS.offtimer_time.value)
+			offtimer = "stoppen"
+			self["key_green"].setText("Stop Sleeptimer")
+		else:
+			if self.standby_timer.isActive():
+				self.standby_timer.stop()
+			if self.vol_down_timer.isActive():
+				self.vol_down_timer.stop()
+			self["key_green"].setText("Start Sleeptimer")
+			offtimer = "starten"
+
+	def showAbout(self):
+		text2 = '\n\n'+'Autor: shadowrider' + '\n' + 'http://www.i-have-a-dreambox.com/' + '\n\n' + 'mod by AAF Team'
+		self.session.open(MC_MessageBox,_("webradioFS V1.4 (Enigma2 Plugin) %s" % (text2)), MC_MessageBox.TYPE_INFO)
+
+	def showInfo(self):
+		try:
+			text2 = '\n\n'+'Station: '+self["streamlist"].l.getCurrentSelection()[0].getName()
+			text2 = text2+'\n'+str(self["streamlist"].l.getCurrentSelection()[0].getDescription())
+			text2 = text2+'\n'+'URL: '+str(self["streamlist"].l.getCurrentSelection()[0].getURL2())
+			self.session.open(MC_MessageBox,_("webradioFS V1.4 (Enigma2 Plugin) %s" % (text2)), MC_MessageBox.TYPE_INFO)
+		except:
+			pass
+
+	def showConfig(self):
+		if self.wbrScreenSaverTimer.isActive():
+			self.wbrScreenSaverTimer.stop()
+		self.session.openWithCallback(self.showConfigDone, WebradioFSSetup)
+
+	def showConfigDone(self):
+		self.wbrScreenSaverconfig = int(config.plugins.webradioFS.wbrScreenSaver.value)
+		self.ResetwbrScreenSaverTimer()
+
+	def wbrScreenSaverTimer_Timeout(self):
+		if self.wbrScreenSaverTimer.isActive():
+			self.wbrScreenSaverTimer.stop()
+		if streamplayer.is_playing:
+			if self["streamlist"].l.getCurrentSelection()[0].getName():
+				text = self["streamlist"].l.getCurrentSelection()[0].getName()
+				if len(text) != 0:
+					text = text
+		else:
+			text = "kein Stream gestartet"
+		self.session.openWithCallback(self.ResetwbrScreenSaverTimer,wbrScreenSaver, text)
+
+	def ResetwbrScreenSaverTimer(self):
+		if onwbrScreenSaver:
+			pass
+		if self.wbrScreenSaverconfig != 0:
+			if self.wbrScreenSaverTimer.isActive():
+				self.wbrScreenSaverTimer.stop()
+			self.wbrScreenSaverTimer.start(self.wbrScreenSaverconfig * 1000)
+
+	def showHelp(self):
+		self.session.open(WebradioScreenHelp)
+
+	def set_startstream (self):
+		if self["streamlist"].l.getCurrentSelection() is not None:
+			start_index = self["streamlist"].instance.getCurrentIndex()
+			config.plugins.webradioFS.startindex.value = int(start_index)
+			config.plugins.webradioFS.startindex.save()
+
+	def stream2deleteSelected(self):
+		self.configfile = "/var/etc/webradio.conf"
+		self.configparser = ConfigParser()
+		self.configparser.read(self.configfile)
+		if self["streamlist"].l.getCurrentSelection() is not None:
+			selectedStream = self["streamlist"].l.getCurrentSelection()[0]
+			self.stream_name = selectedStream.getName()
+			self.stream2delete = self.stream_name #selectedstreamname
+			self.session.openWithCallback(self.deluserIsSure,MC_MessageBox,_("diesen Stream aus Favoriten entfernen?\n\n%s" % self.stream2delete), MC_MessageBox.TYPE_YESNO, timeout=5 )
+
+	def deluserIsSure(self,answer):
+		if answer is None:
+			self.close
+		if answer is False:
+			self.close
+		else:
+			self.configfile = "/var/etc/webradio.conf"
+			self.configparser = ConfigParser()
+			self.configparser.read(self.configfile)
+			self.configparser.remove_section(self.stream2delete)
+			print "["+myname+"] writing config to "+self.configfile
+			fp = open(self.configfile,"w")
+			self.configparser.write(fp)
+			fp.close()
+		self.favoriten()
+
+############################################################################### 
+	def exit_timer(self, result):
+		#self.exit2_timer = eTimer()
+		#self.exit2_timer.callback.append(self.in_standby)
+		self.vol_down_timer = eTimer()
+		self.vol_down_timer.callback.append(self.vol_down_on)
+		self.vol_down_timer.stop()
+		if result:
+			config.plugins.webradioFS.offtimer_time.value = str(result)
+			config.plugins.webradioFS.offtimer_time.save()
+			standby_time = int(result)
+			self.ResetwbrScreenSaverTimer()
+			# Start Timer
+			self.volctrl = eDVBVolumecontrol.getInstance()
+			self.oldvol = int(self.volctrl.getVolume())
+			voltime = self.oldvol*2000
+			standby_time2 = standby_time*60000
+			if standby_time2 > voltime:
+				self.standby_timer.start(standby_time2-voltime)
+			else:
+				self.standby_timer.start(standby_time2)
+		else:
+			global offtimer
+			offtimer = "starten"
+			self["key_green"].setText("Start Sleeptimer")
+
+	def standby_on(self):
+		self.standby_timer.stop()
+		if self.wbrScreenSaverTimer.isActive():
+			self.wbrScreenSaverTimer.stop()
+		self.offtimer_reaktion()
+		#self.session.open(MC_MessageBox,ssl1, MC_MessageBox.TYPE_INFO,timeout=0)
+
+	def offtimer_reaktion(self):
+		global offtimer
+		offtimer = "starten"
+		self.vol_down_on()
+
+	def vol_down_on(self):
+		self.vol_down_timer.stop()
+		self.volctrl = eDVBVolumecontrol.getInstance()
+		oldvol2 = self.volctrl.getVolume()
+		if oldvol2 > 0:
+			self.volctrl.volumeDown()
+			self.vol_down_timer.startLongTimer(2)
+		else:
+			global streamplayer
+			self.session.nav.stopService()
+			streamplayer.stop()
+			self.session.open(Screens.Standby.Standby)
+			self.volctrl = eDVBVolumecontrol.getInstance()
+			self.volctrl.setVolume(self.oldvol,self.oldvol)
+			config.audio.volume.value = self.oldvol
+			config.audio.volume.save()
+			if int(config.plugins.webradioFS.offtimer_art.value) == 1:
+				self.session.open(Screens.Standby.TryQuitMainloop,1)
+			#self.close(self.session)
+			#self.close()
+			self.exit()
+
+############################################################################### 
+class WebradioScreenHelp(Screen):
+	skin = """
+		<screen position="center,center" size="620,456" title="webradioFS Hilfe" >
+			<widget name="help" position="0,0" size="620,456" font="Regular;16"/>
+		</screen>"""
+
+	def __init__(self, session, args = 0):
+		self.skin = WebradioScreenHelp.skin
+		Screen.__init__(self, session)
+		global plugin_path
+		readme = plugin_path+"/webradiointerface/WebRadioFS_readme.txt"
+		if os_path.exists(readme):
+			fp = open(readme)
+			text = fp.read()
+			fp.close()
+		else:
+			text = "sorry, Hilfe-Datei nicht vorhanden oder fehlerhaft: "+readme
+		self["help"] = ScrollLabel(text)
+		self["actions"] = ActionMap(["WizardActions", "DirectionActions","MenuActions"], 
+			{
+				"ok": self.close,
+				"back": self.close,
+				"up": self["help"].pageUp,
+				"down": self["help"].pageDown
+			}, -1)
+
+############################################################################### 
+class StreamMenu(MenuList):
+	def __init__(self, list, enableWrapAround = False):
+		MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
+		if (getDesktop(0).size().width() == 1280):
+			self.l.setFont(0, gFont("Regular", 22))
+			self.l.setFont(1, gFont("Regular", 18))
+		else:
+			self.l.setFont(0, gFont("Regular", 20))
+			self.l.setFont(1, gFont("Regular", 16))
+
+	def postWidgetCreate(self, instance):
+		MenuList.postWidgetCreate(self, instance)
+		self.instance = instance
+		instance.setItemHeight(30)
+
+	def buildList_favoriten(self,listnew):
+		if self.instance is not None:
+			self.instance.setItemHeight(30)
+		list=[]
+		for stream in listnew:
+			res = [ stream ]
+			#station=stream.getName()
+			#unicode(station,"utf-8")
+			res.append(MultiContentEntryText(pos=(5, 5), size=(920, 30), font=0, text=stream.getName()))
+			res.append(MultiContentEntryText(pos=(5, 1), size=(0, 0), font=1, text=stream.getDescription()))
+			list.append(res)
+		list.sort(key=lambda x:x[1][7])
+		self.l.setList(list)
+		if config.plugins.webradioFS.startindex.value:
+			try:
+				if len(list) > 1:
+					max_index = len(list)+1
+					start_index = int(config.plugins.webradioFS.startindex.value)
+					if start_index > 0 and start_index < max_index:
+						s_index = start_index
+						global startindex
+						startindex= s_index
+					else:
+						startindex= 0
+			except IndexError:
+				pass 
+
+	def buildList_shoutcast(self,listnew):
+		if self.instance is not None:
+			self.instance.setItemHeight(50)
+		list=[]
+		for stream in listnew:
+			res = [ stream ]
+			res.append(MultiContentEntryText(pos=(5, 5), size=(920, 30), font=0, text=stream.getName()))
+			res.append(MultiContentEntryText(pos=(5, 26), size=(500, 24), font=1, text=stream.getDescription()))
+			list.append(res)
+		self.l.setList(list)
+		self.moveToIndex(0)
+############################################################################### 
+class WebradioFSSetup(Screen, ConfigListScreen):
+	if (getDesktop(0).size().width() == 720):
+		skin = """
+			<screen name="webradioSetup" position="center,center" size="650,345" title="Webradio - Setup" >
+				<widget name="config" position="10,30" size="630,270" zPosition="1" transparent="0" scrollbarMode="showOnDemand" />
+				<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+				<eLabel backgroundColor="green" position="390,335" size="140,3" zPosition="5"/>
+				<eLabel backgroundColor="red" position="74,335" size="140,3" zPosition="5"/>
+				<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/wbrl_sd.png" position="255,320" zPosition="5" size="100,30" alphatest="on" />
+				<widget name="key_red" position="74,300" zPosition="5" size="140,40" font="Regular;20" valign="center" halign="center" transparent="1" />
+				<widget name="key_green" position="390,300" zPosition="5" size="140,40" font="Regular;20" valign="center" halign="center" transparent="1" />
+			</screen>"""
+	else:
+		skin = """
+			<screen name="webradioSetup" position="center,center" size="690,345" title="Webradio - Setup" >
+				<widget name="config" position="10,30" size="670,270" zPosition="1" transparent="0" scrollbarMode="showOnDemand" />
+				<widget source="show_title" render="Label" position="-100,-100" zPosition="0" size="1,1" font="Regular;1" valign="center" halign="center" transparent="1" />
+				<eLabel backgroundColor="green" position="430,335" size="140,3" zPosition="5"/>
+				<eLabel backgroundColor="red" position="114,335" size="140,3" zPosition="5"/>
+				<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/wbrl_sd.png" position="295,320" zPosition="5" size="100,30" alphatest="on" />
+				<widget name="key_red" position="114,300" zPosition="5" size="140,40" font="Regular;20" valign="center" halign="center" transparent="1" />
+				<widget name="key_green" position="430,300" zPosition="5" size="140,40" font="Regular;20" valign="center" halign="center" transparent="1" />
+			</screen>"""
+
+	def __init__(self, session):
+		Screen.__init__(self, session)
+		self["show_title"] = StaticText(_("MediaCenter webradioFS Settings"))
+		self["key_red"] = Label("Abbruch")
+		self["key_green"] = Label("speichern")
+		self["titelbalken"] = Label(" webradioFS - Einstellungen")
+		self["actions"] = ActionMap(["SetupActions", "ColorActions"],
+		{
+			"green": self.save,
+			"ok": self.save,
+			"red": self.close,
+			"cancel": self.close
+		}, -2)
+
+		webradioFSConfigList = []
+		webradioFSConfigList.append(getConfigListEntry(" Zeit bis Bildschirmschoner (min):", config.plugins.webradioFS.wbrScreenSaver))
+		webradioFSConfigList.append(getConfigListEntry(" bei Start automatisch streamen:", config.plugins.webradioFS.startplay))
+		webradioFSConfigList.append((" Start-Stream-Index (000-xxx):", config.plugins.webradioFS.startindex))
+		webradioFSConfigList.append((" Ausschalt-Timer (Minuten):", config.plugins.webradioFS.offtimer_time))
+		webradioFSConfigList.append((" Ziel vom Ausschalt-Timer (Standby/Deepstandby):", config.plugins.webradioFS.offtimer_art))
+		ConfigListScreen.__init__(self, webradioFSConfigList, session)
+
+	def save(self):
+		ConfigListScreen.keySave(self)
+		configfile.save()
+
+	def leer(self):
+		pass
+###############################################################################
+class wbrScreenSaver(Screen):
+	global plugin_path
+	if (getDesktop(0).size().width() == 1280):
+		skin = """
+			<screen name="wbrScreenSaver" position="0,0" size="1280,576" flags="wfNoBorder" backgroundColor="#00000000" title="" >
+				<widget name="display_station" position="500,320" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+				<widget name="display_titel" position="500,290" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+				<widget name="display_time" position="500,260" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+			</screen>"""
+	elif (getDesktop(0).size().width() == 1024):
+		skin = """
+			<screen name="wbrScreenSaver" position="0,0" size="1024,576" flags="wfNoBorder" backgroundColor="#00000000" title="" >
+				<widget name="display_station" position="400,320" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+				<widget name="display_titel" position="400,290" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+				<widget name="display_time" position="400,260" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+			</screen>"""
+	else:
+		skin = """
+			<screen name="wbrScreenSaver" position="0,0" size="720,576" flags="wfNoBorder" backgroundColor="#00000000" title="" >
+				<widget name="display_station" position="100,320" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+				<widget name="display_titel" position="100,290" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+				<widget name="display_time" position="100,260" zPosition="1" size="720,28" font="Regular;20" valign="left" transparent="1" foregroundColor="#005B00" />
+			</screen>"""
+
+	def __init__(self, session, text):
+		self.sender = text
+		global onwbrScreenSaver
+		onwbrScreenSaver = True
+		self.title2 = self.sender.split('-')[0]
+		self.session = session
+		Screen.__init__(self, session)
+		self["display_station"] = Label(self.sender)
+		self["display_nplaying"] = Label("")
+		self["display_titel"] = Label("webradioFS - Stream von Station:")
+		self["display_time"] = Label("")
+		self["actions"] = ActionMap(["WizardActions", "DirectionActions", "ColorActions", "EventViewActions"],
+		{
+			"back": self.close,
+			"right": self.close,
+			"left": self.close,
+			"up": self.close,
+			"down": self.close,
+			"ok": self.close,
+			"pageUp": self.close,
+			"pageDown": self.close,
+			"yellow": self.close,
+			"blue": self.close,
+			"red": self.close,
+			"green": self.close,
+			"right": self.close,
+			"left": self.close,
+			"prevBouquet": self.close,
+			"nextBouquet": self.close,
+			"info": self.close,
+		}, -1)
+
+		self.onClose.append(self.__onClose)
+		self.onClose.append(self.disconnectFromMetadataUpdates)
+		self.onLayoutFinish.append(self.startRun)
+		self.moveTimer = eTimer()
+		self.moveTimer.timeout.get().append(self.moveTimer_Timeout)
+		self.moveTimer.stop()
+
+	def connectToMetadataUpdates(self):
+		global streamplayer
+		if streamplayer is not None:
+			streamplayer.metadatachangelisteners.append(self.onMetadataChanged)
+
+	def disconnectFromMetadataUpdates(self):
+		global streamplayer
+		try:
+			streamplayer.metadatachangelisteners.remove(self.onMetadataChanged)
+		except Exception,e:
+			pass
+
+	def onMetadataChanged(self,title):
+		#global streamtitel
+		#stream = self["streamlist"].l.getCurrentSelection()[0]
+		#streamtitel = stream.getName().split('-')[0]
+		#self.setTitle("Titel: %s"%streamtitel)
+		try:
+			#self["metadata"].setText(title)
+			self.streamtitel2= "Titel: " + title
+			self["display_nplaying"].setText("%s"%self.streamtitel2)
+		except Exception,e:
+			self.disconnectFromMetadataUpdates()
+			self["display_nplaying"].setText("%s"%self.streamtitel2)
+
+	def startRun(self):
+		self.connectToMetadataUpdates()
+		self.moveTimer.start(10000)
+
+	def moveTimer_Timeout(self):
+		self.moveTimer.stop()
+		tage = ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag', 'Samstag', 'Sonntag']
+		diezeit = time.localtime(time.time())
+		self.TagesZahl = tage[diezeit[6]]
+		uhrzeit = strftime("%H:%M",localtime())
+		timewidget = self.TagesZahl +", " + strftime("%d.%m.%Y",localtime()) + "   " + uhrzeit
+		self["display_time"].setText(timewidget)
+		titeltext = uhrzeit + "\n" + self.title2
+		self.setTitle("%s"%(titeltext))
+		if (getDesktop(0).size().width() == 1280):
+			jetzt = time.time()
+			x = random.randint(40, 680)
+			y = random.randint(20, 550)
+			self["display_nplaying"].move(ePoint(x,y+105))
+			self["display_station"].move(ePoint(x,y+75))
+			self["display_titel"].move(ePoint(x,y+45))
+			self["display_time"].move(ePoint(x,y+10))
+		else:
+			x = random.randint(0, 482)
+			y = random.randint(0, 338)
+			self["display_nplaying"].move(ePoint(x+20,y+100))
+			self["display_station"].move(ePoint(x,y+70))
+			self["display_titel"].move(ePoint(x,y+40))
+			self["display_time"].move(ePoint(x,y+10))
+		self.moveTimer.start(10000)
+
+	def __onClose(self):
+		if self.moveTimer.isActive():
+			self.moveTimer.stop()
+		global onwbrScreenSaver
+		onwbrScreenSaver = None
+		self.close()
+
+####################################################################################################################
+class Blackscreen(Screen):
+	def __init__(self, session, args = None):
+		desktop_size = getDesktop(0).size()
+		Blackscreen.skin = """<screen name="webradioFS" position="0,0" size="%d,%d" flags="wfNoBorder" zPosition="-1" backgroundColor="black" />""" %(desktop_size.width(), desktop_size.height())
+		Screen.__init__(self, session)
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS_StreamInterface.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS_StreamInterface.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS_StreamInterface.py	(revision 9331)
@@ -0,0 +1,143 @@
+from twisted.internet import reactor
+from twisted.web.client import HTTPClientFactory, HTTPPageDownloader, _parse
+
+valid_types = ("MP3","PLS") #list of playable mediatypes
+
+def getPage(url, contextFactory=None, *args, **kwargs):
+	scheme, host, port, path = _parse(url)
+	factory = LimitedHTTPClientFactory(url, *args, **kwargs)
+	if scheme == 'https':
+		from twisted.internet import ssl 
+		if contextFactory is None:
+			contextFactory = ssl.ClientContextFactory()
+		reactor.connectSSL(host, port, factory, contextFactory)
+	else:
+		reactor.connectTCP(host, port, factory)
+	return factory.deferred
+
+class LimitedHTTPClientFactory(HTTPClientFactory):
+
+	LIMIT = 1024
+
+	protocol = HTTPPageDownloader
+
+	def __init__(self, *args, **kwargs):
+		HTTPClientFactory.__init__(self, *args, **kwargs)
+		self.curlength = 0
+		self.buf = ""
+
+	def buildProtocol(self, addr):
+		self.p = HTTPClientFactory.buildProtocol(self, addr)
+		return self.p
+
+	def pageStart(self, p):
+		pass
+
+	def pagePart(self, d):
+		if self.status == '200':
+			self.curlength += len(d)
+			if self.curlength >= self.LIMIT:
+				print "[LimitedHTTPClientFactory] reached limit"
+				# XXX: timing out here is pretty hackish imo
+				self.p.timeout()
+				return
+		self.buf += d
+
+	def pageEnd(self):
+		if self.waiting:
+			self.waiting = 0
+			self.deferred.callback(self.buf)
+
+class StreamInterface:
+	def __init__(self,session,cbListLoaded=None):
+		self.session = session
+		self.cbListLoaded = cbListLoaded
+		self.list= [] # contains the streams in this iface
+
+	def getList(self):
+		#loads a list auf Streams into self.list
+		pass
+
+	def getMenuItems(self,selectedStream,generic=False):
+		# this return a list of MenuEntries of actions of this iterface
+		# list=(("item1",func1),("item2",func2), ... )
+		#
+		# generic=True indicates, that items of the returned list are services
+		# in any context (like saving a stream to the favorites)
+		return []
+
+	def OnListLoaded(self):
+		# called from the interface, if list was loaded
+		if self.cbListLoaded is not None:
+			self.cbListLoaded(self.list)
+
+###############################################################################
+class Stream:
+	isfavorite = False
+
+	def __init__(self,name,description,url,type="mp3"):
+		self.name = name
+		self.description = description
+		self.url = url
+		self.type=type
+
+	def getName(self):
+		return self.name
+
+	def getDescription(self):
+		return self.description
+
+	def setName(self,name):
+		self.name = name
+
+	def setDescription(self,description):
+		self.description = description
+
+	def setURL(self,url):
+		self.url = url
+
+	def getURL(self, callback):
+		self.callback = callback
+		if self.type.lower() == "pls":
+			self.getPLSContent()
+		else:
+			self.callback(self.url)
+
+	def getURL2(self):
+		if self.type.lower() == "pls":
+			self.getPLSContent()
+		else:
+			return self.url
+
+	def getPLSContent(self):
+		print "loading PLS of stream ",self.name,self.url
+		getPage(self.url).addCallback(self._gotPLSContent).addErrback(self._errorPLSContent)
+
+	def _gotPLSContent(self, lines):
+		if lines.startswith("ICY "):
+			print "PLS expected, but got ICY stream"
+			self.type = "mp3"
+			self.callback(self.url)
+
+		else:
+			for line in lines.split('\n'):
+				if line.startswith("File"):
+					url = line.split("=")[1].rstrip().strip()
+					self.callback(url)
+					break
+				print "Skipping:", line
+
+	def _errorPLSContent(self, data, callback):
+		callback(None)
+
+	def setFavorite(self,TrueFalse):
+		self.isfavorite = TrueFalse
+
+	def isFavorite(self):
+		return self.isfavorite
+
+	def setType(self,type):
+		self.type=type
+
+	def getType(self):
+		return self.type
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS_StreamPlayer1.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS_StreamPlayer1.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/MC_WebRadioFS_StreamPlayer1.py	(revision 9331)
@@ -0,0 +1,71 @@
+from enigma import eServiceReference, iServiceInformation
+import timeoutsocket
+from Screens.MessageBox import MessageBox
+import urllib, socket
+
+class StreamPlayer:
+	is_playing = False
+
+	def __init__(self, session, args=0):
+		print "[webradioFS.StreamPlayer] init StreamPlayer"
+		self.is_playing = False
+		self.session = session
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+		self.session.nav.event.append(self.__event)
+		self.metadatachangelisteners = []
+
+	def __event(self, ev):
+		print "[webradioFS.StreamPlayer] EVENT ==>", ev
+		if ev == 5: # can we use a constant here instead of just 5?
+			currentServiceRef = self.session.nav.getCurrentService()
+			if currentServiceRef is not None:
+				#it seems, that only Title is avaible for now
+				sTagTitle = currentServiceRef.info().getInfoString(iServiceInformation.sTagTitle)
+				self._onMetadataChanged(sTagTitle)
+
+	def _onMetadataChanged(self,title):
+		for i in self.metadatachangelisteners:
+			i(title)
+
+	def play(self, stream):
+		if self.is_playing:
+			self.stop()
+		stream.getURL(self._playURL)
+
+	def _playURL(self, url=None):
+		timeoutsocket.setDefaultSocketTimeout(10)
+		urlopener = urllib.URLopener() 
+		if not url:
+			print "no URL provided for play"
+			return
+		try:
+			con = urlopener.open(url)
+			print "[webradioFS.StreamPlayer] playing stream", url
+			esref = eServiceReference("4097:0:0:0:0:0:0:0:0:0:%s" % url.replace(':', '%3a'))
+			try:
+				self.session.nav.playService(esref)
+				self.is_playing = True
+			except:
+				print "[webradioFS.StreamPlayer] Could not play %s" % esref
+		except timeoutsocket.Timeout:
+			self.session.open(MessageBox,_("Verbindungsfehler, Timout\n Zeitueberschreitung bei Verbindung"), MessageBox.TYPE_ERROR)
+		except IOError, e:
+			text = "Seite nicht erreichbar:\n" +str(e) +"\n(Adresse: "+url+" )"
+			self.session.open(MessageBox,_(text), MessageBox.TYPE_ERROR)
+		except:
+			self.session.open(MessageBox,_("anderer Fehler"), MessageBox.TYPE_ERROR)
+
+	def stop(self, text=""):
+		if self.is_playing:
+			print "[webradioFS.StreamPlayer] stop streaming", text
+			try:
+				self.is_playing = False
+				self.session.nav.stopService()
+				self.session.nav.playService(self.oldService)
+				self.exit()
+			except TypeError, e:
+				print " ERROR Z", e
+				self.exit()
+
+	def exit(self):
+		self.stop()
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/__init__.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/__init__.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/__init__.py	(revision 9331)
@@ -0,0 +1,73 @@
+import Plugins.Plugin
+from Components.config import config, ConfigSubsection, ConfigSelection, ConfigInteger, ConfigText, ConfigYesNo, configfile
+from skin import loadSkin
+from enigma import getDesktop
+from Components.Language import language
+from Tools.Directories import resolveFilename, SCOPE_LANGUAGE, SCOPE_PLUGINS
+import gettext
+
+currentmcversion = "09227"
+currentmcplatform = "sh4"
+
+config.plugins.mc_globalsettings = ConfigSubsection()
+config.plugins.mc_globalsettings.showinmainmenu = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showinextmenu = ConfigYesNo(default=True)
+
+config.plugins.mc_globalsettings.showaudioplayer = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showvideoplayer = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showpictureviewer = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showappletrailer = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showmyvideo = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showmultimediathek = ConfigYesNo(default=True) # is not used anymore...maybe it will come back
+config.plugins.mc_globalsettings.showvlcplayer = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showfilebrowser = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showinternetbrowser = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showradioplayer = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showwebradio = ConfigYesNo(default=True)
+config.plugins.mc_globalsettings.showweatherinfo = ConfigYesNo(default=True)
+
+config.plugins.mc_globalsettings.currentversion = ConfigInteger(0, (0, 10000))
+config.plugins.mc_globalsettings.currentplatform = ConfigText(default = currentmcplatform)
+config.plugins.mc_globalsettings.setstablestartdir = ConfigText(default = "no")
+
+config.plugins.mc_globalsettings.currentskin = ConfigSubsection()
+config.plugins.mc_globalsettings.currentskin.path = ConfigText(default = "/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml")
+
+config.plugins.mc_globalsettings.currentversion.value = currentmcversion
+config.plugins.mc_globalsettings.currentplatform.value = currentmcplatform
+
+# Load Language
+lang = language.getLanguage()
+print "[MediaCenter] LANGUAGE:", lang[:2]
+
+gettext.bindtextdomain("enigma2", resolveFilename(SCOPE_LANGUAGE))
+gettext.textdomain("enigma2")
+gettext.bindtextdomain("MediaCenter", "%s%s" % (resolveFilename(SCOPE_PLUGINS), "Extensions/MediaCenter/locale/"))
+
+def _(txt):
+	t = gettext.dgettext("MediaCenter", txt)
+	if t == txt:
+		t = gettext.gettext(txt)
+	return t
+
+# Load Skin
+try:
+	if config.plugins.mc_globalsettings.currentskin.path.value == '/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml':
+		if getDesktop(0).size().width() == 720:
+			loadSkin("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml")
+		elif getDesktop(0).size().width() == 1280:
+			loadSkin("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skinHD.xml")
+		else:
+			loadSkin("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skinKS.xml")
+		
+	else:
+		loadSkin(config.plugins.mc_globalsettings.currentskin.path.value)
+except Exception, e:
+	# set default skin temporary to detect the correct resolution for the CoverView
+	config.plugins.mc_globalsettings.currentskin.path.value = "/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml"
+	if getDesktop(0).size().width() == 720:
+		loadSkin("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skin.xml")
+	elif getDesktop(0).size().width() == 1280:
+		loadSkin("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skinHD.xml")
+	else:
+		loadSkin("/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/skinKS.xml")
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/keymap.xml
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/keymap.xml	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/keymap.xml	(revision 9331)
@@ -0,0 +1,60 @@
+<keymap>
+	<map context="MC_AudioPlayerActions">
+		<key id="KEY_OK" mapto="ok" flags="m" />
+		<key id="KEY_EXIT" mapto="cancel" flags="m" />
+		<key id="KEY_UP" mapto="up" flags="m" />
+		<key id="KEY_DOWN" mapto="down" flags="m" />
+		<key id="KEY_LEFT" mapto="left" flags="m" />
+		<key id="KEY_RIGHT" mapto="right" flags="m" />
+		<key id="KEY_MENU" mapto="menu" flags="m" />
+		<key id="KEY_VIDEO" mapto="video" flags="m" />
+		<key id="KEY_TV" mapto="stop" flags="m" />
+		<key id="KEY_INFO" mapto="info" flags="m" />
+		<key id="KEY_CHANNELUP" mapto="nextBouquet" flags="m" />
+		<key id="KEY_CHANNELDOWN" mapto="prevBouquet" flags="m" />
+		<key id="KEY_FASTFORWARD" mapto="nextBouquet" flags="m" />
+		<key id="KEY_REWIND" mapto="prevBouquet" flags="m" />
+		<key id="KEY_RED" mapto="red" flags="m" />
+		<key id="KEY_YELLOW" mapto="yellow" flags="m" />
+		<key id="KEY_GREEN" mapto="green" flags="m" />
+		<key id="KEY_BLUE" mapto="blue" flags="m" />
+	</map>
+	
+	<map context="MC_VideoPlayerActions">
+		<key id="KEY_OK" mapto="ok" flags="m" />
+		<key id="KEY_EXIT" mapto="cancel" flags="m" />
+		<key id="KEY_UP" mapto="up" flags="m" />
+		<key id="KEY_DOWN" mapto="down" flags="m" />
+		<key id="KEY_LEFT" mapto="left" flags="m" />
+		<key id="KEY_RIGHT" mapto="right" flags="m" />
+		<key id="KEY_MENU" mapto="menu" flags="m" />
+		<key id="KEY_VIDEO" mapto="video" flags="m" />
+		<key id="KEY_TV" mapto="stop" flags="m" />
+		<key id="KEY_INFO" mapto="info" flags="m" />
+		<key id="KEY_CHANNELUP" mapto="nextBouquet" flags="m" />
+		<key id="KEY_CHANNELDOWN" mapto="prevBouquet" flags="m" />
+		<key id="KEY_RED" mapto="red" flags="m" />
+		<key id="KEY_YELLOW" mapto="yellow" flags="m" />
+		<key id="KEY_GREEN" mapto="green" flags="m" />
+		<key id="KEY_BLUE" mapto="blue" flags="m" />
+	</map>
+	
+	<map context="MC_PictureViewerActions">
+		<key id="KEY_OK" mapto="ok" flags="m" />
+		<key id="KEY_EXIT" mapto="cancel" flags="m" />
+		<key id="KEY_UP" mapto="up" flags="m" />
+		<key id="KEY_DOWN" mapto="down" flags="m" />
+		<key id="KEY_LEFT" mapto="left" flags="m" />
+		<key id="KEY_RIGHT" mapto="right" flags="m" />
+		<key id="KEY_MENU" mapto="menu" flags="m" />
+		<key id="KEY_VIDEO" mapto="video" flags="m" />
+		<key id="KEY_TV" mapto="stop" flags="m" />
+		<key id="KEY_INFO" mapto="info" flags="m" />
+		<key id="KEY_CHANNELUP" mapto="nextBouquet" flags="m" />
+		<key id="KEY_CHANNELDOWN" mapto="prevBouquet" flags="m" />
+		<key id="KEY_RED" mapto="red" flags="m" />
+		<key id="KEY_YELLOW" mapto="yellow" flags="m" />
+		<key id="KEY_GREEN" mapto="green" flags="m" />
+		<key id="KEY_BLUE" mapto="blue" flags="m" />
+	</map>
+</keymap>
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/maintainer.info
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/maintainer.info	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/maintainer.info	(revision 9331)
@@ -0,0 +1,4 @@
+homey@battletracker.com
+DreamBox MediaCenter Plugin
+
+moded by obi and civer for AAF Duckboxes
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/plugin.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/plugin.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/plugin.py	(revision 9331)
@@ -0,0 +1,386 @@
+from Screens.Screen import Screen
+from Components.ActionMap import ActionMap
+from Components.ConfigList import ConfigList
+from Components.config import config, ConfigSubsection, ConfigYesNo
+from Components.Console import Console
+from Screens.Console import Console as Screen_Console
+from Screens.MessageBox import MessageBox
+from Components.Sources.List import List
+from Plugins.Plugin import PluginDescriptor
+from os import path as os_path, system as os_system
+from enigma import eConsoleAppContainer, evfd, getDesktop
+from time import sleep as time_sleep
+
+from __init__ import _
+
+from GlobalFunctions import MC_MessageBox, MC_ChoiceBox
+from Plugins.Extensions.Aafpanel.plugin import command
+
+# Plugins
+from MC_AudioPlayer import MC_AudioPlayer
+from MC_VideoPlayer import MC_VideoPlayer
+from MC_RadioPlayer import MC_RadioPlayer
+from MC_PictureViewer import MC_PictureViewer
+from MC_WeatherInfo import WeatherPlugin
+from MC_Settings import MC_Settings
+from MC_WebRadioFS import WebradioScreenBrowser
+from MC_FileBrowser import MC_FileBrowser
+from MC_AppleTrailer import MC_AppleTrailer
+from MC_MyVideo import MC_MyVideo
+
+emu = "none"
+cemu = "none"
+
+config.plugins.MediaCenter = ConfigSubsection()
+config.plugins.MediaCenter.Enabled = ConfigYesNo(default=False)
+config.plugins.mc_playing = ConfigSubsection()
+config.plugins.mc_playing.Enabled = ConfigYesNo(default=False)
+
+boxversion = command('cat /etc/model')
+
+class DMC_MainMenu(Screen):
+	def __init__(self, session):
+		global emu, cemu
+		Screen.__init__(self, session)
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+		self.session.nav.stopService()
+		evfd.getInstance().vfd_write_string("MEDIACENTER")
+		Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep rarfs | grep -v '/dev/' | cut -d ' ' -f3`; killall -9 rarfs"))
+		Console().ePopen(("/bin/umount -fl `mount | grep fuse | grep -v '/dev/' | cut -d ' ' -f3`; /bin/umount -fl `mount | grep iso9660 | cut -d ' ' -f3`; killall -9 rarfs fusesmb curlftpfs"))
+
+		self.container = eConsoleAppContainer()
+		self.container.execute('echo 3 > /proc/sys/vm/drop_caches')
+
+		cemu = ''
+		cem = open('/var/etc/autostart/start-config')
+		ce = cem.readlines()
+		cem.close()
+		for line in ce:
+			if line.find("emucontrol=") > -1:
+				cemu = line.split('=')
+				cemu = cemu[1].strip()
+				cemu = cemu.replace("\n", "")
+				cemu = cemu.replace('"', "")
+		cemuck = cemu.split(' ')
+		cemuck = cemuck[0]
+
+		if cemuck.find('y') > -1:
+			print "[MC_plugin] cemuck", cemuck
+			
+			checkactive = command("emu.sh active")
+			if checkactive != '':
+				infoname = command("emu.sh infoname")
+				self.container = eConsoleAppContainer()
+				self.container.execute('emu.sh halt')
+				evfd.getInstance().vfd_write_string( infoname + " Stop" )
+#				time_sleep(2)
+
+		evfd.getInstance().vfd_write_string("MEDIACENTER")
+		config.plugins.MediaCenter.Enabled = ConfigYesNo(default=True)
+		self.whichPlugin = "None"
+
+		list = []
+		if config.plugins.mc_globalsettings.showaudioplayer.value is True:
+			list.append((_("My Music"), "MC_AudioPlayer", "menu_music", "50"))
+		if config.plugins.mc_globalsettings.showvideoplayer.value is True:
+			list.append((_("My Videos"), "MC_VideoPlayer", "menu_video", "50"))
+		if config.plugins.mc_globalsettings.showpictureviewer.value is True:
+			list.append((_("My Pictures"), "MC_PictureViewer", "menu_pictures", "50"))	
+		#if config.plugins.mc_globalsettings.showmultimediathek.value is True:
+			#list.append((_("Multi Mediathek"), "MultiMediathek", "menu_multimediathek", "50"))
+		if config.plugins.mc_globalsettings.showappletrailer.value is True:
+			list.append((_("Apple Trailer"), "MC_AppleTrailer", "menu_appletrailer", "50"))
+		if config.plugins.mc_globalsettings.showmyvideo.value is True:
+			list.append((_("MyVideo"), "MC_MyVideo", "menu_myvideo", "50"))
+		if config.plugins.mc_globalsettings.showvlcplayer.value is True:
+			list.append((_("Vlc Player"), "VlcPlayer", "menu_vlcplayer", "50"))
+		if config.plugins.mc_globalsettings.showfilebrowser.value is True:
+			list.append((_("Filebrowser"), "MC_FileBrowser", "menu_browser", "50"))
+		if boxversion.upper() == 'UFS912' or boxversion.upper() == 'AT7500':
+			if config.plugins.mc_globalsettings.showinternetbrowser.value is True:
+				list.append((_("Internet Browser"), "MC_Qtbrowser", "menu_qtbrowser", "50"))
+		if config.plugins.mc_globalsettings.showradioplayer.value is True:
+			list.append((_("Radio Player"), "MC_RadioPlayer", "menu_radio", "50"))
+		if config.plugins.mc_globalsettings.showwebradio.value is True:
+			list.append((_("WebRadioFS"), "MC_WebRadioFS", "menu_webradiofs", "50"))
+		if config.plugins.mc_globalsettings.showweatherinfo.value is True:
+			list.append((_("Weather Info"), "MC_WeatherInfo", "menu_weather", "50"))
+		list.append((_("Settings"), "MC_Settings", "menu_settings", "50"))
+		self["menu"] = List(list)
+
+		self["actions"] = ActionMap(["OkCancelActions"],
+		{
+			"cancel": self.Exit,
+			"ok": self.okbuttonClick
+		}, -1)
+
+		# start checking mayhemIII skinversion for updates
+		self.onFirstExecBegin.append(self.checkmayhemIIIskin)
+
+	def okbuttonClick(self):
+		print "[MC_plugin] okbuttonClick"
+		selection = self["menu"].getCurrent()
+		if selection is not None:
+			if selection[1] == "MC_VideoPlayer":
+				self.session.open(MC_VideoPlayer)
+
+			elif selection[1] == "MC_FileBrowser":
+				self.session.open(MC_FileBrowser)
+
+			elif selection[1] == "MC_PictureViewer":
+				self.session.open(MC_PictureViewer)
+
+			elif selection[1] == "MC_AudioPlayer":
+				self.session.open(MC_AudioPlayer)
+
+			elif selection[1] == "MC_RadioPlayer":
+				ret = os_system("checknet")
+				if ret == 0:
+					self.session.open(MC_RadioPlayer)
+				else:
+					self.session.open(MC_MessageBox, _("Start of application without internet not allowed."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+
+			elif selection[1] == "MC_Qtbrowser":
+				ret = os_system("checknet")
+				if ret == 0:
+					if os_path.isfile("/var/bin/browser/browser") == True:
+						self.session.openWithCallback(self.startQT, MC_MessageBox,_("Do you really want to start the Internetbrowser? Enigma2 will be killed and the Browser will be started!"), MC_MessageBox.TYPE_YESNO)
+					else:
+						self.whichPlugin = "qtbrowser" # set Plugin for self.downloadplugin
+						self.session.openWithCallback(self.downloadPlugin, MC_ChoiceBox, title=_("QT Browser is not installed! Download it?"), list=[(_("Yes! Try to install to flash!"), "flash"), (_("No! Do not install!"), "no")])
+				else:
+					self.session.open(MC_MessageBox, _("Start of application without internet not allowed."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+
+			elif selection[1] == "MC_AppleTrailer":
+				ret = os_system("checknet")
+				if ret == 0:
+					self.session.open(MC_AppleTrailer)
+				else:
+					self.session.open(MC_MessageBox, _("Start of application without internet not allowed."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+
+			elif selection[1] == "MC_MyVideo":
+				ret = os_system("checknet")
+				if ret == 0:
+					self.session.open(MC_MyVideo)
+				else:
+					self.session.open(MC_MessageBox, _("Start of application without internet not allowed."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+
+			elif selection[1] == "MultiMediathek":
+				ret = os_system("checknet")
+				if ret == 0:
+					if os_path.exists("/usr/lib/enigma2/python/Plugins/Extensions/MultiMediathek/") == True:
+						from Plugins.Extensions.MultiMediathek.plugin import *
+						self.session.open(MultiMediathek)
+					else:
+						if os_path.exists("/var/swap/extensions/MultiMediathek/") == True:
+							self.session.open(MC_MessageBox, _("The MultiMediathek plugin is installed in swap extensions but not mounted! Please restart your box so that the plugin will work correctly!"),  MC_MessageBox.TYPE_INFO)
+						else:
+							self.whichPlugin = "multimediathek" # set Plugin for self.downloadplugin
+							if os_path.exists("/var/swap/extensions/"):
+								self.session.openWithCallback(self.downloadPlugin, MC_ChoiceBox, title=_("MultiMediathek is not installed! Download it?"), list=[(_("Yes! Try to install to flash!"), "flash"), (_("Yes! Try to install to swap extensions!"), "swap"), (_("No! Do not install!"), "no")])
+							else:
+								self.session.openWithCallback(self.downloadPlugin, MC_ChoiceBox, title=_("MultiMediathek is not installed! Download it?"), list=[(_("Yes! Try to install to flash!"), "flash"), (_("No! Do not install!"), "no")])
+				else:
+					self.session.open(MC_MessageBox, _("Start of application without internet not allowed."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+
+
+			elif selection[1] == "VlcPlayer":
+				ret = os_system("checknet")
+				if ret == 0:
+					if os_path.exists("/usr/lib/enigma2/python/Plugins/Extensions/VlcPlayer/") == True:
+						from Plugins.Extensions.VlcPlayer.plugin import main as vlcplugin
+						vlcplugin(self.session)
+					else:
+						if os_path.exists("/var/swap/extensions/VlcPlayer/") == True:
+							self.session.open(MC_MessageBox, _("The VLC Player plugin is installed in swap extensions but not mounted! Please restart your box so that the plugin will work correctly!"),  MC_MessageBox.TYPE_INFO)
+						else:
+							self.whichPlugin = "vlcplayer" # set Plugin for self.downloadplugin
+							if os_path.exists("/var/swap/extensions/"):
+								self.session.openWithCallback(self.downloadPlugin, MC_ChoiceBox, title=_("VLC Player is not installed! Download it?"), list=[(_("Yes! Try to install to flash!"), "flash"), (_("Yes! Try to install to swap extensions!"), "swap"), (_("No! Do not install!"), "no")])
+							else:
+								self.session.openWithCallback(self.downloadPlugin, MC_ChoiceBox, title=_("VLC Player is not installed! Download it?"), list=[(_("Yes! Try to install to flash!"), "flash"), (_("No! Do not install!"), "no")])
+
+				else:
+					self.session.open(MC_MessageBox, _("Start of application without internet not allowed."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+
+			elif selection[1] == "MC_WebRadioFS":
+				ret = os_system("checknet")
+				if ret == 0:
+					self.session.open(WebradioScreenBrowser)
+				else:
+					self.session.open(MC_MessageBox, _("Start of application without internet not allowed."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+
+			elif selection[1] == "MC_WeatherInfo":
+				ret = os_system("checknet")
+				if ret == 0:
+					self.session.open(WeatherPlugin)
+				else:
+					self.session.open(MC_MessageBox, _("Start of application without internet not allowed."), type = MC_MessageBox.TYPE_INFO, timeout = 10)
+
+			elif selection[1] == "MC_Settings":
+				self.session.open(MC_Settings)
+
+			else:
+				self.session.open(MC_MessageBox,(_("Error: Could not find plugin %s\ncoming soon ... :)")) % (selection[1]),  MC_MessageBox.TYPE_INFO)
+
+	def downloadPlugin(self, answer):
+		if answer is not None and answer[1] != "no":
+			ipkurl = command('cat /var/etc/ipkg/official-feed.conf | cut -d " " -f3')
+			os_system('ipkg update')
+			if answer[1] == "flash":
+				if self.whichPlugin == "qtbrowser": # other package name for QTBrowser
+					ipktype = "enigma2-plugin-browsers-"
+				else:
+					ipktype = "enigma2-plugin-mediacenter-"
+				print "[MC_plugin] install %s to flash" % self.whichPlugin
+			if answer[1] == "swap":
+				ipktype = "enigma2-plugin-swapmediacenter-"
+				print "[MC_plugin] install %s to swap extensions" % self.whichPlugin
+			ipkpackage = command('cat /usr/lib/ipkg/cross | grep "Filename: ' + ipktype + '" | grep -m1 ' + self.whichPlugin + ' | sed "s/Filename: //"')
+			print "[MC_plugin] download this package:", ipkpackage
+			self.session.open(Screen_Console, title = _("installing plugin..."), cmdlist = ["ipkg install " + ipkurl +"/" + ipkpackage], closeOnSuccess = False)
+
+	def checkmayhemIIIskin(self):
+		actualversion = "4.0" # always add needed mayhemIII version here
+		self.usemayhemIII = command('cat /etc/enigma2/settings | grep config.plugins.mc_globalsettings.currentskin.path | grep mayhemIII | tr "=" "\n" | tail -n 1')
+		if self.usemayhemIII != "" and os_path.isfile(self.usemayhemIII): # check for actual mayhemIII and check for existing skin.xml
+			print "[MC_plugin] current skin: mayhemIII detected!"
+			self.mayhemIIIversion = command('cat ' + self.usemayhemIII + ' | grep "XBMC Mod by Civer" | tr " " "\n" | head -n 4 | tail -n 1 | sed "s/v//"')
+			print "[MC_plugin] mayhemIII version is:", self.mayhemIIIversion
+			print "[MC_plugin] actual mayhemIII version is:", actualversion
+			# Check that self.mayhemIIIversion has the correct format otherwise set an old version to download a new skin...
+			if self.mayhemIIIversion is None or self.mayhemIIIversion == "":
+				self.mayhemIIIversion = "1.0"
+			if self.mayhemIIIversion[-2] != ".":
+				self.mayhemIIIversion = "1.0"
+			if float(self.mayhemIIIversion) < float(actualversion):
+				print "[MC_plugin] WARNING: Please update your mayhemIII skin!"
+				self.session.openWithCallback(self.updatemayhemIII, MC_ChoiceBox, title=_("MayhemIII not up to date! Update now?"), list=[(_("Yes! Try to update the skin!"), "yes"), (_("No! Do not update the skin!"), "no")])
+				self.session.open(MC_MessageBox, _("The mayhemIII skin you are using is not up to date! Maybe it will cause errors! Please update your mayhemIII skin!"), type = MC_MessageBox.TYPE_INFO, timeout = 30)
+			else: # check the correct mayhemIII size
+				print "[MC_plugin] check correct mayhemIII resolution..."
+				if getDesktop(0).size().width() == 720:
+					print "[MC_plugin] detected e2-SD skin! No mayhemIII will work!"
+					self.session.open(MC_MessageBox, _("In e2 you activated a SD skin but the MediaCenter skin is a mayhemIII skin! This skin has got another resolution and will not fit correctly on your TV screen!\nPlease choose a KingSize- or an HD-enigma2 skin or activate the Default Skin in the MediaCenter settings!"), type = MC_MessageBox.TYPE_INFO, timeout = 30)
+				else:
+					isHDorKS = command('cat ' + self.usemayhemIII + ' | grep "XBMC Mod by Civer" | tr " " "\n" | head -n 2 | tail -n 1')
+					e2skin = ""
+					if getDesktop(0).size().width() == 1024 and isHDorKS == "MayhemIII-HD" :
+						e2skin = "KingSize"
+					elif getDesktop(0).size().width() == 1280 and isHDorKS == "MayhemIII-KS" :
+						e2skin = "HD"
+					if e2skin != "":
+						print "[MC_plugin] wrong mayhemIII size detected!"
+						#do NOT show MC Messagebox but normal Messagebox so that the whole Message will be shown with every e2 Skin
+						self.session.open(MessageBox, _("The e2 skin you activated is %s size but the MediaCenter skin is the %s skin! This skin will not fit on your TV screen!\nPlease choose the same sized mayhemIII skin or the default skin in the MediaCenter settings!") % (e2skin,isHDorKS), type = MessageBox.TYPE_INFO)
+
+	def updatemayhemIII(self, answer):
+		if answer is not None and answer[1] != "no":
+			ipkurl = command('cat /var/etc/ipkg/official-feed.conf | cut -d " " -f3')
+			os_system('ipkg update')
+			# hd or kingsize
+			#cat /var/swap/mcskins/mayhemIIIHD/skin.xml | grep "XBMC Mod by Civer" | tr " " "\n" | head -n 2 | tail -n 1
+			# MayhemIII-HD
+			# MayhemIII-KS
+			# flash or swap
+			#cat /var/swap/mcskins/mayhemIIIHD/skin.xml | grep "XBMC Mod by Civer" | tr " " "\n" | head -n 3 | tail -n 1
+			#SWAP
+			#FLASH
+			isFLASHorSWAP = command('cat ' + self.usemayhemIII + ' | grep "XBMC Mod by Civer" | tr " " "\n" | head -n 3 | tail -n 1')
+			isHDorKS = command('cat ' + self.usemayhemIII + ' | grep "XBMC Mod by Civer" | tr " " "\n" | head -n 2 | tail -n 1')
+			
+			if isFLASHorSWAP == "FLASH":
+				ipktype = "enigma2-plugin-mediacenter-mayhem3"
+			elif isFLASHorSWAP == "SWAP":
+				ipktype = "enigma2-plugin-swapmediacenter-mayhem3"
+			else:
+				ipktype = ""
+			if isHDorKS == "MayhemIII-HD":
+				ipktype2 = "hd"
+			elif isHDorKS == "MayhemIII-KS":
+				ipktype2 = "ks"
+			else:
+				ipktype2 = ""
+			if ipktype == "" or ipktype2 == "":
+				print "[MC_plugin] ERROR Can not check skin-type!!! Aborting Update..."
+				self.session.open(MC_MessageBox, _("Can not update the skin automatically! Please update the skin manually!"), type = MC_MessageBox.TYPE_INFO, timeout = 30)
+			else: 
+				print "[MC_plugin] checking ipk for: " + ipktype + ipktype2
+				ipkpackage = command('cat /usr/lib/ipkg/cross | grep -m1 "Filename: ' + ipktype + ipktype2 + '" | sed "s/Filename: //"')
+				packageversion = command('cat /usr/lib/ipkg/cross | grep -m1 "Filename: ' + ipktype + ipktype2 + '" | sed "s/Filename: //" | tr "_" "\n" | head -n 2 | tail -n1')
+				print "[MC_plugin] package is:", ipkpackage
+				print "[MC_plugin] package version is:", packageversion
+				if float(self.mayhemIIIversion) >= float(packageversion):
+					print "[MC_plugin] cancel update! Version on the server is older....!"
+					self.session.open(MC_MessageBox, _("The mayhemIII skin on the server is older than your version! Canceling the update!"), type = MC_MessageBox.TYPE_INFO, timeout = 30)
+				else:
+					print "[MC_plugin] updating mayhemIII skin!"
+					self.session.open(MC_MessageBox, _("Please restart your box so that the update will take effect!"), type = MC_MessageBox.TYPE_INFO)
+					self.session.open(Screen_Console, title = _("updating skin..."), cmdlist = ["ipkg install -force-overwrite " + ipkurl +"/" + ipkpackage], closeOnSuccess = False)
+
+	def startQT(self, answer):
+		if answer == True:
+			from Screens.Standby import TryQuitMainloop
+			self.session.open(TryQuitMainloop, 20)
+
+	def Exit(self):
+		global emu, cemu
+
+		self.session.nav.stopService()
+		self.session.nav.playService(self.oldService)
+
+		self.container = eConsoleAppContainer()
+		self.container.execute('echo 3 > /proc/sys/vm/drop_caches')
+
+		cemu = ''
+		cem = open('/var/etc/autostart/start-config')
+		ce = cem.readlines()
+		cem.close()
+		for line in ce:
+			if line.find("emucontrol=") > -1:
+				cemu = line.split('=')
+				cemu = cemu[1].strip()
+				cemu = cemu.replace("\n", "")
+				cemu = cemu.replace('"', "")
+		cemuck = cemu.split(' ')
+		cemuck = cemuck[0]
+
+		if cemuck.find('y') > -1:
+			print "[MC_plugin] cemuck", cemuck
+			
+			checkactive = command("emu.sh active")
+			if checkactive != '':
+				infoname = command("emu.sh infoname")
+				self.container = eConsoleAppContainer()
+				self.container.execute('emu.sh unhalt')
+				evfd.getInstance().vfd_write_string( infoname + " Start" )
+
+		config.plugins.MediaCenter.Enabled = ConfigYesNo(default=False)
+		config.plugins.MediaCenter.save()
+		self.close()
+
+def main(session, **kwargs):
+	session.open(DMC_MainMenu)
+
+def menu(menuid, **kwargs):
+	if menuid == "mainmenu":
+		return [(_("Media Center"), main, "dmc_mainmenu", 44)]
+	return []
+
+def Plugins(**kwargs):
+	if config.plugins.mc_globalsettings.showinmainmenu.value == True and config.plugins.mc_globalsettings.showinextmenu.value == True:
+		return [
+			PluginDescriptor(name = "Media Center", description = "Media Center Plugin for your " + boxversion, icon="plugin.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc = main),
+			PluginDescriptor(name = "Media Center", description = "Media Center Plugin for your " + boxversion, where = PluginDescriptor.WHERE_MENU, fnc = menu),
+			PluginDescriptor(name = "Media Center", description = "Media Center Plugin for your " + boxversion, icon="plugin.png", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)]	
+	elif config.plugins.mc_globalsettings.showinmainmenu.value == True and config.plugins.mc_globalsettings.showinextmenu.value == False:
+		return [
+			PluginDescriptor(name = "Media Center", description = "Media Center Plugin for your " + boxversion, icon="plugin.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc = main),
+			PluginDescriptor(name = "Media Center", description = "Media Center Plugin for your " + boxversion, where = PluginDescriptor.WHERE_MENU, fnc = menu)]
+	elif config.plugins.mc_globalsettings.showinmainmenu.value == False and config.plugins.mc_globalsettings.showinextmenu.value == True:
+		return [
+			PluginDescriptor(name = "Media Center", description = "Media Center Plugin for your " + boxversion, icon="plugin.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc = main),
+			PluginDescriptor(name = "Media Center", description = "Media Center Plugin for your " + boxversion, icon="plugin.png", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)]
+	else:
+		return [
+			PluginDescriptor(name = "Media Center", description = "Media Center Plugin for your " + boxversion, icon="plugin.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc = main)]
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skin.xml
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skin.xml	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skin.xml	(revision 9331)
@@ -0,0 +1,405 @@
+<skin>
+		<output id="0">
+			<resolution xres="720" yres="576" bpp="32" />
+		</output>
+
+		<!-- MC Main Menu -->
+		<screen name="DMC_MainMenu" position="0,0" size="720,576" title="Media Center - Home" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" position="0,488" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" AAF MEDIA CENTER" valign="center" zPosition="1"/>
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+			<widget source="menu" render="Listbox" zPosition="3" transparent="1" position="260,200" size="200,300" scrollbarMode="showOnDemand" enableWrapAround="1" foregroundColor="#FFFFFF" foregroundColorSelected="#FFFFFF" >
+				<convert type="StringList" />
+			</widget>
+		</screen>
+
+		<!-- MC Settings Menu -->
+		<screen name="MC_Settings" position="0,0" size="720,576" title="Media Center - Settings" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" position="0,488" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" SETTINGS" valign="center" zPosition="1"/>
+			<widget source="title" transparent="1" render="Label" zPosition="4" position="100,80" size="280,35" font="Regular;23" />
+			<widget source="menu" render="Listbox" zPosition="4" transparent="1" position="260,210" size="200,200" scrollbarMode="showOnDemand" enableWrapAround="1" foregroundColor="#FFFFFF" foregroundColorSelected="#FFFFFF" >
+				<convert type="StringList" />
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Audio Player -->
+		<screen name="MC_AudioPlayer" position="0,0" size="720,576" title="Media Center - Audio Player" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" MUSIC" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="720,300" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="538,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="373,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="205,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="43,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="43,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="205,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="373,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="538,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="coverArt" position="358,425" size="110,90" zPosition="5" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/aafcoverart.png" transparent="1" alphatest="blend" />
+			<widget name="filelist" transparent="1" position="30,140" zPosition="2" size="665,245" scrollbarMode="showOnDemand" enableWrapAround="1" />
+			<eLabel backgroundColor="#44444a" position="55,425" size="298,95" zPosition="0"/>
+			<widget name="fileinfo" zPosition="2" transparent="1" halign="left" position="60,426" size="385,115" font="Regular;15" foregroundColor="#f0f0f0"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="45,95" size="665,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<ePixmap name="endcap_left" position="478,450" zPosition="2" size="15,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/endcap_left.png" transparent="1" alphatest="on" />
+			<ePixmap name="skipback" position="493,450" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/skipback_disabled.png" />
+			<widget name="play" position="528,450" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/play_disabled.png" />
+			<widget name="stop" position="563,450" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/stop_disabled.png" />
+			<ePixmap name="skipforward" position="598,450" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/skipforward_disabled.png" />
+			<ePixmap name="endcap_right" position="633,450" zPosition="2" size="15,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/endcap_right.png" transparent="1" alphatest="on" />
+			<widget source="session.CurrentService" render="Label" position="80,395" size="80,20" zPosition="3" font="Regular;18" halign="right" transparent="1">
+				<convert type="ServicePosition">Position,ShowHours</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="550,395" size="80,20" zPosition="3" font="Regular;18" halign="left" transparent="1">
+				<convert type="ServicePosition">Remaining,InMinutes</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Progress" position="180,400" size="350,8" zPosition="3" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/progress_mp.png">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="610,394" size="110,26" font="Regular;20" halign="left" zPosition="6" transparent="1">
+				<convert type="ServicePosition">Length</convert>
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Video Player -->
+		<screen name="MC_VideoPlayer" position="0,0" size="720,576" title="Media Center - Video Player" flags="wfNoBorder" backgroundColor="#ff000000" >
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" VIDEO" valign="center" zPosition="1" transparent="1"/>
+			<eLabel backgroundColor="blue" position="538,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="373,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="205,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="43,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="43,526" zPosition="4" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="205,526" zPosition="4" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="373,526" zPosition="4" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="538,526" zPosition="4" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="65,140" zPosition="2" size="590,390" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget source="pageinfo" position="0,528" transparent="1" render="Label" zPosition="2" valign="center" halign="center" size="720,30" font="Regular;14" />
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="65,95" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+
+			<widget name="frame" position="400,0" size="190,200" pixmap="pic_frame.png" zPosition="5" alphatest="on" />
+			<widget name="listview" transparent="1" zPosition="2" position="35,120" size="450,255" itemHeight="32" scrollbarMode="showNever" backgroundColor="#000000" selectionPixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/fanart_list_sub_focus.png" backgroundPixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/fanart_list_sub_nofocus.png" enableWrapAround="1"/>
+
+			<widget name="imdbtitle" transparent="1" zPosition="5" halign="center" position="100,20" size="520,24" font="Regular;24" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+			<widget name="moviecover" transparent="1" zPosition="5" position="40,390" size="124,171" alphatest="on" />
+			<widget name="movieplot" text="" transparent="1" zPosition="5" halign="left" position="150,380" size="550,149" font="Regular;16" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+			<widget name="tvpreview" transparent="1" zPosition="5" position="40,380" size="400,225" alphatest="on" />
+			<widget name="tvplot" text="" transparent="1" zPosition="5" halign="left" position="310,380" size="670,249" font="Regular;16" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+			<widget name="tvcover" transparent="1" zPosition="5" position="800,0" size="124,171" alphatest="on" />
+			<widget name="tvbanner" transparent="0" zPosition="5" position="400,0" size="900,100" alphatest="on" />
+
+			<ePixmap name="mb_bg" position="0,0" zPosition="0" size="720,576" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/background_overlay_SD.png" /> 
+
+			<widget name="nostars" transparent="1" zPosition="5" position="240,48" size="240,24" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/NoStars.png" alphatest="on" />
+			<widget name="stars" transparent="1" zPosition="6" position="240,48" size="240,24" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/Stars.png" />
+
+
+			<widget source="label0" render="Label" position="55,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb0" position="50,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal0" position="95,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label1" render="Label" position="280,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb1" position="275,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal1" position="320,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label2" render="Label" position="505,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb2" position="500,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal2" position="545,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label3" render="Label" position="55,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb3" position="50,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal3" position="95,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label4" render="Label" position="280,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb4" position="275,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal4" position="320,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label5" render="Label" position="505,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb5" position="500,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal5" position="545,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+		</screen>
+
+		<!--MC GlobalFunctions IMDB Info Screen-->
+		<screen name="MC_VideoImdbView" position="0,0" size="720,576" title="Imdbfile Info" backgroundColor="#42000000" >
+			<widget name="thumbCoverBig" position="498,20" size="205,536" zPosition="2" transparent="1" alphatest="on" />
+			<widget name="thumbPosterMid" position="498,20" size="205,536" zPosition="3" transparent="1" alphatest="on" />
+			<widget name="imdbinfo" font="Regular;18" position="35,30" size="460,500" zPosition="4" transparent="1" />
+			<eLabel backgroundColor="green" position="326,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="93,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="93,526" zPosition="5" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="326,526" zPosition="5" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+				<applet type="onLayoutFinish">
+# here you can set the pictures sizes
+self.picX = 205
+self.picY = 536
+# start showing the screen
+self.showPic()
+				</applet>
+		</screen>
+
+		<!--MC MoviePlayer Infobar-->
+		<screen name="MoviePlayerObi" flags="wfNoBorder" position="30,433" size="660,110" title="InfoBar" backgroundColor="#42000000">
+			<eLabel backgroundColor="#32000000" position="556,0" size="104,180" zPosition="1"/>
+			<eLabel backgroundColor="#32000000" position="0,0" size="555,35" zPosition="1"/>
+			<ePixmap position="561,10" zPosition="3" size="94,58" backgroundColor="transparent" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/AAF-MC.png" alphatest="on" transparent="1"/>
+			<widget source="session.CurrentService" render="Progress" position="100,60" size="339,8" zPosition="3" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/progress_mp.png">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<ePixmap position="100,70" zPosition="2" size="339,17" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/mp-scale2.png" alphatest="on"/>
+			<widget source="session.CurrentService" render="Label" position="5,6" size="455,23" valign="top" halign="left" zPosition="3" font="Regular;18" transparent="1">
+				<convert type="ServiceName">Name</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="475,6" size="75,23" font="Regular;21" halign="right" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Length</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="5,53" size="85,30" font="Regular;21" halign="right" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="450,53" size="80,26" font="Regular;21" halign="left" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Remaining</convert>
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="544,77" zPosition="3" size="85,25" font="Regular;23" transparent="1" foregroundColor="#DBDBDB" halign="right" backgroundColor="#3A0000">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Picture Player -->
+		<screen name="MC_PictureViewer" position="0,0" size="720,576" title="Media Center - Pic Viewer" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="720,445" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" PICTURE" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="720,300" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="538,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="373,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="205,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="43,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="43,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="205,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="373,526" zPosition="3" size="150,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="538,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="65,140" zPosition="2" size="590,390" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget source="pageinfo" position="0,528" transparent="1" render="Label" zPosition="2" valign="center" halign="center" size="720,30" font="Regular;14" />
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="45,95" size="665,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+			<widget name="frame" position="400,0" size="190,200" pixmap="pic_frame.png" zPosition="5" alphatest="on" />
+
+			<widget source="label0" render="Label" position="55,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb0" position="50,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal0" position="95,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label1" render="Label" position="280,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb1" position="275,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal1" position="320,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label2" render="Label" position="505,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb2" position="500,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal2" position="545,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label3" render="Label" position="55,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb3" position="50,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal3" position="95,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label4" render="Label" position="280,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb4" position="275,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal4" position="320,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label5" render="Label" position="505,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb5" position="500,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal5" position="545,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+		</screen>
+
+		<!-- MC Radio Player -->
+		<screen name="MC_RadioPlayer" position="0,0" size="720,576" title="Media Center - Radio Player" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" RADIO" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="720,300" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="538,555" size="140,3" zPosition="5"/>
+			<widget name="key_blue" position="538,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="30,120" zPosition="2" size="670,120" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="playlist" transparent="1" position="30,275" zPosition="2" size="670,120" selectionDisabled="1"  scrollbarMode="showOnDemand" enableWrapAround="0"/>
+			<eLabel backgroundColor="#44444a" position="55,425" size="298,95" zPosition="0"/>
+			<widget name="fileinfo" zPosition="2" transparent="1" halign="left" position="60,426" size="385,115" font="Regular;15" foregroundColor="#f0f0f0"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="45,95" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget name="Lplaylist" zPosition="5" transparent="1" halign="left" position="45,250" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC File Browser -->
+		<screen name="MC_FileBrowser" position="0,0" size="720,576" title="Media Center - Filebrowser" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" FILEBROWSER" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="720,315" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="538,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="373,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="205,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="43,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="43,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="205,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="373,526" zPosition="3" size="150,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="538,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="30,120" zPosition="2" size="670,280" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="selectedFile" zPosition="2" transparent="1" halign="center" position="60,426" size="600,120" font="Regular;18" foregroundColor="#f0f0f0"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="45,95" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC WebRadioFS -->
+		<screen name="WebradioScreenBrowser" position="0,0" size="720,576" title="Media Center - WebRadioFS" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text="WEBRADIO FS" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="720,405" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="538,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="373,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="205,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="43,555" size="140,3" zPosition="5"/>
+			<ePixmap pixmap="/usr/local/share/enigma2/skin_default/buttons/key_menu.png" zPosition="5" position="343,533" size="35,25" alphatest="on" />
+			<widget name="key_red" position="43,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="205,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="373,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="538,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="titeltext" position="30,88" zPosition="1" size="660,30" font="Regular;20" transparent="1" />
+			<widget name="streamlist" position="30,118" size="660,370" scrollbarMode="showOnDemand" transparent="1" zPosition="3"/>
+			<widget name="playbalken" position="30,493" zPosition="4" size="660,38" font="Regular;16" backgroundColor="#000000" transparent="0" />
+			<widget name="playtext" position="30,493" zPosition="5" size="660,38" font="Regular;16" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Weather Info -->
+		<screen name="WeatherPlugin" position="0,0" size="720,576" title="Media Center - Weather Info" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="720,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" WEATHER" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="blue" position="538,555" size="140,3" zPosition="5"/>
+			<widget name="key_blue" position="538,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" backgroundColor="#18188b" transparent="1" />
+			<widget name="caption" position="60,230" zPosition="1" size="300,23" font="Regular;22" transparent="1"/>
+			<widget name="currentTemp" position="60,250" zPosition="1" size="300,23" font="Regular;22" transparent="1"/>
+			<widget name="condition" position="60,280" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>
+			<widget name="wind_condition" position="60,305" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>
+			<widget name="humidity" position="60,330" zPosition="1" size="300,20" font="Regular;18" valign="bottom" transparent="1"/>
+			<widget name="weekday1" position="285,230" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday1_icon" position="285,250" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday1_temp" position="271,330" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday2" position="383,230" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday2_icon" position="383,250" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday2_temp" position="369,330" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday3" position="481,230" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday3_icon" position="481,250" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday3_temp" position="468,330" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday4" position="579,230" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday4_icon" position="579,250" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday4_temp" position="565,330" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="statustext" position="100,100" zPosition="1" size="664,170" font="Regular;20" halign="center" valign="center" transparent="1"/>
+			<widget name="info" position="43,526" zPosition="3" size="480,30" font="Regular;18" valign="center" halign="left" transparent="1" />
+			<widget source="global.CurrentTime" render="Label" position="620,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Choice box -->
+		<screen flags="wfNoBorder" name="MC_ChoiceBox" backgroundColor="background" position="252,120" size="520,260" title="Input">
+			<eLabel backgroundColor="#32000000" position="0,0" size="520,30" zPosition="0"/>
+			<eLabel backgroundColor="#56C856" position="0,30" size="520,1" zPosition="1"/>
+			<widget font="Regular;20" name="text" position="20,0" backgroundColor="#32000000" size="400,22" zPosition="3"/>
+			<widget name="list" position="20,40" scrollbarMode="showOnDemand" enableWrapAround="True" size="400,210"/>
+				<applet type="onLayoutFinish">
+# this should be factored out into some helper code, but currently demonstrates applets.
+from enigma import eSize, ePoint
+
+orgwidth = self.instance.size().width()
+orgpos = self.instance.position()
+textsize = self["text"].getSize()
+
+# y size still must be fixed in font stuff...
+textsize = (textsize[0] + 50, textsize[1] + 10)
+count = len(self.list)
+if count &gt; 10:
+	count = 10
+offset = 25 * count
+wsizex = textsize[0] + 30
+wsizey = textsize[1] + offset + 30
+
+if (655 &gt; wsizex):
+	wsizex = 655
+wsize = (wsizex, wsizey)
+
+# resize
+self.instance.resize(eSize(*wsize))
+
+# resize label
+self["text"].instance.resize(eSize(*textsize))
+
+# move list
+listsize = ((wsizex - 40), offset)
+self["list"].instance.move(ePoint(20, (textsize[1] + 15)))
+self["list"].instance.resize(eSize(*listsize))
+
+# center window
+newwidth = wsize[0]
+self.instance.move(ePoint((720-wsizex)/2, (576-wsizey)/(count &gt; 7 and 2 or 3)))
+				</applet>
+		</screen>
+
+		<!-- MC Messagebox -->
+		<screen flags="wfNoBorder" name="MC_MessageBox" backgroundColor="background" position="center,120" size="480,260" title="Message">
+			<eLabel backgroundColor="#32000000" position="0,0" size="480,30" zPosition="0"/>
+			<eLabel backgroundColor="#56C856" position="0,30" size="480,1" zPosition="1"/>
+			<eLabel backgroundColor="#32000000" font="Regular;20" text="Message" halign="left" position="20,0" size="380,22" zPosition="3"/>
+			<widget font="Regular;18" name="text" position="20,35" backgroundColor="background" size="380,22" zPosition="3"/>
+			<widget name="list" position="20,100" scrollbarMode="showOnDemand" size="380,210" zPosition="4"/>
+				<applet type="onLayoutFinish">
+# this should be factored out into some helper code, but currently demonstrates applets.
+from enigma import eSize, ePoint
+
+orgwidth = self.instance.size().width()
+orgpos = self.instance.position()
+textsize = self["text"].getSize()
+
+# y size still must be fixed in font stuff...
+textsize = (textsize[0] + 50, textsize[1] + 50)
+offset = 0
+if self.type == self.TYPE_YESNO:
+	offset = 60
+wsizex = textsize[0] + 60
+wsizey = textsize[1] + offset
+if (280 &gt; wsizex):
+	wsizex = 280
+wsize = (wsizex, wsizey)
+
+
+# resize
+self.instance.resize(eSize(*wsize))
+
+# resize label
+self["text"].instance.resize(eSize(*textsize))
+
+# move list
+listsize = (textsize[0], 50)
+self["list"].instance.move(ePoint(20, textsize[1]))
+self["list"].instance.resize(eSize(*listsize))
+
+# center window
+newwidth = wsize[0]
+self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
+				</applet>
+		</screen>
+
+</skin>
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skinHD.xml
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skinHD.xml	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skinHD.xml	(revision 9331)
@@ -0,0 +1,434 @@
+<skin>
+		<output id="0">
+			<resolution xres="1280" yres="720" bpp="32" />
+		</output>
+
+		<!-- MC Main Menu -->
+		<screen name="DMC_MainMenu" position="0,0" size="1280,720" title="Media Center - Home" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" position="0,632" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="300,28" text=" AAF MEDIA CENTER" valign="center" zPosition="1"/>
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+			<widget source="menu" render="Listbox" zPosition="3" transparent="1" position="260,310" size="200,300" scrollbarMode="showOnDemand" enableWrapAround="1" foregroundColor="#FFFFFF" foregroundColorSelected="#FFFFFF" >
+				<convert type="StringList" />
+			</widget>
+		</screen>
+
+		<!-- MC Settings Menu -->
+		<screen name="MC_Settings" position="0,0" size="1280,720" title="Media Center - Settings" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" position="0,632" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" SETTINGS" valign="center" zPosition="1"/>
+			<widget source="title" transparent="1" render="Label" zPosition="4" position="100,80" size="280,35" font="Regular;23" />
+			<widget source="menu" render="Listbox" zPosition="4" transparent="1" position="260,310" size="210,200" scrollbarMode="showOnDemand" enableWrapAround="1" foregroundColor="#FFFFFF" foregroundColorSelected="#FFFFFF" >
+				<convert type="StringList" />
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Audio Player -->
+		<screen name="MC_AudioPlayer" position="0,0" size="1280,720" title="Media Center - Audio Player" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" MUSIC" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1280,420" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="994,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="708,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="422,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="136,679" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="136,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="422,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="708,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="994,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="coverArt" position="910,160" size="274,224" zPosition="5" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/aafcoverart.png" transparent="1" alphatest="blend" />
+			<eLabel backgroundColor="#44444a" position="147,540" size="455,105" zPosition="0"/>
+			<widget name="fileinfo" zPosition="2" transparent="1" halign="left" position="152,545" size="450,115" font="Regular;15" foregroundColor="#f0f0f0"/>
+			<widget name="filelist" transparent="1" position="70,140" zPosition="2" size="785,350" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="65,95" size="1100,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<ePixmap name="endcap_left" position="858,580" zPosition="2" size="15,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/endcap_left.png" transparent="1" alphatest="on" />
+			<ePixmap name="skipback" position="873,580" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/skipback_disabled.png" />
+			<widget name="play" position="908,580" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/play_disabled.png" />
+			<widget name="stop" position="943,580" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/stop_disabled.png" />
+			<ePixmap name="skipforward" position="978,580" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/skipforward_disabled.png" />
+			<ePixmap name="endcap_right" position="1013,580" zPosition="2" size="15,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/endcap_right.png" transparent="1" alphatest="on" />
+			<widget source="session.CurrentService" render="Label" position="628,540" size="120,20" zPosition="3" font="Regular;18" halign="right" transparent="1">
+				<convert type="ServicePosition">Position,ShowHours</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="1118,540" size="120,20" zPosition="3" font="Regular;18" halign="left" transparent="1">
+				<convert type="ServicePosition">Remaining,InMinutes</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Progress" position="768,548" size="350,8" zPosition="3" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/progress_mp.png">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Video Player -->
+		<screen name="MC_VideoPlayer" position="0,0" size="1280,720" title="Media Center - Video Player" flags="wfNoBorder" backgroundColor="#ff000000" >
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" VIDEO" valign="center" zPosition="1" transparent="1"/>
+			<eLabel backgroundColor="blue" position="994,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="708,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="422,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="136,679" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="136,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="422,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="708,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="994,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="75,140" zPosition="2" size="900,510" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget source="pageinfo" position="0,649" transparent="1" render="Label" zPosition="2" valign="center" halign="center" size="1280,30" font="Regular;14" />
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="75,95" size="1100,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+			<widget name="frame" position="400,0" size="190,200" pixmap="pic_frame.png" zPosition="5" alphatest="on" />
+			<widget name="listview" transparent="1" zPosition="2" position="75,120" size="600,335" itemHeight="32" scrollbarMode="showNever" backgroundColor="#000000" selectionPixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/fanart_list_sub_focus.png" backgroundPixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/fanart_list_sub_nofocus.png" enableWrapAround="1"/>
+
+			<widget name="imdbtitle" transparent="1" zPosition="5" halign="center" valign="top" position="160,40" size="960,28" font="Regular;24" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+			<widget name="moviecover" transparent="1" zPosition="5" position="75,490" size="124,171" alphatest="on" />
+			<widget name="movieplot" text="" transparent="1" zPosition="5" halign="left" position="185,490" size="850,149" font="Regular;16" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+
+			<widget name="tvpreview" transparent="1" zPosition="5" position="75,490" size="200,171" alphatest="on" />
+			<widget name="tvplot" text="" transparent="1" zPosition="5" halign="left" position="300,490" size="670,249" font="Regular;16" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+			<!-- NOT CONFIGURED YET -->
+			<!--<widget name="tvcover" transparent="1" zPosition="5" position="800,0" size="124,171" alphatest="on" />
+			<widget name="tvbanner" transparent="0" zPosition="5" position="400,0" size="900,100" alphatest="on" />-->
+
+			<ePixmap name="mb_bg" position="0,0" zPosition="0" size="1280,720" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/background_overlay_HD.png" /> 
+
+			<widget name="nostars" transparent="1" zPosition="5" position="520,75" size="240,24" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/NoStars.png" alphatest="on" />
+			<widget name="stars" transparent="1" zPosition="6" position="520,75" size="240,24" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/Stars.png" />
+
+			<widget source="label0" render="Label" position="65,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb0" position="60,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal0" position="105,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label1" render="Label" position="300,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb1" position="295,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal1" position="340,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label2" render="Label" position="535,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb2" position="530,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal2" position="575,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label3" render="Label" position="770,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb3" position="765,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal3" position="810,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label4" render="Label" position="1005,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb4" position="1000,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal4" position="1045,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label5" render="Label" position="65,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb5" position="60,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal5" position="105,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label6" render="Label" position="300,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb6" position="295,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal6" position="340,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label7" render="Label" position="535,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb7" position="530,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal7" position="575,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label8" render="Label" position="770,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb8" position="765,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal8" position="810,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label9" render="Label" position="1005,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb9" position="1000,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal9" position="1045,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+		</screen>
+
+		<!--MC GlobalFunctions IMDB Info Screen-->
+		<screen name="MC_VideoImdbView" position="0,0" size="1280,720" title="Imdbfile Info" backgroundColor="#42000000" >
+			<widget name="thumbCoverBig" position="735,35" size="515,650" zPosition="2" transparent="1" alphatest="on" />
+			<widget name="thumbPosterMid" position="735,35" size="515,650" zPosition="3" transparent="1" alphatest="on" />
+			<widget name="imdbinfo" font="Regular;18" position="50,35" size="680,650" zPosition="4" transparent="1" />
+			<eLabel backgroundColor="green" position="406,689" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="133,689" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="133,660" zPosition="5" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="406,660" zPosition="5" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+				<applet type="onLayoutFinish">
+# here you can set the pictures sizes
+self.picX = 515
+self.picY = 650
+# start showing the screen
+self.showPic()
+				</applet>
+		</screen>
+
+		<!--MC MoviePlayer Infobar-->
+		<screen name="MoviePlayerObi" flags="wfNoBorder" position="center,570" size="824,110" title="InfoBar" backgroundColor="#42000000">
+			<eLabel backgroundColor="#32000000" position="694,0" size="130,180" zPosition="1"/>
+			<eLabel backgroundColor="#32000000" position="0,0" size="693,35" zPosition="1"/>
+			<ePixmap position="712,10" zPosition="3" size="94,58" backgroundColor="transparent" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/AAF-MC.png" alphatest="on" transparent="1"/>
+			<widget source="session.CurrentService" render="Progress" position="155,60" size="339,8" zPosition="3" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/progress_mp.png">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<ePixmap position="155,70" zPosition="2" size="339,17" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/mp-scale2.png" alphatest="on"/>
+			<widget source="session.CurrentService" render="Label" position="10,6" size="550,23" valign="top" halign="left" zPosition="3" font="Regular;18" transparent="1">
+				<convert type="ServiceName">Name</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="570,6" size="110,23" font="Regular;21" halign="right" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Length</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="60,53" size="85,30" font="Regular;21" halign="right" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="505,53" size="80,26" font="Regular;21" halign="left" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Remaining</convert>
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="695,77" zPosition="3" size="85,25" font="Regular;23" transparent="1" foregroundColor="#DBDBDB" halign="right" backgroundColor="#3A0000">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Picture Player -->
+		<screen name="MC_PictureViewer" position="0,0" size="1280,720" title="Media Center - Pic Viewer" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" PICTURE" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1280,563" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="994,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="708,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="422,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="136,679" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="136,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="422,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="698,650" zPosition="3" size="170,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="994,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="75,140" zPosition="2" size="900,510" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget source="pageinfo" position="0,649" transparent="1" render="Label" zPosition="2" valign="center" halign="center" size="1280,30" font="Regular;14" />
+			<widget name="currentfolder" zPosition="3" transparent="1" halign="left" position="65,95" size="1100,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+
+			<widget name="frame" position="400,0" size="190,200" pixmap="pic_frame.png" zPosition="5" alphatest="on" />
+
+			<widget source="label0" render="Label" position="65,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb0" position="60,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal0" position="105,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label1" render="Label" position="300,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb1" position="295,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal1" position="340,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label2" render="Label" position="535,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb2" position="530,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal2" position="575,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label3" render="Label" position="770,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb3" position="765,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal3" position="810,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label4" render="Label" position="1005,332" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb4" position="1000,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal4" position="1045,130" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label5" render="Label" position="65,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb5" position="60,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal5" position="105,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label6" render="Label" position="300,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb6" position="295,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal6" position="340,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label7" render="Label" position="535,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb7" position="530,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal7" position="575,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label8" render="Label" position="770,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb8" position="765,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal8" position="810,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label9" render="Label" position="1005,587" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb9" position="1000,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal9" position="1045,385" size="190,204" zPosition="4" transparent="1" alphatest="on" />"
+		</screen>
+
+		<!-- MC Radio Player -->
+		<screen name="MC_RadioPlayer" position="0,0" size="1280,720" title="Media Center - Radio Player" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" RADIO" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1280,420" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="994,679" size="140,3" zPosition="5"/>
+			<widget name="key_blue" position="994,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<eLabel backgroundColor="#44444a" position="147,540" size="455,105" zPosition="0"/>
+			<widget name="fileinfo" zPosition="2" transparent="1" halign="left" position="152,545" size="450,115" font="Regular;15" foregroundColor="#f0f0f0"/>
+			<widget name="filelist" transparent="1" position="70,120" zPosition="2" size="685,220" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="playlist" transparent="1" position="70,370" zPosition="2" size="685,120" selectionDisabled="1"  scrollbarMode="showOnDemand" enableWrapAround="0"/>
+			<widget name="currentfolder" zPosition="3" transparent="1" halign="left" position="65,95" size="1100,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget name="Lplaylist" zPosition="5" transparent="1" halign="left" position="70,350" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC File Browser -->
+		<screen name="MC_FileBrowser" position="0,0" size="1280,720" title="Media Center - Filebrowser" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" FILEBROWSER" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1280,480" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="994,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="708,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="422,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="136,679" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="111,650" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="397,650" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="683,650" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="969,650" zPosition="3" size="190,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="75,130" zPosition="2" size="900,435" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="selectedFile" zPosition="5" transparent="1" halign="center" position="75,575" size="1130,72" font="Regular;18" foregroundColor="#f0f0f0"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="65,95" size="1100,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC WebRadioFS -->
+		<screen name="WebradioScreenBrowser" position="0,0" size="1280,720" title="Media Center - WebRadioFS" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" WEBRADIO FS" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1280,505" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="994,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="708,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="422,679" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="136,679" size="140,3" zPosition="5"/>
+			<ePixmap pixmap="/usr/local/share/enigma2/skin_default/buttons/key_menu.png" zPosition="5" position="623,655" size="35,25" alphatest="on" />
+			<widget name="key_red" position="136,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="412,650" zPosition="3" size="170,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="708,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="994,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="titeltext" position="50,88" zPosition="1" size="1180,30" font="Regular;20" transparent="1" />
+			<widget name="streamlist" position="50,118" size="1180,470" scrollbarMode="showOnDemand" transparent="1" zPosition="3"/>
+			<widget name="playbalken" position="50,600" zPosition="4" size="990,38" font="Regular;16" backgroundColor="#000000" transparent="0" />
+			<widget name="playtext" position="50,600" zPosition="5" size="970,38" font="Regular;16" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Weather Info -->
+		<screen name="WeatherPlugin" position="0,0" size="1280,720" title="Media Center - Weather Info" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1280,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="55,34" size="250,28" text=" WEATHER" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="blue" position="994,679" size="140,3" zPosition="5"/>
+			<widget name="key_blue" position="994,650" zPosition="3" size="150,30" font="Regular;20" valign="center" halign="center" transparent="1" />
+			<widget name="caption" position="210,330" zPosition="1" size="300,23" font="Regular;22" transparent="1"/>
+			<widget name="currentTemp" position="210,353" zPosition="1" size="300,23" font="Regular;22" transparent="1"/>
+			<widget name="condition" position="210,380" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>
+			<widget name="wind_condition" position="210,405" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>
+			<widget name="humidity" position="210,430" zPosition="1" size="300,20" font="Regular;18" valign="bottom" transparent="1"/>
+			<widget name="weekday1" position="555,330" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday1_icon" position="555,350" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday1_temp" position="541,430" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday2" position="668,330" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday2_icon" position="668,350" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday2_temp" position="654,430" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday3" position="781,330" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday3_icon" position="781,350" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday3_temp" position="768,430" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday4" position="894,330" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday4_icon" position="894,350" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday4_temp" position="870,430" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="statustext" position="250,200" zPosition="1" size="664,170" font="Regular;20" halign="center" valign="center" transparent="1"/>
+			<widget name="info" position="100,650" zPosition="3" size="630,30" font="Regular;20" valign="center" halign="left" transparent="1" />
+			<widget source="global.CurrentTime" render="Label" position="1150,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Choice box -->
+		<screen flags="wfNoBorder" name="MC_ChoiceBox" backgroundColor="background" position="252,120" size="520,260" title="Input">
+			<eLabel backgroundColor="#32000000" position="0,0" size="520,30" zPosition="0"/>
+			<eLabel backgroundColor="#56C856" position="0,30" size="520,1" zPosition="1"/>
+			<widget font="Regular;20" name="text" position="20,0" backgroundColor="#32000000" size="400,22" zPosition="3"/>
+			<widget name="list" position="20,40" scrollbarMode="showOnDemand" enableWrapAround="True" size="400,210"/>
+				<applet type="onLayoutFinish">
+# this should be factored out into some helper code, but currently demonstrates applets.
+from enigma import eSize, ePoint
+
+orgwidth = self.instance.size().width()
+orgpos = self.instance.position()
+textsize = self["text"].getSize()
+
+# y size still must be fixed in font stuff...
+textsize = (textsize[0] + 50, textsize[1] + 10)
+count = len(self.list)
+if count &gt; 10:
+	count = 10
+offset = 25 * count
+wsizex = textsize[0] + 30
+wsizey = textsize[1] + offset + 30
+
+if (655 &gt; wsizex):
+	wsizex = 655
+wsize = (wsizex, wsizey)
+
+# resize
+self.instance.resize(eSize(*wsize))
+
+# resize label
+self["text"].instance.resize(eSize(*textsize))
+
+# move list
+listsize = ((wsizex - 40), offset)
+self["list"].instance.move(ePoint(20, (textsize[1] + 15)))
+self["list"].instance.resize(eSize(*listsize))
+
+# center window
+newwidth = wsize[0]
+self.instance.move(ePoint((1280-wsizex)/2, (720-wsizey)/(count &gt; 7 and 2 or 3)))
+				</applet>
+		</screen>
+
+		<!-- MC Messagebox -->
+		<screen flags="wfNoBorder" name="MC_MessageBox" backgroundColor="background" position="center,120" size="480,260" title="Message">
+			<eLabel backgroundColor="#32000000" position="0,0" size="480,30" zPosition="0"/>
+			<eLabel backgroundColor="#56C856" position="0,30" size="480,1" zPosition="1"/>
+			<eLabel backgroundColor="#32000000" font="Regular;20" text="Message" halign="left" position="20,0" size="380,22" zPosition="3"/>
+			<widget font="Regular;18" name="text" position="20,35" backgroundColor="background" size="380,22" zPosition="3"/>
+			<widget name="list" position="20,100" scrollbarMode="showOnDemand" size="380,210" zPosition="4"/>
+				<applet type="onLayoutFinish">
+# this should be factored out into some helper code, but currently demonstrates applets.
+from enigma import eSize, ePoint
+
+orgwidth = self.instance.size().width()
+orgpos = self.instance.position()
+textsize = self["text"].getSize()
+
+# y size still must be fixed in font stuff...
+textsize = (textsize[0] + 50, textsize[1] + 50)
+offset = 0
+if self.type == self.TYPE_YESNO:
+	offset = 60
+wsizex = textsize[0] + 60
+wsizey = textsize[1] + offset
+if (280 &gt; wsizex):
+	wsizex = 280
+wsize = (wsizex, wsizey)
+
+
+# resize
+self.instance.resize(eSize(*wsize))
+
+# resize label
+self["text"].instance.resize(eSize(*textsize))
+
+# move list
+listsize = (textsize[0], 50)
+self["list"].instance.move(ePoint(20, textsize[1]))
+self["list"].instance.resize(eSize(*listsize))
+
+# center window
+newwidth = wsize[0]
+self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
+				</applet>
+		</screen>
+
+</skin>
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skinKS.xml
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skinKS.xml	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/skins/Default/skinKS.xml	(revision 9331)
@@ -0,0 +1,422 @@
+<skin>
+		<output id="0">
+			<resolution xres="1024" yres="576" bpp="32" />
+		</output>
+
+		<!-- MC Main Menu -->
+		<screen name="DMC_MainMenu" position="0,0" size="1024,576" title="Media Center - Home" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" position="0,488" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" AAF MEDIA CENTER" valign="center" zPosition="1"/>
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+			<widget source="menu" render="Listbox" zPosition="3" transparent="1" position="260,200" size="200,300" scrollbarMode="showOnDemand" enableWrapAround="1" foregroundColor="#FFFFFF" foregroundColorSelected="#FFFFFF" >
+				<convert type="StringList" />
+			</widget>
+		</screen>
+
+		<!-- MC Settings Menu -->
+		<screen name="MC_Settings" position="0,0" size="1024,576" title="Media Center - Settings" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" position="0,488" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" SETTINGS" valign="center" zPosition="1"/>
+			<widget source="title" transparent="1" render="Label" zPosition="4" position="100,80" size="280,35" font="Regular;23" />
+			<widget source="menu" render="Listbox" zPosition="4" transparent="1" position="260,210" size="200,200" scrollbarMode="showOnDemand" enableWrapAround="1" foregroundColor="#FFFFFF" foregroundColorSelected="#FFFFFF" >
+				<convert type="StringList" />
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Audio Player -->
+		<screen name="MC_AudioPlayer" position="0,0" size="1024,576" title="Media Center - Audio Player" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" MUSIC" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1024,335" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="774,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="542,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="306,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="76,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="76,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="306,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="542,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="774,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="coverArt" position="850,430" size="116,95" zPosition="5" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/aafcoverart.png" transparent="1" alphatest="blend" />
+			<eLabel backgroundColor="#44444a" position="36,435" size="298,95" zPosition="0"/>
+			<widget name="fileinfo" zPosition="2" transparent="1" halign="left" position="41,436" size="385,115" font="Regular;15" foregroundColor="#f0f0f0"/>
+			<widget name="filelist" transparent="1" position="65,140" zPosition="2" size="894,280" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="65,93" size="1000,50" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<ePixmap name="endcap_left" position="527,480" zPosition="2" size="15,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/endcap_left.png" transparent="1" alphatest="on" />
+			<ePixmap name="skipback" position="542,480" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/skipback_disabled.png" />
+			<widget name="play" position="577,480" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/play_disabled.png" />
+			<widget name="stop" position="612,480" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/stop_disabled.png" />
+			<ePixmap name="skipforward" position="647,480" zPosition="2" size="35,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/skipforward_disabled.png" />
+			<ePixmap name="endcap_right" position="682,480" zPosition="2" size="15,40" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/endcap_right.png" transparent="1" alphatest="on" />
+			<widget source="session.CurrentService" render="Label" position="337,445" size="80,20" zPosition="3" font="Regular;18" halign="right" transparent="1">
+				<convert type="ServicePosition">Position,ShowHours</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="802,445" size="80,20" zPosition="3" font="Regular;18" halign="left" transparent="1">
+				<convert type="ServicePosition">Remaining,InMinutes</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Progress" position="437,450" size="350,8" zPosition="3" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/progress_mp.png">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="802,465" size="110,26" font="Regular;20" halign="left" zPosition="6" transparent="1">
+
+			<convert type="ServicePosition">Length</convert>
+		</widget>
+		<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+			<convert type="ClockToText">Format:%H:%M</convert>
+		</widget>
+		</screen>
+
+		<!-- MC Video Player -->
+		<screen name="MC_VideoPlayer" position="0,0" size="1024,576" title="Media Center - Video Player" flags="wfNoBorder" backgroundColor="#ff000000">
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" VIDEO" valign="center" zPosition="6" transparent="1"/>
+			<eLabel backgroundColor="blue" position="792,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="559,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="326,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="93,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="93,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="326,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="559,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="792,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="65,140" zPosition="2" size="894,390" scrollbarMode="showNever" enableWrapAround="1"/>
+			<widget source="pageinfo" position="0,528" transparent="1" render="Label" zPosition="2" valign="center" halign="center" size="1024,30" font="Regular;14" />
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="65,95" size="1000,50" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+
+			<widget name="frame" position="400,0" size="190,200" pixmap="pic_frame.png" zPosition="5" alphatest="on" />
+			<widget name="listview" transparent="1" zPosition="2" position="65,120" size="450,255" itemHeight="32" scrollbarMode="showNever" backgroundColor="#000000" selectionPixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/fanart_list_sub_focus.png" backgroundPixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/fanart_list_sub_nofocus.png" enableWrapAround="1"/>
+
+			<widget name="imdbtitle" transparent="1" zPosition="5" halign="center" position="160,20" size="704,30" font="Regular;24" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+			<widget name="moviecover" transparent="1" zPosition="5" position="40,390" size="124,171" alphatest="on" />
+			<widget name="movieplot" transparent="1" zPosition="5" halign="left" position="150,390" size="850,149" font="Regular;16" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+			<widget name="tvpreview" transparent="1" zPosition="5" position="40,380" size="400,225" alphatest="on" />
+			<widget name="tvplot" transparent="1" zPosition="5" halign="left" position="310,380" size="680,149" font="Regular;16" foregroundColor="#FFFFFF" backgroundColor="#000000" /> 
+			<widget name="tvcover" transparent="1" zPosition="5" position="800,0" size="124,171" alphatest="on" />
+			<widget name="tvbanner" transparent="0" zPosition="5" position="400,0" size="900,100" alphatest="on" />
+
+			<ePixmap name="mb_bg" position="0,0" zPosition="0" size="1024,576" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/background_overlay_KS.png" /> 
+
+			<widget name="nostars" transparent="1" zPosition="5" position="392,54" size="240,24" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/NoStars.png" alphatest="on" />
+			<widget name="stars" transparent="1" zPosition="6" position="392,54" size="240,24" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/Stars.png" />
+
+			<widget source="label0" render="Label" position="65,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb0" position="60,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal0" position="105,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label1" render="Label" position="300,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb1" position="295,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal1" position="340,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label2" render="Label" position="535,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb2" position="530,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal2" position="575,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label3" render="Label" position="770,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb3" position="765,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal3" position="810,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label4" render="Label" position="65,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb4" position="60,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal4" position="105,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label5" render="Label" position="300,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb5" position="295,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal5" position="340,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label6" render="Label" position="535,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb6" position="530,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal6" position="575,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label7" render="Label" position="770,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb7" position="765,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal7" position="810,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+		</screen>
+
+		<!--MC GlobalFunctions IMDB Info Screen-->
+		<screen name="MC_VideoImdbView" position="0,0" size="1024,576" title="Imdbfile Info" backgroundColor="#42000000" >
+			<widget name="thumbCoverBig" position="518,20" size="471,536" zPosition="2" transparent="1" alphatest="on" />
+			<widget name="thumbPosterMid" position="518,20" size="471,536" zPosition="3" transparent="1" alphatest="on" />
+			<widget name="imdbinfo" font="Regular;18" position="35,30" size="480,500" zPosition="4" transparent="1" />
+			<eLabel backgroundColor="green" position="326,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="93,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="93,526" zPosition="5" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="326,526" zPosition="5" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+				<applet type="onLayoutFinish">
+# here you can set the pictures sizes
+self.picX = 471
+self.picY = 536
+# start showing the screen
+self.showPic()
+				</applet>
+		</screen>
+
+
+		<!--MC MoviePlayer Infobar-->
+		<screen name="MoviePlayerObi" flags="wfNoBorder" position="center,433" size="824,110" title="InfoBar" backgroundColor="#42000000">
+			<eLabel backgroundColor="#32000000" position="694,0" size="130,180" zPosition="1"/>
+			<eLabel backgroundColor="#32000000" position="0,0" size="693,35" zPosition="1"/>
+			<ePixmap position="712,10" zPosition="3" size="94,58" backgroundColor="transparent" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/AAF-MC.png" alphatest="on" transparent="1"/>
+			<widget source="session.CurrentService" render="Progress" position="155,60" size="339,8" zPosition="3" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/progress_mp.png">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<ePixmap position="155,70" zPosition="2" size="339,17" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MediaCenter/skins/Default/images/icons/mp-scale2.png" alphatest="on"/>
+			<widget source="session.CurrentService" render="Label" position="10,6" size="550,23" valign="top" halign="left" zPosition="3" font="Regular;18" transparent="1">
+				<convert type="ServiceName">Name</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="570,6" size="110,23" font="Regular;21" halign="right" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Length</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="60,53" size="85,30" font="Regular;21" halign="right" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Position</convert>
+			</widget>
+			<widget source="session.CurrentService" render="Label" position="505,53" size="80,26" font="Regular;21" halign="left" backgroundColor="#251e1f20" foregroundColor="#f0f0f0" zPosition="3" transparent="1">
+				<convert type="ServicePosition">Remaining</convert>
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="695,77" zPosition="3" size="85,25" font="Regular;23" transparent="1" foregroundColor="#DBDBDB" halign="right" backgroundColor="#3A0000">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Picture Player -->
+		<screen name="MC_PictureViewer" position="0,0" size="1024,576" title="Media Center - Picture Viewer" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" PICTURE" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1024,445" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="792,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="559,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="326,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="93,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="93,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="326,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="559,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="792,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="65,140" zPosition="2" size="894,390" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget source="pageinfo" position="0,528" transparent="1" render="Label" zPosition="2" valign="center" halign="center" size="1024,30" font="Regular;14" />
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="65,95" size="1000,50" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+
+			<widget name="frame" position="400,0" size="190,200" pixmap="pic_frame.png" zPosition="5" alphatest="on" />
+
+			<widget source="label0" render="Label" position="65,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb0" position="60,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal0" position="105,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label1" render="Label" position="300,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb1" position="295,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal1" position="340,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label2" render="Label" position="535,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb2" position="530,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal2" position="575,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label3" render="Label" position="770,292" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb3" position="765,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal3" position="810,120" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label4" render="Label" position="65,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb4" position="60,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal4" position="105,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label5" render="Label" position="300,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb5" position="295,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal5" position="340,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label6" render="Label" position="535,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb6" position="530,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal6" position="575,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+
+			<widget source="label7" render="Label" position="770,507" size="190,18" halign="center" font="Regular;18" zPosition="4" transparent="1"  foregroundColor="#FFFFFF" />"
+			<widget name="thumb7" position="765,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+			<widget name="thumbreal7" position="810,335" size="190,174" zPosition="4" transparent="1" alphatest="on" />"
+		</screen>
+
+		<!-- MC Radio Player -->
+		<screen name="MC_RadioPlayer" position="0,0" size="1024,576" title="Media Center - Radio Player" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="280,28" text=" RADIO" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1024,335" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="774,555" size="140,3" zPosition="5"/>
+			<widget name="key_blue" position="774,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="30,120" zPosition="2" size="665,150" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="playlist" transparent="1" position="30,305" zPosition="2" size="665,100" selectionDisabled="1"  scrollbarMode="showOnDemand" enableWrapAround="0"/>
+			<eLabel backgroundColor="#44444a" position="36,435" size="298,95" zPosition="0"/>
+			<widget name="fileinfo" zPosition="2" transparent="1" halign="left" position="41,436" size="385,115" font="Regular;15" foregroundColor="#f0f0f0"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="45,95" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget name="Lplaylist" zPosition="5" transparent="1" halign="left" position="45,280" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC File Browser -->
+		<screen name="MC_FileBrowser" position="0,0" size="1024,576" title="Media Center - Filebrowser" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="280,28" text=" FILEBROWSER" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1024,335" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="792,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="559,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="326,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="93,555" size="140,3" zPosition="5"/>
+			<widget name="key_red" position="83,526" zPosition="3" size="160,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="316,526" zPosition="3" size="160,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="549,526" zPosition="3" size="160,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="782,526" zPosition="3" size="160,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="filelist" transparent="1" position="30,120" zPosition="2" size="665,298" scrollbarMode="showOnDemand" enableWrapAround="1"/>
+			<widget name="selectedFile" zPosition="2" transparent="1" halign="center" position="41,436" size="942,80" font="Regular;18" foregroundColor="#f0f0f0"/>
+			<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="45,95" size="670,20" font="Regular;16" foregroundColor="#f0f0f0"/>
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC WebRadioFS -->
+		<screen name="WebradioScreenBrowser" position="0,0" size="1024,576" title="Media Center - WebRadioFS" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" WEBRADIO FS" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="#44444a" position="0,88" size="1024,405" zPosition="0"/>
+			<eLabel backgroundColor="blue" position="774,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="yellow" position="542,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="green" position="306,555" size="140,3" zPosition="5"/>
+			<eLabel backgroundColor="red" position="76,555" size="140,3" zPosition="5"/>
+			<ePixmap pixmap="/usr/local/share/enigma2/skin_default/buttons/key_menu.png" zPosition="5" position="475,538" size="35,25" alphatest="on" />
+			<widget name="key_red" position="76,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_green" position="306,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_yellow" position="542,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="key_blue" position="774,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="titeltext" position="30,88" zPosition="1" size="964,30" font="Regular;20" transparent="1" />
+			<widget name="streamlist" position="30,118" size="964,370" scrollbarMode="showOnDemand" transparent="1" zPosition="3"/>
+			<widget name="playbalken" position="30,493" zPosition="4" size="690,38" font="Regular;16" backgroundColor="#000000" transparent="0" />
+			<widget name="playtext" position="30,493" zPosition="5" size="670,38" font="Regular;16" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Weather Info -->
+		<screen name="WeatherPlugin" position="0,0" size="1024,576" title="Media Center - Weather Info" flags="wfNoBorder" backgroundColor="#000000" >
+			<eLabel backgroundColor="#33333a" position="0,0" size="1024,88" zPosition="0"/>
+			<eLabel backgroundColor="#33333a" font="Regular;26" foregroundColor="white" halign="left" position="35,34" size="250,28" text=" WEATHER" valign="center" zPosition="1"/>
+			<eLabel backgroundColor="blue" position="774,555" size="140,3" zPosition="5"/>
+			<widget name="key_blue" position="774,526" zPosition="3" size="140,40" font="Regular;18" valign="center" halign="center" transparent="1" />
+			<widget name="caption" position="170,230" zPosition="1" size="300,23" font="Regular;22" transparent="1"/>
+			<widget name="currentTemp" position="170,255" zPosition="1" size="300,23" font="Regular;22" transparent="1"/>
+			<widget name="condition" position="170,290" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>
+			<widget name="wind_condition" position="170,315" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>
+			<widget name="humidity" position="170,340" zPosition="1" size="300,20" font="Regular;18" valign="bottom" transparent="1"/>
+			<widget name="weekday1" position="435,240" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday1_icon" position="435,260" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday1_temp" position="421,340" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday2" position="538,240" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday2_icon" position="538,260" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday2_temp" position="524,340" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday3" position="641,240" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday3_icon" position="641,260" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday3_temp" position="628,340" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="weekday4" position="744,240" zPosition="1" size="72,20" halign="center" valign="center" font="Regular;18" transparent="1"/>
+			<widget name="weekday4_icon" position="744,260" zPosition="1" size="72,72" alphatest="blend"/>
+			<widget name="weekday4_temp" position="730,340" zPosition="1" size="100,20" halign="center" valign="bottom" font="Regular;16" transparent="1"/>
+			<widget name="statustext" position="140,100" zPosition="1" size="664,170" font="Regular;20" halign="center" valign="center" transparent="1"/>
+			<widget name="info" position="76,526" zPosition="3" size="480,30" font="Regular;18" valign="center" halign="left" transparent="1" />
+			<widget source="global.CurrentTime" render="Label" position="910,34" zPosition="3" size="85,28" font="Regular;26" transparent="1" halign="left" valign="center">
+				<convert type="ClockToText">Format:%H:%M</convert>
+			</widget>
+		</screen>
+
+		<!-- MC Choice box -->
+		<screen flags="wfNoBorder" name="MC_ChoiceBox" backgroundColor="background" position="252,120" size="520,260" title="Input">
+			<eLabel backgroundColor="#32000000" position="0,0" size="520,30" zPosition="0"/>
+			<eLabel backgroundColor="#56C856" position="0,30" size="520,1" zPosition="1"/>
+			<widget font="Regular;20" name="text" position="20,0" backgroundColor="#32000000" size="400,22" zPosition="3"/>
+			<widget name="list" position="20,40" scrollbarMode="showOnDemand" enableWrapAround="True" size="400,210"/>
+				<applet type="onLayoutFinish">
+# this should be factored out into some helper code, but currently demonstrates applets.
+from enigma import eSize, ePoint
+
+orgwidth = self.instance.size().width()
+orgpos = self.instance.position()
+textsize = self["text"].getSize()
+
+# y size still must be fixed in font stuff...
+textsize = (textsize[0] + 50, textsize[1] + 10)
+count = len(self.list)
+if count &gt; 10:
+	count = 10
+offset = 25 * count
+wsizex = textsize[0] + 30
+wsizey = textsize[1] + offset + 30
+
+if (655 &gt; wsizex):
+	wsizex = 655
+wsize = (wsizex, wsizey)
+
+# resize
+self.instance.resize(eSize(*wsize))
+
+# resize label
+self["text"].instance.resize(eSize(*textsize))
+
+# move list
+listsize = ((wsizex - 40), offset)
+self["list"].instance.move(ePoint(20, (textsize[1] + 15)))
+self["list"].instance.resize(eSize(*listsize))
+
+# center window
+newwidth = wsize[0]
+self.instance.move(ePoint((1024-wsizex)/2, (576-wsizey)/(count &gt; 7 and 2 or 3)))
+				</applet>
+		</screen>
+
+		<!-- MC Messagebox -->
+		<screen flags="wfNoBorder" name="MC_MessageBox" backgroundColor="background" position="center,120" size="480,260" title="Message">
+			<eLabel backgroundColor="#32000000" position="0,0" size="480,30" zPosition="0"/>
+			<eLabel backgroundColor="#56C856" position="0,30" size="480,1" zPosition="1"/>
+			<eLabel backgroundColor="#32000000" font="Regular;20" text="Message" halign="left" position="20,0" size="380,22" zPosition="3"/>
+			<widget font="Regular;18" name="text" position="20,35" backgroundColor="background" size="380,22" zPosition="3"/>
+			<widget name="list" position="20,100" scrollbarMode="showOnDemand" size="380,210" zPosition="4"/>
+				<applet type="onLayoutFinish">
+# this should be factored out into some helper code, but currently demonstrates applets.
+from enigma import eSize, ePoint
+
+orgwidth = self.instance.size().width()
+orgpos = self.instance.position()
+textsize = self["text"].getSize()
+
+# y size still must be fixed in font stuff...
+textsize = (textsize[0] + 50, textsize[1] + 50)
+offset = 0
+if self.type == self.TYPE_YESNO:
+	offset = 60
+wsizex = textsize[0] + 60
+wsizey = textsize[1] + offset
+if (280 &gt; wsizex):
+	wsizex = 280
+wsize = (wsizex, wsizey)
+
+
+# resize
+self.instance.resize(eSize(*wsize))
+
+# resize label
+self["text"].instance.resize(eSize(*textsize))
+
+# move list
+listsize = (textsize[0], 50)
+self["list"].instance.move(ePoint(20, textsize[1]))
+self["list"].instance.resize(eSize(*listsize))
+
+# center window
+newwidth = wsize[0]
+self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
+				</applet>
+		</screen>
+
+</skin>
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/ImdbProvider.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/ImdbProvider.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/ImdbProvider.py	(revision 9331)
@@ -0,0 +1,687 @@
+# -*- coding: UTF-8 -*-
+
+'''
+Created on 21.05.2010
+
+@author: i7
+'''
+
+import re
+import os
+import sys
+import htmlentitydefs
+from os import system
+
+try:
+	from Components.Console import Console
+except:
+	pass
+
+try:
+	import Console
+except:
+	pass
+
+try:
+	from Tools.Directories import pathExists
+except:
+	pass
+
+try:
+	from Directories import pathExists
+except:
+	pass
+
+	
+import time
+from twisted.web.client import downloadPage
+
+class ImdbProvider(object):
+	'''
+	classdocs
+	'''
+
+	class ImdbProviderDE():
+		url = "http://german.imdb.com"
+		apiSearchTV = url + "/search/title?title=<title>&title_type=tv_series"
+		apiImdbLookup = url + "/title/"
+		apiSearch = url + "/find?s=tt;q="
+	
+	class ImdbProviderCOM():
+		url = "http://akas.imdb.com"
+		apiSearchTV = url + "/search/title?title=<title>&title_type=tv_series"
+		apiImdbLookup = url + "/title/"
+		apiSearch = url + "/find?s=tt;q="
+
+        
+	def __init__(self, language):
+		system('rm /tmp/cache.*')
+		self.language = language
+
+		if self.language == "de":
+			self.urlchoise = self.ImdbProviderDE.url
+			self.apiSearchTV = self.ImdbProviderCOM.apiSearchTV
+			self.apiImdbLookup = self.ImdbProviderDE.apiImdbLookup
+			self.apiSearch = self.ImdbProviderDE.apiSearch
+		else:
+			self.urlchoise = self.ImdbProviderCOM.url
+			self.apiSearchTV = self.ImdbProviderCOM.apiSearchTV
+			self.apiImdbLookup = self.ImdbProviderCOM.apiImdbLookup
+			self.apiSearch = self.ImdbProviderCOM.apiSearch
+		self.url = self.urlchoise
+	   
+	def getMoviesByImdbId(self, mediaInfo):
+		if mediaInfo.ImdbId == "tt0000000":
+			return mediaInfo
+		
+		localfile = "/tmp/cache.getMoviesByImdbId.html"
+		fetchurl = self.apiImdbLookup + mediaInfo.ImdbId
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+
+#		system('wget "%s%s" -O /tmp/cache.getMoviesByImdbId.html' % (self.apiImdbLookup,mediaInfo.ImdbId))
+#		time.sleep(1)
+# 		if pathExists("/tmp/cache.getMoviesByImdbId.html"):	
+# 			pageHtml = html2utf8(open("/tmp/cache.getMoviesByImdbId.html", "r").read())
+# 		else:
+# 			return mediaInfo
+		
+		if not pageHtml:
+			return mediaInfo
+
+		#<title>IMDb Search</title>
+		#<link rel="canonical" href="http://www.imdb.com/find?s=all&q=rambo" /><meta property="og:url" content="http://www.imdb.com/find?s=all&q=rambo" />
+		
+		#<title>IMDb Titelsuche</title>
+		#<link rel="canonical" href="http://www.imdb.de/find?s=tt&q=rambo" /><meta property="og:url" content="http://www.imdb.de/find?s=tt&q=rambo" />
+	
+		m = re.search(r'<title>.+?\(\d{4}[\/IVX]*\).*?</title>', pageHtml)
+		if m and m.group():
+			mediaInfo = self.parseDetailsScreen(mediaInfo, pageHtml)
+			return mediaInfo
+	
+	def getMovieByTitle(self, mediaInfo):
+#### this is only in en avalibel
+		if mediaInfo.isSerie:
+			urlTitle = mediaInfo.SearchString
+			urlTitle = urlTitle.decode('utf8').encode('latin-1','ignore')
+			urlTitle = re.sub(" ", "+", urlTitle)
+
+#			print "getMovieByTitle serie", self.apiSearchTV
+			self.apiSearchTV = re.sub("<title>", urlTitle, self.apiSearchTV)
+#			print "getMovieByTitle serie", self.apiSearchTV
+
+			localfile = "/tmp/cache.getMovieByTitle.html"
+			fetchurl = self.apiSearchTV
+	
+			pageHtml = WebGrabber().grab(fetchurl,localfile)
+
+#	 		system('wget "%s" -O /tmp/cache.getMovieByTitle.html' % (self.apiSearchTV))
+#			time.sleep(1)
+# 			if pathExists("/tmp/cache.getMovieByTitle.html"):	
+# 		 		pageHtml = html2utf8(open("/tmp/cache.getMovieByTitle.html", "r").read())
+# 			else:
+# 				return mediaInfo
+
+			if not pageHtml:
+				return mediaInfo
+
+			m = re.search(r'Most Popular TV Series With Title Matching', pageHtml)
+			if m and m.group():
+				mediaInfo = self.parseAdvancedSearchResultScreen(mediaInfo, pageHtml)
+				mediaInfo = self.getMoviesByImdbId(mediaInfo)
+				if mediaInfo.ImdbId != "tt0000000":
+					return mediaInfo
+
+		urlTitle = mediaInfo.SearchString
+		urlTitle = re.sub(" ", "+", urlTitle)
+
+		localfile = "/tmp/cache.getMovieByTitle.html"
+		fetchurl = self.apiSearch + urlTitle
+
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+
+#		system('wget "%s%s" -O /tmp/cache.getMovieByTitle.html' % (self.apiSearch,urlTitle))
+#		time.sleep(1)
+#		if pathExists("/tmp/cache.getMovieByTitle.html"):	
+#			pageHtml = html2utf8(open("/tmp/cache.getMovieByTitle.html", "r").read())
+#		else:
+#			return mediaInfo
+							
+		if not pageHtml:
+			return mediaInfo
+
+		if self.language == "de":
+			m = re.search(r'<title>IMDb Titelsuche</title>', pageHtml)
+		else:
+			m = re.search(r'<title>IMDb Title Search</title>', pageHtml)
+		if m and m.group():
+			mediaInfo = self.parseSearchResultScreen(mediaInfo, pageHtml)
+			mediaInfo = self.getMoviesByImdbId(mediaInfo)
+		else:
+			#m = re.search(r'<title>.+?\(?P<year>\d{4}[\/IVX]*\).*?</title>', pageHtml)
+			#if m and m.group():
+			mediaInfo = self.parseDetailsScreen(mediaInfo, pageHtml)
+		return mediaInfo
+	
+	def getPlot(self, mediaInfo):
+		global Plot
+		#global self.language
+		if mediaInfo.ImdbId == "tt0000000":
+			return mediaInfo
+
+		localfile = "/tmp/cache.getPlot.html"
+		fetchurl = self.apiImdbLookup + mediaInfo.ImdbId + "/plotsummary"
+
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+	
+#		system('wget "%s%s/plotsummary" -O /tmp/cache.getPlot.html' % (self.apiImdbLookup,mediaInfo.ImdbId))
+#		time.sleep(1)
+# 		if pathExists("/tmp/cache.getPlot.html"):	
+# 			pageHtml = html2utf8(open("/tmp/cache.getPlot.html", "r").read())
+# 		else:
+# 			return mediaInfo
+
+		if not pageHtml:
+			return mediaInfo
+
+		if self.language == "de":
+			#<div id="swiki.2.1">
+			#John Rambo, ehemaliger Elitekaempfer der US-Streitkraefte.................
+			#</div>
+			#m = re.search(r'<div id=\"swiki.2.1\">(?P<plot>[^<]+?)</div>', pageHtml)
+			m = re.search(r'<div id=\"swiki.2.1\">\s*(?P<plot>[^<]*)<', pageHtml)
+		else:
+			#<p class="plotpar">
+			#John J. Rambo is a former United States Special Forces soldier who fought in Vietnam and won the Congressional Medal of Honor, but his time in Vietnam still haunts him. As he came to Hope, Washington to visit a friend, he was guided out of town by the Sheriff William Teasel who insults Rambo, but what Teasel does not know that his insult angered Rambo to the point where Rambo became violent and was arrested, as he was at the county jail being cleaned, he escapes and goes on a rampage through the forest to try to escape from the sheriffs who want to kill him. Then, as Rambo's commanding officer, Colonel Samuel Trautman tries to save both the Sheriff's department and Rambo before the situation gets out of hand.
+			#<i>
+			m = re.search(r'<p class=\"plotpar\">\s*(?P<plot>[^<]+?)<i>', pageHtml)
+		if m is not None:        
+			if m and m.group("plot"):
+				mediaInfo.Plot = m.group("plot").strip()
+#				print "mediaInfo.Plot", mediaInfo.Plot
+				
+		return mediaInfo
+	
+	def parseDetailsScreen(self, mediaInfo, pageHtml):
+ 		CastTmp = ""
+
+		mediaInfo.imdburl = self.url + "/title/" + mediaInfo.ImdbId
+
+		if mediaInfo.Title == "" or mediaInfo.Year == 0:
+			# <title>Austin Powers: The Spy Who Shagged Me (1999)</title>
+			m = re.search(r'<title>(?P<title>[^(]+)\((?P<year>\d{4})\)[\/IVX]*[^<]*</title>', pageHtml)
+			if m and m.group("title") and m.group("year"):
+				mediaInfo.Title = m.group("title").strip().strip("\"")
+				mediaInfo.Year = int(m.group("year").strip())
+	
+			if mediaInfo.ImdbId == "tt0000000":          
+				m = re.search(r'/title/(?P<imdbid>tt\d{7})/', pageHtml)
+				if m and m.group("imdbid"):
+					mediaInfo.ImdbId = m.group("imdbid").strip()
+	
+		#################
+		#	<h5>Director:</h5>
+		#	<div class="info-content">
+		#		<a href="/name/nm0000230/" onclick="(new Image()).src='/rg/directorlist/position-1/images/b.gif?link=name/nm0000230/';">Sylvester Stallone</a><br/>
+		#	</div>
+		
+		m = re.search(r'<div id=\"director-info\" class=\"info\">(.*?)</div>', pageHtml, re.DOTALL)
+# 		if self.language == "de":	
+# 			m = re.search(r'<div id=\"director-info\" class=\"info\">(.*?)</div>', pageHtml, re.DOTALL)
+# 	#		m = re.search(r'<h5>Regisseu*\D*[^:]*:</h5>(.*?)</div>', pageHtml, re.DOTALL)
+# 		else:
+# 			m = re.search(r'<h5>Director[s]?[^:]*:</h5>(.*?)</div>', pageHtml, re.DOTALL)
+		
+		if m is not None:
+			if m and m.group(0):
+				count = 0
+				for m in re.findall(r'<a href=\"/name/nm\d{7}/\"[^>]*>(?P<dname>[^<]+)</a>', m.group(0)):
+					count += 1
+					if m :
+#						Directors.append(m.strip())
+						if count == 1:		 
+							mediaInfo.Directors += (m.strip())
+	#						mediaInfo.Directors = mediaInfo.Directors.encode("iso-8859-1") 
+						else:
+							mediaInfo.Directors += " , " + (m.strip()) 
+	#						mediaInfo.Directors = mediaInfo.Directors.encode("iso-8859-1") 							
+
+		#	'(?:.*?<h5>(?P<g_writer>Drehbuch|Writer).*?</h5>.*?<a href=\".*?\">(?P<writer>.*?)</a>)*'
+		#	for m in Directors:
+		#	Director = m.encode("iso-8859-1")
+		#	Directors.append(Director)
+		
+		#################
+		#	<div class="info">
+		#	<h5>Writers (<a href="/wga">WGA</a>):</h5>
+		#	<div class="info-content">            
+		#		<a href="/name/nm0599393/" onclick="(new Image()).src='/rg/writerlist/position-1/images/b.gif?link=name/nm0599393/';">Art Monterastelli</a> (written by) and<br/>
+		#		<a href="/name/nm0000230/" onclick="(new Image()).src='/rg/writerlist/position-2/images/b.gif?link=name/nm0000230/';">Sylvester Stallone</a> (written by) and<br/>
+		#		<a href="/name/nm0606251/" onclick="(new Image()).src='/rg/writerlist/position-3/images/b.gif?link=name/nm0606251/';">David Morrell</a> (character)<br/>
+		#	</div>
+
+		m = re.search(r'<div class=\"info\">(.*?)</div>', pageHtml, re.DOTALL)
+# 		if self.language == "de":
+# 			m = re.search(r'<h5>Drehbuchautor*\D*[^:]*:</h5>(.*?)</div>', pageHtml, re.DOTALL)
+# 		else:
+# 			m = re.search(r'<h5>Writer[s]?[^:]*:</h5>(.*?)</div>', pageHtml, re.DOTALL)
+		if m is not None:
+			if m and m.group(0):
+				count = 0
+				for m in re.findall(r'<a href="/name/nm\d{7}/"[^>]*>(?P<dname>[^<]+)</a>', m.group(0)):
+					count += 1
+					if m :
+#						Writers.append(m.strip())
+						if count == 1:		 
+							mediaInfo.Writers += (m.strip())
+#							mediaInfo.Writers = mediaInfo.Writers.encode("iso-8859-1") 
+						else:
+							mediaInfo.Writers += " , " + (m.strip()) 
+#							mediaInfo.Writers = mediaInfo.Writers.encode("iso-8859-1") 
+	
+		if self.language == "de":
+			#	<h5>Runtime:</h5><div class="info-content">92 min   
+#			m = re.search(r'<h5>L&#xE4;nge:</h5>\D*(?P<runtime>\d+) Min', pageHtml)
+			m = re.search(r'\Wnge:</h5><div class="info-content">(?P<runtime>\d+) Min', pageHtml)
+		else:
+			#	<h5>Runtime:</h5><div class="info-content">92 min   
+			m = re.search(r'<h5>Runtime:</h5>\D*(?P<runtime>\d+) min', pageHtml)
+
+		if m is not None:
+			if m and m.group("runtime"):
+				mediaInfo.Runtime = int(m.group("runtime").strip())
+		
+		if self.language == "de":
+			#################
+			#	<h5>Genre:</h5>
+			#	<div class="info-content">
+			#		Action | Abenteuer | Drama | Thriller
+			#	</div>
+			#	m = re.search(r'<h5>Genre:</h5>\s*<div class=\"info-content\">(?P<genres>[^|]*)|', pageHtml)
+			##	m = re.search(r'<h5>Genre:</h5>[^<]*<div class=\"info-content\">(?P<genres>[^<]*)<', pageHtml)
+			#	m = re.search(r'<h5>Genre:</h5>[^<]*<div class=\"info-content\">(?P<genres>[^\|]*)\|', pageHtml)
+			m = re.search(r'<h5>Genre:</h5>[^<]*<div class=\"info-content\">(?P<genres>[^<]*)<', pageHtml)
+		else:
+			#################
+			#	<h5>Genre:</h5>
+			#	<div class="info-content">
+			#		<a href="/Sections/Genres/Action/">Action</a> | <a href="/Sections/Genres/Thriller/">Thriller</a> <a class="tn15more inline" href="/title/tt0462499/keywords" onClick="(new Image()).src='/rg/title-tease/keywords/images/b.gif?link=/title/tt0462499/keywords';">See more</a>&nbsp;&raquo;
+			#	</div>
+			m = re.search(r'\/Sections\/Genres\/(?P<genres>[^\/]+)', pageHtml)
+		if m is not None:
+			if m and m.group("genres"):
+				mediaInfo.Genres = m.group("genres").strip()
+
+		#################
+		#	<h5>Tagline:</h5>
+		#	<div class="info-content">
+		#		Heroes never die.... They just reload.
+		#	</div>
+		m = re.search(r'<h5>Tagline:</h5>[^<]*<div class=\"info-content\">(?P<tag>[^<]*)<', pageHtml)
+		if m is not None:
+			if m and m.group("tag"):
+				mediaInfo.TagLine = m.group("tag").strip()
+#				mediaInfo.TagLine = mediaInfo.TagLine.encode("iso-8859-1")
+	
+		if self.language == "de":
+			m = re.search(r'<h5>Premierendatum:</h5>[^<]*<div class=\"info-content\">(?P<releasedate>[^<]*)<', pageHtml)
+			#################
+			#	<h5>Release Date:</h5>
+			#	<div class="info-content">
+			#		25 January 2008 (USA)
+			#		<a class="tn15more inline" href="/title/tt0462499/releaseinfo" onClick="(new Image()).src='/rg/title-tease/releasedates/images/b.gif?link=/title/tt0462499/releaseinfo';">See more</a>&nbsp;&raquo;
+			#	</div>
+		else:
+			m = re.search(r'<h5>Release Date:</h5>[^<]*<div class=\"info-content\">(?P<releasedate>[^<]*)<', pageHtml)
+		if m is not None:
+			if m and m.group("releasedate"):
+				mediaInfo.ReleaseDate = m.group("releasedate").strip()
+#				mediaInfo.ReleaseDate = mediaInfo.ReleaseDate.encode("iso-8859-1")
+
+			#######################################################################################################################
+		m = re.search(r'<div class=\"(starbar-)?meta\">[^<]*<b>(?P<pop>\d+).\d+/10</b>', pageHtml)
+		if m is not None:
+			if m and m.group("pop"):
+				mediaInfo.Popularity = m.group("pop").strip()
+#				mediaInfo.Popularity = mediaInfo.Popularity.encode("iso-8859-1")
+     	
+		#######################################################################################################################
+		#	<h5>User Rating:</h5>
+		#		<div class="starbar">
+		#			<div class="outer">
+		#				<div id="general-voting-stars" class="inner" style="width: 146px"></div>
+		#					<div class="starbar-votes">
+		#						<a title="10" href="vote?v=10;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(10)" class="s10"></a><a title="9" href="vote?v=9;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(9)" class="s9"></a><a title="8" href="vote?v=8;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(8)" class="s8"></a><a title="7" href="vote?v=7;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(7)" class="s7"></a><a title="6" href="vote?v=6;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(6)" class="s6"></a><a title="5" href="vote?v=5;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(5)" class="s5"></a><a title="4" href="vote?v=4;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(4)" class="s4"></a><a title="3" href="vote?v=3;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(3)" class="s3"></a><a title="2" href="vote?v=2;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(2)" class="s2"></a><a title="1" href="vote?v=1;k=f03%2B10LvqjxZCw7Zd%2BXcMQB%2Fqjlz%2BVo5cwp5eucuGTowfhqZ41laOXP6OUpDStkKFzn6mmBpWjlgaVoJIDkqCX" onclick="return vote(1)" class="s1"></a>
+		#					</div>
+		#				</div>
+		#			</div>
+		#		<div class="starbar-meta">
+		#	<b>7.3/10</b> 
+		#	&nbsp;&nbsp;<a href="ratings" class="tn15more">82,236 votes</a>&nbsp;&raquo;
+		#</div>
+		m = re.search(r'<div class=\"starbar-meta\">\D*(?P<rating>[^/]*)/', pageHtml)
+		if m is not None:
+			if m and m.group("rating"):
+				mediaInfo.Rating = m.group("rating").strip()
+#				mediaInfo.Rating = mediaInfo.Rating.encode("iso-8859-1")
+	
+		if self.language == "de":
+			#	&nbsp;&nbsp;<a href="ratings" class="tn15more">56.064 Stimmen</a>&nbsp;&raquo;
+			m = re.search(r'<a href=\"ratings\" class=\"tn15more\"\D>*(?P<votes>[^S]*)', pageHtml)
+		else:
+			#	&nbsp;&nbsp;<a href="ratings" class="tn15more">82,236 votes</a>&nbsp;&raquo;
+			m = re.search(r'<a href=\"ratings\" class=\"tn15more\"\D>*(?P<votes>[^v]*)', pageHtml)
+		if m is not None: 
+			if m.group("votes"):
+				mediaInfo.Votes = m.group("votes").strip()
+#				mediaInfo.Votes = mediaInfo.Votes.encode("iso-8859-1")
+	
+		#<div class="photo">
+		#<a name="poster" href="/rg/action-box-title/primary-photo/media/rm2292749056/tt0083944" title="Rambo"><img border="0" id="primary-poster" alt="Rambo" title="Rambo" src="http://ia.media-imdb.com/images/M/MV5BMTU3MTY1NjI5NF5BMl5BanBnXkFtZTcwOTE0NjY0MQ@@._V1._SX100_SY134_.jpg" /></a>
+		#####
+		# eng ok
+		#####	m = re.search(r'<link rel=\"image_src\" href=\"(?P<cover>[^"]*)', pageHtml)
+
+###### old not ever working
+#		m = re.search(r'<a name=\"poster\" href=\"/rg/action-box-title/primary-photo/media*[^:]*(?P<cover>[^"]*)', pageHtml)
+# 		if m is not None:
+# 			if m.group("cover"):
+# 				mediaInfo.Cover = "http" + m.group("cover").strip()
+# #				mediaInfo.Cover = mediaInfo.Cover.encode("iso-8859-1")
+# 			else:
+# 				mediaInfo.Cover = "found no data"
+# 		else:
+# 			mediaInfo.Cover = "found no data"
+######
+		# this is running
+		#m = re.search(r'<div class=\"photo\">*(.*?)</div>', pageHtml, re.DOTALL)
+		m = re.search(r'<a name=\"poster\" href=\"/rg/action-box-title/primary-photo/media*(.*?)</a>', pageHtml, re.DOTALL)
+		if m and m.group(0):
+			for m in re.findall(r'src=\"(?P<dname>[^"]+)"', m.group(0)):
+				if m :
+					mediaInfo.Cover = m.strip()						
+ 			
+#  			
+#  			
+# #		m = re.search(r'<a name=\"poster\" href=\"/rg/action-box-title/primary-photo/media*[^:]*(?P<cover>[^"]*)', pageHtml)
+# 		m = re.search(r'<a name=\"poster\" href=\"/rg/action-box-title/primary-photo/media*[src=\"]*(?P<cover>[^"]*)', pageHtml)
+# 
+# 
+# 
+# 		if m is not None:
+# 			if m.group("cover"):
+# 				mediaInfo.Cover = "http" + m.group("cover").strip()
+# #				Cover = Cover.encode("iso-8859-1")
+# 			else:
+# 				mediaInfo.Cover = "found no data"
+# 		else:
+# 			mediaInfo.Cover = "found no data"
+
+########## old	
+		#<a name="poster" href="/rg/action-box-title/primary-photo/media/rm2292749056/tt0083944" title="First Blood"><img border="0" id="primary-poster" alt="First Blood" title="First Blood" src="http://ia.media-imdb.com/images/M/MV5BMTU3MTY1NjI5NF5BMl5BanBnXkFtZTcwOTE0NjY0MQ@@._V1._SX100_SY134_.jpg" /></a>
+		m = re.search(r'<a name=\"poster\" href=\"/rg/action-box-title/primary-photo/media(?P<coverbiglink>[^"]*)', pageHtml)
+		if m is not None:
+			if m.group("coverbiglink"):
+				mediaInfo.CoverBigLink = "http://akas.imdb.com/media" + m.group("coverbiglink").strip()
+  
+ 		localfile = "/tmp/cache.getpageBigCoverHtml.html"
+		fetchurl = mediaInfo.CoverBigLink
+		pageBigCoverHtml = WebGrabber().grab(fetchurl,localfile)
+
+		if not pageBigCoverHtml:
+			pageBigCoverHtml = ""
+			 
+#	 	system('wget "%s" -O /tmp/cache.getpageBigCoverHtml.html' % (mediaInfo.CoverBigLink))
+# 		if pathExists('/tmp/cache.getpageBigCoverHtml.html'):
+# 		 	pageBigCoverHtml = html2utf8(open("/tmp/cache.getpageBigCoverHtml.html", "r").read())
+# 		else:
+# 			pageBigCoverHtml = ""
+		m = re.search(r'<link rel=\"image_src\" href=\"(?P<coverbig>[^"]*)', pageBigCoverHtml)
+		if m is not None:
+			if m.group("coverbig"):
+				mediaInfo.CoverBig = m.group("coverbig").strip()
+	
+		#	castmask = re.compile('.*?>(.*?)</a>.*?<td class="char">(?:<a.*?>)?(.*?)(?:</a>)?</td>', re.DOTALL)
+		#	<hr/><div class="info">  <div class="headerinline"><h3>Cast</h3>&nbsp; <small style="position: relative; bottom: 1px">(Cast overview, first billed only)</small></div><div class="info-content block"><table class="cast">     <tr class="odd"><td class="hs"><a href="/name/nm0000216/" onClick="(new Image()).src='/rg/title-tease/tinyhead/images/b.gif?link=/name/nm0000216/';"><img src="http://ia.media-imdb.com/images/M/MV5BMTI3MDc4NzUyMV5BMl5BanBnXkFtZTcwMTQyMTc5MQ@@._V1._SY30_SX23_.jpg" width="23" height="32" border="0"></a><br></td><td class="nm"><a href="/name/nm0000216/" onclick="(new Image()).src='/rg/castlist/position-1/images/b.gif?link=/name/nm0000216/';">Arnold Schwarzenegger</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000931/">The Terminator</a></td></tr>  <tr class="even"><td class="hs"><a href="/name/nm0000299/" onClick="(new Image()).src='/rg/title-tease/tinyhead/images/b.gif?link=/name/nm0000299/';"><img src="http://ia.media-imdb.com/images/M/MV5BMTU0ODA5MDU1N15BMl5BanBnXkFtZTcwMjM1MDkwMw@@._V1._SY30_SX23_.jpg" width="23" height="32" border="0"></a><br></td><td class="nm"><a href="/name/nm0000299/" onclick="(new Image()).src='/rg/castlist/position-2/images/b.gif?link=/name/nm0000299/';">Michael Biehn</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000934/">Kyle Reese</a></td></tr>  <tr class="odd"><td class="hs"><a href="/name/nm0000157/" onClick="(new Image()).src='/rg/title-tease/tinyhead/images/b.gif?link=/name/nm0000157/';"><img src="http://ia.media-imdb.com/images/M/MV5BMjE4NTk0Mzg0MF5BMl5BanBnXkFtZTYwMzU5NjM0._V1._SY30_SX23_.jpg" width="23" height="32" border="0"></a><br></td><td class="nm"><a href="/name/nm0000157/" onclick="(new Image()).src='/rg/castlist/position-3/images/b.gif?link=/name/nm0000157/';">Linda Hamilton</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000929/">Sarah Connor</a></td></tr>  <tr class="even"><td class="hs"><a href="http://resume.imdb.com/" onClick="(new Image()).src='/rg/title-tease/resumehead/images/b.gif?link=http://resume.imdb.com/';"><img src="http://i.media-imdb.com/images/SF9113d6f5b7cb1533c35313ccd181a6b1/tn15/no_photo.png" width="25" height="31" border="0"></td><td class="nm"><a href="/name/nm0934902/" onclick="(new Image()).src='/rg/castlist/position-4/images/b.gif?link=/name/nm0934902/';">Paul Winfield</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000958/">Lieutenant Ed Traxler</a></td></tr>  <tr class="odd"><td class="hs"><a href="/name/nm0000448/" onClick="(new Image()).src='/rg/title-tease/tinyhead/images/b.gif?link=/name/nm0000448/';"><img src="http://ia.media-imdb.com/images/M/MV5BMTQxNDg0OTcwNF5BMl5BanBnXkFtZTcwNDE5NjQ5MQ@@._V1._SY30_SX23_.jpg" width="23" height="32" border="0"></a><br></td><td class="nm"><a href="/name/nm0000448/" onclick="(new Image()).src='/rg/castlist/position-5/images/b.gif?link=/name/nm0000448/';">Lance Henriksen</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000939/">Detective Hal Vukovich</a></td></tr>  <tr class="even"><td class="hs"><a href="/name/nm0609477/" onClick="(new Image()).src='/rg/title-tease/tinyhead/images/b.gif?link=/name/nm0609477/';"><img src="http://ia.media-imdb.com/images/M/MV5BMjAxNjI2MDE5Ml5BMl5BanBnXkFtZTcwMjAzOTY0Mg@@._V1._SY30_SX23_.jpg" width="23" height="32" border="0"></a><br></td><td class="nm"><a href="/name/nm0609477/" onclick="(new Image()).src='/rg/castlist/position-6/images/b.gif?link=/name/nm0609477/';">Bess Motta</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0062128/">Ginger Ventura</a></td></tr>  <tr class="odd"><td class="hs"><a href="http://resume.imdb.com/" onClick="(new Image()).src='/rg/title-tease/resumehead/images/b.gif?link=http://resume.imdb.com/';"><img src="http://i.media-imdb.com/images/SF9113d6f5b7cb1533c35313ccd181a6b1/tn15/no_photo.png" width="25" height="31" border="0"></td><td class="nm"><a href="/name/nm0091286/" onclick="(new Image()).src='/rg/castlist/position-7/images/b.gif?link=/name/nm0091286/';">Earl Boen</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000961/">Dr. Peter Silberman</a></td></tr>  <tr class="even"><td class="hs"><a href="http://resume.imdb.com/" onClick="(new Image()).src='/rg/title-tease/resumehead/images/b.gif?link=http://resume.imdb.com/';"><img src="http://i.media-imdb.com/images/SF9113d6f5b7cb1533c35313ccd181a6b1/tn15/no_photo.png" width="25" height="31" border="0"></td><td class="nm"><a href="/name/nm0001685/" onclick="(new Image()).src='/rg/castlist/position-8/images/b.gif?link=/name/nm0001685/';">Rick Rossovich</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000957/">Matt Buchanan</a></td></tr>  <tr class="odd"><td class="hs"><a href="http://resume.imdb.com/" onClick="(new Image()).src='/rg/title-tease/resumehead/images/b.gif?link=http://resume.imdb.com/';"><img src="http://i.media-imdb.com/images/SF9113d6f5b7cb1533c35313ccd181a6b1/tn15/no_photo.png" width="25" height="31" border="0"></td><td class="nm"><a href="/name/nm0588241/" onclick="(new Image()).src='/rg/castlist/position-9/images/b.gif?link=/name/nm0588241/';">Dick Miller</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0214221/">Pawnshop Owner</a></td></tr>  <tr class="even"><td class="hs"><a href="http://resume.imdb.com/" onClick="(new Image()).src='/rg/title-tease/resumehead/images/b.gif?link=http://resume.imdb.com/';"><img src="http://i.media-imdb.com/images/SF9113d6f5b7cb1533c35313ccd181a6b1/tn15/no_photo.png" width="25" height="31" border="0"></td><td class="nm"><a href="/name/nm0770974/" onclick="(new Image()).src='/rg/castlist/position-10/images/b.gif?link=/name/nm0770974/';">Shawn Schepps</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000971/">Nancy</a></td></tr>  <tr class="odd"><td class="hs"><a href="http://resume.imdb.com/" onClick="(new Image()).src='/rg/title-tease/resumehead/images/b.gif?link=http://resume.imdb.com/';"><img src="http://i.media-imdb.com/images/SF9113d6f5b7cb1533c35313ccd181a6b1/tn15/no_photo.png" width="25" height="31" border="0"></td><td class="nm"><a href="/name/nm0449535/" onclick="(new Image()).src='/rg/castlist/position-11/images/b.gif?link=/name/nm0449535/';">Bruce M. Kerner</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0062134/">Desk Sergeant</a></td></tr>  <tr class="even"><td class="hs"><a href="http://resume.imdb.com/" onClick="(new Image()).src='/rg/title-tease/resumehead/images/b.gif?link=http://resume.imdb.com/';"><img src="http://i.media-imdb.com/images/SF9113d6f5b7cb1533c35313ccd181a6b1/tn15/no_photo.png" width="25" height="31" border="0"></td><td class="nm"><a href="/name/nm0173372/" onclick="(new Image()).src='/rg/castlist/position-12/images/b.gif?link=/name/nm0173372/';">Franco Columbu</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0062129/">Future Terminator</a></td></tr>  <tr class="odd"><td class="hs"><a href="/name/nm0000200/" onClick="(new Image()).src='/rg/title-tease/tinyhead/images/b.gif?link=/name/nm0000200/';"><img src="http://ia.media-imdb.com/images/M/MV5BNjY2NTQwOTAyNV5BMl5BanBnXkFtZTcwNTUyNjYwMw@@._V1._SY30_SX23_.jpg" width="23" height="32" border="0"></a><br></td><td class="nm"><a href="/name/nm0000200/" onclick="(new Image()).src='/rg/castlist/position-13/images/b.gif?link=/name/nm0000200/';">Bill Paxton</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0000936/">Punk Leader</a></td></tr>  <tr class="even"><td class="hs"><a href="http://resume.imdb.com/" onClick="(new Image()).src='/rg/title-tease/resumehead/images/b.gif?link=http://resume.imdb.com/';"><img src="http://i.media-imdb.com/images/SF9113d6f5b7cb1533c35313ccd181a6b1/tn15/no_photo.png" width="25" height="31" border="0"></td><td class="nm"><a href="/name/nm0714087/" onclick="(new Image()).src='/rg/castlist/position-14/images/b.gif?link=/name/nm0714087/';">Brad Rearden</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0062131/">Punk</a></td></tr>  <tr class="odd"><td class="hs"><a href="/name/nm0859921/" onClick="(new Image()).src='/rg/title-tease/tinyhead/images/b.gif?link=/name/nm0859921/';"><img src="http://ia.media-imdb.com/images/M/MV5BMTI4MjI0NzY5N15BMl5BanBnXkFtZTcwODAxODUxMQ@@._V1._SY30_SX23_.jpg" width="23" height="32" border="0"></a><br></td><td class="nm"><a href="/name/nm0859921/" onclick="(new Image()).src='/rg/castlist/position-15/images/b.gif?link=/name/nm0859921/';">Brian Thompson</a></td><td class="ddd"> ... </td><td class="char"><a href="/character/ch0062131/">Punk</a></td></tr></table><a class="tn15more" href="fullcredits#cast">See more</a>&nbsp;&raquo;</div> </div>  
+		for i in (1,2,3,4,5,6,7,8,9,10):
+			m = re.search(r'/rg/castlist/position-' + str(i) + '/images[^>]*\D(?P<cast>[^<]*)', pageHtml)
+			if m is not None:
+				if m.group("cast"):
+ 					CastTmp = m.group("cast").strip()
+# 					CastTmp = CastTmp.encode("iso-8859-1")
+ 			else:
+ 				break
+		
+			m = re.search(r'/rg/castlist/position-' + str(i) + '/images*[^>]*\D(.*?[^;]*)', pageHtml, re.DOTALL)
+			if m and m.group(0):
+				for m in re.findall(r'/">(?P<dname>[^<]+)</a>', m.group(0)):
+					if m is not None:
+						if m :
+							mediaInfo.CastExtra = (m.strip())
+#							mediaInfo.CastExtra = mediaInfo.CastExtra.encode("iso-8859-1")
+	 		if i == 1:
+		 		if CastTmp != "":
+ 					mediaInfo.Cast = CastTmp + " als " + mediaInfo.CastExtra + "\n"
+ 			else:
+ 				if CastTmp != "":
+					mediaInfo.SecondCast += CastTmp + " als " + mediaInfo.CastExtra + "\n"
+
+		mediaInfo = self.getPlot(mediaInfo)
+		return mediaInfo
+	
+	def parseSearchResultScreen(self, mediaInfo, pageHtml):
+		m = re.search(r'><a href=\"/title/(?P<imdbid>tt\d{7})/\"[^>]+>(?!&#34;)(?P<title>[^<]+)</a> \((?P<year>\d{4})[\/IVX]*\)(?! \(VG\))([^<]*<br>&#160;aka(.+?)</td>)?', pageHtml)
+		if m:
+			if m.group("imdbid"):
+				mediaInfo.ImdbId = m.group("imdbid").strip()
+				if m.group("title"):
+					mediaInfo.Title = m.group("title").strip().strip("\"")
+#					mediaInfo.Title = mediaInfo.Title.encode("iso-8859-1")
+					
+				if m.group("year"):
+					mediaInfo.Year = int(m.group("year").strip())
+			for m in re.findall(r'><a href=\"/title/(?P<imdbid>tt\d{7})/\"[^>]+>(?!&#34;)(?P<title>[^<]+)</a> \((?P<year>\d{4})[\/IVX]*\)(?! \(VG\))([^<]*<br>&#160;aka(.+?)</td>)?', pageHtml):
+				if m:
+					if m[0] and m[1] and m[2]:
+						mediaInfo.Alternatives[m[0].strip()] = [m[1].strip(), m[2].strip()]
+				else:
+					break
+		first = True
+#####		ImdbTitle = Title
+		if mediaInfo.Title.lower() != mediaInfo.SearchString.lower():
+			for key in mediaInfo.Alternatives.iterkeys():
+				if mediaInfo.Alternatives[key][0].lower() == mediaInfo.SearchString.lower():
+					mediaInfo.ImdbId = key
+					mediaInfo.Year = int(mediaInfo.Alternatives[key][1])                    
+#					Title = unicode(Alternatives[key][0].strip("\""))
+					mediaInfo.Title = mediaInfo.Alternatives[key][0].strip("\"")
+					mediaInfo.Title = mediaInfo.Title.encode("iso-8859-1")
+					break
+		return mediaInfo
+	
+	def parseAdvancedSearchResultScreen(self, mediaInfo, pageHtml):
+		# <a href="/title/tt1219024/" title="Castle (2009 TV Series)">
+		m = re.search(r'<a href=\"/title/(?P<imdbid>tt\d{7})/\" title=\"(?P<title>[^\(]+)\((?P<year>\d{4})[^)]*\)\">', pageHtml)
+		if m:
+			if m.group("imdbid"):
+				mediaInfo.ImdbId = m.group("imdbid").strip()
+				if m.group("title"):
+					mediaInfo.Title = m.group("title").strip().strip("\"")				
+#					mediaInfo.Title = mediaInfo.Title.encode("iso-8859-1")
+				if m.group("year"):
+					mediaInfo.Year = int(m.group("year").strip())
+		for m in re.findall(r'<a href=\"/title/(?P<imdbid>tt\d{7})/\" title=\"(?P<title>[^\(]+)\((?P<year>\d{4})[^)]*\)\">', pageHtml):
+			if m:
+				if m[0] and m[1] and m[2]:
+					mediaInfo.Alternatives[m[0].strip()] = [m[1].strip(), m[2].strip()]
+			else:
+				break
+		first = True
+		if mediaInfo.Title.lower() != mediaInfo.SearchString.lower():
+			for key in mediaInfo.Alternatives.iterkeys():
+				if mediaInfo.Alternatives[key][0].lower() == mediaInfo.SearchString.lower():
+					mediaInfo.ImdbId = key
+					mediaInfo.Title = mediaInfo.Alternatives[key][0].strip("\"")
+					mediaInfo.Title = mediaInfo.Title.encode("iso-8859-1")
+					mediaInfo.Year = int(mediaInfo.Alternatives[key][1])
+					break
+		return mediaInfo
+
+def html2utf8(in_html):
+	in_html = re.sub('&amp;', 'und' , in_html)
+#	in_html = re.sub('&#[0-9]{4}', ' ' , in_html)
+#	in_html = re.sub('&#[256-600];', ' ' , in_html)
+#	in_html = re.sub('&#[2-9][0-9][0-9];', ' ' , in_html)
+	
+	htmlentitynumbermask = re.compile('(&#(\d{1,5}?);)')
+	htmlentityhexmask = re.compile('(&#x([0-9A-Fa-f]{2,2}?);)')
+	htmlentitynamemask = re.compile('(&([^#]\D{1,5}?);)')
+	entitydict = {}
+	entityhexdict = {}
+	entities = htmlentitynamemask.finditer(in_html)
+
+	for x in entities:
+		entitydict[x.group(1)] = x.group(2)
+	for key, name in entitydict.items():
+		entitydict[key] = htmlentitydefs.name2codepoint[name]
+	entities = htmlentityhexmask.finditer(in_html)
+
+	for x in entities:
+		entityhexdict[x.group(1)] = x.group(2)
+
+	for key, name in entityhexdict.items():
+		entitydict[key] = "%d" % int(key[3:5], 16)
+		print "[MC_Imdb] key:", key, "before:", name, "after:", entitydict[key]
+	
+	entities = htmlentitynumbermask.finditer(in_html)
+	for x in entities:
+		entitydict[x.group(1)] = x.group(2)
+
+	for key, codepoint in entitydict.items():
+		if int(codepoint) > 256 and int(codepoint) < 9999:
+			print "[MC_Imdb] key skip:", key
+		else:
+			print "[MC_Imdb] before:", key, "after:", int(codepoint)
+			
+			in_html = in_html.replace(key, (unichr(int(codepoint)).encode('latin-1')))
+
+	in_html = re.sub('&#[0-9]{4}', ' ' , in_html)							
+	in_html = re.sub('&#[2-9][0-9][0-9];', ' ' , in_html)
+	inhtml = in_html.decode('latin-1').encode('utf8')
+
+	return inhtml
+# 
+# def IMDBquery2(self,string):
+# 	self["statusbar"].setText(_("IMDb Re-Download completed"))
+# 	self.html2utf8(open("/tmp/imdbquery2.html", "r").read())
+# 	self.generalinfos = self.generalinfomask.search(self.inhtml)
+# 	self.IMDBparse()
+# 
+# def fetchFailed(self,string):
+# 	print "[IMDB] fetch failed", string
+# 	self["statusbar"].setText(_("IMDb Download failed"))
+# #		self.closed()
+def downloadConvert(string):
+	print "[ImdbProvider] downloadConvert", string
+	if not string:
+		pageHtml = html2utf8(open(string, "r").read())
+	else:
+		pageHtml = ""
+	return pageHtml
+	
+def downloadError(string):
+	print "[ImdbProvider] downloadError", string
+	pageHtml = ""
+	return pageHtml
+
+import urllib2
+import codecs
+import socket
+from sys import version_info
+import sys, traceback
+
+def download(fetchurl,localfile):
+#	downloadPage(fetchurl,localfile).addCallback(downloadConvert).addErrback(downloadError)
+#	return 
+	kwargs = {}
+	if version_info[1] >= 6:
+		kwargs['timeout'] = 10
+	else:
+		socket.setdefaulttimeout(10)
+	try:
+		page = urllib2.urlopen(fetchurl, **kwargs)
+	except Exception, ex:
+		print "URL", fetchurl
+		print "urllib2.urlopen: ", ex
+		return None
+	try:
+		pageHtml = page.read()
+		f = open(localfile, 'w')
+		f.write(pageHtml)
+		f.close()
+	except Exception, ex:
+		print "create cache ", ex, type(pageHtml)
+
+import os
+import re
+import urllib2
+import codecs
+import socket
+from sys import version_info
+import sys, traceback
+
+class WebGrabber(object):
+	'''
+	classdocs
+	'''
+
+	cacheDir = "/tmp"
+	downloadDir = ""
+
+	def __init__(self):
+		'''
+		Constructor
+		'''
+
+	def grab(self, fetchurl, localfile): #encoding="latin-1"):
+		print "[ImdbProvider] grab URL", fetchurl.encode('latin-1')
+		pageHtml = None
+		kwargs = {}
+		if version_info[1] >= 6:
+			kwargs['timeout'] = 10
+		else:
+			socket.setdefaulttimeout(10)
+		try:
+			page = urllib2.urlopen(fetchurl.encode('latin-1'), **kwargs)
+			
+		except Exception, ex:
+			print "[ImdbProvider] grab URL", fetchurl
+			print "[ImdbProvider] grab urllib2.urlopen: ", ex
+			return None
+
+ 		f = open(localfile, 'wb')
+		f.write(page.read())
+		f.close()
+ 
+ 		f = open(localfile, "r")
+ 		pageHtml = f.read()
+ 		f.close()
+ 		pageHtml = html2utf8(pageHtml)
+		return pageHtml
+
+	def grabFile(self, fetchurl, localfile):
+		print "[ImdbProvider] grabFile URL", fetchurl.encode('latin-1')
+		for i in range(3):
+			try:
+				page = urllib2.urlopen(fetchurl.encode('latin-1'))
+		 		f = open(localfile, 'wb')
+				f.write(page.read())
+				f.close()
+				break
+			except Exception, ex:
+				print "[ImdbProvider] grabFile File download failed: ", ex
+				print "[ImdbProvider] grabFile Name: ", localfile
+				print "[ImdbProvider] grabFile:", type(ex)
+				print '-'*60
+				traceback.print_exc(file=sys.stdout)
+				print '-'*60
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/MediaInfo.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/MediaInfo.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/MediaInfo.py	(revision 9331)
@@ -0,0 +1,577 @@
+# -*- coding: UTF-8 -*-
+
+'''
+Created on 21.05.2010
+
+@author: i7
+'''
+import re
+import os
+import replace
+
+class MediaInfo(object):
+	'''
+	classdocs
+	'''
+
+#	output = ""
+	Alternatives = {}
+#	Directors = []
+	Directors = ""
+#	Writers = []
+	Writers = ""
+#	Genres = []
+	Genres = ""
+	Runtime = ""
+	TagLine = ""
+	Popularity = "0"
+	Plot = ""
+
+	ImdbId = "tt0000000"
+	TheTvDbId = "0"
+	mvidUrl = "0"
+	UrlMovieDb = "0"
+	UrlTheTvDbId = "0" 
+	
+	Title = ""
+
+	ReleaseDate = ""
+	CoverBig = ""
+	CoverBigLink = ""
+	Cover = ""
+	Votes = ""
+	Rating = ""
+	Cast = ""
+	SecondCast = ""
+	CastExtra = ""
+	imdburl = ""  
+	Artist = ""
+
+
+	PosterOrginal = ""
+	PosterMid = ""
+	PosterThumb = ""
+	PosterCover = ""
+	PosterPreview = ""
+	Banner = ""
+	
+	Status = ""
+	Network = ""
+	Banner = ""
+
+	UrlMovieDb = ""
+	isSerieMovieDb = ""
+
+	Filename = ""
+	Path = ""
+	Extension = ""
+	Year = 0
+	Resolution = "576"
+	Sound = "Stereo"
+
+	isMvid = False
+	isMovie = True
+	isSerie = False
+	isEpisode = False
+
+	Poster = ""
+	Backdrop = ""
+
+	Season = -1
+	Episode = -1
+	
+	SearchString = ""
+
+	def __init__(self, path, filename, extension):
+		'''
+		Constructor
+		'''
+		self.Path = path
+		self.Filename = filename
+		self.Extension = extension
+
+		self.Alternatives = {}
+#		self.Directors = []
+#		self.Writers = []
+		self.Directors = ""
+		self.Writers = ""           
+
+	def copy(self):
+		m = MediaInfo(self.Path, self.Filename, self.Extension)
+		m.Alternatives = self.Alternatives
+		m.Directors = self.Directors
+		m.Writers = self.Writers
+		m.Genres = self.Genres
+		m.Runtime = self.Runtime
+		m.TagLine = self.TagLine
+		m.Popularity = self.Popularity
+		m.Plot = self.Plot
+		m.Artist = self.Artist
+		m.Network = self.Network
+		
+		m.ImdbId = self.ImdbId
+		m.TheTvDbId = self.TheTvDbId
+		m.Title = self.Title
+		m.Year = self.Year
+		m.Resolution = self.Resolution
+		m.Sound = self.Sound
+		m.isMovie = self.isMovie
+		m.isSerie = self.isSerie
+		m.isEpisode = self.isEpisode
+		m.Poster = self.Poster
+		m.Backdrop = self.Backdrop
+		m.Season = self.Season
+		m.Episode = self.Episode
+		m.SearchString = self.SearchString
+
+		m.CoverBig = self.CoverBig
+		m.CoverBigLink = self.CoverBigLink
+		m.Cover = self.Cover
+		m.Votes = self.Votes
+		m.Rating = self.Rating
+		m.Cast = self.Cast
+		m.SecondCast = self.SecondCast
+		m.CastExtra = self.CastExtra
+		m.imdburl = self.imdburl
+
+		return m
+
+	def isEnigma2Recording(self, name):
+		try:
+			f = open(name + ".meta", "r")
+			f.close()
+		except Exception, ex:
+			#print ex
+			return False
+		return True
+
+	def getEnigma2RecordingName(self, name):
+		f = open(name + ".meta", "r")
+		f.readline()
+		name = f.readline()
+		f.close()
+		return name
+
+	def isValerieInfoAvailable(self, path):
+		try:
+			f = open(path + "/valerie.info", "r")
+			f.close()
+		except Exception, ex:
+			#print ex
+			return False
+		return True
+
+	def getValerieInfo(self, path):
+		f = open(path + "/valerie.info", "r")
+		name = f.readline()
+		f.close()
+		return name
+
+	def getValerieInfoLastAccessTime(self, path):
+		time = 0
+		try:
+			f = open(path + "/.access", "r")
+			time = int(f.readline())
+			f.close()
+		except Exception, ex:
+			return time #print "no .access"
+		return time
+
+	def getValerieInfoAccessTime(self, path):
+		time = 0
+		if os.path.isfile(path + "/valerie.info"):
+			time = os.path.getmtime(path + "/valerie.info")
+		return time
+
+	def setValerieInfoLastAccessTime(self, path):
+		if os.path.isfile(path + "/valerie.info"):
+			time = os.path.getmtime(path + "/valerie.info")
+			f = open(path + "/.access", "w")
+			time = f.write(str(time)+"\n")
+			f.close()
+		elif os.path.isfile(path + "/.access"):
+			os.remove(path + "/.access")
+
+	def parse(self):
+		
+#		absFilename = unicode(self.Path) + "/" + unicode(self.Filename) + "." + unicode(self.Extension)
+		absFilename = self.Path + "/" + self.Filename + "." + self.Extension
+#		name = unicode(self.Filename).lower()
+		name = self.Filename.lower()
+#		import sys
+#		print sys.getdefaultencoding()
+##		print sys.stdout.encoding
+		
+		self.SearchString = name.decode("latin-1",'ignore').encode("utf8")
+#		print type(self.SearchString)
+#		print self.SearchString
+
+### Replacements PRE
+#	for replacement in replace.replacements("pre"):
+#	#print "[pre] ", replacement[0], " --> ", replacement[1]
+#	self.SearchString = re.sub(replacement[0], replacement[1], self.SearchString)
+
+#		print ":-1: ", self.SearchString
+
+###
+		m = re.search(r'(?P<imdbid>tt\d{7})', name)
+		if m and m.group("imdbid"):
+			self.ImdbId = m.group("imdbid")
+
+###  
+		m = re.search(r'\s(?P<year>\d{4})\s', name)
+		if m and m.group("year"):
+			year = int(m.group("year"))
+			if year > 1940 and year < 2012:
+				self.Year = year
+				#self.SearchString = name[:m.start()]
+
+		#print ":0: ", self.SearchString
+
+###    
+		m = re.search(r'720p', name)
+		if m:
+			self.Resolution = "720p"
+		else:
+			m = re.search(r'1080i', name)
+			if m:
+				self.Resolution = "1080i"
+			else:
+				m = re.search(r'1080p', name)
+				if m:
+					self.Resolution = "1080p"
+
+###    
+		m = re.search(r'dts', name)
+		if m:
+			self.Sound = "dts"
+		else:
+			m = re.search(r'dd5', name)
+			if m:
+				self.Sound = "ac3"
+			else:
+				m = re.search(r'ac3', name)
+				if m:
+					self.Sound = "ac3"
+
+		#nameConverted = name
+
+		#####
+		#####  s03e05
+		#####
+
+# 		if self.Season == -1 or self.Episode == -1:
+# 			print "self.SearchString",self.SearchString
+# #			m = re.search(r'\Ws(?P<season>\d+)\s?e(?P<episode>\d+)(\D|$)', self.SearchString)
+# 			m = re.search(r'\Ws(?P<season>\d+)\s?e(?P<episode>\d+).', self.SearchString)
+# 
+# 
+# 
+# 			print "[mediainfo] serie self.SearchString",self.SearchString
+# 			
+# #			self.SearchString 24.s07e10.17.00.bis.18.00.uhr.german.ac3.hdtv.720p.x264-nva
+# 			print "mmmmmmmmmmmmmmm",m
+# 			if m and m.group("season") and m.group("episode"):
+# 				print "iffffffffff"
+# 				self.isSerie = True
+# 				self.isMovie = False
+# 
+# 				self.Season = int(m.group("season"))
+# 				self.Episode = int(m.group("episode"))
+# 
+# 				self.SearchString = re.sub(r's(?P<season>\d+)\s?e(?P<episode>\d+).*', " ", self.SearchString)
+# 				print "self.SearchStringqqqqqqqqqqqqqq",self.SearchString
+#  			else:
+#  				print "elseeeeeeeee"
+		if self.Season == -1 or self.Episode == -1:
+			m = re.search(r'\Ws(?P<season>\d+)\s?e(?P<episode>\d+)(\D|$)', self.SearchString)
+			if m and m.group("season") and m.group("episode"):
+				self.isSerie = True
+				self.isMovie = False
+
+				self.Season = int(m.group("season"))
+				self.Episode = int(m.group("episode"))
+
+				self.SearchString = re.sub(r's(?P<season>\d+)\s?e(?P<episode>\d+).*', " ", self.SearchString)
+
+		#####
+		#####  s03e05e06 s03e05-e06
+		#####
+
+		if self.Season == -1 or self.Episode == -1:
+			m = re.search(r'\Ws(?P<season>\d+)\s?e(?P<episode>\d+)[-]?\s?e?(?P<episode2>\d+)(\D|$)', self.SearchString)
+			if m and m.group("season") and m.group("episode"):
+				self.isSerie = True
+				self.isMovie = False
+
+				self.Season = int(m.group("season"))
+				self.Episode = int(m.group("episode"))
+
+				self.SearchString = re.sub(r's(?P<season>\d+)\s?e(?P<episode>\d+)[-]?\s?e?(?P<episode2>\d+).*', " ", self.SearchString)
+
+		#####
+		#####  3x05
+		#####
+
+		if self.Season == -1 or self.Episode == -1:  
+			m = re.search(r'\D(?P<season>\d+)x(?P<episode>\d+)(\D|$)', self.SearchString)
+			if m and m.group("season") and m.group("episode"):
+				self.isSerie = True
+				self.isMovie = False
+
+				self.Season = int(m.group("season"))
+				self.Episode = int(m.group("episode"))
+
+				self.SearchString = re.sub(r'(?P<season>\d+)x(?P<episode>\d+).*', " ", self.SearchString)
+
+		#####
+		#####  part 3
+		#####
+
+		if self.Season == -1 or self.Episode == -1:
+			m = re.search(r'\W(part|pt)\s?(?P<episode>\d+)(\D|$)', self.SearchString)
+			if m and m.group("episode"):
+				self.isSerie = True
+				self.isMovie = False
+
+				self.Season = int(0)
+				self.Episode = int(m.group("episode"))
+
+				self.SearchString = re.sub(r'(part|pt)\s?(?P<episode>\d+).*', " ", self.SearchString)
+
+		#####
+		#####  305
+		#####
+
+ 		movie = re.sub("\W[0-9]{4}","",self.SearchString)
+ 		movie = re.sub("[0-9]{8}","",movie)
+ 		if movie[1] == '-':
+			self.isMovie = True
+		elif self.Season == -1 or self.Episode == -1:
+			nameConverted = ""
+			prevc = "a"
+			for c in self.SearchString:
+				if (prevc.isdigit() and c.isdigit()) or (prevc.isdigit() is False and c.isdigit() is False):
+					nameConverted += c
+				else:
+					nameConverted += " " + c
+				prevc = c
+
+#			print "[[[ ", nameConverted.encode('latin-1')
+#			print "[[[ ", nameConverted.encode("iso-8859-1")
+
+			nameConverted = nameConverted.strip()
+
+			m = re.search(r'\D(?P<seasonepisode>\d{3,4})(\D|$)', nameConverted)
+			if m and m.group("seasonepisode"):
+				se = int(-1)
+				s = int(-1)
+				e = int(-1)
+
+				se = int(m.group("seasonepisode"))
+
+				s = se / 100
+				e = se % 100
+
+				if (s == 2 and e == 64 or s == 7 and e == 20 or s == 10 and e == 80 or s == 0 or s == 19 and e >= 40 or s == 20 and e <= 14) is False:
+					self.isSerie = True
+					self.isMovie = False
+
+					self.Season = s
+					self.Episode = e
+
+					self.SearchString = re.sub(r'(?P<seasonepisode>\d{3,4}).*', " ", nameConverted)
+
+		if self.Extension == "ts" and self.isEnigma2Recording(absFilename) is True:
+			self.SearchString = self.getEnigma2RecordingName(absFilename).strip()
+#			print ":: ", self.SearchString.encode('latin-1')
+#			print ":: ", self.SearchString.encode("iso-8859-1")
+
+			return
+
+		if self.isValerieInfoAvailable(self.Path) is True:
+			self.SearchString = self.getValerieInfo(self.Path).strip()
+			return
+
+		### Replacements POST
+		self.SearchString = re.sub(r'[-]', " ", self.SearchString)
+		self.SearchString = re.sub(r' +', " ", self.SearchString)
+
+		post = "post"
+		if self.isSerie:
+			post = "post_tv"
+		elif self.isMovie:
+			post = "post_movie"
+
+#		for replacement in replace.replacements(post):
+#			#print "[" + post + "] ", replacement[0], " --> ", replacement[1]
+#			self.SearchString = re.sub(replacement[0], replacement[1], self.SearchString)
+
+		self.SearchString = self.SearchString.strip()
+
+	def __str__(self):
+	
+		print "self.Title", self.Title
+		print "self.Directors", self.Directors
+		print "self.Artist", self.Artist
+		
+		if self.isMvid:
+			ustr = "\nDirectors:\t" + self.Directors.decode("latin-1",'ignore')
+			ustr += "\nTitle:\t" + self.Title.decode("latin-1",'ignore')
+			ustr += "\nArtist:\t" + self.Artist.decode("latin-1",'ignore')
+			ustr += "\nBand:\t" + self.Network.decode("latin-1",'ignore')
+			ustr += "\nPlot:\t" + self.Plot.decode("latin-1",'ignore')
+			ustr += "\nPopularity:\t" + unicode(self.Popularity)
+			ustr += "\nCountrys:\t" + self.Status.decode("latin-1",'ignore')
+			ustr += "\nUrl-Mtv:\t" + unicode(self.mvidUrl)
+		elif self.isMovie:
+			ustr = "\nDirectors:\t" + self.Directors.decode("latin-1",'ignore')		
+			ustr += "\nWriters:\t" + self.Writers.decode("latin-1",'ignore')
+			ustr += "\nRating:\t" + unicode(self.Rating) + " / 10 @ " + unicode(self.Votes) + " Votes" + " @ " + unicode(self.Runtime) + " min" 
+			ustr += "\nGenres:\t" + self.Genres.decode("latin-1",'ignore')
+			ustr += "\nReleaseDate:\t" + self.ReleaseDate.decode("latin-1",'ignore')
+			ustr += "\nCast:\t" + self.Cast.decode("latin-1",'ignore')
+			ustr += "\n"
+			ustr += "\nTitle:\t" + self.Title.decode("latin-1",'ignore')
+			ustr += "\nPlot:\t" + self.Plot.decode("latin-1",'ignore')		
+			ustr += "\n--------------------------------------------------------------------------------------------------------"
+			ustr += "\nYear:\t" + unicode(self.Year)
+			ustr += "\nResolution:\t" + unicode(self.Resolution)
+			ustr += "\nSound:\t" + unicode(self.Sound)
+			ustr += "\nPopularity:\t" + unicode(self.Popularity)
+			ustr += "\n--------------------------------------------------------------------------------------------------------"
+			ustr += "--------------------------------------------------------------------------------------------------------"
+			ustr += "\nSecondCast:\n-----------------\n" + self.SecondCast.decode("latin-1",'ignore')
+			ustr += "\n--------------------------------------------------------------------------------------------------------"
+			ustr += "\nIMDB-Url:\t" + unicode(self.imdburl)
+			ustr += "\nTheTvDbId-Url:\t" + unicode(self.UrlTheTvDbId)
+		else:
+			ustr = "\nDirectors:\t" + self.Directors.decode("utf-8")		
+			ustr += "\nWriters:\t" + self.Writers.decode("utf-8")
+			ustr += "\nRating:\t" + unicode(self.Rating) + " / 10 @ " + unicode(self.Votes) + " Votes" + " @ " + unicode(self.Runtime) + " min" 
+			ustr += "\nGenres:\t" + self.Genres.decode("utf-8")
+			ustr += "\nReleaseDate:\t" + self.ReleaseDate.decode("utf-8")
+			ustr += "\nStatus:\t" + self.Status.decode("utf-8")
+			ustr += "\nNetwork:\t" + self.Network.decode("utf-8")
+			ustr += "\nSeason:\t" + unicode(self.Season)
+			ustr += "\nEpisode:\t" + unicode(self.Episode)
+			ustr += "\nCast:\t" + self.Cast.decode("utf-8")
+			ustr += "\n"
+			ustr += "\nTitle:\t" + self.Title.decode("utf-8")
+			ustr += "\nPlot:\t" + self.Plot.decode("utf-8")
+#			ustr += "\nPlot:\t" + self.Plot.decode("latin-1",'ignore')	
+			ustr += "\n--------------------------------------------------------------------------------------------------------"
+			ustr += "\nYear:\t" + unicode(self.Year)
+			ustr += "\nResolution:\t" + unicode(self.Resolution)
+			ustr += "\nSound:\t" + unicode(self.Sound)
+			ustr += "\nPopularity:\t" + unicode(self.Popularity)
+			ustr += "\n--------------------------------------------------------------------------------------------------------"
+			ustr += "--------------------------------------------------------------------------------------------------------"
+			ustr += "\nSecondCast:\n-----------------\n" + self.SecondCast.decode("utf-8")
+			ustr += "\n--------------------------------------------------------------------------------------------------------"
+			ustr += "\nIMDB-Url:\t" + unicode(self.imdburl)
+			ustr += "\nTheTvDbId-Url:\t" + unicode(self.UrlTheTvDbId)
+			
+			
+			
+			
+		ustr += "\nisMovie:\t" + unicode(self.isMovie)
+		ustr += "\nisMvid:\t" + unicode(self.isMvid)	
+		ustr += "\n--------------------------------------------------------------------------------------------------------"
+		ustr += "\n\n"
+		
+		ustr = re.sub(u'\u2013', '-' , ustr)
+		return ustr.encode('latin-1', 'ignore')
+
+	def importStr(self, string, isMovie=False, isSerie=False, isEpisode=False):
+
+		self.isMovie = isMovie
+		self.isSerie = isSerie
+		self.isEpisode = isEpisode
+
+		d = {} 
+		lines = string.split('\n')
+		for line in lines: 
+			#print "Line: ", line
+			if ":" in line: 
+				key, value = (s.strip() for s in line.split(":", 1)) 
+
+			if key == "ImdbId":
+				self.ImdbId = value
+			if key == "TheTvDb":
+				self.TheTvDbId = value
+			elif key == "Title":
+				self.Title = value
+			elif key == "Year":
+				self.Year = int(value)
+			elif key == "Path":
+				self.Path, self.Filename = value.rsplit("/", 1)
+				#print self.Filename
+				self.Filename, self.Extension = self.Filename.rsplit('.', 1)
+			elif key == "Plot":
+				self.Plot = value
+			elif key == "Runtime":
+				self.Runtime = int(value)  
+			elif key == "Tag":
+				self.TagLine = value  
+			elif key == "Popularity":
+				self.Popularity = value  
+			elif key == "Season":
+				self.Season = int(value)  
+			elif key == "Episode":
+				self.Episode = int(value)
+
+	def export(self):
+		stri = u'\n---BEGIN---',self.isMovie
+		if self.isMovie:
+			stri += u'\nImdbId: ' +     unicode(self.ImdbId)
+			stri += u'\nTitle: ' +      self.Title
+			stri += u'\nYear: ' +       unicode(self.Year)
+			stri += u'\nPath: ' +       unicode(self.Path) + "/" + unicode(self.Filename) + "." + unicode(self.Extension)
+			stri += u'\nPlot: ' +       self.Plot
+			stri += u'\nRuntime: ' +    unicode(self.Runtime)
+			stri += u'\nGenres: ' +     unicode(self.Genres)
+			stri += u'\nReleasedate: ' + u'2000-01-01'
+			stri += u'\nTag: ' +        unicode(self.TagLine)
+			stri += u'\nPopularity: ' + unicode(self.Popularity)
+			stri += u'\nDirectors: ' +  "---"
+			stri += u'\nWriters: ' +    "---"
+		elif self.isSerie:
+			stri += u'\nImdbId: ' +     unicode(self.ImdbId)
+			stri += u'\nTheTvDb: ' +    unicode(self.TheTvDbId)
+			stri += u'\nTitle: ' +      self.Title
+			stri += u'\nYear: ' +       unicode(self.Year)
+			stri += u'\nPlot: ' +       self.Plot
+			stri += u'\nRuntime: ' +    unicode(self.Runtime)
+			stri += u'\nGenres: ' +     unicode(self.Genres)
+			stri += u'\nReleasedate: ' + u'2000-01-01'
+			stri += u'\nTag: ' +        unicode(self.TagLine)
+			stri += u'\nPopularity: ' + unicode(self.Popularity)
+			stri += u'\nDirectors: ' +  "---"
+			stri += u'\nWriters: ' +    "---"
+		elif self.isEpisode:
+			stri += u'\nImdbId: ' +     unicode(self.ImdbId)
+			stri += u'\nTheTvDb: ' +    unicode(self.TheTvDbId)
+			stri += u'\nTitle: ' +      self.Title
+			stri += u'\nYear: ' +       unicode(self.Year)
+			stri += u'\nPath: ' +       unicode(self.Path) + "/" + unicode(self.Filename) + "." + unicode(self.Extension)
+			#print "stri: ", type(stri)
+			#print "self.Plot: ", type(self.Plot)
+			stri += u'\nPlot: ' +       unicode(self.Plot)
+			stri += u'\nRuntime: ' +    unicode(self.Runtime)
+			stri += u'\nGenres: ' +     unicode(self.Genres)
+			stri += u'\nReleasedate: ' + u'2000-01-01'
+			stri += u'\nTag: ' +        unicode(self.TagLine)
+			stri += u'\nPopularity: ' + unicode(self.Popularity)
+			stri += u'\nSeason: ' +     unicode(self.Season)
+			stri += u'\nEpisode: ' +    unicode(self.Episode)
+			stri += u'\nDirectors: ' +  "---"
+			stri += u'\nWriters: ' +    "---"
+
+		stri += u'\n----END----\n\n'
+		print "[mediainfo] export",type(stri)
+#		return ustr.encode('latin-1')
+#		return ustr.encode("iso-8859-1")
+
+ #		print "stri", stri
+		return stri
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/Mtv.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/Mtv.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/Mtv.py	(revision 9331)
@@ -0,0 +1,167 @@
+'''
+Created on 23.05.2010
+
+@author: i7
+'''
+
+from twisted.web.microdom import parseString
+from os import system
+from ImdbProvider import html2utf8, WebGrabber
+import re
+
+try:
+	from Tools.Directories import pathExists
+except:
+	pass
+
+try:
+	from Directories import pathExists
+except:
+	pass
+	
+import time
+
+class Mtv(object):
+	'''
+	classdocs
+	'''
+
+	apiSearch = "http://api.mtvnservices.com/1/video/search/?term=";
+
+	def __init__(self, language):
+		'''
+		Constructor
+		'''
+		self.language = language		 
+
+	def getMvidByTitle(self, mediaInfo):
+		urlTitle = mediaInfo.Title
+		urlTitle = re.sub(" ", "+", urlTitle)
+
+		localfile = "/tmp/cache.getMvidByTitle.html"
+		fetchurl = self.apiSearch + urlTitle
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+
+# 		system('wget "%s%s" -O /tmp/cache.getMvidByTitle.html' % (fetchurl,localfile))
+#		time.sleep(1)
+# 		if pathExists("/tmp/cache.getMvidByTitle.html"):	
+# 			pageHtml = open("/tmp/cache.getMvidByTitle.html", "r").read()
+# 		else:
+# 			return mediaInfo
+
+		if not pageHtml:
+			return mediaInfo
+
+		dom = parseString(pageHtml)
+		for p in dom.getElementsByTagName("entry"):
+			mediaInfo.mvidUrl = p.getElementsByTagName("id")[0].childNodes[0].data
+			break
+
+		mediaInfo = self.getMvidDetails(mediaInfo)	
+
+		return mediaInfo
+
+	def getMvidDetails(self, mediaInfo):
+		if mediaInfo.mvidUrl == "0":
+			return mediaInfo
+
+		localfile = "cache.getMvidDetails.html"
+		fetchurl = mediaInfo.mvidUrl
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+
+#  		system('wget "%s" -O /tmp/cache.getMvidDetails.html' % (fetchurl,localfile))
+#  		time.sleep(1)
+# 		if pathExists("/tmp/cache.getMvidDetails.html"):	
+# 	 		pageHtml = open("/tmp/cache.getMvidDetails.html", "r").read()
+# 		else:
+# 			return mediaInfo
+
+		if not pageHtml:
+			return mediaInfo
+
+		dom = parseString(pageHtml)
+		for p in dom.getElementsByTagName("media:description"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Plot = p.childNodes[0].data
+				break
+
+		for p in dom.getElementsByTagName("name"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Network = p.childNodes[0].data
+				break
+
+		for p in dom.getElementsByTagName("media:title"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Title = p.childNodes[0].data
+				break
+
+		for p in dom.getElementsByTagName("media:restriction"):
+			if len(p.childNodes) > 0:
+				if p.getAttribute("type") == "country":
+					mediaInfo.Status = p.childNodes[0].data
+					break
+			
+		for p in dom.getElementsByTagName("media:credit"):
+			if len(p.childNodes) > 0:
+				if p.getAttribute("role") == "director":
+					mediaInfo.Directors = p.childNodes[0].data
+
+		count = 0
+		for p in dom.getElementsByTagName("media:credit"):
+			if len(p.childNodes) > 0:
+				if p.getAttribute("role") == "artist/performer":
+					count += 1
+					if count == 1:	
+						mediaInfo.Artist = p.childNodes[0].data
+					else:
+						mediaInfo.Artist += " , " + p.childNodes[0].data
+
+		for p in dom.getElementsByTagName("media:category"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Popularity = p.childNodes[0].data
+				break
+
+		backdrop = False
+		cover = False
+		for p in dom.getElementsByTagName("media:thumbnail"):
+			print p.getAttribute("width")
+			if int(p.getAttribute("width")) <= 100:
+				cover = True
+				mediaInfo.Cover = p.getAttribute("url")
+				mediaInfo.PosterPreview = p.getAttribute("url")
+			
+			if int(p.getAttribute("width")) >= 100 and int(p.getAttribute("width")) <= 140:
+				if not cover:
+					mediaInfo.Cover = p.getAttribute("url")
+					
+				mediaInfo.PosterPreview = p.getAttribute("url")
+
+			if int(p.getAttribute("width")) >= 200:
+				if not backdrop:
+					mediaInfo.Backdrop = p.getAttribute("url")
+
+				mediaInfo.BigCover = p.getAttribute("url")
+				mediaInfo.PosterMid = p.getAttribute("url")
+
+			if int(p.getAttribute("width")) >= 300:
+				if not backdrop:
+					mediaInfo.Backdrop = p.getAttribute("url")
+
+				mediaInfo.BigCover = p.getAttribute("url")
+
+			if int(p.getAttribute("width")) >= 400:
+				if not backdrop:
+					mediaInfo.Backdrop = p.getAttribute("url")
+
+				mediaInfo.PosterMid = p.getAttribute("url")
+
+			if int(p.getAttribute("width")) >= 500 and int(p.getAttribute("height")) <= 300:
+				backdrop = True
+				mediaInfo.Backdrop = p.getAttribute("url")
+
+			if int(p.getAttribute("width")) >= 500:
+				mediaInfo.BigCover = p.getAttribute("url")
+				if not backdrop:
+					mediaInfo.Backdrop = p.getAttribute("url")
+
+		return mediaInfo
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/TheMovieDbProvider.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/TheMovieDbProvider.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/TheMovieDbProvider.py	(revision 9331)
@@ -0,0 +1,184 @@
+
+'''
+Created on 22.05.2010
+
+@author: i7
+'''
+
+from twisted.web.microdom import parseString
+from os import system
+from ImdbProvider import html2utf8, WebGrabber
+
+try:
+	from Tools.Directories import pathExists
+except:
+	pass
+
+try:
+	from Directories import pathExists
+except:
+	pass
+	
+import time
+
+class TheMovieDbProvider(object):
+	'''
+	classdocs
+	'''
+
+	APIKEY = "7bcd34bb47bc65d20a49b6b446a32866";
+	apiImdbLookup = "http://api.themoviedb.org/2.1/Movie.imdbLookup/"
+	apiImdbLookup2 = "/xml/" + APIKEY + "/"
+	apiSearch = "http://api.themoviedb.org/2.0/Movie.search?api_key=" + APIKEY + "&title=";
+	apiGetInfo = "http://api.themoviedb.org/2.0/Movie.getInfo?api_key=" + APIKEY + "=";
+
+	def __init__(self, language):
+		'''
+		Constructor
+		'''
+		self.language = language
+
+	def getMovieByImdbID(self, mediaInfo):
+		if mediaInfo.ImdbId == "tt0000000":
+			return mediaInfo
+		if self.language == "de":
+			localfile = "/tmp/cache.getMovieByImdbID.html"
+			fetchurl = self.apiImdbLookup + "de" + self.apiImdbLookup2 + mediaInfo.ImdbId
+			pageHtml = WebGrabber().grab(fetchurl,localfile)
+# 			system('wget "%sde%s%s" -O /tmp/cache.getMovieByImdbID.html' % (self.apiImdbLookup,self.apiImdbLookup2,mediaInfo.ImdbId))
+#			time.sleep(1)
+# 			if pathExists("/tmp/cache.getMovieByImdbID.html"):	
+# 				pageHtml = html2utf8(open("/tmp/cache.getMovieByImdbID.html", "r").read())		
+# 			else:
+# 				return mediaInfo
+
+#			pageHtml = open("/tmp/cache.getMovieByImdbID.html", "r").read()		
+		else:
+			localfile = "/tmp/cache.getMovieByImdbID.html"
+			fetchurl = self.apiImdbLookup + "en" + self.apiImdbLookup2 + mediaInfo.ImdbId
+			pageHtml = WebGrabber().grab(fetchurl,localfile)
+# 			system('wget "%sen%s%s" -O /tmp/cache.getMovieByImdbID.html' % (self.apiImdbLookup,self.apiImdbLookup2,mediaInfo.ImdbId))
+#			time.sleep(1)
+# 			if pathExists("/tmp/cache.getMovieByImdbID.html"):	
+# 				pageHtml = html2utf8(open("/tmp/cache.getMovieByImdbID.html", "r").read())
+# 			else:
+# 				return mediaInfo
+
+#			pageHtml = open("/tmp/cache.getMovieByImdbID.html", "r").read()
+
+		if not pageHtml:
+			return mediaInfo
+		try:
+			dom = parseString(pageHtml)
+		except Exception, ex:
+			print ex
+			return mediaInfo
+
+		for p in dom.getElementsByTagName("name"):
+			if len(p.childNodes) > 0:
+				if mediaInfo.Title == "":
+					mediaInfo.Title = p.childNodes[0].data.strip()
+
+		for p in dom.getElementsByTagName("overview"):
+			if len(p.childNodes) > 0:
+				if mediaInfo.Plot == "":
+					mediaInfo.Plot = p.childNodes[0].data.strip()
+#					print "mediaInfo.Plot",mediaInfo.Plot
+#					print "mediaInfo.Plot",p.childNodes[0].data
+		for p in dom.getElementsByTagName("votes"):
+			if len(p.childNodes) > 0:
+				if mediaInfo.Votes == "":
+					mediaInfo.Votes = p.childNodes[0].data.strip()
+
+		for p in dom.getElementsByTagName("rating"):
+			if len(p.childNodes) > 0:
+				if mediaInfo.Rating == "":
+					mediaInfo.Rating = p.childNodes[0].data.strip()
+					
+		for p in dom.getElementsByTagName("popularity"):
+			if len(p.childNodes) > 0:
+				if mediaInfo.Popularity == "":
+					mediaInfo.Popularity = p.childNodes[0].data.strip()
+
+		for p in dom.getElementsByTagName("released"):
+			if len(p.childNodes) > 0:
+				if mediaInfo.Popularity == "":
+					mediaInfo.Popularity = p.childNodes[0].data.strip()
+
+		for p in dom.getElementsByTagName("runtime"):
+			if len(p.childNodes) > 0:
+				if mediaInfo.Runtime == "":
+					mediaInfo.Runtime = p.childNodes[0].data.strip()
+
+		for p in dom.getElementsByTagName("url"):
+			if len(p.childNodes) > 0:
+				mediaInfo.UrlMovieDb = p.childNodes[0].data.strip()
+
+		for p in dom.getElementsByTagName("type"):
+			if len(p.childNodes) > 0:
+				mediaInfo.isSerieMovieDb = p.childNodes[0].data.strip()
+
+		for p in dom.getElementsByTagName("category"):
+			count = 0
+			if p.getAttribute("type") == "genre":				
+				if mediaInfo.Genres == "":
+					mediaInfo.Genres += p.getAttribute("name")
+
+		return mediaInfo
+
+	def getArtByImdbId(self, mediaInfo):
+		if mediaInfo.ImdbId == "tt0000000":
+			return mediaInfo
+		if self.language == "de":
+			localfile = "/tmp/cache.getArtByImdbId.html"
+			fetchurl = self.apiImdbLookup + "de" + self.apiImdbLookup2 + mediaInfo.ImdbId
+			pageHtml = WebGrabber().grab(fetchurl,localfile)
+# 			system('wget "%sde%s%s" -O /tmp/cache.getArtByImdbId.html' % (self.apiImdbLookup,self.apiImdbLookup2,mediaInfo.ImdbId))
+#			time.sleep(1)
+# 			if pathExists("/tmp/cache.getArtByImdbId.html"):	
+# 				pageHtml = html2utf8(open("/tmp/cache.getArtByImdbId.html", "r").read())
+# 			else:
+# 				return mediaInfo
+				
+#		pageHtml = open("/tmp/cache.getArtByImdbId.html", "r").read()
+		else:
+			localfile = "/tmp/cache.getArtByImdbId.html"
+			fetchurl = self.apiImdbLookup + "en" + self.apiImdbLookup2 + mediaInfo.ImdbId
+			pageHtml = WebGrabber().grab(fetchurl,localfile)
+# 			system('wget "%sen%s%s" -O /tmp/cache.getArtByImdbId.html' % (self.apiImdbLookup,self.apiImdbLookup2,mediaInfo.ImdbId))
+#			time.sleep(1)
+# 			if pathExists("/tmp/cache.getArtByImdbId.html"):	
+# 				pageHtml = html2utf8(open("/tmp/cache.getArtByImdbId.html", "r").read())
+# 			else:
+# 				return mediaInfo
+#		pageHtml = open("/tmp/cache.getArtByImdbId.html", "r").read()
+
+		if not pageHtml:
+			return mediaInfo
+
+		dom = parseString(pageHtml)
+		for p in dom.getElementsByTagName("image"):
+			if p.getAttribute("type") == "poster":
+				if p.getAttribute("size") == "cover":
+					mediaInfo.PosterCover = p.getAttribute("url")
+					
+			if p.getAttribute("type") == "poster":
+				if p.getAttribute("size") == "thumb":
+					if mediaInfo.Cover == "":
+ 						mediaInfo.Cover = p.getAttribute("url")
+					mediaInfo.PosterThumb = p.getAttribute("url")
+					
+			if p.getAttribute("type") == "poster":
+				if p.getAttribute("size") == "original":
+					mediaInfo.PosterOrginal = p.getAttribute("url")
+
+			if p.getAttribute("type") == "poster":
+				if p.getAttribute("size") == "mid":
+					if mediaInfo.CoverBig == "":
+						mediaInfo.CoverBig = p.getAttribute("url")
+					mediaInfo.PosterMid = p.getAttribute("url")
+              
+			if p.getAttribute("type") == "backdrop":
+				if p.getAttribute("size") == "original":
+					mediaInfo.Backdrop = p.getAttribute("url")   
+		return mediaInfo
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/TheTvDbProvider.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/TheTvDbProvider.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/TheTvDbProvider.py	(revision 9331)
@@ -0,0 +1,237 @@
+'''
+Created on 23.05.2010
+
+@author: i7
+'''
+
+from twisted.web.microdom import parseString
+from os import system
+from ImdbProvider import html2utf8, WebGrabber
+import re
+
+try:
+	from Tools.Directories import pathExists
+except:
+	pass
+
+try:
+	from Directories import pathExists
+except:
+	pass
+	
+import time
+
+class TheTvDbProvider(object):
+	'''
+	classdocs
+	'''
+
+	APIKEY = "3A042860EF9F9160";
+	apiSearch = "http://www.thetvdb.com/api/GetSeries.php?seriesname=";
+	apiSearchEpisode = "http://www.thetvdb.com/api/" + APIKEY + "/series/<seriesid>/default/<season>/<episode>/<lang>.xml";
+	apiSearchAllEpisodes = "http://www.thetvdb.com/api/" + APIKEY + "/series/<seriesid>/all/<lang>.xml";
+	apiArt = "http://www.thetvdb.com/banners/";
+	apiSeriesByID = "http://www.thetvdb.com/data/series/<seriesid>/";
+	apiSeriesByImdbID = "http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid="
+
+	def __init__(self, language):
+		'''
+		Constructor
+		'''
+		self.language = language		 
+
+	def getSerieByTitle(self, mediaInfo):
+		urlTitle = mediaInfo.Title
+		urlTitle = re.sub(" ", "+", urlTitle)
+
+		localfile = "/tmp/cache.getSerieByTitle.html"
+		fetchurl = self.apiSearch + urlTitle
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+
+# 		system('wget "%s%s" -O /tmp/cache.getSerieByTitle.html' % (self.apiSearch,urlTitle))
+#		time.sleep(1)
+# 		if pathExists("/tmp/cache.getSerieByTitle.html"):	
+# 			pageHtml = open("/tmp/cache.getSerieByTitle.html", "r").read()
+# 		else:
+# 			return mediaInfo
+
+		if not pageHtml:
+			return mediaInfo
+
+		dom = parseString(pageHtml)
+		for p in dom.getElementsByTagName("Series"):
+			if p.getElementsByTagName("imdb_id")[0].childNodes[0].data == mediaInfo.ImdbId:
+				mediaInfo.TheTvDbId = p.getElementsByTagName("seriesid")[0].childNodes[0].data
+				break
+
+		return mediaInfo
+
+	def getSerieByImdbID(self, mediaInfo):
+		localfile = "/tmp/cache.getSerieByImdbID.html"
+		fetchurl = self.apiSeriesByImdbID + mediaInfo.ImdbId
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+		
+#  		system('wget "%s%s" -O /tmp/cache.getSerieByImdbID.html' % (self.apiSeriesByImdbID,mediaInfo.ImdbId))
+# 		time.sleep(1)
+# 		if pathExists("/tmp/cache.getSerieByImdbID.html"):	
+# 			pageHtml = open("/tmp/cache.getSerieByImdbID.html", "r").read()
+# 		else:
+# 			return mediaInfo
+	
+		if not pageHtml:
+			return mediaInfo
+
+		dom = parseString(pageHtml)
+		for p in dom.getElementsByTagName("Series"):
+			mediaInfo.TheTvDbId = p.getElementsByTagName("seriesid")[0].childNodes[0].data
+			o = p.getElementsByTagName("Overview")[0]
+			if len(o.childNodes) > 0:
+				mediaInfo.Plot = o.childNodes[0].data #should be alreay unicode
+			break
+
+		return mediaInfo
+
+	def getArtByTheTvDbId(self, mediaInfo):
+		if mediaInfo.TheTvDbId == "0":
+			return mediaInfo
+
+#		print "getArtByTheTvDbId", self.apiSeriesByID
+		self.apiSeriesByID = re.sub("<seriesid>", mediaInfo.TheTvDbId, self.apiSeriesByID)		
+
+		mediaInfo.UrlTheTvDbId = self.apiSeriesByID
+		
+#		print "getArtByTheTvDbId", self.apiSeriesByID
+
+		localfile = "cache.getArtByTheTvDbId.html"
+		fetchurl = self.apiSeriesByID
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+
+#  		system('wget "%s" -O /tmp/cache.getArtByTheTvDbId.html' % (self.apiSeriesByID))
+#  		time.sleep(1)
+# 		if pathExists("/tmp/cache.getArtByTheTvDbId.html"):	
+# 	 		pageHtml = open("/tmp/cache.getArtByTheTvDbId.html", "r").read()
+# 		else:
+# 			return mediaInfo
+
+		if not pageHtml:
+			return mediaInfo
+
+		dom = parseString(pageHtml)
+		for p in dom.getElementsByTagName("poster"):
+			if len(p.childNodes) > 0:
+				mediaInfo.PosterMid = self.apiArt + p.childNodes[0].data
+				break
+    
+		for p in dom.getElementsByTagName("fanart"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Backdrop = self.apiArt + p.childNodes[0].data
+				break      
+				
+		for p in dom.getElementsByTagName("banner"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Banner = self.apiArt + p.childNodes[0].data
+				break  				
+
+		for p in dom.getElementsByTagName("Actors"):
+			if len(p.childNodes) > 0:
+				mediaInfo.SecondCast = p.childNodes[0].data #should be alreay unicode
+				break    
+
+		for p in dom.getElementsByTagName("Genres"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Genres = p.childNodes[0].data #should be alreay unicode
+				break    
+
+		for p in dom.getElementsByTagName("Runtime"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Runtime = p.childNodes[0].data #should be alreay unicode
+				break  
+
+		for p in dom.getElementsByTagName("Rating"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Rating = p.childNodes[0].data #should be alreay unicode
+				break  
+
+		for p in dom.getElementsByTagName("Network"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Network = p.childNodes[0].data #should be alreay unicode
+				break
+
+		for p in dom.getElementsByTagName("Status"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Status = p.childNodes[0].data #should be alreay unicode
+				break
+
+		return mediaInfo
+
+	def getEpisodeByTheTvDbId(self, mediaInfo):
+		if mediaInfo.TheTvDbId == "0" or mediaInfo.Season == -1 or mediaInfo.Episode == -1:
+			return mediaInfo
+
+		url = self.apiSearchEpisode
+		url = re.sub("<seriesid>", mediaInfo.TheTvDbId, url)
+
+		if self.language == "de":
+			url = re.sub("<lang>", ("de"), url)
+		else:
+			url = re.sub("<lang>", ("en"), url)
+		url = re.sub("<season>", unicode(mediaInfo.Season), url)
+		url = re.sub("<episode>", unicode(mediaInfo.Episode), url)
+
+		localfile = "/tmp/cache.getEpisodeByTheTvDbId.html"
+		fetchurl = url
+		pageHtml = WebGrabber().grab(fetchurl,localfile)
+
+#  		system('wget "%s" -O /tmp/cache.getEpisodeByTheTvDbId.html' % (url))
+#  		time.sleep(1)
+# 		if pathExists("/tmp/cache.getEpisodeByTheTvDbId.html"):	
+# 			pageHtml = open("/tmp/cache.getEpisodeByTheTvDbId.html", "r").read()
+# 		else:
+# 			return mediaInfo
+
+		if not pageHtml:
+			return mediaInfo
+
+		dom = parseString(pageHtml)
+		for p in dom.getElementsByTagName("EpisodeName"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Title = p.childNodes[0].data #should be alreay unicode
+				break
+
+		for p in dom.getElementsByTagName("Overview"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Plot = p.childNodes[0].data #should be alreay unicode
+				break
+
+		for p in dom.getElementsByTagName("GuestStars"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Cast = p.childNodes[0].data #should be alreay unicode
+				break
+
+		for p in dom.getElementsByTagName("Director"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Directors = p.childNodes[0].data #should be alreay unicode
+				break
+
+		for p in dom.getElementsByTagName("Writer"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Writer = p.childNodes[0].data #should be alreay unicode
+				break
+				
+		for p in dom.getElementsByTagName("Rating"):
+			if len(p.childNodes) > 0:
+				mediaInfo.Rating = p.childNodes[0].data #should be alreay unicode
+				mediaInfo.Popularity = int(round(float(p.childNodes[0].data)))
+				break
+
+		for p in dom.getElementsByTagName("FirstAired"):
+			if len(p.childNodes) > 0:
+				mediaInfo.ReleaseDate = p.childNodes[0].data #should be alreay unicode
+				break  
+
+		for p in dom.getElementsByTagName("filename"):
+			if len(p.childNodes) > 0:
+				mediaInfo.PosterPreview = self.apiArt + p.childNodes[0].data
+				break
+
+		return mediaInfo
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/replace.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/replace.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/sync/replace.py	(revision 9331)
@@ -0,0 +1,77 @@
+import re
+import os
+
+replacementsOptions = ["pre", "post_tv", "post_movie"]
+replacementsList = {}
+
+def load():
+    # Check default config
+    try:
+        print("Check "+"/hdd/valerie/pre.conf")
+        if os.path.isfile("/hdd/valerie/pre.conf") is False:
+            f = open("/hdd/valerie/pre.conf", "w")
+            f.write('"^\S*-"=" "\n')
+            f.write('" (720p|1080i|1080p)( |$)+"=" "\n')
+            f.write('" (x264|blu-ray|hdtv|xvid)( |$)+"=" "\n')
+            f.write('" (eng|rus)( |$)+"=" "\n')
+            f.write('" (oar)( |$)+"=" "\n')
+            f.write('" (miniseries)( |$)+"=" "\n')
+            f.write('" (dts|dd5|ac3|stereo)( |$)+"=" "\n')
+            f.close()
+            print(" - Created\n")
+        else:
+            print(" - OK\n")
+    except Exception, ex:
+        print(" - ERROR\n"), ex
+    
+    try:
+        print("Check "+"/hdd/valerie/post_movie.conf")
+        if os.path.isfile("/hdd/valerie/post_movie.conf") is False:
+            f = open("/hdd/valerie/post_movie.conf", "w")
+            f.write('" disk\d+( |$)+"=" "\n')
+            f.write('" part\d+( |$)+"=" "\n')
+            f.write('" extended edition( |$)+"=" "\n')
+            f.close()
+            print(" - Created\n")
+        else:
+            print(" - OK\n")
+    except Exception, ex:
+        print(" - ERROR\n"), ex
+    
+    try:
+        print("Check "+"/hdd/valerie/post_tv.conf")
+        if os.path.isfile("/hdd/valerie/post_tv.conf") is False:
+            f = open("/hdd/valerie/post_tv.conf", "w")
+            f.write('" (oar|esir|miniseries)"=" "\n')
+            f.write('"halycon-"=" "\n')
+            f.write('"e7-"=" "\n')
+            f.close()
+            print(" - Created\n")
+        else:
+            print(" - OK\n")
+    except Exception, ex:
+        print(" - ERROR\n"), ex
+    
+    for rf in replacementsOptions:
+        replacementsList[rf] = []
+        try:
+            f = open("/hdd/valerie/" + rf + ".conf", "r")
+            for line in f.readlines():
+                keys = line.split("=")
+                if len(keys) == 2:
+                    keys[0] = keys[0].strip().strip('[\'\"]')
+                    keys[1] = keys[1].strip().strip('[\'\"]')
+                    print "[" + rf + "] ", keys[0], " --> ", keys[1]
+                    replacementsList[rf].append([re.compile(keys[0]),keys[1]])
+                    #replacementsList[rf].append([keys[0],keys[1]])
+            f.flush()
+            f.close()
+        except Exception, ex:
+            print "No " + "/hdd/valerie/" + rf + ".conf" + " available"
+            print type(ex), ex
+
+def replacements(option):
+    if option in replacementsOptions:
+        return replacementsList[option]
+    else:
+        return {}
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/timeoutsocket.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/timeoutsocket.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/timeoutsocket.py	(revision 9331)
@@ -0,0 +1,416 @@
+
+####
+# Copyright 2000,2001 by Timothy O'Malley <timo@alum.mit.edu>
+# 
+#                All Rights Reserved
+# 
+# Permission to use, copy, modify, and distribute this software
+# and its documentation for any purpose and without fee is hereby
+# granted, provided that the above copyright notice appear in all
+# copies and that both that copyright notice and this permission
+# notice appear in supporting documentation, and that the name of
+# Timothy O'Malley  not be used in advertising or publicity
+# pertaining to distribution of the software without specific, written
+# prior permission. 
+# 
+# Timothy O'Malley DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS, IN NO EVENT SHALL Timothy O'Malley BE LIABLE FOR
+# ANY SPECIAL, 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. 
+#
+####
+
+"""Timeout Socket
+
+This module enables a timeout mechanism on all TCP connections.  It
+does this by inserting a shim into the socket module.  After this module
+has been imported, all socket creation goes through this shim.  As a
+result, every TCP connection will support a timeout.
+
+The beauty of this method is that it immediately and transparently
+enables the entire python library to support timeouts on TCP sockets.
+As an example, if you wanted to SMTP connections to have a 20 second
+timeout:
+
+    import timeoutsocket
+    import smtplib
+    timeoutsocket.setDefaultSocketTimeout(20)
+
+
+The timeout applies to the socket functions that normally block on
+execution:  read, write, connect, and accept.  If any of these 
+operations exceeds the specified timeout, the exception Timeout
+will be raised.
+
+The default timeout value is set to None.  As a result, importing
+this module does not change the default behavior of a socket.  The
+timeout mechanism only activates when the timeout has been set to
+a numeric value.  (This behavior mimics the behavior of the
+select.select() function.)
+
+This module implements two classes: TimeoutSocket and TimeoutFile.
+
+The TimeoutSocket class defines a socket-like object that attempts to
+avoid the condition where a socket may block indefinitely.  The
+TimeoutSocket class raises a Timeout exception whenever the
+current operation delays too long. 
+
+The TimeoutFile class defines a file-like object that uses the TimeoutSocket
+class.  When the makefile() method of TimeoutSocket is called, it returns
+an instance of a TimeoutFile.
+
+Each of these objects adds two methods to manage the timeout value:
+
+    get_timeout()   -->  returns the timeout of the socket or file
+    set_timeout()   -->  sets the timeout of the socket or file
+
+
+As an example, one might use the timeout feature to create httplib
+connections that will timeout after 30 seconds:
+
+    import timeoutsocket
+    import httplib
+    H = httplib.HTTP("www.python.org")
+    H.sock.set_timeout(30)
+
+Note:  When used in this manner, the connect() routine may still
+block because it happens before the timeout is set.  To avoid
+this, use the 'timeoutsocket.setDefaultSocketTimeout()' function.
+
+Good Luck!
+
+"""
+
+__version__ = "$Revision: 1.1 $"
+__author__  = "Timothy O'Malley <timo@alum.mit.edu>"
+
+#
+# Imports
+#
+import select, string
+import socket
+if not hasattr(socket, "_no_timeoutsocket"):
+	_socket = socket.socket
+else:
+	_socket = socket._no_timeoutsocket
+
+
+#
+# Set up constants to test for Connected and Blocking operations.
+# We delete 'os' and 'errno' to keep our namespace clean(er).
+# Thanks to Alex Martelli and G. Li for the Windows error codes.
+#
+import os
+if os.name == "nt":
+	_IsConnected = ( 10022, 10056 )
+	_ConnectBusy = ( 10035, )
+	_AcceptBusy  = ( 10035, )
+else:
+	import errno
+	_IsConnected = ( errno.EISCONN, )
+	_ConnectBusy = ( errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK )
+	_AcceptBusy  = ( errno.EAGAIN, errno.EWOULDBLOCK )
+	del errno
+del os
+
+#
+# Default timeout value for ALL TimeoutSockets
+#
+_DefaultTimeout = None
+def setDefaultSocketTimeout(timeout):
+	global _DefaultTimeout
+	_DefaultTimeout = timeout
+def getDefaultSocketTimeout():
+	return _DefaultTimeout
+
+#
+# Exceptions for socket errors and timeouts
+#
+Error = socket.error
+class Timeout(Exception):
+	pass
+
+#
+# Factory function
+#
+from socket import AF_INET, SOCK_STREAM
+def timeoutsocket(family=AF_INET, type=SOCK_STREAM, proto=None):
+	if family != AF_INET or type != SOCK_STREAM:
+		if proto:
+			return _socket(family, type, proto)
+		else:
+			return _socket(family, type)
+	return TimeoutSocket( _socket(family, type), _DefaultTimeout )
+# end timeoutsocket
+
+#
+# The TimeoutSocket class definition
+#
+class TimeoutSocket:
+	"""TimeoutSocket object
+	Implements a socket-like object that raises Timeout whenever
+	an operation takes too long.
+	The definition of 'too long' can be changed using the
+	set_timeout() method.
+	"""
+
+	_copies = 0
+	_blocking = 1
+
+	def __init__(self, sock, timeout):
+		self._sock = sock
+		self._timeout = timeout
+	# end __init__
+
+	def __getattr__(self, key):
+		return getattr(self._sock, key)
+	# end __getattr__
+
+	def get_timeout(self):
+		return self._timeout
+	# end set_timeout
+
+	def set_timeout(self, timeout=None):
+		self._timeout = timeout
+	# end set_timeout
+
+	def setblocking(self, blocking):
+		self._blocking = blocking
+		return self._sock.setblocking(blocking)
+	# end set_timeout
+
+	def connect_ex(self, addr):
+		errcode = 0
+		try:
+			self.connect(addr)
+		except Error, why:
+			errcode = why[0]
+		return errcode
+	# end connect_ex
+
+	def connect(self, addr, port=None, dumbhack=None):
+		# In case we were called as connect(host, port)
+		if port != None:  addr = (addr, port)
+
+		# Shortcuts
+		sock    = self._sock
+		timeout = self._timeout
+		blocking = self._blocking
+
+		# First, make a non-blocking call to connect
+		try:
+			sock.setblocking(0)
+			sock.connect(addr)
+			sock.setblocking(blocking)
+			return
+		except Error, why:
+			# Set the socket's blocking mode back
+			sock.setblocking(blocking)
+
+			# If we are not blocking, re-raise
+			if not blocking:
+				raise
+
+			# If we are already connected, then return success.
+			# If we got a genuine error, re-raise it.
+			errcode = why[0]
+			if dumbhack and errcode in _IsConnected:
+				return
+			elif errcode not in _ConnectBusy:
+				raise
+
+		# Now, wait for the connect to happen
+		# ONLY if dumbhack indicates this is pass number one.
+		#   If select raises an error, we pass it on.
+		#   Is this the right behavior?
+		if not dumbhack:
+			r,w,e = select.select([], [sock], [], timeout)
+			if w:
+				return self.connect(addr, dumbhack=1)
+
+		# If we get here, then we should raise Timeout
+		raise Timeout("Attempted connect to %s timed out." % str(addr) )
+	# end connect
+
+	def accept(self, dumbhack=None):
+		# Shortcuts
+		sock = self._sock
+		timeout = self._timeout
+		blocking = self._blocking
+
+		# First, make a non-blocking call to accept
+		#  If we get a valid result, then convert the
+		#  accept'ed socket into a TimeoutSocket.
+		# Be carefult about the blocking mode of ourselves.
+		try:
+			sock.setblocking(0)
+			newsock, addr = sock.accept()
+			sock.setblocking(blocking)
+			timeoutnewsock = self.__class__(newsock, timeout)
+			timeoutnewsock.setblocking(blocking)
+			return (timeoutnewsock, addr)
+		except Error, why:
+			# Set the socket's blocking mode back
+			sock.setblocking(blocking)
+			# If we are not supposed to block, then re-raise
+			if not blocking:
+				raise
+			# If we got a genuine error, re-raise it.
+			errcode = why[0]
+			if errcode not in _AcceptBusy:
+				raise
+		# Now, wait for the accept to happen
+		# ONLY if dumbhack indicates this is pass number one.
+		#   If select raises an error, we pass it on.
+		#   Is this the right behavior?
+		if not dumbhack:
+			r,w,e = select.select([sock], [], [], timeout)
+			if r:
+				return self.accept(dumbhack=1)
+
+		# If we get here, then we should raise Timeout
+		raise Timeout("Attempted accept timed out.")
+	# end accept
+
+	def send(self, data, flags=0):
+		sock = self._sock
+		if self._blocking:
+			r,w,e = select.select([],[sock],[], self._timeout)
+			if not w:
+				raise Timeout("Send timed out")
+		return sock.send(data, flags)
+	# end send
+
+	def recv(self, bufsize, flags=0):
+		sock = self._sock
+		if self._blocking:
+			r,w,e = select.select([sock], [], [], self._timeout)
+			if not r:
+				raise Timeout("Recv timed out")
+		return sock.recv(bufsize, flags)
+	# end recv
+
+	def makefile(self, flags="r", bufsize=-1):
+		self._copies = self._copies +1
+		return TimeoutFile(self, flags, bufsize)
+	# end makefile
+
+	def close(self):
+		if self._copies <= 0:
+			self._sock.close()
+		else:
+			self._copies = self._copies -1
+	# end close
+
+# end TimeoutSocket
+
+class TimeoutFile:
+	"""TimeoutFile object
+	Implements a file-like object on top of TimeoutSocket.
+	"""
+
+	def __init__(self, sock, mode="r", bufsize=4096):
+		self._sock = sock
+		self._bufsize = 4096
+		if bufsize > 0: self._bufsize = bufsize
+		if not hasattr(sock, "_inqueue"): self._sock._inqueue = ""
+
+	# end __init__
+
+	def __getattr__(self, key):
+		return getattr(self._sock, key)
+	# end __getattr__
+
+	def close(self):
+		self._sock.close()
+		self._sock = None
+	# end close
+
+	def write(self, data):
+		self.send(data)
+	# end write
+
+	def read(self, size=-1):
+		_sock = self._sock
+		_bufsize = self._bufsize
+		while 1:
+			datalen = len(_sock._inqueue)
+			if datalen >= size >= 0:
+				break
+			bufsize = _bufsize
+			if size > 0:
+				bufsize = min(bufsize, size - datalen )
+			buf = self.recv(bufsize)
+			if not buf:
+				break
+			_sock._inqueue = _sock._inqueue + buf
+		data = _sock._inqueue
+		_sock._inqueue = ""
+		if size > 0 and datalen > size:
+			_sock._inqueue = data[size:]
+			data = data[:size]
+		return data
+	# end read
+
+	def readline(self, size=-1):
+		_sock = self._sock
+		_bufsize = self._bufsize
+		while 1:
+			idx = string.find(_sock._inqueue, "\n")
+			if idx >= 0:
+				break
+			datalen = len(_sock._inqueue)
+			if datalen >= size >= 0:
+				break
+			bufsize = _bufsize
+			if size > 0:
+				bufsize = min(bufsize, size - datalen )
+			buf = self.recv(bufsize)
+			if not buf:
+				break
+			_sock._inqueue = _sock._inqueue + buf
+
+		data = _sock._inqueue
+		_sock._inqueue = ""
+		if idx >= 0:
+			idx = idx + 1
+			_sock._inqueue = data[idx:]
+			data = data[:idx]
+		elif size > 0 and datalen > size:
+			_sock._inqueue = data[size:]
+			data = data[:size]
+		return data
+	# end readline
+
+	def readlines(self, sizehint=-1):
+		result = []
+		data = self.read()
+		while data:
+			idx = string.find(data, "\n")
+			if idx >= 0:
+				idx = idx + 1
+				result.append( data[:idx] )
+				data = data[idx:]
+			else:
+				result.append( data )
+				data = ""
+		return result
+	# end readlines
+
+	def flush(self):  pass
+# end TimeoutFile
+
+#
+# Silently replace the socket() builtin function with
+# our timeoutsocket() definition.
+#
+if not hasattr(socket, "_no_timeoutsocket"):
+	socket._no_timeoutsocket = socket.socket
+	socket.socket = timeoutsocket
+del socket
+socket = timeoutsocket
+# Finis
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/MC_WebRadioFS_favorites.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/MC_WebRadioFS_favorites.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/MC_WebRadioFS_favorites.py	(revision 9331)
@@ -0,0 +1,120 @@
+from Plugins.Extensions.MediaCenter.MC_WebRadioFS_StreamInterface import StreamInterface
+from Plugins.Extensions.MediaCenter.MC_WebRadioFS_StreamInterface import Stream
+from Plugins.Extensions.MediaCenter.MC_WebRadioFS import myname
+from ConfigParser import ConfigParser, DuplicateSectionError
+
+from Tools.BoundFunction import boundFunction
+
+####################################################################
+
+class Interface(StreamInterface):
+	name= "Your saved Favorites"
+	nameshort = "Favorites"
+	description = "you can save Streams in your Favorites in a local list, to exec them directly without search for long time."
+	selectedStream = None
+
+	def getList(self):
+		list = []
+		for stream in SHOUTcasterFavorites().getStreams():
+			list.append(stream)
+		self.list = list
+		self.OnListLoaded()
+
+	def getMenuItems(self,selectedStream,generic=False):
+		self.selectedStream = selectedStream
+		list = []
+		if generic is True and selectedStream is not None:
+			if selectedStream.isFavorite() is False:
+				list.append(("als Favorit speichern", self.addStream))
+		#elif generic is False and selectedStream is not None:
+			#if selectedStream.isFavorite() is False:
+				#list.append((_("add stream to favorites"), self.addStream))
+			#if selectedStream.isFavorite() is True:
+				#list.append((_("delete stream from favorites"), self.deleteStream))
+		return list
+
+	def deleteStream(self):
+		print "favorites deleteStream"
+		if self.selectedStream is not None:
+			SHOUTcasterFavorites().deleteStreamWithName(self.selectedStream.getName())
+		self.getList()
+
+	def addStream(self):
+		print "favorites addStream"
+		if self.selectedStream is not None:
+			SHOUTcasterFavorites().addStream(self.selectedStream)
+		#self.getList()
+############################################################################### 
+class SHOUTcasterFavorites:
+	configfile = "/var/etc/webradio.conf"
+	def __init__(self):
+		self.configparser = ConfigParser()
+		self.configparser.read(self.configfile)
+
+	def getStreams(self):
+		streams=[]
+		sections = self.configparser.sections()
+		print sections
+		for section in sections:
+			stream = self.getStreamByName(section)
+			streams.append(stream)
+		return streams
+
+	def isStream(self,streamname):
+		if self.configparser.has_section(streamname) is True:
+			return True
+		else:
+			return False
+
+	def getStreamByName(self,streamname):
+		print "["+myname+"] load "+streamname+" from config"
+		if self.isStream(streamname) is True:
+			stream = Stream(
+				streamname,
+				self.configparser.get(streamname, "description"),
+				self.configparser.get(streamname, "url"),
+				type=self.configparser.get(streamname, "type")
+				)
+			stream.setFavorite(True)
+			return stream
+		else:
+			return False
+
+	def addStream(self, stream):
+		print "["+myname+"] adding "+stream.getName()+" to config"
+		try:
+			self.configparser.add_section(stream.getName())
+		except DuplicateSectionError,e:
+			print "["+myname+"] error while adding stream to config:",e
+			return False,e
+		else:
+			# XXX: I hope this still works properly if we make a optimistic
+			# return here since otherwise the interface would need to be changed
+			# to work with a callback
+			stream.getURL(boundFunction(self.addStreamCb, stream))
+			return True,"Stream added"
+
+	def addStreamCb(self, stream, url = None):
+		self.configparser.set(stream.getName(), "description", stream.getDescription())
+		self.configparser.set(stream.getName(), "url", url)
+		self.configparser.set(stream.getName(), "type", "mp3")
+		self.writeConfig()
+
+	def changeStream(self,streamold,streamnew):
+		if self.configparser.has_section(streamold.getName()) is False:
+			return False,"stream not found in config"
+		elif self.configparser.has_section(streamnew.getName()) is True:
+			return False,"stream with that name exists already"
+		else:
+			self.configparser.remove_section(streamold.getName())
+			return self.addStream(streamnew); 
+
+	def deleteStreamWithName(self,streamname):
+		self.configparser.remove_section(streamname)
+		self.writeConfig()
+
+	def writeConfig(self):
+		print "["+myname+"] writing config to "+self.configfile
+		fp = open(self.configfile,"w")
+		self.configparser.write(fp)
+		fp.close()
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/MC_WebRadioFS_shoutcast.py
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/MC_WebRadioFS_shoutcast.py	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/MC_WebRadioFS_shoutcast.py	(revision 9331)
@@ -0,0 +1,251 @@
+from Plugins.Extensions.MediaCenter.MC_WebRadioFS_StreamInterface import StreamInterface
+from Plugins.Extensions.MediaCenter.MC_WebRadioFS_StreamInterface import Stream
+from Plugins.Extensions.MediaCenter.GlobalFunctions import MC_ChoiceBox
+
+class Interface(StreamInterface):
+	name= "listen to SHOUTcast Streams"
+	nameshort = "SHOUTcast"
+	description = "This is a Plugin to browse shoutcast.net and listen to webradios listed there."
+
+	def __init__(self,session,cbListLoaded=None):
+		StreamInterface.__init__(self,session,cbListLoaded=cbListLoaded)
+		self.genrefeed = GenreFeed()
+
+	def getList(self):
+		glist=[]
+		#self.genrefeed.fetch_genres()
+		self.genrefeed.parse_genres()
+		for i in self.genrefeed.genre_list:
+			glist.append((str(i),i))
+		self.session.openWithCallback(self.GenreSelected,MC_ChoiceBox,_("select Genre to search for streams"),glist)
+
+	def GenreSelected(self,selectedGenre):
+		if selectedGenre is not None:
+			feed = ShoutcastFeed(selectedGenre[1])
+			#feed.fetch_stations()
+			feed.parse_stations()
+			self.list=[]
+			for station in feed.station_list:
+				stream = Stream(str(station['Name']),"Bitrate: "+str(station['Bitrate'])+", Type: "+str(station['MimeType']),str(station['PLS_URL']),type="pls")
+				self.list.append(stream)
+		self.OnListLoaded()
+
+####################################################
+# feeds.py - Gets the current listings of Shoutcast stations
+# $Id: shoutcast.py,v 1.4 2009-04-22 17:25:04 ricoschulte Exp $
+# Copyright (C) 2005-2006 Matthew Schick <matt@excentral.org>
+
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# This library 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
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from cPickle import dump, load
+from urllib import FancyURLopener
+from xml.sax import parseString
+from xml.sax.handler import ContentHandler
+from os import stat, mkdir
+from os.path import dirname,isdir
+import time
+from stat import ST_MTIME
+
+tmpxml='shout.xml'
+DEBUG=0
+
+def write_cache(cache_file, cache_data):
+	"""
+	Does a cPickle dump
+	"""
+	if not isdir( dirname(cache_file) ):
+		try:
+			mkdir( dirname(cache_file) )
+		except OSError:
+			print dirname(cache_file), 'is a file'
+	fd = open(cache_file, 'w')
+	dump(cache_data, fd, -1)
+	fd.close()
+
+def cacheTime(cache_file):
+	"""
+	Returns None if no cache file, its MTIME otherwise
+	"""
+	try:
+		mtime = stat(cache_file)[ST_MTIME]
+	except:
+		return None
+	return mtime
+
+def load_cache(cache_file):
+	"""
+	Does a cPickle load
+	"""
+	fd = open(cache_file)
+	cache_data = load(fd)
+	fd.close()
+	return cache_data
+
+class StationParser(ContentHandler):
+	"""
+	SAX handler for xml feed, not for public consumption
+	"""
+	def __init__(self,min_bitrate):
+		self.isStationList = False
+		self.isTuneIn = False
+		self.isStation = False
+		self.station_list = []
+		self.min_bitrate = min_bitrate
+		self.mimeType = ''
+		self.Id = ''
+		self.Name = ''
+		self.Bitrate = ''
+		self.nowPlaying = ''
+		self.Listeners = ''
+		self.stationUrl = ''
+		self.Genre = ''
+		self.count = 0
+		self.shoutUrl = 'http://shoutcast.net'
+
+	def startElement(self, name, attrs):
+		if name == 'stationlist':
+			self.isStationList = True
+		if name == 'tunein':
+			self.isTuneIn = True
+			self.baseUrl = attrs.get('base', None)
+		if name == 'station':
+			self.isStation = True
+			self.Name = attrs.get('name', None)
+			self.mimeType = attrs.get('mt', None)
+			self.Id = attrs.get('id', None)
+			self.Bitrate = attrs.get('br', None)
+			self.nowPlaying = attrs.get('ct', None)
+			self.Listeners = attrs.get('lc', None)
+			self.Genre = attrs.get('genre', None)
+
+	def endElement(self,name):
+		if name == 'station':
+			self.isStation = False
+		if name == 'tunein':
+			self.isTuneIn = False
+		if name == 'station':
+			self.isStation = False
+			if int(self.Bitrate) >= self.min_bitrate:
+				self.stationUrl = 'http://yp.shoutcast.com/sbin/tunein-station.pls?id=' + self.Id + '&k=bo10RRNHfequSh1h'
+				self.station_list.append({'Name':self.Name.encode("utf-8"), 'PLS_URL':self.stationUrl.encode("utf-8"), 'NowPlaying':self.nowPlaying.encode("utf-8"), 'Listeners':self.Listeners.encode("utf-8"), 'Bitrate':self.Bitrate.encode("utf-8"), 'MimeType':self.mimeType.encode("utf-8"), 'Genres': self.Genre.encode("utf-8")})
+				self.count += 1
+		if name == 'stationlist':
+			self.isStationList = False
+			if DEBUG == 1:
+				print 'Parsed ', self.count, ' stations'
+
+class GenreParse(ContentHandler):
+	def __init__( self ):
+		self.isGenre = False
+		self.isGenreList = False
+		self.genreList = []
+
+	def startElement( self, name, attrs ):
+		if name == 'genrelist':
+			self.isGenreList = True
+		if name == 'genre':
+			self.isGenre == True
+			self.genre_name = attrs.get( 'name', None )
+
+	def endElement( self, name ):
+		if name == 'genre':
+			self.isGenre = False
+			self.genreList.append( self.genre_name.encode("utf-8") )
+		if name == 'genrelist':
+			self.isGenreList = False
+
+class GenreFeed:
+	def __init__(self, cache_ttl=3600, cache_dir = '/tmp/pyshout_cache'):
+		self.cache_ttl = cache_ttl
+		self.cache_file = cache_dir + '/genres.cache'
+		self.genre_list = ['Sorry, failed to load', '...try again later', 'Rock', 'Pop', 'Alternative']
+
+	def fetch_genres(self):
+		"""
+		Grabs genres and returns tuple of genres
+		"""
+		self.genre_url = 'http://api.shoutcast.com/legacy/genrelist?k=bo10RRNHfequSh1h'
+		self.urlhandler = FancyURLopener()
+		self.fd = self.urlhandler.open(self.genre_url)
+		self.genre = self.fd.read()
+		self.fd.close()
+		return self.genre
+
+	def parse_genres(self):
+		ct = None
+		if self.cache_ttl:
+			ct = cacheTime(self.cache_file)
+			try:
+				self.genre_list = load_cache(self.cache_file)
+			except:
+				ct = None
+		if not ct or (time.time() - ct) > self.cache_ttl:
+			if DEBUG == 1:
+				print 'Getting fresh feed'
+			try:
+				parseXML = GenreParse()
+				self.genres = self.fetch_genres()
+				parseString( self.genres, parseXML )
+				self.genre_list = parseXML.genreList
+				write_cache(self.cache_file, self.genre_list)
+			except:
+				print "Failed to get genres from server, sorry."
+		return self.genre_list
+
+class ShoutcastFeed:
+	def __init__(self, genre, min_bitrate=128, cache_ttl=600, cache_dir='/tmp/pyshout_cache'):
+		"""
+		Parses the xml feed and spits out a list of dictionaries with the station info
+		keyed by genre. Params are as follows:
+		min_bitrate - 128 default, Minimum bitrate filter
+		cache_ttl - 600 default, 0 disables, Seconds cache is considered valid
+		cache_dir - /tmp/pyshout_cache default, Path to cache directory
+		"""
+		self.min_bitrate = min_bitrate
+		self.cache_ttl = cache_ttl
+		self.genre = genre
+		self.cache_file = cache_dir + '/' + self.genre + '.pickle'
+		self.station_list = []
+
+	def fetch_stations(self):
+		"""
+		Grabs the xml list of stations from the shoutcast server
+		"""
+		self.shout_url='http://api.shoutcast.com/legacy/genresearch?k=bo10RRNHfequSh1h&=&genre=%s' % (self.genre)
+		self.urlhandler = FancyURLopener()
+		self.fd = self.urlhandler.open(self.shout_url)
+		self.stations = self.fd.read()
+		self.fd.close()
+		return self.stations
+
+	def parse_stations(self):
+		ct = None
+		if self.cache_ttl:
+			ct = cacheTime(self.cache_file)
+		if ct:
+			try:
+				self.station_list = load_cache(self.cache_file)
+			except:
+				print "Failed to load cache."
+		if not ct or (time.time() - ct) > self.cache_ttl:
+			try:
+				parseXML = StationParser(self.min_bitrate)
+				self.stations = self.fetch_stations()
+				parseString(self.stations, parseXML)
+				self.station_list = parseXML.station_list
+				write_cache(self.cache_file, self.station_list)
+			except:
+				print "Failed to get a new station list, sorry."
+		return self.station_list
Index: /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/WebRadioFS_readme.txt
===================================================================
--- /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/WebRadioFS_readme.txt	(revision 9331)
+++ /ipk/source.sh4/swapplayers_mediacenter_1.0/var/swap/extensions/MediaCenter/webradiointerface/WebRadioFS_readme.txt	(revision 9331)
@@ -0,0 +1,66 @@
+
+Anleitung
+---------
+1. Beschreibung
+2. Bedienung
+3. Format der Config-Datei
+4. bekannte Problem
+5. Danke
+
+
+##########################################
+1.Beschreibung
+Das E2-Webradio-Plugin spielt Streams von Webradios und SHOUTcast.com ab. Derzeit sind nur Streams im MP3-Format abspielbar. Keine wave, ogg, wma , quicktime oder sonstige Dateien. In der Configdatei können die zu hörenden Streams als Favorit gespeichert werden. 
+Diese tauchen dann unter 'Favoriten' auf. Zum Abspielen eines Stream, diesen in der Liste markieren und 'OK' drücken. 
+Zum Stoppen dementsprechend auf 'Exit'. 
+Die in dieser Liste mit OK ausgewählte Liste wird nach vorhanden und abspielbaren Streams durchsucht und anschließend im Browser als Liste angezeigt und sind über den bekannten Weg abspielbar. 
+Jeder dieser Streams kann über das Menü unter der Menü-Taste der Favoritenliste hinzugefügt werden. 
+Über das Menü können Streams in der Favoritenliste auch wieder entfernt werden.
+
+##########################################
+2. Bedienung
+in der Stream-Liste (Favoriten oder shoutcast):
+
+OK: Startet den in der Liste ausgewählten Stream
+EXIT: stream läuft -> Stoppt den Stream / stream läuft nicht -> schließt aktuelles Fenster
+GELB: zeigt die Genre-Liste von shoutcast
+ROT: listet die Favoriten auf
+INFO: zeigt Details zum ausgewählten Stream
+MENÜ: in Favoriten -> ausgewählten Stream aus Favoriten löschen
+MENÜ: in shoutcast -> ausgewählten Stream zu Favoriten hinzufügen
+
+Genre-Liste:
+OK: liest die Stationen des ausgewählten Genre ein und zeigt sie in der Liste an
+ 
+
+
+##########################################
+3. Format der Config-Datei
+Jeder Stream besteht aus einer Sektion [STREAMNAME] und den Options url und description. Dabei kann der STREAMNAME nur einmal vergeben werden.
+
+Beispiel:
+[#MUSIK.GOLDIES - WWW.RAUTEMUSIK.FM - 24H OLDIES CLASSIC ROCK 60S 70S 80S POP AND MORE!]
+url = http://scfire-ntc-aa03.stream.aol.com:80/stream/1060
+type = mp3
+description = Bitrate: 128, Type: audio/mpeg
+
+##########################################
+4. bekannte Problem
+Sreams müssen im mp3-Format vorliegen!
+
+
+##########################################
+5. Danke!
+
+das Plugin-Picture stammt von Swiss-MAD
+
+Mein ausdrücklicher Dank gilt den im folgenden genannten, welche ungewollt und ungefragt zu Co-Autoren wurden, da ich (teilweise nicht unerhebliche) Teile ihres Code genutzt habe:
+
+freizuegig bedient habe ich mich bei den plugins:
+
+netcaster von Rico Schulte, 3c5x9 (shoutcast-scripte, war die Grundlage)
+MediaPlayer-Deluxe von homey (screensaver)
+MerlinMP3Player Dr.Best (screensaver, Config)
+
+##########################################
+ich hoffe, webradioFS erfüllt die Erwartungen...
