Index: ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/downloader.py
===================================================================
--- ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/downloader.py	(revision 2935)
+++ ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/downloader.py	(revision 2935)
@@ -0,0 +1,1724 @@
+from Plugins.Plugin import PluginDescriptor
+from Screens.PluginBrowser import *
+from Screens.SleepTimerEdit import *
+from Screens.Ipkg import Ipkg
+from Components.Ipkg import IpkgComponent
+from Components.SelectionList import SelectionList
+from Screens.NetworkSetup import *
+from enigma import *
+from Screens.Standby import *
+from Screens.MessageBox import MessageBox
+from Screens.Console import Console
+from Components.ActionMap import ActionMap, NumberActionMap
+from Screens.Screen import Screen
+from Components.MenuList import MenuList
+from Components.Label import Label
+from Components.ScrollLabel import ScrollLabel
+from Components.Pixmap import Pixmap
+from Components.config import config, ConfigSubsection, ConfigText, ConfigSubList, getConfigListEntry, ConfigSelection,  ConfigIP, ConfigYesNo, ConfigSequence, ConfigNumber, ConfigInteger
+from Components.ConfigList import ConfigListScreen
+from Components.MenuList import MenuList
+from Screens.Screen import Screen
+from Screens.ChoiceBox import ChoiceBox
+from Components.Sources.StaticText import StaticText
+from Components.Sources.Progress import Progress
+from Components.Label import Label
+from Components.FileList import FileList
+from Components.MultiContent import MultiContentEntryText
+from Tools.Directories import fileExists
+
+from os import system, remove, path, walk, makedirs, listdir
+
+# import py_compile
+# py_compile.compile("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/downloader.py")
+
+import re
+import urllib
+import os
+import base64
+#import commands
+#import ServiceReference
+from subprocess import Popen,PIPE
+import ServiceReference
+
+from twisted.cred import checkers
+from twisted.web import client
+from twisted.internet import reactor, defer
+from twisted.python import failure
+
+#from Plugins.Extensions.AddonManager.UsbOnlineUpdater import UsbOnlineUpdater
+
+global serverurl
+global activenam
+global activesource
+global version
+global b_version
+global checkok
+
+
+checkok = True
+usblist = ""
+
+config.AddonManager = ConfigSubsection()
+config.AddonManager.which_server = ConfigInteger(2, limits=(1, 2))
+config.AddonManager.preview_timeout = ConfigInteger(default=600,limits=(50, 2000))
+config.AddonManager.preview_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager.marker_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager.marker_off = ConfigInteger(1, limits=(0, 1))
+config.AddonManager.mark_color = ConfigInteger(1, limits=(0, 2))
+config.AddonManager.ungenau = ConfigInteger(0, limits=(0, 1))
+config.AddonManager.Schriftart = ConfigInteger(14, limits=(10, 22))
+config.AddonManager.ba_settings_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager.ba_plugins_on = ConfigInteger(0, limits=(0, 1))
+config.AddonManager.ba_skins_on = ConfigInteger(0, limits=(0, 1))
+config.AddonManager.ba_remove_on = ConfigInteger(0, limits=(0, 1))
+config.AddonManager.ba_usersettings_on = ConfigInteger(0, limits=(0, 1))
+
+version = "2.00"
+serverurl = ""
+activenam = ""
+activesource = ""
+
+b_version = 1212
+readyflag = 0
+
+font = "Regular;16"
+os.system("mkdir -p /tmp/aaf")
+#os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/url_check.sh")
+
+activesource = "http://kati910.aaf-board.info/dbase"
+activenam = "Addons-Server"
+serverurl = activesource + "/E2/"
+
+def applySkinVars(skin,dict):
+		for key in dict.keys():
+				try:
+						skin = skin.replace('{'+key+'}',dict[key])
+				except Exception,e:
+						print e,"@key=",key
+		return skin
+
+def command(comandline):
+  print "[Addon-Manager] command=", comandline
+  comandline = comandline + " >/tmp/command.txt"
+  os.system(comandline)
+  text = ""
+  file = open("/tmp/command.txt", "r")
+  for line in file:
+  	text = text + line.strip() + '\n'
+  file.close
+  # if one or last line then remove linefeed
+  if text[-1:] == '\n': text = text[:-1]
+  comandline = text
+  os.system("rm /tmp/command.txt")
+  return comandline
+
+#----- Class Cancel -------------------------------------------------------
+class UserRequestedCancel(Exception):
+	pass
+
+#----- Progressdownloader -------------------------------------------------
+class HTTPProgressDownloader(client.HTTPDownloader):
+	def __init__(self, url, outfile, headers=None):
+		#client.HTTPDownloader.__init__(self, url, outfile, headers={"Authorization":authHeader}, agent="AAF Download Plugin")
+		client.HTTPDownloader.__init__(self, url, outfile, agent="AAF Download Plugin")
+		self.status = None
+		self.progress_callback = None
+		self.deferred = defer.Deferred()
+
+	def noPage(self, reason):
+		if self.status == "304":
+			print reason.getErrorMessage()
+			client.HTTPDownloader.page(self, "")
+		else:
+			client.HTTPDownloader.noPage(self, reason)
+
+	def gotHeaders(self, headers):
+		if self.status == "200":
+			if headers.has_key("content-length"):
+				self.totalbytes = int(headers["content-length"][0])
+			else:
+				self.totalbytes = 0
+			self.currentbytes = 0.0
+		return client.HTTPDownloader.gotHeaders(self, headers)
+
+	def pagePart(self, packet):
+		if self.status == "200":
+			self.currentbytes += len(packet)
+		if self.totalbytes and self.progress_callback:
+			self.progress_callback(self.currentbytes, self.totalbytes)
+		return client.HTTPDownloader.pagePart(self, packet)
+
+	def pageEnd(self):
+		return client.HTTPDownloader.pageEnd(self)
+
+class downloadWithProgress:
+	def __init__(self, url, outputfile, contextFactory=None, *args, **kwargs):
+		scheme, host, port, path = client._parse(url)
+		self.factory = HTTPProgressDownloader(url, outputfile, *args, **kwargs)
+		self.connection = reactor.connectTCP(host, port, self.factory)
+
+	def start(self):
+		return self.factory.deferred
+
+	def stop(self):
+		print "[Addon-Manager] [stop]"
+		self.connection.disconnect()
+		#self.factory.deferred.errback(failure.Failure(UserRequestedCancel))
+
+	def addProgress(self, progress_callback):
+		print "[Addon-Manager] [addProgress]"
+		self.factory.progress_callback = progress_callback
+
+class Feedlist(MenuList):
+	def __init__(self, list=[], enableWrapAround = False):
+		MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
+
+		Schriftart = config.AddonManager.Schriftart.value
+		self.l.setFont(0, gFont("Regular", Schriftart))
+		self.l.setItemHeight(22)
+
+	def clear(self):
+		del self.list[:]
+		self.l.setList(self.list)
+
+	def getPLUGINname(self):
+		l = self.l.getCurrentSelection()
+		return l and l[0][0]
+
+	def getPLUGINurl(self):
+		l = self.l.getCurrentSelection()
+		return l and l[0][1]
+
+	def getLISTname(self):
+		l = self.l.getCurrentSelection()
+		return l and l[0][0][:-2]+"txt"
+
+	def getLISTurl(self):
+		l = self.l.getCurrentSelection()
+		return l and l[0][1][:-2]+"txt"
+
+	def isValid(self):
+		l = self.l.getCurrentSelection()
+		if l[0] == 0:
+			return False
+		else:
+			return True
+
+	def moveSelection(self,idx=0):
+		if self.instance is not None:
+			self.instance.moveSelectionTo(idx)
+
+class PLUGINDownload(Screen):
+	LIST_SOURCE = 1
+	LIST_DEST = 2
+	Skin = """
+		<screen name="PLUGINDownload" position="{screen.pos}" size="{screen.size}" title="{version.text}">
+			<ePixmap pixmap="skin_default/buttons/red.png" position="{red.pos}" zPosition="0" size="140,40" transparent="1" alphatest="on" />
+			<ePixmap pixmap="skin_default/buttons/green.png" position="{green.pos}" zPosition="0" size="140,40" transparent="1" alphatest="on" />
+			<ePixmap pixmap="skin_default/buttons/yellow.png" position="{yellow.pos}" zPosition="0" size="140,40" transparent="1" alphatest="on" />
+			<ePixmap pixmap="skin_default/buttons/blue.png" position="{blue.pos}" zPosition="0" size="140,40" transparent="1" alphatest="on" />
+			<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/pressed.png" position="{red2.pos}" zPosition="0" size="140,40" transparent="1" alphatest="on" />
+			<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/pressed.png" position="{green2.pos}" zPosition="0" size="140,40" transparent="1" alphatest="on" />
+			<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/pressed.png" position="{yellow2.pos}" zPosition="0" size="140,40" transparent="1" alphatest="on" />
+			<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/pressed.png" position="{blue2.pos}" zPosition="0" size="140,40" transparent="1" alphatest="on" />
+			<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/aaf.png" position="{logo.pos}" zPosition="0" size="160,140" transparent="1" alphatest="on" />
+			<widget source="key_red" render="Label" position="{red.pos}" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
+			<widget source="key_green" render="Label" position="{green.pos}" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
+			<widget source="key_yellow" render="Label" position="{yellow.pos}" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#a08500" transparent="1" />
+			<widget source="key_blue" render="Label" position="{blue.pos}" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#18188b" transparent="1" />
+			<widget source="key_1" render="Label" position="{red2.pos}" zPosition="1" size="140,40" font="Regular;16" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
+			<widget source="key_2" render="Label" position="{green2.pos}" zPosition="1" size="140,40" font="Regular;16" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
+			<widget source="key_3" render="Label" position="{yellow2.pos}" zPosition="1" size="140,40" font="Regular;16" valign="center" halign="center" backgroundColor="#a08500" transparent="1" />
+			<widget source="key_4" render="Label" position="{blue2.pos}" zPosition="1" size="140,40" font="Regular;16" valign="center" halign="center" backgroundColor="#18188b" transparent="1" />
+			<widget source="label_top" render="Label" position="10,94" size="240,20" foregroundColor="#3366ff" font="Regular;16" />
+			<widget name="feedlist" position="10,116" size="{feed.size}" scrollbarMode="showOnDemand" />
+			<widget name="destlist" position="0,116" size="{dest.size}" scrollbarMode="showOnDemand" />
+			<widget source="label_bottom" render="Label" position="10,352" size="240,18" foregroundColor="#3366ff" font="Regular;16"/>
+			<widget source="infolabel" render="Label" position="{infolabel.pos}" size="{infolabel.size}" font="Regular;16" />
+			<widget name="Preview" position="{prev.pos}" size="{prev.size}" alphatest="on"/>
+			<widget source="job_progressbar1" render="Progress" position="10,390" size="{progr.size}" borderWidth="1" backgroundColor="#9f1313" />
+			<widget source="job_progresslabel1" render="Label" position="130,394" zPosition="2" font="Regular;18" halign="center" transparent="1" size="{proglabel.size}" foregroundColor="#000000" />
+			<widget source="job_progressbar" render="Progress" position="10,390" size="{progr.size}" borderWidth="1" backgroundColor="#254f7497" />
+			<widget source="job_progresslabel" render="Label" position="130,394" zPosition="2" font="Regular;18" halign="center" transparent="1" size="{proglabel.size}" foregroundColor="#000000" />
+			<widget source="statusbar" render="Label" position="10,420" size="{status.size}" font="Regular;16" foregroundColor="#cccccc" />
+		</screen>"""
+
+	def __init__(self, session, destdir="/tmp/aaf/"):
+		self.BAtyp = "old"
+		if os.path.exists("/var/baroot/.multipart") is True:
+			self.BAtyp = "new"
+
+		#switch automatic to current skin
+		current_w = getDesktop(0).size().width()
+		current_h = getDesktop(0).size().height()
+		print "[Addon-Manager] DESKTOPsize is",current_w,current_h
+
+		# define the start koordinates and size
+		if current_w == 1280:
+				size_w = 720
+				size_h = 442
+		else:
+				size_w = 560
+				size_h = 442
+
+		# calculate Skin koordinates
+		font = "Regular;18"
+		vers = "AAF Addon-Manager V " + version
+		pos_w = (current_w - size_w)/2
+		pos_h = (current_h - size_h)/2
+		list_w = size_w - 20
+		list_pos = (size_w - list_w)/2
+		red_pos = size_w/2 - 280
+		green_pos = size_w/2 - 140
+		yellow_pos = size_w/2
+		blue_pos = size_w/2 + 140
+		feed_size = size_w/2 - 30
+		dest_size = feed_size + 10
+		prev_size = size_w/2 - 15
+		prev_pos = size_w/2
+		proglabel_size = size_w/2 + 20
+		infolabel_pos = size_w/2 - 10
+		infolabel_size = size_w/2 - 15
+		logo_pos = size_w -100
+
+		# set Skinvariables
+		self.dict = {
+				'font': font,
+				'version.text': vers,
+				'list.size': "%i,232"%(list_w),
+				'feed.size': "%i,222"%(feed_size),
+				'dest.size': "%i,222"%(dest_size),
+				'prev.size': "%i,284"%(prev_size),
+				'progr.size': "%i,26"%(list_w),
+				'proglabel.size': "%i,22"%(proglabel_size),
+				'status.size': "%i,16"%(list_w),
+
+				'list.pos': "%i,110"%(list_pos),
+				'prev.pos': "%i,120"%(prev_pos),
+				'screen.size': "%i,%i"%(size_w,size_h),
+				'screen.pos': "%i,%i"%(pos_w,pos_h),
+				'red.pos': "%i,0"%(red_pos),
+				'green.pos': "%i,0"%(green_pos),
+				'yellow.pos': "%i,0"%(yellow_pos),
+				'blue.pos': "%i,0"%(blue_pos),
+				'red2.pos': "%i,40"%(red_pos),
+				'green2.pos': "%i,40"%(green_pos),
+				'yellow2.pos': "%i,40"%(yellow_pos),
+				'blue2.pos': "%i,40"%(blue_pos),
+
+				'infolabel.size': "%i,284"%(infolabel_size),
+				'infolabel.pos': "%i,94"%(infolabel_pos),
+				'logo.pos': "%i,336"%(logo_pos),
+				}
+		self.skin = applySkinVars(PLUGINDownload.Skin,self.dict)
+
+		Screen.__init__(self, session)
+		
+		self["job_progressbar"] = Progress()
+		self["job_progresslabel"] = StaticText()
+		self["job_progressbar1"] = Progress()
+		self["job_progresslabel1"] = StaticText()
+		self["infolabel"] = StaticText()
+		self["statusbar"] = StaticText()
+		self["label_top"] = StaticText()
+		self["label_bottom"] = StaticText()
+		self["path_bottom"] = StaticText()
+		self["key_green"] = StaticText()
+		self["key_yellow"] = StaticText()
+		self["key_blue"] = StaticText()
+		self["key_red"] = StaticText()
+		self["key_1"] = StaticText()
+		self["key_2"] = StaticText()
+		self["key_3"] = StaticText()
+		self["key_4"] = StaticText()
+
+		self["feedlist"] = Feedlist([0,(eListboxPythonMultiContent.TYPE_TEXT, 0, 0,250, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, "feed not available")])
+
+		self.currDir = "/mnt/usb"
+		self["destlist"] = FileList(self.currDir, showDirectories = True, isTop = True)
+		self["destlist"].hide()
+		self["Preview"] = Pixmap()
+		self["Preview"].hide()
+
+		self.download_container = eConsoleAppContainer()
+		self.LIST = ""
+		self.LISTfile = ""
+		self.feedhtml = ""
+		self.focus = None
+		self.download = None
+		self.plug = "plugins"
+		self.farbe = 1
+		self.ListTyp = "pic"
+		self.betacode = False
+
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = ""
+		#self.showpreview = "on"
+
+		self.showpreview = config.AddonManager.preview_on.value
+		self.previewtimeout = config.AddonManager.preview_timeout.value
+		self.marker_on = config.AddonManager.marker_on.value
+		self.marker_off = config.AddonManager.marker_off.value
+
+		self.burl = activesource + "/version_b2.txt"
+		self.beta_load()
+
+		self.ThumbTimer = eTimer()
+		self.ThumbTimer.callback.append(self.list_download)
+
+		self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "DirectionActions", "EPGSelectActions", "MenuActions", "InfobarTeletextActions", "NumberActions", "MovieSelectionActions"],
+		{
+			"cancel": self.closeCB,
+			"red": self.plugins_download,
+			"green": self.ipks_download,			#"green": self.patches_download,
+			"yellow": self.emusconfig_download,
+			"blue": self.emus_download,
+
+			"1": self.settings_download,
+			"2": self.bootbilder_download,
+			"3": self.radiobilder_download,
+			"4": self.image_download,
+			"7": self.skins_download,
+			"8": self.beta_download,
+			"9": self.sh_preview,
+			"0": self.update,
+
+			"prevBouquet": self.switchList,
+			"nextBouquet": self.switchList,
+			"ok": self.check_download,
+			"left": self.left,
+			"right": self.right,
+			"up": self.up,
+			"upRepeated": self.up,
+			"downRepeated": self.down,
+			"menu": self.settings_menu,
+			"startTeletext": self.switch_ListTyp,
+			"showEventInfo": self.info,
+			"showEpg": self.usb_load,
+			"down": self.down
+		}, -1)
+
+
+		self.focus = self.LIST_SOURCE
+		self.read_Boxtyp()
+		self.feed_download()
+
+	def usb_load(self):
+		#self.flash_settings()
+		self.session.open(UsbOnlineUpdater)
+
+#----- Beta Download Procedures -------------------------------------------------------
+	def beta_load(self):
+
+		self.previewtimeout = config.AddonManager.preview_timeout.value
+		print "[Addon-Manager] " + str(self.previewtimeout)
+		self.downloading(True)
+		self.download = self.beta_load
+		client.getPage(self.burl).addCallback(self.beta_finished).addErrback(self.beta_failed)
+
+	def beta_failed(self, failure_instance):
+		print "[Addon-Manager] [feed_failed] " + str(failure_instance)
+		self["infolabel"].text = _("Could not connect to AAF-Plugin Server:") + "\n" + failure_instance.getErrorMessage() + "\n\n" + _("Please check your network settings!")
+		self.downloading(False)
+
+	def beta_finished(self, feedhtml):
+		print "[Addon-Manager] [feed_finished] " + str(feedhtml)
+		self.downloading(False)
+		b_version = feedhtml[0:len(feedhtml) -1]
+		if str(self.previewtimeout) == str(b_version):
+			self.previewtimeout = 600
+			self.betacode = True
+		else:
+			self.betacode = False
+
+	def downloading(self, state=True):
+		if state is True:	
+			self["key_red"].text = _("Cancel")
+			self["key_green"].text = ""
+			self["key_yellow"].text = ""
+			self["key_blue"].text = ""
+		else:
+			self.download = None
+			self["key_red"].text = _("Plugin")
+			self["key_green"].text = (_("IPK"))
+			self["key_yellow"].text = (_("EmuConfig"))
+			self["key_blue"].text = (_("Emus"))
+			self["key_1"].text = _("(1) Settings")
+			self["key_2"].text = (_("(2) Bootbilder"))
+			self["key_3"].text = (_("(3) Radiobilder"))
+
+			if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ufs922") is False:
+				if self.BAtyp == "new":
+					self["key_4"].text = (_("(4) Multip-Image"))
+				else:
+					#self["key_4"].text = (_("(4) BAold-Image"))
+					self["key_4"].text = (_("  "))
+
+				self.read_Boxtyp()
+
+	def switchList(self,to_where=None):
+		if self.download or not self["feedlist"].isValid():
+			return
+
+		self["job_progressbar"].value = 0
+		self["job_progresslabel"].text = ""
+
+		#self.focus = self.LIST_SOURCE
+
+		if self.focus is  self.LIST_DEST:
+			self["statusbar"].text = _("Please select a target device")
+			self["label_top"].text = _("choose destination directory")+":"
+			self["feedlist"].hide()
+			self["destlist"].show()
+
+
+		if self.focus is self.LIST_SOURCE:
+			self["statusbar"].text = _("Please choose file from AAF Server to download")
+
+			if self.betacode == True and self.plug == "beta":
+				self["label_top"].text = _("you are in the AAF BETA Zone!")
+			else:
+				self["label_top"].text = _("...select file from server  ")+ self.box
+
+			self["feedlist"].show()
+			self["destlist"].hide()
+			self["label_bottom"].text = _("attached to: ")+ activenam
+			#self["key_yellow"].text = (_(" "))
+
+#----- load Menutext or Picture -------------------------------------------------------
+	def switch_ListTyp(self):
+		if self.ListTyp == "txt":
+			self.ListTyp = "pic"
+			self["Preview"].show()
+			LISTurl = self["feedlist"].getLISTurl()
+			LISTurl = LISTurl+".png"
+			print "[Addon-Manager] downloading " + LISTurl
+			self.download = self.list_download
+			self.downloading(True)
+			#client.getPage(LISTurl, headers={"Authorization":authHeader}).addCallback(self.pic_finished).addErrback(self.pic_failed)
+			client.getPage(LISTurl).addCallback(self.pic_finished).addErrback(self.pic_failed)
+
+		if self.ListTyp == "pic":
+			self.ListTyp = "txt"
+			self["statusbar"].text = ""
+			self.LISTfilename = ""
+			self.LIST = ""
+			self["Preview"].hide()
+			LISTurl = self["feedlist"].getLISTurl()
+			#client.getPage(LISTurl, headers={"Authorization":authHeader}).addCallback(self.list_finished).addErrback(self.list_failed)
+			client.getPage(LISTurl).addCallback(self.list_finished).addErrback(self.list_failed)
+			self["statusbar"].text = _("Downloading file description...")
+			self.downloading(False)
+
+#----- Menu Keys are pressed -------------------------------------------------------
+	def up(self):
+		if self.download:
+			return
+		if self.focus is self.LIST_SOURCE:
+			self["feedlist"].up()
+			self.ThumbTimer.start(self.previewtimeout, True)
+		if self.focus is self.LIST_DEST:
+			self["destlist"].up()
+
+	def down(self):
+		if self.download:
+			return
+		if self.focus is self.LIST_SOURCE:
+			self["feedlist"].down()
+			self.ThumbTimer.start(self.previewtimeout, True)
+		if self.focus is self.LIST_DEST:
+			self["destlist"].down()
+
+	def left(self):
+		if self.download:
+			return
+		if self.focus is self.LIST_SOURCE:
+			self["feedlist"].pageUp()
+			self.ThumbTimer.start(self.previewtimeout, True)
+		if self.focus is self.LIST_DEST:
+			self["destlist"].pageUp()
+
+	def right(self):
+		if self.download:
+			return
+		if self.focus is self.LIST_SOURCE:
+			self["feedlist"].pageDown()
+			self.ThumbTimer.start(self.previewtimeout, True)
+		if self.focus is self.LIST_DEST:
+			self["destlist"].pageDown()
+
+	def ok(self):
+		if self.download:
+			return
+		if self.focus is self.LIST_DEST:
+			if self["destlist"].canDescent():
+				self["destlist"].descent()
+
+	def settings_menu(self):
+		self.session.open(AddonConfigScreen)
+
+	def info(self):
+		evfd.getInstance().vfd_write_string("Version V " + version)
+		message = "%s %s\n\n%s" % (_("AAF Addon-Manager\n\n     Version "), version, _("       AAF-Team\n\n@Bauernbub 2009"))
+		self.session.openWithCallback(self.update_now, MessageBox, message, MessageBox.TYPE_INFO)
+
+#----- AM Update -------------------------------------------------------
+	def update(self):
+		versurl = activesource + "/version_e2.txt"
+		h = urllib.urlretrieve(versurl, "/tmp/version_e2.txt")
+		dummy = open("/tmp/version_e2.txt").read()
+		version_server = dummy[0:len(dummy) -2]
+		if version_server == version:
+			print "[Addon-Manager] gleich"
+			message = "%s %s\n%s %s\n\n%s" % (_("Version am Server:"), version_server, _("Version in der Box:"), version, _("Ein Update ist nicht erforderlich!"))
+			evfd.getInstance().vfd_write_string("No Update")
+			self.session.open( MessageBox, message, MessageBox.TYPE_INFO)
+		else:
+			if version_server > version:
+				message = "%s %s\n%s %s\n\n%s" % (_("Version am Server:"), version_server, _("Version in der Box:"), version, _("Ein Update ist empfehlenswert!"))
+				evfd.getInstance().vfd_write_string("UPDATE is here")
+				self.session.openWithCallback(self.update_now, MessageBox, message, MessageBox.TYPE_YESNO)
+			else:
+				message = "%s %s\n%s %s\n\n%s" % (_("\nKlingt wie ein Scherz, aber die Version am Server ist aelter als die auf ihrer Box!\n\nVersion am Server:"), version_server, _("Version in der Box:"), version, _("NICHT UPDATEN, sie besitzen vermutlich eine fortgeschrittene Betaversion!"))
+				evfd.getInstance().vfd_write_string("Update is older")
+				self.session.openWithCallback(self.update_now, MessageBox, message, MessageBox.TYPE_YESNO)
+
+	def update_now(self, answer):
+		self.downloading(False)
+		if answer == True:
+			versurl = activesource + "/addon-man_e2.tar.gz"
+			h = urllib.urlretrieve(versurl, "/tmp/aaf/addon-man_e2.tar.gz")
+			os.system("cd /tmp/aaf; tar -xzf addon-man_e2.tar.gz")
+			if os.path.exists("/tmp/aaf/addon-man_e2.tar.gz") is True:
+				os.system("cp -RP /tmp/aaf/* / ; sync")
+				os.system("rm -r /tmp/aaf")
+				os.system("cd / ; rm *tar.gz")
+				os.system("mkdir /tmp/aaf")
+				evfd.getInstance().vfd_write_string("rebooting ....")
+				message = "%s" % (_("Der Addon-Manager hat einen Neustart angefordert!\nDie Box wird nun neu gestartet!"))
+				self.session.openWithCallback(self.update_now, MessageBox, message, MessageBox.TYPE_YESNO)
+				#self.session.open( MessageBox, message, MessageBox.TYPE_INFO)
+				#TryQuitMainloop(self.session,2)
+				os.system("killall -9 enigma2")
+
+#----- Feed Download Procedures -------------------------------------------------------
+	def feed_download(self):
+		self.downloading(True)
+		self.download = self.feed_download
+		if os.path.exists("/tmp/aaf") is False:
+				os.system("mkdir /tmp/aaf")
+
+		if self.plug == "ipk":
+				ipkurl = command('cat /var/etc/ipkg/official-feed.conf | cut -d "/" -f4')
+				os.system("cd /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/; ./ipkdownload")
+				if os.path.exists("/tmp/aaf/index.txt") is True:
+					feedhtml = open("/tmp/aaf/index.txt").read()
+					self.feed_finished(feedhtml)
+		else:
+				client.getPage(self.feed_base + "index.txt").addCallback(self.feed_finished).addErrback(self.feed_failed)
+
+
+	def feed_failed(self, failure_instance):
+		print "[Addon-Manager] [feed_failed] " + str(failure_instance)
+		self["infolabel"].text = _("Could not connect to AAF-Plugin Server:") + "\n" + failure_instance.getErrorMessage() + "\n\n" + _("Please check your network settings!")
+		self.downloading(False)
+
+	def feed_finished(self, feedhtml):
+		print "[Addon-Manager] [feed_finished] " + str(feedhtml)
+		self.downloading(False)
+
+		if self.plug == "ipk":
+				fileresultmask = re.compile("(?P<name>.*?)\#\#(?P<url>.*?_sh4.ipk)", re.DOTALL)
+		elif self.plug == "ipkimage":
+				fileresultmask = re.compile("(?P<name>.*?)\#\#(?P<url>.*?.img)", re.DOTALL)
+		else:
+				fileresultmask = re.compile("(?P<name>.*?)\#\#(?P<url>.*?.gz)", re.DOTALL)
+
+		if os.path.exists("/var/etc/uninst") is False:
+			os.system("mkdir -p /var/etc/uninst")
+
+		os.system("ls /var/etc/uninst >/tmp/uninst.txt")
+		os.system("ls /usr/lib/ipkg/info/*.postrm >>/tmp/uninst.txt")
+
+		fd=open("/tmp/uninst.txt")
+		inhalt=fd.read() # Lese die gesamte Datei
+		fd.close()
+		inhalt = inhalt.lower()
+		inhalt = inhalt.replace("\r\n","")
+
+		if self.plug == "ipkimage" or self.plug == "usbimage":
+			fd=open("/etc/version")
+			inhalt=fd.read() # Lese die Version des aktuellen Flashimage
+			fd.close()
+			inhalt = inhalt.lower()
+			inhalt = inhalt.replace("\r\n","")
+			inhalt = inhalt.replace("aaf_m","")
+			inhalt = inhalt.split("_")[0]
+			print inhalt
+
+
+		searchresults = fileresultmask.finditer(feedhtml)
+		#print searchresults
+
+		ausblenden = 0
+		self.ungenau = config.AddonManager.ungenau.value
+		self.farbe = config.AddonManager.mark_color.value
+
+		if self.farbe == 0:
+				farbwahl = 16711680
+		elif self.farbe == 1:
+				farbwahl = 65280
+		elif self.farbe == 2:
+				farbwahl = 49151
+		fileresultlist = []
+		if searchresults:
+			for x in searchresults:
+				url = x.group("url")
+				if url[0:7] != "http://":
+					url = self.feed_base + x.group("url")
+				name = x.group("name")
+				name_lo = name.lower()
+				name_lo = name_lo.replace("\n","")
+				name_lo = name_lo.replace("\r","")
+				if self.ungenau == 1:
+						name_lo = name_lo.split("_")[0]
+				font_s = 0
+
+				if self.plug == "ipkimage" or self.plug == "usbimage":
+					name_lo = name_lo.split("_")[0]
+					name_lo = name_lo.replace("m","")
+					#print name_lo, str(inhalt.find(name_lo))
+
+				if self.marker_on == True:
+					if inhalt.find(name_lo) > -1:
+						font_s = 1
+						if self.marker_off != True:
+							ausblenden = 1
+						else:
+							ausblenden = 0
+
+				if ausblenden == 0:
+						if font_s == 1:
+							entry = [[name, url],(eListboxPythonMultiContent.TYPE_TEXT, 0, 0,250, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, name, farbwahl)]
+						else:
+							entry = [[name, url],(eListboxPythonMultiContent.TYPE_TEXT, 0, 0,250, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, name)]
+						#print "[Addon-Manager] adding to feedlist: " + str(entry)
+						fileresultlist.append(entry)
+						#rot = ff0000 16711680
+						#gruen = 00ff00 65280
+						# blau = 0000ff 255
+				else:
+						ausblenden = 0
+			self["feedlist"].l.setList(fileresultlist)
+			self["feedlist"].moveSelection(0)
+		if len(fileresultlist) > 0:
+			self.switchList(self.LIST_SOURCE)
+			self.list_download()
+		else:
+			self["infolabel"].text = _("Cannot parse feed directory")
+
+#----- List Download Procedures -------------------------------------------------------
+	def list_download(self):
+		if self.showpreview == True:
+			print "[Addon-Manager] [check_for_LIST]"
+			if self["feedlist"].isValid():
+				print "[Addon-Manager] PLUGINname: " + self["feedlist"].getPLUGINname()
+				self["job_progressbar"].value = 0
+				self["job_progresslabel"].text = ""
+				if self["feedlist"].getPLUGINurl() is None:
+					self["key_green"].text = ""
+					return
+				self["key_green"].text = _("Download")
+				LISTurl = self["feedlist"].getLISTurl()
+				LISTurl = LISTurl+".png"
+
+				print "[Addon-Manager] downloading " + LISTurl
+				self.download = self.list_download
+				self.downloading(True)
+				#client.getPage(LISTurl, headers={"Authorization":authHeader}).addCallback(self.pic_finished).addErrback(self.pic_failed)
+				client.getPage(LISTurl).addCallback(self.pic_finished).addErrback(self.pic_failed)
+
+				self["statusbar"].text = _("Downloading file description...")
+
+	def list_failed(self, failure_instance):
+		print "[Addon-Manager] [list_failed] " + str(failure_instance)
+		self["infolabel"].text = _("No details for this file") + "\n" + self["feedlist"].getPLUGINname()
+		self["statusbar"].text = ""
+		self.LISTfilename = ""
+		self.LIST = ""
+		self.downloading(False)
+
+	def list_finished(self,LISTdata=""):
+		print "[Addon-Manager] [list_finished] " + str(LISTdata)
+		self.downloading(False)
+		self.LIST = LISTdata
+		self.ListTyp = "txt"
+
+		if self.LIST != "":
+			self.LISTfilename = self["feedlist"].getLISTname()
+			self["infolabel"].text = self.LIST
+		else:
+			self.LISTfilename = ""
+			self["infolabel"].text = _("No details for this file")
+		self["statusbar"].text = ""
+
+#----- Pic Download Procedures -------------------------------------------------------
+	def pic_failed(self, failure_instance):
+		print "[Addon-Manager] [list_failed] " + str(failure_instance)
+		self["infolabel"].text = _("No details for this file") + "\n" + self["feedlist"].getPLUGINname()
+		self["statusbar"].text = ""
+		self.LISTfilename = ""
+		self.LIST = ""
+		self["Preview"].hide()
+
+		# no pic-file, now look for txt
+		self["statusbar"].text = _("Downloading file description...")
+		LISTurl = self["feedlist"].getLISTurl()
+		#client.getPage(LISTurl, headers={"Authorization":authHeader}).addCallback(self.list_finished).addErrback(self.list_failed)
+		client.getPage(LISTurl).addCallback(self.list_finished).addErrback(self.list_failed)
+
+		self.downloading(False)
+
+	def pic_finished(self,LISTdata=""):
+		print "[Addon-Manager] [list_finished] " + str(LISTdata)
+		self.downloading(False)
+		self.LIST = LISTdata
+		self.ListTyp = "pic"
+
+		if self.LIST != "":
+			self.LISTfilename = self["feedlist"].getLISTname()
+			self["infolabel"].text = ""
+			# write skin-preview to file
+			ffile = open("/tmp/skin.png", "w")
+			ffile.write(self.LIST)
+			ffile.close()
+			pngpath = "/tmp/skin.png"
+			self.previewPath = pngpath
+			self["Preview"].show()
+			self["Preview"].instance.setPixmapFromFile(self.previewPath)
+		else:
+			self.LISTfilename = ""
+			self["infolabel"].text = _("No details for this file")
+		self["statusbar"].text = ""
+#-----------------------------------------------------------------
+
+	def sh_preview(self):
+		if self.showpreview == 1:
+			self.showpreview = 0
+			self.LISTfilename = self["feedlist"].getLISTname()
+			self["infolabel"].text = _("Preview = off: (press Key 9) ")
+			pngpath = "/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/no_preview.png"
+			self.previewPath = pngpath
+			self["Preview"].show()
+			self["Preview"].instance.setPixmapFromFile(self.previewPath)
+			#self["key_yellow"].text = (_("Skins"))
+		else:
+			self.showpreview = 1
+			self.LISTfilename = self["feedlist"].getLISTname()
+			self["infolabel"].text = _("Preview = on: ")
+			self["Preview"].hide()
+
+	def read_Boxtyp(self):
+			# Boytyp lesen
+			file = open("/proc/stb/info/model", "r")
+			self.box = file.readline().strip()
+			file.close()
+			# Topfield "TF7700HDPVR"
+			if self.box == "cuberevo" or self.box == "cuberevo-mini" or self.box == "cuberevo-mini2":
+				self.box = "cuberevo"
+			if self.box == "ufs910" or self.box == "hdbox":
+				self.box = "ufs910"
+				print "[Addon-Manager]" + self.box
+
+#----- you press au Menu-key, define the urls----------------------------------
+	def beta_download(self):
+		self.beta_load()
+		if self.betacode == True:
+			print "[Addon-Manager] you are in AAF-Betasection"
+			self.previewtimeout = 600
+			evfd.getInstance().vfd_write_string("BETA-Section")
+			self.plug = "beta"
+			serverurlbeta = "http://addons.aaf-board.net/E2/"
+			self.feed_base = serverurlbeta + "%s/" % self.plug
+			self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+			self.feed_download()
+
+	def plugins_download(self):
+		self.plug = "plugins"
+		evfd.getInstance().vfd_write_string("Plugins")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def patches_download(self):
+		self.plug = "patches"
+		evfd.getInstance().vfd_write_string("Patches")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def emus_download(self):
+		self.plug = "emus"
+		evfd.getInstance().vfd_write_string("Emus")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def emusconfig_download(self):
+		self.plug = "emusconfig"
+		evfd.getInstance().vfd_write_string("EmusConfig")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def settings_download(self):
+		self.plug = "settings"
+		evfd.getInstance().vfd_write_string("Settings")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def skins_download(self):
+		self["key_yellow"].text = (_("Skins"))
+		self.read_Boxtyp()
+		self.plug = "skins"
+		if self.box == "cuberevo":
+				self.plug = "skins_cuberevo"
+		evfd.getInstance().vfd_write_string("Skins")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def ipks_download(self):
+		self.plug = "ipk"
+		evfd.getInstance().vfd_write_string("IPK")
+		if os.path.exists("/var/etc/ipkg/official-feed.conf") is True:
+				file = open("/var/etc/ipkg/official-feed.conf", "r")
+				self.feed_base = file.readline().strip()
+				self.feed_base = self.feed_base.replace(u"src/gz cross ","")
+				self.feed_base = str(self.feed_base) + "/"
+				self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		elif os.path.exists("/etc/ipkg/official-feed.conf") is True:
+				file = open("/etc/ipkg/official-feed.conf", "r")
+				self.feed_base = file.readline().strip()
+				self.feed_base = self.feed_base.replace(u"src/gz cross ","")
+				self.feed_base = str(self.feed_base) + "/"
+		else:
+				self.feed_base = serverurl + "%s/" % self.plug
+				self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def bootbilder_download(self):
+		self.plug = "bootbilder"
+		evfd.getInstance().vfd_write_string("Bootbilder")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def radiobilder_download(self):
+		self.plug = "radiobilder"
+		evfd.getInstance().vfd_write_string("Radiobilder")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+		self.feed_download()
+
+	def spiele_download(self):
+		self.plug = "spiele"
+		evfd.getInstance().vfd_write_string("Spiele")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = "" 
+		self.feed_download()
+
+	def image_download(self):
+		if self.BAtyp == "new":
+			if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ufs922") is False:
+				self.plug = "image"
+				evfd.getInstance().vfd_write_string("BA-Image")
+				self.feed_base = serverurl + "%s/" % self.plug
+				self.plugin_filter = ""
+				self.feed_download()
+
+#----- plugin download ------------------------------------------------------------
+	def check_download(self):
+		if self.plug == "usbimage":
+			if self["feedlist"].isValid():
+				url = self["feedlist"].getPLUGINurl()
+				print url
+				self.foundipk = re.search('sh4', str(url))
+				self.urlname = url
+
+				if os.path.exists("/var/swap/images") is False:
+					os.system("mkdir -p /var/swap/images")
+
+				self.flashname = self.urlname.replace(self.feed_base,"")
+				print "[Addon-Manager] Flashname: ", self.flashname
+				self.PLUGINlocal = "/var/swap/images/" + str(self.flashname)
+				evfd.getInstance().vfd_write_string("load USBImage")
+
+				os.system("rm /tmp/nochmals")
+				if os.path.exists(self.PLUGINlocal) is True:
+					self.session.openWithCallback(self.startNochmals, MessageBox, (_("TAR-File ist bereits geladen\nnochmals downloaden?")), MessageBox.TYPE_YESNO)
+				else:
+ 					self.plugin_download()
+		else:
+ 			self.plugin_download()
+
+	def plugin_download(self):
+		print "[Addon-Manager] Plugin-Download"
+		if self["feedlist"].isValid():
+			url = self["feedlist"].getPLUGINurl()
+			print url
+			self.foundipk = re.search('sh4', str(url))
+			self.urlname = url
+			self.error_counter = "0"
+			if len(str(self.foundipk)) == 4:
+				self.PLUGINlocal = '/tmp/aaf/downfile.tar.gz'
+				evfd.getInstance().vfd_write_string("load Tarfile")
+			else:
+				self.PLUGINlocal = '/tmp/aaf/downfile.sh4.ipk'
+				evfd.getInstance().vfd_write_string("load IPK")
+
+			self.PluginPath = "E2/image"
+			if self.plug == "beta":
+				patternprog = re.compile(".img.tar.gz")
+				a_match = patternprog.search(str(url))
+				if ( a_match ):
+					self.plug = "image"
+					self.PluginPath = "E2/beta"
+
+			if self.plug == "image":
+				if self.BAtyp == "new":
+					# is enough freespace on stick?
+					os.system("df /var/baroot |grep rootfs|cut -c41-50 >/tmp/free.txt")
+					if os.path.exists("/tmp/free.txt") is True:
+						f = open("/tmp/free.txt", "r" )
+						for line in f:
+							freesize = line.lstrip()
+						f.close
+						freesize = freesize.replace("\n","")
+						freesize = int(freesize)
+
+					if 84000 > freesize:
+						print "[Addon-Manager] nicht OK"
+						message = "%s" % (_("Zu wenig Speicher im Stick frei!"))
+						self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+						self.error_counter = "1"
+					else:
+						print "[Addon-Manager] OK" + str(freesize)
+						if os.path.exists("/var/baroot/ba/ba.sh") is False:
+							if os.path.exists("/var/baroot") is False:
+								os.system("mkdir /var/baroot")
+
+	            # search XBA Stick in bootp.conf
+							os.system("cat /bootp.conf | grep BADEVICE= >/tmp/dev.txt")
+							if os.path.exists("/tmp/dev.txt") is True:
+								f = open("/tmp/dev.txt", "r" )
+								for line in f:
+									dev = line.replace(u"BADEVICE=","")
+									dev = dev.replace(u"\n","")
+								f.close
+
+	            # mount the BA envirmonment
+							#os.system("mount /dev/sda1 /var/baroot")
+							TarString="mount " + dev + " /var/baroot"
+							os.system(TarString)
+
+						imgname = url.replace(u".img.tar.gz","")
+						findimg = imgname.rfind(self.PluginPath)
+						if self.PluginPath == "E2/beta":
+							self.urlname = imgname[findimg+8:len(imgname)]
+						if self.PluginPath == "E2/image":
+							self.urlname = imgname[findimg+9:len(imgname)]
+
+						self.PLUGINlocal = '/var/baroot/UFS_Images/%s' % self.urlname
+						evfd.getInstance().vfd_write_string("load Image")
+
+					pngpath = "/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/install.png"
+					self.previewPath = pngpath
+					self["Preview"].show()
+					self["Preview"].instance.setPixmapFromFile(self.previewPath)
+
+			if self.error_counter == "0":
+				self["job_progressbar"].value = 0
+				self["job_progresslabel"].text = ""
+				print "[Addon-Manager] downloading " + url
+				self.download = self.plugin_download
+				self.downloading(True)
+				print "[Addon-Manager] [plugin_download] downloading %s to %s" % (url, self.PLUGINlocal)
+				self.download = downloadWithProgress(url,self.PLUGINlocal)
+				self.download.addProgress(self.plugin_progress)
+				self["job_progressbar"].range = 1000
+
+				self.download.start().addCallback(self.plugin_finished)
+				self.downloading(True)
+
+	def plugin_progress(self, recvbytes, totalbytes):
+		#print "[Addon-Manager] [update_progress] recvbytes=%d, totalbytes=%d" % (recvbytes, totalbytes)
+		self["job_progressbar"].value = int(1000*recvbytes/float(totalbytes))
+		self["job_progresslabel"].text = "%d of %d kBytes (%.2f%%)" % (recvbytes/1024, totalbytes/1024, 100*recvbytes/float(totalbytes))
+
+	def plugin_failed(self, failure_instance=None, error_message=""):
+    # here is an problem, an error was produced! Help me!
+		if error_message == "" and failure_instance is not None:
+			error_message = failure_instance.getErrorMessage()
+		print "[Addon-Manager] [plugin_failed] " + error_message
+		if fileExists(self.PLUGINlocal):
+			message = "%s %s\n%s" % (_("File Download failed:"), error_message, _("Remove the incomplete file?"))
+			self.session.openWithCallback(self.plugin_remove, MessageBox, message, MessageBox.TYPE_YESNO)
+		else:
+			message = "%s %s" % (_(".PLUGIN Download failed:"),error_message)
+			self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+			self.downloading(False)
+
+#------------ plugin finished ----------------------------------------------
+
+	def plugin_finished(self, string=""):
+		ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log", "w")
+		ffile.write("BA-Typ:" + self.BAtyp)
+		ffile.write("\n")
+		ffile.write("gedrueckte Kategorie:" + self.plug)
+		ffile.write("\n")
+		ffile.close()
+
+		# is it an multiboot environment?
+		if self.plug == "image":
+			if os.path.exists("/bootp.conf") is True:
+				if self.BAtyp == "new":
+					evfd.getInstance().vfd_write_string("install Image")
+					self["statusbar"].text = _("Decompressing Image in progress...")
+					self.urlnameorg = self.urlname
+					self.urlname = self.urlname.replace(".tar.gz","")
+					self.urlname_org = self.urlname
+					# check if exist Image, then make a newer
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_2"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_3"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_4"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_5"
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_6"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_7"
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_8"
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_9"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_10"
+
+					TargetDir = "mkdir -p /var/baroot/ba/ba/" + self.urlname
+					os.system(TargetDir)
+
+					# write name to userfile
+					TargetDir = "NewDir=" + self.urlname
+					ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_url", "w")
+					ffile.write(TargetDir)
+					ffile.close()
+
+					TarString = "cd /var/baroot/UFS_Images; tar -xzf " + self.urlnameorg + " -C /var/baroot/ba/ba/" + self.urlname
+					os.system(TarString)
+					CpString = "cp /bootp.conf /var/baroot/ba/ba/" + self.urlname
+					os.system(CpString)
+					if os.path.exists("/bootp2.conf") is True:
+						CpString = "cp /bootp2.conf /var/baroot/ba/ba/" + self.urlname
+						os.system(CpString)
+
+					#CpString = "cp /etc/init.d/rcS /var/baroot/ba/ba/" + self.urlname + "/etc/init.d/rcS"
+					#os.system(CpString)
+
+					RCS = "/var/baroot/ba/ba/" + self.urlname + "/etc/init.d/rcS"
+					#CpString = "cat /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/rcs_header > /tmp/rcs.txt"
+					#os.system(CpString)
+
+					CpString = "sed -e 's*#!/bin/sh*#*g' -i " + RCS
+					os.system(CpString)
+
+					ffile = open("/tmp/rcs.txt", "w")
+					CpString = "#!/bin/sh"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = ""
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "if [ -e /activImage ]; then"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "  echo \"Starte chroot\""
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "  mount -o bind /baroot /activImage/var/baroot"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "  exec chroot /activImage /etc/init.d/rcS"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "fi"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = ""
+					ffile.write(CpString)
+					ffile.write("\n")
+					ffile.close()
+
+					CpString = "cat " + RCS + " >> /tmp/rcs.txt"
+					os.system(CpString)
+					CpString = "cp /tmp/rcs.txt " + RCS
+					os.system(CpString)
+					CpString = "chmode 755 " + RCS
+					os.system(CpString)
+					CpString = "sed -e 's/fsck /#fsck /g' -i /var/baroot/ba/ba/" + self.urlname + "/etc/init.d/mountvirtfs"
+					os.system(CpString)
+					CpString = "mkdir -p /var/baroot/ba/ba/" + self.urlname + "/var/baroot"
+					os.system(CpString)
+					os.system("sync")
+
+          # set automount in rcs
+					os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/makercs.sh")
+
+          # and now we copy the settings
+					if config.AddonManager.ba_settings_on.value == 1:
+						evfd.getInstance().vfd_write_string("install Settings")
+						self["statusbar"].text = _("Settings werden uebernommen....")
+
+						CpString = "rm /var/baroot/ba/ba/" + self.urlname + "/var/etc/.firstboot"
+						os.system(CpString)
+						CpString = "cp -RP /var/emu /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp -RP /var/keys /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp /var/etc/active_cam /var/baroot/ba/ba/" + self.urlname + "/var/etc/active_cam"
+						os.system(CpString)
+						CpString = "cp /var/etc/*emu /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+						CpString = "cp /var/etc/smbfs /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+						CpString = "cp /var/etc/upnpfs /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+
+						CpString = "cp /var/*emu /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/lamedb /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/bouquets* /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/userbouquet* /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /etc/tuxbox/satellites.xml /var/baroot/ba/ba/" + self.urlname + "/etc/tuxbox/satellites.xml"
+						os.system(CpString)
+						#CpString = "cp /usr/local/share/enigma2/settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						#os.system(CpString)
+						CpString = "cp /usr/automount/amount.ini /var/baroot/ba/ba/" + self.urlname + "/usr/automount/amount.ini"
+						os.system(CpString)
+						CpString = "cp /usr/share/fonts/*.ttf /var/baroot/ba/ba/" + self.urlname + "/usr/share/fonts/"
+						os.system(CpString)
+						CpString = "cp /etc/auto.misc  /var/baroot/ba/ba/" + self.urlname + "/etc/"
+						os.system(CpString)
+
+
+						#// Check for default skin
+						defaultSkin = 0
+						PathString = "/var/baroot/ba/ba/" + self.urlname + "/var/usr/local/share/enigma2/settings"
+						if os.path.exists(PathString) is True:
+							em = open(PathString)
+							e = em.readlines()
+							em.close()
+							for line in e:
+								if line.find("config.skin.primary_skin") > -1:
+										defaultSkin = 1
+										PrimarySkin = line
+
+						CpString = "cp /usr/local/share/enigma2/settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+
+						if defaultSkin == 1:
+								em = open(PathString, "a")
+								em.write(PrimarySkin)
+								em.close()
+
+					if config.AddonManager.ba_skins_on.value == 1:
+							CpString = "cp -RP /usr/local/share/enigma2/ /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/"
+							os.system(CpString)
+
+							CpString = "cp -RP /usr/lib/enigma2/python/Plugins/Extensions/InfoBarConfig/ /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/Extensions/"
+							os.system(CpString)
+
+							CpString = "cp /usr/lib/enigma2/python/Components/Converter/MaxCryptoInfo.pyc /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Components/Converter/"
+							os.system(CpString)
+
+							CpString = "cp /usr/lib/enigma2/python/Components/Converter/MaxServiceInfo.pyc /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Components/Converter/"
+							os.system(CpString)
+
+					if config.AddonManager.ba_plugins_on.value == 1:
+							# save AddonManager + Aafpanel, because in new image is newer
+							os.system("cp -RP /usr/lib/enigma2/python/Plugins/Extensions/AddonManager /tmp/")
+							os.system("cp -RP /usr/lib/enigma2/python/Plugins/Extensions/Aafpanel /tmp/")
+							CpString = "cp -RP /usr/lib/enigma2/python/Plugins/Extensions /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+							# restore AddonManager + Aafpanel
+							CpString = "cp -RP /tmp/AddonManager /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+							CpString = "cp -RP /tmp/Aafpanel /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+
+					if config.AddonManager.ba_remove_on.value == 1:
+							CpString = "rm -r /var/baroot/UFS_Images/" + self.urlnameorg
+							os.system(CpString)
+
+					if config.AddonManager.ba_usersettings_on.value == 1:
+						if os.path.exists("/var/baroot/default_settings") is True:
+							CpString = "cp /var/baroot/default_settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/settings"
+							os.system(CpString)
+
+					if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh") is True:
+						CpString = "cp /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh"
+						os.system(CpString)
+						os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh")
+
+					evfd.getInstance().vfd_write_string("Image Ready!")
+					restartbox = self.session.openWithCallback(self.restart,MessageBox,_("Das Image ist nun fertig installiert!\nSoll ein Neustart durchgefuehrt werden?"), MessageBox.TYPE_YESNO)
+					restartbox.setTitle(_("UFS-Box starten?"))
+		else:
+			# not an ipk-file
+			if len(str(self.foundipk)) == 4:
+				ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+				ffile.write("es ist ein Tarfile ")
+				ffile.write("\n")
+				ffile.close()
+
+				# Boxtyp lesen
+				file = open("/proc/stb/info/model", "r")
+				self.box = file.readline().strip()
+				file.close()
+
+				self["statusbar"].text = _("Decompressing Tar-File...")
+				os.system("cd /tmp/aaf; tar -xzf downfile.tar.gz; sync")
+				#os.system("rm /tmp/aaf/downfile.tar.gz")
+
+				# is it a Flashimage, check for freespace?
+				#GOst begin
+				if os.path.exists("/etc/.imagesignature") is True:
+					file = open("/etc/.imagesignature", "r")
+					imagetype = file.readline().strip()
+					imagetype = imagetype.replace("\n","")
+					file.close()
+				else:
+					imagetype = "NONE"
+				print imagetype
+				os.system("touch /flashtest.txt")
+				#GOst end
+				#GOst  and imagetype is not "flash_gost_e2_ufs922"
+				if os.path.exists("/flashtest.txt") is False and imagetype != "flash_gost_e2_ufs922":
+					# is enough freespace on flash?
+					filesize = 0
+					freesize = 0
+					os.system("df /dev/mtdblock3 |grep var|cut -c41-50 >/tmp/free.txt")
+					if os.path.exists("/tmp/free.txt") is True:
+						f = open("/tmp/free.txt", "r" )
+						for line in f:
+							freesize = line.lstrip()
+						f.close
+						freesize = freesize.replace("\n","")
+						freesize = int(freesize)
+					print "[Addon-Manager] Flash=", freesize
+					#GOst ---> cut -c1-4 -nach-> cut -d\t -f1
+					os.system("du -sc /tmp/aaf |grep total|cut -d\t -f1 >/tmp/free2.txt")
+					if os.path.exists("/tmp/free2.txt") is True:
+						f = open("/tmp/free2.txt", "r" )
+						for line in f:
+							filesize = line.lstrip()
+						f.close
+						filesize = filesize.replace("\n","")
+						filesize = int(filesize)
+					print "[Addon-Manager] File=", filesize
+
+					# no Test, while Emu is linked to swap
+					if os.path.exists("/tmp/aaf/var/emu") is True:
+						if self.box == "ufs910":
+							print "[Addon-Manager] linked to swap"
+							filesize = 1
+
+					if freesize > filesize:
+						print "[Addon-Manager] FreeSpace is ready"
+						self["statusbar"].text = _("FreeSpace in Flash is ready!")
+					# NOT enough memory
+					else:
+						print "[Addon-Manager] FreeSpace Error in Flash!"
+						self["statusbar"].text = _("FreeSpace Error!")
+						print "[Addon-Manager] frei=", freesize,"File=",filesize
+						ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+						ffile.write("FreeSpace Error in Flash!")
+						ffile.write("\n")
+						ffile.close()
+						self.downloading(False)
+						message = "%s %s %s %s %s" % (_("Speicherfehler: zu wenig Speicher im Flashimage frei!\n frei="),freesize, _("Kb  benoetigt="), filesize, _("Kb\nBitte deinstallieren sie andere Plugins!"))
+						self.session.open(MessageBox,message, MessageBox.TYPE_INFO)
+						return
+
+					# im Flash den emu nach /var/bin installieren
+					if os.path.exists("/tmp/aaf/var/emu") is True:
+						if self.box == "ufs910":
+							self.swaptest = False
+							if os.path.exists("/var/swap/bin") is True:
+								print "[Addon-Manager] Emu wird im Swap des Flash installiert"
+								ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+								ffile.write("Emu wird im Swap des Flash installiert")
+								ffile.write("\n")
+								ffile.close()
+
+								os.system("mkdir -p /tmp/aaf/var/swap/bin")
+								os.system("cp /tmp/aaf/var/emu/* /tmp/aaf/var/swap/bin")
+								os.system("rm -r /tmp/aaf/var/emu")
+								self.swaptest = True
+								if os.path.exists("/tmp/aaf/lib") is True:
+									print "[Addon-Manager] Lib wird im Swap des Flash installiert"
+									ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+									ffile.write("Lib wird im Swap des Flash installiert")
+									ffile.write("\n")
+									ffile.close()
+
+									os.system("mkdir -p /tmp/aaf/var/swap/lib")
+									os.system("cp /tmp/aaf/lib/* /tmp/aaf/var/swap/lib")
+									os.system("rm -r /tmp/aaf/lib")
+							else:
+								print "[Addon-Manager] Emu wird im Flash installiert"
+								ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+								ffile.write("Emu wird im Flash installiert")
+								ffile.write("\n")
+								ffile.close()
+
+								os.system("mv /tmp/aaf/var/emu /tmp/aaf/var/bin")
+
+							# und die inst.sh loeschen, Installation uebernimmt jetzt AM
+							if os.path.exists("/tmp/aaf/inst.sh") is True:
+								os.system("rm /tmp/aaf/inst.sh; sync")
+
+							# und nun in der ufs910 im Flash den emu installieren
+							os.system("rm /tmp/aaf/*.tar.gz ; sync")
+							#os.system("cp -RP /tmp/aaf/* / ; sync") # error when by softlink
+							os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; cp_r /tmp/aaf /)" )
+
+							if self.swaptest == True:
+								os.system("cd /usr/lib/enigma2/python/Plugins/Extensions/AddonManager; ./do_link.sh")
+								print "[Addon-Manager] Emu wude nach /var/swap/bin verlinkt"
+
+				# 14.03.2010 abgeschaltet wegen TF Softlink
+				if os.path.exists("/tmp/aaf/inst.sh") is True:
+					print "[Addon-Manager] Preinst gefunden (inst.sh)"
+					#os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; ./inst.sh)" )
+					os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; cp_r /tmp/aaf /; sync)" )
+
+				else:
+					# Boxtyp lesen
+					file = open("/proc/stb/info/model", "r")
+					self.box = file.readline().strip()
+					file.close()
+					# Topfield "TF7700HDPVR"
+					ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+					ffile.write("erkannter Boxtyp:" + self.box)
+					ffile.write("\n")
+					ffile.close()
+
+					# is it a Flashimage and you press "plugins"?
+					os.system("touch /flashtest.txt")
+
+					if os.path.exists("/flashtest.txt") is False:
+						ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+						ffile.write("es ist ein Flashimage")
+						ffile.write("\n")
+						ffile.close()
+
+						if self.box == "cuberevo" or self.box == "cuberevo-mini" or self.box == "cuberevo-mini2":
+							self.box = "cuberevo"
+
+						if self.box == "ufs910" or self.box == "UFS922" or self.box == "cuberevo":
+							if self.plug == "bootbilder" or self.plug == "plugins":
+								ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+								ffile.write("Bootbild oder Plugin wird installiert")
+								ffile.write("\n")
+								ffile.close()
+
+
+								#/tmp/aaf/usr/lib/enigma2/python/Plugins/Extensions/
+								if os.path.exists("/media/usb/sda1/swapfile") is True:
+									os.system("mount /dev/sda1 /var/swap")
+								if os.path.exists("/media/usb/sdb1/swapfile") is True:
+									os.system("mount /dev/sdb1 /var/swap")
+								if os.path.exists("/media/usb/sdc1/swapfile") is True:
+									os.system("mount /dev/sdc1 /var/swap")
+								if os.path.exists("/media/usb/sdd1/swapfile") is True:
+									os.system("mount /dev/sdd1 /var/swap")
+
+								if os.path.exists("/var/swap/swapfile") is False:
+									message = "%s" % (_("Es ist kein Swapfile eingerichtet!\nBitte Swapstick aktivieren!"))
+									self.session.open(MessageBox, message, MessageBox.TYPE_INFO)
+									return
+
+								swaptarget = "/var/swap/"
+								if os.path.exists(swaptarget + "Extensions") is False:
+									CpString = "mkdir -p " + swaptarget + "Extensions"
+									os.system(CpString)
+
+								if self.plug == "plugins":
+									dir = listdir("/tmp/aaf/usr/lib/enigma2/python/Plugins/Extensions")
+									for x in dir:
+										if path.isdir("/tmp/aaf/usr/lib/enigma2/python/Plugins/Extensions/" + x) == True:
+											print x
+											#name = x.split('/')[-1]
+
+											ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+											ffile.write("entpacken fuer Flashimage")
+											ffile.write("\n")
+											ffile.write("cp -RP /tmp/aaf/usr/lib/enigma2/python/Plugins/Extensions " + swaptarget)
+											ffile.write("\n")
+											ffile.close()
+
+											CpString = "rm -r /usr/lib/enigma2/python/Plugins/Extensions/" + x
+											os.system(CpString)
+											CpString = "ln -s " + swaptarget + "Extensions/" + x + " /usr/lib/enigma2/python/Plugins/Extensions/"
+											os.system(CpString)
+
+											CpString = "cp -RP /tmp/aaf/usr/lib/enigma2/python/Plugins/Extensions " + swaptarget + "; sync"
+											os.system(CpString)
+											os.system("cp -RP /tmp/aaf/var/etc/uninst /var/etc/ ; sync")
+
+								if self.plug == "bootbilder":
+									CpString = "cp -RP /tmp/aaf/boot /var/etc/ ; sync"
+									os.system(CpString)
+									os.system("cp -RP /tmp/aaf/var/etc/uninst /var/etc/ ; sync")
+
+							if self.plug == "emusconfig" or self.plug == "patches":
+									ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+									ffile.write("es ist ein Flashimage (emusconfig)")
+									ffile.write("\n")
+									ffile.write("cp -RP /tmp/aaf/* / ; sync")
+									ffile.write("\n")
+									ffile.close()
+									print "[Addon-Manager] EmuConfig wird installiert!"
+									os.system("cp -RP /tmp/aaf/* / ; sync")
+
+						# es ist ein Flash aber keine ufs910
+						else:
+							ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+							ffile.write("es ist ein Flashimage aber keine ufs910")
+							ffile.write("\n")
+							ffile.write("cp_r /tmp/aaf / ; sync")
+							ffile.write("\n")
+							ffile.close()
+							#GOst begin
+							#os.system("cp -RP /tmp/aaf/* / ; sync")
+							os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; cp_r /tmp/aaf / ; sync)" )
+
+							#os.system("(cd /tmp/aaf; tar -xzf *tar.gz -C / ; sync)")
+							#GOst end
+
+					# es ist kein Flash
+					else:
+							ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+							ffile.write("es ist kein Flashimage")
+							ffile.write("\n")
+							ffile.write("cp_r /tmp/aaf / ; sync")
+							ffile.write("\n")
+							ffile.close()
+							#GOst begin
+							os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cp_r /tmp/aaf / ; sync)")
+							#os.system("(cd /tmp/aaf; tar -xzf *tar.gz -C / ; sync)")
+							#GOst end
+
+					os.system("rm -r /tmp/aaf")
+					os.system("cd / ; rm *tar.gz")
+			else:
+				ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+				ffile.write("IPK wird entpackt!")
+				ffile.write("\n")
+				ffile.close()
+
+				self["statusbar"].text = _("Decompressing IPK-File...")
+				os.system("cd /tmp/aaf ; ipkg install /tmp/aaf/downfile.sh4.ipk")
+				os.system("rm -r /tmp/aaf")
+
+
+		os.system("rm -r /tmp/aaf")
+		os.system("cd / ; rm *tar.gz")
+		os.system("mkdir /tmp/aaf")
+		self["statusbar"].text = _("Installation OK!")
+		self.downloading(False)
+		#if self.plug == "skins":
+		#	self.session.open(SkinSelector)
+
+		if self.plug == "settings":
+			restartbox = self.session.openWithCallback(self.restartGUI,MessageBox,_("Die Installation hat einen Neustart angefordert!\nBei NEIN muss die Installation wiederholt werden!"), MessageBox.TYPE_YESNO)
+			restartbox.setTitle(_("UFS-Box starten?"))
+
+	def restart(self, answer):
+		if answer is True:
+			# make bootimage active for restart
+			if self.BAtyp == "new":
+				ffile = open("/var/baroot/ba/.baboot", "w")
+				ffile.write(self.urlname)
+				ffile.write("\n")
+				ffile.close()
+			else:
+				ffile = open("/ba/.baboot", "w")
+				ffile.write(self.urlname_org)
+				ffile.write("\n")
+				ffile.close()
+				# and now we write the devicename
+				fileread = open("/ba/ba/" + self.urlname_org + "/bootp.conf", "r" )
+				for line in fileread:
+					if line.split('=')[0] == "BADEVICE":
+							self.device = line.split('=')[1]
+							ffile = open("/ba/.badevice", "w")
+							ffile.write(self.device)
+							#ffile.write("\n")
+							ffile.close()
+				fileread.close()
+
+			os.system("sync")
+			os.system("reboot -f")
+
+	def restartGUI(self, answer):
+		if answer is True:
+			os.system("killall -9 enigma2")
+
+	def errorstop(self, error_message):
+		print "[Addon-Manager] An error has occurred: %s" % str(error_message)
+		message = ("%s" % error_message)
+		#self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+		self.downloading(False)
+		self.close()
+
+	def errorHandler(self, error_message):
+		print "[Addon-Manager] An error has occurred: %s" % str(error_message)
+		message = "%s %s" % (_(".PLUGIN Download failed:"),error_message)
+		self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+		self.downloading(False)
+    # and then we stop the entire process:
+		reactor.stop()
+
+	def plugin_remove(self, answer):
+		self.downloading(False)
+		if answer == True:
+			PLUGINfilename =  self.PLUGINlocal
+			if fileExists(self.LISTfilename):
+				remove(self.LISTfilename)
+			if fileExists(PLUGINfilename):
+				remove(PLUGINfilename)
+		self.switchList(self.LIST_SOURCE)
+
+	def closeCB(self):
+		if self.download:
+			#self.download.stop()
+			#self.plugin_failed(None, "Cancelled by user request")
+			self.downloading(False)
+		else:
+			self.close()
+
+
+#-----------------------------------------------------------------
+class AddonConfigScreen(ConfigListScreen,Screen):
+    skin = """
+        <screen position="{screen.pos}" size="650,400" title="Addon-Manager Setup" >
+        <widget name="config" position="40,10" size="570,360" scrollbarMode="showOnDemand" />
+        <widget name="buttonred" position="40,360" size="100,40" backgroundColor="red" valign="center" halign="center" zPosition="2"  foregroundColor="white" font="Regular;18"/>
+        <widget name="buttongreen" position="160,360" size="100,40" backgroundColor="green" valign="center" halign="center" zPosition="2"  foregroundColor="white" font="Regular;18"/>
+        </screen>"""
+
+    def __init__(self, session, args = 0):
+        self.session = session
+        #switch automatic to current skin
+        current_w = getDesktop(0).size().width()
+        current_h = getDesktop(0).size().height()
+        print "[Addon-Manager] DESKTOPsize is",current_w,current_h
+        size_w = 650
+        size_h = 400
+
+        # calculate Skin koordinates
+        pos_w = (current_w - size_w)/2
+        pos_h = (current_h - size_h)/2
+
+        # set Skinvariables
+        self.dict = {
+				   'screen.size': "%i,%i"%(size_w,size_h),
+				   'screen.pos': "%i,%i"%(pos_w,pos_h),
+				   }
+
+        self.skin = applySkinVars(AddonConfigScreen.skin,self.dict)
+        Screen.__init__(self, session)
+        self.list = []
+        self.list.append(getConfigListEntry(_("Fontgroesse (10-22, 14=normal)"), config.AddonManager.Schriftart))
+        self.list.append(getConfigListEntry(_("Downloadserver waehlen (1=Primary 2=Secondary)"), config.AddonManager.which_server))
+        self.list.append(getConfigListEntry(_("Vorschau Einschalten (1=Ein, 0=Aus)"), config.AddonManager.preview_on))
+        self.list.append(getConfigListEntry(_("Wartezeit in msec fuer Vorschau"), config.AddonManager.preview_timeout))
+        self.list.append(getConfigListEntry(_("Installierte Plugins in Liste anzeigen (1=Ein, 0=Aus)"), config.AddonManager.marker_off))
+        self.list.append(getConfigListEntry(_("Installierte Plugins in Liste farbig markieren"), config.AddonManager.marker_on))
+        self.list.append(getConfigListEntry(_("Markierungsfarbe (0=rot, 1=gruen, 2=blau)"), config.AddonManager.mark_color))
+        self.list.append(getConfigListEntry(_("Installierte Plugins feststellen (0=genau, 1=ungenau)"), config.AddonManager.ungenau))
+        self.list.append(getConfigListEntry(_("BA Installation Settingsuebernahme (1=Ein, 0=Aus)"), config.AddonManager.ba_settings_on))
+        self.list.append(getConfigListEntry(_("BA Installation Pluginsuebernahme (1=Ein, 0=Aus)"), config.AddonManager.ba_plugins_on))
+        self.list.append(getConfigListEntry(_("BA Installation Skinsuebernahme (1=Ein, 0=Aus)"), config.AddonManager.ba_skins_on))
+        self.list.append(getConfigListEntry(_("BA temp.Image nach Download entfernen (1=Ein, 0=Aus)"), config.AddonManager.ba_remove_on))
+        self.list.append(getConfigListEntry(_("BA Defaultsettings kopieren (1=Ein, 0=Aus)"), config.AddonManager.ba_usersettings_on))
+
+        ConfigListScreen.__init__(self, self.list)
+        self["buttonred"] = Label(_("cancel"))
+        self["buttongreen"] = Label(_("ok"))
+        self["setupActions"] = ActionMap(["SetupActions"],
+        {
+            "green": self.save,
+            "red": self.cancel,
+            "save": self.save,
+            "cancel": self.cancel,
+            "ok": self.save,
+        }, -2)
+
+    def save(self):
+        global activesource, activenam
+        for x in self["config"].list:
+			      x[1].save()
+        config.save()
+        #config.AddonManager.save()
+        self.showpreview = config.AddonManager.preview_on.value
+        self.previewtimeout = config.AddonManager.preview_timeout.value
+        self.farbe = config.AddonManager.mark_color.value
+
+        if config.AddonManager.which_server.value == 1:
+		        activesource = "http://addons.aaf-board.net"
+		        activenam = "Primary-Server"
+        else:
+		        activesource = "http://kati910.aaf-board.info/dbase"
+		        activenam = "Secondary-Server"
+        #if self.betacode == True:
+	      #  self.previewtimeout = 600
+        self.close()
+
+    def cancel(self):
+        print "[Addon-Manager] cancel"
+        for x in self["config"].list:
+            x[1].cancel()
+        self.close(False)
+
+#-----------------------------------------------------------------
+
+def tryOpen(filename):
+	try:
+		procFile = open(filename)
+	except IOError:
+		return ""
+	return procFile
+
+
+def main(session, **kwargs):
+   session.open(PLUGINDownload,"/tmp/usb")
+
+
+
Index: ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/plugin.py
===================================================================
--- ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/plugin.py	(revision 2935)
+++ ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/plugin.py	(revision 2935)
@@ -0,0 +1,1646 @@
+from Plugins.Plugin import PluginDescriptor
+from Screens.PluginBrowser import *
+from Screens.ServiceInfo import ServiceInfoList, ServiceInfoListEntry
+from Components.SelectionList import SelectionList
+from Tools.Directories import resolveFilename, fileExists, pathExists, createDir, SCOPE_MEDIA
+from enigma import *
+from Screens.MessageBox import MessageBox
+from Screens.ChoiceBox import ChoiceBox
+from Screens.Screen import Screen
+from Components.ActionMap import ActionMap, NumberActionMap
+from Components.MenuList import MenuList
+from Components.Label import Label
+from Components.ScrollLabel import ScrollLabel
+from Components.Pixmap import Pixmap
+from Components.config import ConfigSubsection, ConfigText, getConfigListEntry, ConfigSelection,  ConfigIP, ConfigYesNo, ConfigSequence, ConfigNumber
+from Components.ConfigList import ConfigListScreen
+
+from Components.FileList import FileList
+from Components.Sources.StaticText import StaticText
+
+#import ServiceReference
+import os
+import sys
+import subprocess
+from subprocess import Popen,PIPE
+import ServiceReference
+import time
+import urllib
+
+# import py_compile
+# py_compile.compile("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/plugin.py")
+
+from Plugins.Extensions.AddonManager.downloader import *
+#from Plugins.Extensions.AddonManager.FileListBB import FileListBB
+
+config.AddonManager = ConfigSubsection()
+config.AddonManager.which_server = ConfigInteger(1, limits=(1, 2))
+config.AddonManager.preview_timeout = ConfigInteger(default=600,limits=(50, 2000))
+config.AddonManager.preview_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager.marker_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager.marker_off = ConfigInteger(1, limits=(0, 1))
+config.AddonManager.mark_color = ConfigInteger(1, limits=(0, 2))
+config.AddonManager.ungenau = ConfigInteger(0, limits=(0, 1))
+config.AddonManager.Schriftart = ConfigInteger(14, limits=(10, 22))
+config.AddonManager.ba_settings_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager.ba_plugins_on = ConfigInteger(0, limits=(0, 1))
+config.AddonManager.ba_skins_on = ConfigInteger(0, limits=(0, 1))
+config.AddonManager.ba_remove_on = ConfigInteger(0, limits=(0, 1))
+config.AddonManager.ba_usersettings_on = ConfigInteger(0, limits=(0, 1))
+
+
+global version
+# Version 'version' read from import downloader.py
+#AAF_Panel_Version = 'Addon Manager'
+AAF_Panel_Version = 'Addon Manager ' + version
+
+def main(session, **kwargs):
+			session.open(Addonpanel)
+			evfd.getInstance().vfd_write_string(AAF_Panel_Version)
+
+def Apanel(menuid, **kwargs):
+	if menuid == "mainmenu":
+		return [("Addon-Manager", main, "Addonpanel", None)]
+	else:
+		return []
+
+def Plugins(**kwargs):
+	return [
+
+	#// show Addonpanel in Main Menu
+	#PluginDescriptor(name="Addon-Manager", description="Addonpanel AAF-Enigma2 23/02/2009", where = PluginDescriptor.WHERE_MENU, fnc = Addonpanel),
+	#// show Addonpanel in EXTENSIONS Menu
+	PluginDescriptor(name="Addon-Manager", description="Addonpanel AAF-Enigma2 23/02/2009", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc = main) ]
+
+font = "Regular;18"
+
+def applySkinVars(skin,dict):
+    for key in dict.keys():
+        try:
+            skin = skin.replace('{'+key+'}',dict[key])
+        except Exception,e:
+            print e,"@key=",key
+    return skin
+
+class Addonpanel(Screen):
+	skin = """
+	<screen name="Aafpanel" flags="wfNoBorder" position="{screen.pos}" size="438,320" title="Addonpanel" backgroundColor="#251e1f20">
+		<ePixmap position="0,0" zPosition="-1" size="438,320" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Aafpanel/pics/aaf_menu.png" alphatest="off"/>
+		<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Aafpanel/pics/red_smal.png" position="120,40" size="75,33" alphatest="on" />
+		<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Aafpanel/pics/green_smal.png" position="195,40" size="75,33" alphatest="on" />
+		<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Aafpanel/pics/yellow_smal.png" position="270,40" size="75,33" alphatest="on" />
+		<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Aafpanel/pics/blue_smal.png" position="345,40" size="75,33" alphatest="on" />
+		<widget name="key_red" position="120,40" zPosition="1" size="75,33" font="Regular;12" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+		<widget name="key_green" position="195,40" zPosition="1" size="75,33" font="Regular;12" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+		<widget name="key_yellow" position="270,40" zPosition="1" size="75,33" font="Regular;12" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
+		<widget name="key_blue" position="345,40" zPosition="1" size="75,33" font="Regular;12" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
+		<widget name="Mlist" position="130,85" size="250,175" zPosition="1" scrollbarMode="showOnDemand" backgroundColor="#251e1f20" transparent="1" />
+		<widget name="label1" position="121,287" size="200,20" font="Regular;20" transparent="1" foregroundColor="#f2e000" halign="center" />
+	</screen>"""
+
+#-- Start HD skin detection BB
+	def __init__(self, session, services = None):
+		if os.path.exists("/var/baroot/.multipart") is True:
+			self.BAtyp = "new"
+		if os.path.exists("/UFS_Images") is True:
+			self.BAtyp = "old"
+
+		#switch automatic to current skin
+		current_w = getDesktop(0).size().width()
+		current_h = getDesktop(0).size().height()
+		print "DESKTOPsize is",current_w,current_h
+
+		# define the start koordinates and size
+		if current_w == 1280:
+				pos_w = 421
+				pos_h = 200
+		else:
+				pos_w = 141
+				pos_h = 128
+
+		# set Skinvariables
+		self.dict = {
+				'font': font,
+				'screen.pos': "%i,%i"%(pos_w,pos_h),
+				}
+		self.skin = applySkinVars(Addonpanel.skin,self.dict)
+#-- Ende HD skin detection BB
+
+		self.service = None
+		global skin
+		global servicelist
+		if services is not None:
+			servicelist = services
+		else:
+			servicelist = None
+
+		self.list = []
+
+		Screen.__init__(self, session)
+		self["label1"] = Label(AAF_Panel_Version)
+		self.Mlist = []
+		self["Mlist"] = MenuList(self.Mlist)
+
+		#if os.path.exists("/tmp/netok") is True:
+		self.Mlist.append("Download Manager")
+		self.Mlist.append("Install from /tmp")
+		self.Mlist.append("Uninstall Plugins")
+		#if os.path.exists("/tmp/netok") is True:
+		self.Mlist.append("Update Addon-Manager")
+		self.Mlist.append("BA-Image Manager")
+
+		self["key_green"] = Label(" ")
+		self["key_red"] = Label(" ")
+		self["key_yellow"] = Label(" ")
+		#if os.path.exists("/tmp/netok") is True:
+		self["key_blue"] = Label("update")
+		#else:
+		#	self["key_blue"] = Label(" ")
+
+		global menu
+		menu = 0
+
+		#// get the remote buttons
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
+		{
+			"cancel": self.Exit,
+			"left": self.left,
+			"right": self.right,
+			"up": self.up,
+			"down": self.down,
+			"ok": self.ok,
+			#"blue": self.blue,
+			"blue": self.check_update,
+			"red": self.Red,
+			"green": self.Green,
+			"yellow": self.yellow,
+		}, 1)
+
+	def up(self):
+		self["Mlist"].up()
+		evfd.getInstance().vfd_write_string( self["Mlist"].getCurrent())
+
+	def down(self):
+		self["Mlist"].down()
+		evfd.getInstance().vfd_write_string( self["Mlist"].getCurrent())
+
+	def left(self):
+		pass
+
+	def right(self):
+		pass
+		
+	def Red(self):
+		pass
+
+	def Green(self):
+		#// Not used
+		pass
+		
+	def yellow(self):
+		pass
+
+	def blue(self):
+		#// Not used
+		pass
+
+	def check_update(self):
+		versurl = activesource + "/version_e2.txt"
+		h = urllib.urlretrieve(versurl, "/tmp/version_e2.txt")
+		dummy = open("/tmp/version_e2.txt").read()
+		version_server = dummy[0:len(dummy) -2]
+		if version_server == version:
+			print "gleich"
+			message = "%s %s\n%s %s\n\n%s" % (_("Version am Server:"), version_server, _("Version in der Box:"), version, _("Ein Update ist nicht erforderlich!"))
+			self.session.open( MessageBox, message, MessageBox.TYPE_INFO)
+		else:
+			if version_server > version:
+				message = "%s %s\n%s %s\n\n%s" % (_("Version am Server:"), version_server, _("Version in der Box:"), version, _("Ein Update ist empfehlenswert!"))
+				self.session.openWithCallback(self.update_now2, MessageBox, message, MessageBox.TYPE_YESNO)
+			else:
+				message = "%s %s\n%s %s\n\n%s" % (_("\nKlingt wie ein Scherz, aber die Version am Server ist aelter als die auf ihrer Box!\n\nVersion am Server:"), version_server, _("Version in der Box:"), version, _("NICHT UPDATEN, sie besitzen vermutlich eine fortgeschrittene Betaversion!"))
+				self.session.openWithCallback(self.update_now2, MessageBox, message, MessageBox.TYPE_YESNO)
+
+	def update_now2(self, answer):
+		if answer == True:
+			versurl = activesource + "/addon-man_e2.tar.gz"
+			h = urllib.urlretrieve(versurl, "/tmp/aaf/addon-man_e2.tar.gz")
+			os.system("cd /tmp/aaf; tar -xzf addon-man_e2.tar.gz")
+			if os.path.exists("/tmp/aaf/addon-man_e2.tar.gz") is True:
+				os.system("cp -RP /tmp/aaf/* / ; sync")
+				os.system("rm -r /tmp/aaf")
+				os.system("cd / ; rm *tar.gz")
+				os.system("mkdir /tmp/aaf")
+				message = "%s" % (_("Der Addon-Manager hat einen Neustart angefordert!\nDie Box wird nun neu gestartet!"))
+				self.session.open( MessageBox, message, MessageBox.TYPE_INFO)
+				TryQuitMainloop(self.session,2)
+
+
+	def Exit(self):
+		#// Exit Aafpanel when pressing the EXIT button or go back to the MainMenu
+		self.service = self.session.nav.getCurrentlyPlayingServiceReference()
+		service = self.service.toCompareString()
+		servicename = ServiceReference.ServiceReference(service).getServiceName().replace('\xc2\x87', '').replace('\xc2\x86', '').ljust(16)
+		evfd.getInstance().vfd_write_string( servicename )
+		self.close()
+
+	def ok(self):
+		#// Menu Selection
+		menu = self["Mlist"].getCurrent()
+		if menu == "Download Manager":
+			self.session.open(PLUGINDownload,"/tmp/usb")
+		elif menu == "Uninstall Plugins":
+			self.session.open(FileBrowse)
+		elif menu == "Install from /tmp":
+			self.session.open(TmpBrowse)	
+		elif menu == "Update Addon-Manager":
+			self.check_update()
+		elif menu == "BA-Image Manager":
+			self.session.open(DelImage)
+		else:
+			pass
+
+#------------------------------------------------------------------------------------------
+#------------------------------------------------------------------------------------------
+class FileBrowse(Screen):
+	LIST_FILE = 1
+	LIST_IPK = 2
+	rebootflag = False
+
+	skin = """
+		<screen position="{screen.pos}" size="{screen.size}" title="Uninstall AAF Plugins" >
+			<ePixmap position="{logo.pos}" size="70,53" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/picon_default.png" transparent="1" alphatest="on" />
+			<ePixmap position="{red_led.pos}" size="36,20" pixmap="skin_default/buttons/key_red.png" transparent="1" alphatest="on" />
+			<ePixmap position="{green_led.pos}" size="36,20" pixmap="skin_default/buttons/key_green.png" transparent="1" alphatest="on" />
+			<eLabel text="UNINSTALL" position="{label.pos}" size="240,35" font="Regular;30" foregroundColor="#ffa323" transparent="1" />
+			<eLabel text="Tar-Files" position="{red.pos}" size="240,25" font="Regular;20" transparent="1" />
+			<eLabel text="IPK-Files" position="{green.pos}" size="240,25" font="Regular;20" transparent="1" />
+			<widget name="filelist" position="{list.pos}" size="{list.size}" scrollbarMode="showOnDemand" />
+			<widget name="ipklist" position="{list.pos}" size="{list.size}" scrollbarMode="showOnDemand" />
+			<widget source="global.CurrentTime" render="Label" position="{date.pos}" size="90,23" font="Regular;18" halign="left" valign="top" foregroundColor="#3366ff" transparent="1">
+				<convert type="ClockToText">Format:%d.%m.%Y</convert>
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="{time.pos}" size="90,23" font="Regular;18" halign="left" valign="top" foregroundColor="#3366ff" transparent="1">
+				<convert type="ClockToText">Format:%H:%M:%S</convert>
+			</widget>
+		</screen>"""
+
+	def __init__(self, session):
+		#switch automatic to current skin
+		current_w = getDesktop(0).size().width()
+		current_h = getDesktop(0).size().height()
+		print "DESKTOPsize is",current_w,current_h
+
+		# define the start koordinates and size
+		if current_w == 1280:
+				size_w = 720
+				size_h = 376
+		else:
+				size_w = 520
+				size_h = 376
+
+		# calculate Skin koordinates
+		font = "Regular;18"
+		pos_w = (current_w - size_w)/2
+		pos_h = (current_h - size_h)/2
+		list_w = size_w - 20
+		list_pos = (size_w - list_w)/2
+		red_pos = size_w/2 - 130
+		green_pos = size_w/2 + 50
+		red_led_pos = red_pos - 40
+		green_led_pos = green_pos - 40
+		label_pos = size_w/2 -90
+		logo_pos = size_w -75
+		date_pos = red_led_pos
+		time_pos = green_pos
+
+		# set Skinvariables
+		self.dict = {
+				'font': font,
+				'list.size': "%i,232"%(list_w),
+				'list.pos': "%i,110"%(list_pos),
+				'screen.size': "%i,%i"%(size_w,size_h),
+				'screen.pos': "%i,%i"%(pos_w,pos_h),
+				'red.pos': "%i,57"%(red_pos),
+				'green.pos': "%i,57"%(green_pos),
+				'red_led.pos': "%i,57"%(red_led_pos),
+				'green_led.pos': "%i,57"%(green_led_pos),
+				'label.pos': "%i,12"%(label_pos),
+				'logo.pos': "%i,0"%(logo_pos),
+				'date.pos': "%i,360"%(date_pos),
+				'time.pos': "%i,360"%(time_pos),
+				}
+
+		self.skin = applySkinVars(FileBrowse.skin,self.dict)
+		Screen.__init__(self, session)
+
+		self.focus = None
+		
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions", "MovieSelectionActions"],
+		{
+			"ok": self.KeyOk,
+			"cancel": self.Exit,
+			"right": self.rightDown,
+			"left": self.leftUp,
+			"up": self.up,
+			"down": self.down,
+			"red": self.plugin_remove,
+			"green": self.ipk_remove
+		}, -1)
+
+		self.SearchPattern = "(?i)^.*\.(sh|postrm)"
+		self.currDir = "/usr/lib/ipkg/info/"
+		if not pathExists(self.currDir):
+			self.currDir = "/"
+
+		self.ipklist = []
+		self.filelist = []
+		
+		self.ipklist = FileList(self.currDir, showDirectories = False, isTop = True, matchingPattern = self.SearchPattern)
+		self["ipklist"] = self.ipklist
+
+		self.currDir = "/var/etc/uninst/"
+		if not pathExists(self.currDir):
+			self.currDir = "/"
+
+		self.filelist = FileList(self.currDir, showDirectories = False, isTop = True, matchingPattern = self.SearchPattern)
+		self["filelist"] = self.filelist
+
+		self["ipklist"].hide()
+		self["filelist"].show()
+		
+		#set the focus to the primary filelist
+		self.focus = self.LIST_FILE
+
+	def up(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].up()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].up()
+
+	def down(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].down()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].down()
+
+	def leftUp(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].pageUp()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].pageUp()
+		
+	def rightDown(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].pageDown()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].pageDown()
+
+	def plugin_remove(self):
+		self["ipklist"].hide()
+		self["filelist"].show()
+		self.focus = self.LIST_FILE
+
+	def ipk_remove(self):
+		self["filelist"].hide()
+		self["ipklist"].show()
+		self.focus = self.LIST_IPK
+
+	def KeyOk(self):
+		# call the uninstall-Script with subprocess or with os.system
+		message = "%s" % (_("Sind sie sicher das Plugin zu loeschen?"))
+		self.session.openWithCallback(self.list_remove, MessageBox, message, MessageBox.TYPE_YESNO)
+
+	def list_remove(self, answer):
+		if answer == True:
+			if self.focus is self.LIST_IPK:
+				self.currDir = "/usr/lib/ipkg/info/"
+				self.filename = self.ipklist.getFilename()
+				self.fullfile = self.currDir + self.filename
+				ipkpack = self.filename.split(".")
+
+				#ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/UninstallPlugin/aa.txt", "w")
+				#ffile.write(self.fullfile)
+				#ffile.close()
+
+
+				#Check for reboot
+				if fileExists(self.fullfile):
+					rebootcontent = open(self.fullfile, "r").read()
+					pos = rebootcontent.find("reboot")
+					if pos > 0:
+							self.rebootflag = True
+							inhalt = rebootcontent[pos:pos+9]
+							rebootcontent = rebootcontent.replace(u"reboot","#reboot")
+							g = open(self.fullfile, "w")
+							g.write(rebootcontent)
+							g.close()
+
+			 	argument="remove " + ipkpack[0] + "*"
+			 	os.system("ipkg %s" % argument)
+			 
+			if self.focus is self.LIST_FILE:
+			 self.currDir = "/var/etc/uninst/"
+			 self.filename = self.filelist.getFilename()
+			 self.fullfile = self.currDir + self.filename
+			 cmd=[self.fullfile]
+			 #subprocess.call(cmd)
+			 os.system("%s" % self.fullfile)
+
+		self["filelist"].refresh()
+		self["ipklist"].refresh()
+
+	def Exit(self):
+		if self.rebootflag:
+			#self["statusbar"].text = _("rebooting...")
+			message = "%s" % (_("Ein Plugin hat einen Neustart angefordert!\nDie Box wird nun rebootet!"))
+			self.session.open( MessageBox, message, MessageBox.TYPE_INFO)
+			TryQuitMainloop(self.session,2)
+		self.close()
+#------------------------------------------------------------------------------------------
+#------------------------------------------------------------------------------------------
+#------------------------------------------------------------------------------------------
+class TmpBrowse(Screen):
+	LIST_FILE = 1
+	LIST_IPK = 2
+
+	skin = """
+		<screen position="{screen.pos}" size="{screen.size}" title="Install AAF Plugins aus tmp" >
+			<ePixmap position="{logo.pos}" size="70,53" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/picon_default.png" transparent="1" alphatest="on" />
+			<ePixmap position="{red_led.pos}" size="36,20" pixmap="skin_default/buttons/key_red.png" transparent="1" alphatest="on" />
+			<ePixmap position="{green_led.pos}" size="36,20" pixmap="skin_default/buttons/key_green.png" transparent="1" alphatest="on" />
+			<eLabel text="INSTALL-TMP" position="{label.pos}" size="240,35" font="Regular;30" foregroundColor="#ffa323" transparent="1" />
+			<eLabel text="Tar-Files" position="{red.pos}" size="240,25" font="Regular;20" transparent="1" />
+			<eLabel text="IPK-Files" position="{green.pos}" size="240,25" font="Regular;20" transparent="1" />
+			<widget name="filelist" position="{list.pos}" size="{list.size}" scrollbarMode="showOnDemand" />
+			<widget name="ipklist" position="{list.pos}" size="{list.size}" scrollbarMode="showOnDemand" />
+			<widget source="global.CurrentTime" render="Label" position="{date.pos}" size="90,23" font="Regular;18" halign="left" valign="top" foregroundColor="#3366ff" transparent="1">
+				<convert type="ClockToText">Format:%d.%m.%Y</convert>
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="{time.pos}" size="90,23" font="Regular;18" halign="left" valign="top" foregroundColor="#3366ff" transparent="1">
+				<convert type="ClockToText">Format:%H:%M:%S</convert>
+			</widget>
+		</screen>"""
+
+	def __init__(self, session):
+		#switch automatic to current skin
+		current_w = getDesktop(0).size().width()
+		current_h = getDesktop(0).size().height()
+		print "DESKTOPsize is",current_w,current_h
+
+		# define the start koordinates and size
+		if current_w == 1280:
+				size_w = 720
+				size_h = 376
+		else:
+				size_w = 520
+				size_h = 376
+
+		# calculate Skin koordinates
+		font = "Regular;18"
+		pos_w = (current_w - size_w)/2
+		pos_h = (current_h - size_h)/2
+		list_w = size_w - 20
+		list_pos = (size_w - list_w)/2
+		red_pos = size_w/2 - 130
+		green_pos = size_w/2 + 50
+		red_led_pos = red_pos - 40
+		green_led_pos = green_pos - 40
+		label_pos = size_w/2 -90
+		logo_pos = size_w -75
+		date_pos = red_led_pos
+		time_pos = green_pos
+
+		# set Skinvariables
+		self.dict = {
+				'font': font,
+				'list.size': "%i,232"%(list_w),
+				'list.pos': "%i,110"%(list_pos),
+				'screen.size': "%i,%i"%(size_w,size_h),
+				'screen.pos': "%i,%i"%(pos_w,pos_h),
+				'red.pos': "%i,57"%(red_pos),
+				'green.pos': "%i,57"%(green_pos),
+				'red_led.pos': "%i,57"%(red_led_pos),
+				'green_led.pos': "%i,57"%(green_led_pos),
+				'label.pos': "%i,12"%(label_pos),
+				'logo.pos': "%i,0"%(logo_pos),
+				'date.pos': "%i,360"%(date_pos),
+				'time.pos': "%i,360"%(time_pos),
+				}
+
+		self.skin = applySkinVars(TmpBrowse.skin,self.dict)
+		Screen.__init__(self, session)
+
+		self.focus = None
+		
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions", "MovieSelectionActions"],
+		{
+			"ok": self.KeyOk,
+			"cancel": self.Exit,
+			"right": self.rightDown,
+			"left": self.leftUp,
+			"up": self.up,
+			"down": self.down,
+			"red": self.plugin_remove,
+			"green": self.ipk_remove,
+			"yellow": self.ipk_remove
+		}, -1)
+
+		self.SearchPattern = "(?i)^.*\.(ipk)"
+		self.currDir = "/tmp/"
+		if not pathExists(self.currDir):
+			self.currDir = "/"
+
+		self.ipklist = FileList(self.currDir, showDirectories = False, isTop = True, matchingPattern = self.SearchPattern)
+		self["ipklist"] = self.ipklist
+
+
+		self.SearchPattern = "(?i)^.*\.(gz|tgz)"
+		self.currDir = "/tmp/"
+		if not pathExists(self.currDir):
+			self.currDir = "/"
+
+		self.filelist = FileList(self.currDir, showDirectories = False, isTop = True, matchingPattern = self.SearchPattern)
+		self["filelist"] = self.filelist
+		
+		self["aktion"] = StaticText()
+#		self["ausschrift"] = Pixmap()
+		self["ipklist"].hide()
+		self["filelist"].show()
+#		self["ausschrift"].hide()
+		self["aktion"].text = "Install TAR"
+#		self["ausschrift"].text = "Install is running"
+		
+		#set the focus to the primary filelist
+		self.focus = self.LIST_FILE
+
+	def up(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].up()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].up()
+
+	def down(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].down()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].down()
+
+	def leftUp(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].pageUp()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].pageUp()
+		
+	def rightDown(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].pageDown()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].pageDown()
+
+	def plugin_remove(self):
+		self["ipklist"].hide()
+		self["aktion"].text = "Install TAR"
+		self["filelist"].show()
+		self.focus = self.LIST_FILE
+
+	def ipk_remove(self):
+		self["filelist"].hide()
+		self["aktion"].text = "Install IPK"
+		self["ipklist"].show()
+		self.focus = self.LIST_IPK
+
+	def KeyOk(self):
+		# call the uninstall-Script with subprocess or with os.system
+		self.filename = None
+		if self.focus is self.LIST_FILE:
+			self.filename = self.filelist.getFilename()
+			if self.filename is not None:
+				self["filelist"].hide()
+#				self["ausschrift"].show()
+				self.fullfile = self.currDir + self.filename
+				os.system("mkdir /tmp/AAFInst")
+				os.system("cd /tmp/AAFInst; tar -xzf  %s" % self.fullfile)
+				if os.path.exists("/tmp/AAFInst/inst.sh") is True:
+					os.system("cd /tmp/AAFInst; ./inst.sh" )
+				else:
+					os.system("cp -RP /tmp/AAFInst/* / ; sync")
+					os.system("rm -r /tmp/AAFInst")
+				self["filelist"].show()
+#				self["ausschrift"].hide()	
+		
+		if self.focus is self.LIST_IPK:
+			self.filename = self.ipklist.getFilename()
+			if self.filename is not None:
+				self["ipklist"].hide()
+#				self["ausschrift"].show()
+				self.fullfile = self.currDir + self.filename
+				cmd=["ipkg", "install", self.fullfile] 
+				subprocess.call(cmd)
+				self["ipklist"].show()
+#				self["ausschrift"].hide()	
+					
+		if self.filename is not None:
+			cmd=["rm", self.fullfile]
+			subprocess.call(cmd)
+			cmd=["sync"]
+			subprocess.call(cmd)
+			self["filelist"].refresh()
+			self["ipklist"].refresh()
+			#self.close()
+
+	def Exit(self):
+		self.close()
+
+#------------------------------------------------------------------------------------------
+#------------------------------------------------------------------------------------------
+# import py_compile
+# py_compile.compile("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/plugin.py")
+
+
+class DelImage(Screen):
+	LIST_FILE = 1
+	LIST_IPK = 2
+	LIST_DEVICE = 3
+	rebootflag = False
+
+	skin = """
+		<screen position="{screen.pos}" size="{screen.size}" title="BA-Images" >
+			<ePixmap position="{logo.pos}" size="70,53" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/picon_default.png" transparent="1" alphatest="on" />
+			<ePixmap position="{red_led.pos}" size="36,23" pixmap="skin_default/buttons/key_red.png" transparent="1" alphatest="on" />
+			<ePixmap position="{green_led.pos}" size="36,23" pixmap="skin_default/buttons/key_green.png" transparent="1" alphatest="on" />
+			<ePixmap position="{yellow_led.pos}" size="36,23" pixmap="skin_default/buttons/key_yellow.png" transparent="1" alphatest="on" />
+			<ePixmap position="{blue_led.pos}" size="36,23" pixmap="skin_default/buttons/key_blue.png" transparent="1" alphatest="on" />
+
+			<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/satlogo.png" position="20,95" size="100,300" alphatest="on" />
+
+			<eLabel text="Select" position="{red.pos}" size="240,25" font="Regular;20" transparent="1" />
+			<eLabel text="Install" position="{green.pos}" size="240,25" font="Regular;20" transparent="1" />
+			<eLabel text="Settings-copy" position="{yellow.pos}" size="240,25" font="Regular;20" transparent="1" />
+			<eLabel text="Delete" position="{blue.pos}" size="240,25" font="Regular;20" transparent="1" />
+			<widget name="filelist" position="{list.pos}" size="{list.size}" scrollbarMode="showOnDemand" />
+			<widget name="ipklist" position="{list.pos}" size="{list.size}" scrollbarMode="showOnDemand" />
+			<widget name="devicelist" position="{list.pos}" size="{list.size}" scrollbarMode="showOnDemand" />
+			<widget source="statusbar" render="Label" position="10,310" size="490,25" font="Regular;22" foregroundColor="#ffa323" />
+			<widget source="textbar" render="Label" position="{label.pos}" size="240,35" font="Regular;30" foregroundColor="#ffa323" transparent="1" />
+
+			<widget source="global.CurrentTime" render="Label" position="{date.pos}" size="90,23" font="Regular;18" halign="left" valign="top" foregroundColor="#3366ff" transparent="1">
+				<convert type="ClockToText">Format:%d.%m.%Y</convert>
+			</widget>
+			<widget source="global.CurrentTime" render="Label" position="{time.pos}" size="90,23" font="Regular;18" halign="left" valign="top" foregroundColor="#3366ff" transparent="1">
+				<convert type="ClockToText">Format:%H:%M:%S</convert>
+			</widget>
+		</screen>"""
+
+	#<eLabel text="BA - Images" position="{label.pos}" size="240,35" font="Regular;30" foregroundColor="#ffa323" transparent="1" />
+	def __init__(self, session):
+		#switch automatic to current skin
+		current_w = getDesktop(0).size().width()
+		current_h = getDesktop(0).size().height()
+		print "DESKTOPsize is",current_w,current_h
+
+		# define the start koordinates and size
+		if current_w == 1280:
+				size_w = 720
+				size_h = 376
+		else:
+				size_w = 520
+				size_h = 376
+
+		# calculate Skin koordinates
+		font = "Regular;18"
+		pos_w = (current_w - size_w)/2
+		pos_h = (current_h - size_h)/2
+		list_w = size_w - 200
+		list_pos = 150
+		red_pos = size_w/4 - 80
+		green_pos = size_w/4 + 35
+		yellow_pos = size_w/4 + 145
+		blue_pos = size_w/4 + 320
+
+		red_led_pos = red_pos - 35
+		green_led_pos = green_pos - 35
+		yellow_led_pos = yellow_pos - 35
+		blue_led_pos = blue_pos - 35
+		label_pos = size_w/2 -90
+		logo_pos = size_w -92
+		date_pos = size_w/2 - 100
+		time_pos = size_w/2 + 50
+
+		# set Skinvariables
+		self.dict = {
+				'font': font,
+				'list.size': "%i,232"%(list_w),
+				'list.pos': "%i,90"%(list_pos),
+				'screen.size': "%i,%i"%(size_w,size_h),
+				'screen.pos': "%i,%i"%(pos_w,pos_h),
+				'red.pos': "%i,53"%(red_pos),
+				'green.pos': "%i,53"%(green_pos),
+				'blue.pos': "%i,53"%(blue_pos),
+				'yellow.pos': "%i,53"%(yellow_pos),
+				'red_led.pos': "%i,53"%(red_led_pos),
+				'green_led.pos': "%i,53"%(green_led_pos),
+				'yellow_led.pos': "%i,53"%(yellow_led_pos),
+				'blue_led.pos': "%i,53"%(blue_led_pos),
+				'label.pos': "%i,12"%(label_pos),
+				'logo.pos': "%i,295"%(logo_pos),
+				'date.pos': "%i,355"%(date_pos),
+				'time.pos': "%i,355"%(time_pos),
+				}
+
+		self.skin = applySkinVars(DelImage.skin,self.dict)
+		Screen.__init__(self, session)
+
+		self["statusbar"] = StaticText()
+		self["textbar"] = StaticText()
+		self.focus = None
+		self["textbar"].text = _("Image-Select")
+		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions", "MenuActions", "MovieSelectionActions"],
+		{
+			"ok": self.KeyOk,
+			"menu": self.settings_menu,
+			"cancel": self.Exit,
+			"right": self.rightDown,
+			"left": self.leftUp,
+			"up": self.up,
+			"down": self.down,
+			"red": self.plugin_select,
+			"yellow": self.settings_para,
+			"blue": self.plugin_remove,
+			"green": self.ipk_remove
+		}, -1)
+
+		self.ipklist = []
+		self.filelist = []
+		self.devicelist = []
+		self.select = "1"
+		self.BAtyp = "new"
+
+		self.BAtyp = ""
+		self.currDir = "/mnt/usb"
+		self.devicelist = FileList(self.currDir, showDirectories = True, isTop = True)
+		self["devicelist"] = self.devicelist
+
+		if os.path.exists("/var/baroot/activImage") is True:
+			self.BAtyp = "new"
+		else:
+			if os.path.exists("/var/baroot") is False:
+				os.system("mkdir /var/baroot")
+			os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/mountbaroot.sh")
+			if os.path.exists("/var/baroot/UFS_images") is True:
+				self.BAtyp = "old"
+
+
+		if self.BAtyp == "new":
+			self.currDir = "/var/baroot/UFS_Images/"
+			if not pathExists(self.currDir):
+				self.currDir = "/"
+			self.ipklist = FileList(self.currDir, showDirectories = True, isTop = True)
+			self.BAtyp = "new"
+
+		else:
+			# it is an old BA < 5.4.3
+			self.SearchPattern = "(?i)^.*\.(tar.gz)"
+			self.currDir = "/var/baroot/UFS_Images/"
+			self.ipklist = FileList(self.currDir, showDirectories = True, isTop = True, matchingPattern = self.SearchPattern)
+			if not pathExists(self.currDir):
+				self.currDir = "/"
+
+
+			self.currDir = "/mnt/usb"
+			self.devicelist = FileList(self.currDir, showDirectories = True, isTop = True)
+			self["devicelist"] = self.devicelist
+
+		self["ipklist"] = self.ipklist
+
+
+		if self.BAtyp == "new":
+			self.currDir = "/var/baroot/ba/ba/"
+			#if os.path.exists("/var/baroot/ba/ba/Flash") is False:
+			#	os.system("mkdir -p /var/baroot/ba/ba/Flash")
+			if not pathExists(self.currDir):
+				self.currDir = "/"
+			self.BAtyp = "new"
+		else:
+			# it is an old BA < 5.4.3
+			self.currDir = "/mnt/usb"
+			self.devicelist = FileList(self.currDir, showDirectories = True, isTop = True)
+			self["devicelist"] = self.devicelist
+
+			self.currDir = "/var/baroot/ba/ba/"
+			if not pathExists(self.currDir):
+				self.currDir = "/"
+			self.BAtyp = "old"
+
+		self.filelist = FileList(self.currDir, showDirectories = True, isTop = True)
+		self["filelist"] = self.filelist
+
+		self["ipklist"].hide()
+		self["devicelist"].hide()
+		self["filelist"].show()
+
+		#set the focus to the primary filelist
+		self.focus = self.LIST_FILE
+
+	def up(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].up()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].up()
+		if self.focus is self.LIST_DEVICE:
+			self["devicelist"].up()
+
+	def down(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].down()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].down()
+		if self.focus is self.LIST_DEVICE:
+			self["devicelist"].down()
+
+
+	def leftUp(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].pageUp()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].pageUp()
+		if self.focus is self.LIST_DEVICE:
+			self["devicelist"].pageUp()
+
+
+	def rightDown(self):
+		if self.focus is self.LIST_FILE:
+			self["filelist"].pageDown()
+		if self.focus is self.LIST_IPK:
+			self["ipklist"].pageDown()
+		if self.focus is self.LIST_DEVICE:
+			self["devicelist"].pageDown()
+
+
+	def settings_para(self):
+		if self.BAtyp == "new":
+			self["ipklist"].hide()
+			self["filelist"].show()
+			self["devicelist"].hide()
+			self.focus = self.LIST_FILE
+			self.select = "2"
+			self["textbar"].text = _("Settings-Copy")
+			#if os.path.exists("/var/baroot/ba/ba/Flash") is True:
+			#	os.system("rm -r /var/baroot/ba/ba/Flash")
+			self["filelist"].refresh()
+
+	def plugin_remove(self):
+		self["ipklist"].hide()
+		self["filelist"].show()
+		self.focus = self.LIST_FILE
+		self.select = "0"
+		self["textbar"].text = _("Image-Delete")
+		#if os.path.exists("/var/baroot/ba/ba/Flash") is True:
+		#	os.system("rm -r /var/baroot/ba/ba/Flash")
+		self["filelist"].refresh()
+
+	def plugin_select(self):
+		self["ipklist"].hide()
+		self["filelist"].show()
+		self.focus = self.LIST_FILE
+		self.select = "1"
+		self["textbar"].text = _("Image-Select")
+		#if self.BAtyp == "new":
+		#		if os.path.exists("/var/baroot/ba/ba/Flash") is False:
+		#			os.system("mkdir -p /var/baroot/ba/ba/Flash")
+		#		self["filelist"].refresh()
+
+	def ipk_remove(self):
+			self["filelist"].hide()
+			self["devicelist"].hide()
+			self["ipklist"].show()
+			self.focus = self.LIST_IPK
+			self["textbar"].text = _("Image-Install")
+
+	def KeyOk(self):
+		# call the uninstall-Script with os.system
+		if self.focus is self.LIST_DEVICE:
+			self.currDir = "/var/baroot/ba/ba/"
+			message = "%s %s" % (_("Wollen sie in diesem Device installieren?"),self.devicelist.getFilename())
+			self.session.openWithCallback(self.oldimage_install, MessageBox, message, MessageBox.TYPE_YESNO)
+
+
+		if self.focus is self.LIST_IPK:
+			if self.BAtyp == "old":
+			 	 self.focus = self.LIST_DEVICE
+			 	 self["filelist"].hide()
+			 	 self["devicelist"].show()
+			 	 self["ipklist"].hide()
+			 	 self["textbar"].text = _("Zieldevice")
+			 	 self["filelist"].refresh()
+			 	 self["ipklist"].refresh()
+			 	 self["devicelist"].refresh()
+			else:
+			 	 self.currDir = "/var/baroot/ba/ba/"
+			 	 message = "%s %s" % (_("Wollen sie dieses Image wirklich installieren?"),self.ipklist.getFilename())
+			 	 self.session.openWithCallback(self.image_install, MessageBox, message, MessageBox.TYPE_YESNO)
+
+		if self.focus is self.LIST_FILE:
+			self.urlname = self.filelist.getFilename()
+			if self.BAtyp == "new":
+			 	 self.urlname2 = self.urlname.replace("/var/baroot/ba/ba/","")
+			else:
+			 	 self.urlname2 = self.urlname.replace("/var/baroot/ba/ba/","")
+			self.urlname2 = self.urlname2.replace("/","")
+
+			if self.select == "0":
+			 	 self.currDir = "/var/baroot/UFS_Images/"
+			 	 message = "%s %s" % (_("Sind sie sicher dieses Image zu loeschen?"),self.urlname2)
+			 	 self.session.openWithCallback(self.image_install, MessageBox, message, MessageBox.TYPE_YESNO)
+
+			if self.select == "1":
+			 	 if self.BAtyp == "new":
+			 	 		self.currDir = "/var/baroot/UFS_Images/"
+			 	 else:
+			 	 		self.currDir = "/var/baroot/UFS_Images/"
+			 	 message = "%s %s" % (_("Dieses Image auswaehlen?"),self.urlname2)
+			 	 self.session.openWithCallback(self.image_install, MessageBox, message, MessageBox.TYPE_YESNO)
+
+			if self.select == "2":
+			 	 if self.BAtyp == "new":
+			 	 		self.currDir = "/var/baroot/UFS_Images/"
+			 	 		message = "%s %s" % (_("Settings in dieses Image kopieren?"),self.urlname2)
+			 	 		self.session.openWithCallback(self.settings_copy, MessageBox, message, MessageBox.TYPE_YESNO)
+
+
+	def image_install(self, answer):
+		if answer == True:
+      # install Image
+			if self.focus is self.LIST_IPK:
+				self["filelist"].refresh()
+				self["ipklist"].refresh()
+				self.currDir = "/var/baroot/UFS_Images/"
+				self.urlname = self.ipklist.getFilename()
+				self.error_counter = "0"
+
+				if os.path.exists("/bootp.conf") is False:
+						message = "%s" % (_("Das ist kein Multiboot BA!\nbootp.conf fehlt"))
+						self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+						self.error_counter = "1"
+
+				if os.path.exists("/var/baroot/activImage") is False:
+						message = "%s" % (_("Das ist kein Multiboot BA!\nactivImage fehlt!"))
+						self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+						self.error_counter = "1"
+
+				if os.path.exists("/var/baroot/activImage") is True:
+					# is enough freespace on stick?
+					os.system("df /var/baroot |grep rootfs|cut -c41-50 >/tmp/free.txt")
+					if os.path.exists("/tmp/free.txt") is True:
+						f = open("/tmp/free.txt", "r" )
+						for line in f:
+							freesize = line.lstrip()
+						f.close
+						freesize = freesize.replace("\n","")
+						freesize = int(freesize)
+
+					if 42000 > freesize:
+						print "nicht OK"
+						message = "%s" % (_("Zu wenig Speicher im Stick frei!\n  Speicher = " + str(freesize)))
+						self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+						self.error_counter = "1"
+					else:
+						print "OK" + str(freesize)
+						if os.path.exists("/var/baroot/ba/ba.sh") is False:
+							if os.path.exists("/var/baroot") is False:
+								os.system("mkdir /var/baroot")
+
+				# is it an multiboot environment?
+				if self.error_counter == "0":
+				#if os.path.exists("/var/baroot/activImage") is True:
+
+					evfd.getInstance().vfd_write_string("Install Image")
+					self["statusbar"].text = _("Decompressing Image in progress...")
+					#message = "%s" % (_("Das Image wird nun entpackt und installiert!"))
+					#self.session.open(MessageBox, message, MessageBox.TYPE_INFO,10)
+
+					# this is the Imagename in /var/baroot/UFS_Images
+					self.urlnameorg = self.urlname
+					self.urlname = self.urlname.replace(".tar.gz","")
+					self.urlname_org = self.urlname
+					# chek if exist Image, then make a newer
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_2"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_3"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_4"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_5"
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_6"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_7"
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_8"
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_9"
+					TargetDir = "/var/baroot/ba/ba/" + self.urlname
+					if os.path.exists(TargetDir) is True:
+						self.urlname = self.urlname_org + "_10"
+
+
+					TargetDir = "mkdir -p /var/baroot/ba/ba/" + self.urlname
+					os.system(TargetDir)
+
+					# write name to userfile
+					TargetDir = "NewDir=" + self.urlname
+					ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_url", "w")
+					ffile.write(TargetDir)
+					ffile.close()
+
+					TarString = "cd /var/baroot/UFS_Images; tar -xzf " + self.urlnameorg + " -C /var/baroot/ba/ba/" + self.urlname
+					os.system(TarString)
+					#self.session.open(Console, title = "decompressing is running", cmdlist = [TarString])
+
+					CpString = "cp /bootp.conf /var/baroot/ba/ba/" + self.urlname
+					os.system(CpString)
+					if os.path.exists("/bootp2.conf") is True:
+						CpString = "cp /bootp2.conf /var/baroot/ba/ba/" + self.urlname
+						os.system(CpString)
+
+					#CpString = "cp /etc/init.d/rcS /var/baroot/ba/ba/" + self.urlname + "/etc/init.d/rcS"
+					#os.system(CpString)
+
+					RCS = "/var/baroot/ba/ba/" + self.urlname + "/etc/init.d/rcS"
+					#CpString = "cat /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/rcs_header > /tmp/rcs.txt"
+					#os.system(CpString)
+
+					CpString = "sed -e 's*#!/bin/sh*#*g' -i " + RCS
+					os.system(CpString)
+
+					ffile = open("/tmp/rcs.txt", "w")
+					CpString = "#!/bin/sh"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = ""
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "if [ -e /activImage ]; then"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "  echo \"Starte chroot\""
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "  mount -o bind /baroot /activImage/var/baroot"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "  exec chroot /activImage /etc/init.d/rcS"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = "fi"
+					ffile.write(CpString)
+					ffile.write("\n")
+					CpString = ""
+					ffile.write(CpString)
+					ffile.write("\n")
+					ffile.close()
+
+					CpString = "cat " + RCS + " >> /tmp/rcs.txt"
+					os.system(CpString)
+					CpString = "cp /tmp/rcs.txt " + RCS
+					os.system(CpString)
+					CpString = "chmode 755 " + RCS
+					os.system(CpString)
+					CpString = "sed -e 's/fsck /#fsck /g' -i /var/baroot/ba/ba/" + self.urlname + "/etc/init.d/mountvirtfs"
+					os.system(CpString)
+					CpString = "mkdir -p /var/baroot/ba/ba/" + self.urlname + "/var/baroot"
+					os.system(CpString)
+					os.system("sync")
+
+          # set automount in rcs
+					os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/makercs.sh")
+
+
+          # and now we copy the settings
+					if config.AddonManager.ba_settings_on.value == 1:
+						evfd.getInstance().vfd_write_string("install Settings")
+						self["statusbar"].text = _("Settings werden uebernommen....")
+
+						CpString = "rm /var/baroot/ba/ba/" + self.urlname + "/var/etc/.firstboot"
+						os.system(CpString)
+						CpString = "cp -RP /var/emu /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp -RP /var/keys /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp /var/etc/active_cam /var/baroot/ba/ba/" + self.urlname + "/var/etc/active_cam"
+						os.system(CpString)
+						CpString = "cp /var/etc/*emu /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+						CpString = "cp /var/etc/smbfs /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+						CpString = "cp /var/etc/upnpfs /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+
+
+						CpString = "cp /var/*emu /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/lamedb /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/bouquets* /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/userbouquet* /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /etc/tuxbox/satellites.xml /var/baroot/ba/ba/" + self.urlname + "/etc/tuxbox/satellites.xml"
+						os.system(CpString)
+						#CpString = "cp /usr/local/share/enigma2/settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						#os.system(CpString)
+						CpString = "cp /usr/automount/amount.ini /var/baroot/ba/ba/" + self.urlname + "/usr/automount/amount.ini"
+						os.system(CpString)
+
+						#// Check for default skin
+						defaultSkin = 0
+						PathString = "/var/baroot/ba/ba/" + self.urlname + "/var/usr/local/share/enigma2/settings"
+						if os.path.exists(PathString) is True:
+							em = open(PathString)
+							e = em.readlines()
+							em.close()
+							for line in e:
+								if line.find("config.skin.primary_skin") > -1:
+										defaultSkin = 1
+										PrimarySkin = line
+
+						CpString = "cp /usr/local/share/enigma2/settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+
+						if defaultSkin == 1:
+								em = open(PathString, "a")
+								em.write(PrimarySkin)
+								em.close()
+
+
+					if config.AddonManager.ba_skins_on.value == 1:
+							CpString = "cp -RP /usr/local/share/enigma2/ /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/"
+							os.system(CpString)
+
+							CpString = "cp -RP /usr/lib/enigma2/python/Plugins/Extensions/InfoBarConfig/ /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/Extensions/"
+							os.system(CpString)
+
+							CpString = "cp /usr/lib/enigma2/python/Components/Converter/MaxCryptoInfo.pyc /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Components/Converter/"
+							os.system(CpString)
+
+							CpString = "cp /usr/lib/enigma2/python/Components/Converter/MaxServiceInfo.pyc /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Components/Converter/"
+							os.system(CpString)
+
+							if os.path.exists("/usr/share/enigma2/picon/") is True:
+								CpString = "cp -RP /usr/share/enigma2/picon/ /var/baroot/ba/ba/" + self.urlname + "/usr/share/enigma2/"
+								os.system(CpString)
+
+					if config.AddonManager.ba_plugins_on.value == 1:
+							# save AddonManager + Aafpanel, because in new image is newer
+							os.system("cp -RP /usr/lib/enigma2/python/Plugins/Extensions/AddonManager /tmp/")
+							os.system("cp -RP /usr/lib/enigma2/python/Plugins/Extensions/Aafpanel /tmp/")
+							CpString = "cp -RP /usr/lib/enigma2/python/Plugins/Extensions /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+							# restore AddonManager + Aafpanel
+							CpString = "cp -RP /tmp/AddonManager /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+							CpString = "cp -RP /tmp/Aafpanel /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+
+					if config.AddonManager.ba_remove_on.value == 1:
+							CpString = "rm -r /var/baroot/UFS_Images/" + self.urlnameorg
+							os.system(CpString)
+
+					if config.AddonManager.ba_usersettings_on.value == 1:
+						if os.path.exists("/var/baroot/default_settings") is True:
+							CpString = "cp /var/baroot/default_settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/settings"
+							os.system(CpString)
+
+					if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh") is True:
+						os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh")
+
+
+					evfd.getInstance().vfd_write_string("Image Ready!")
+					restartbox = self.session.openWithCallback(self.restart,MessageBox,_("Das Image ist nun fertig installiert!\nSoll ein Neustart durchgefuehrt werden?"), MessageBox.TYPE_YESNO)
+					restartbox.setTitle(_("UFS-Box starten?"))
+
+
+      # delete Image
+			if self.focus is self.LIST_FILE:
+				self.imagename = self.filelist.getFilename()
+				if self.imagename == "/var/baroot/ba/":
+					print "/var/baroot/ba/"
+				else:
+					#if self.BAtyp == "new":
+					fd=open("/var/baroot/ba/.baboot")
+					imgname=fd.read()
+					fd.close()
+					imgname = imgname.replace("\n","")
+					imgname = "/var/baroot/ba/ba/" + imgname + "/"
+
+					# delete Image
+					if self.select == "0":
+						if self.imagename == imgname:
+							message = "%s" % (_("WARNUNG\nDas aktive Image kann NICHT geloescht werden!"))
+							self.session.open(MessageBox, message, MessageBox.TYPE_INFO,5)
+						else:
+							message = "%s" % (_("Das Image wird jetzt geloescht!"))
+							self.session.open(MessageBox, message, MessageBox.TYPE_INFO,3)
+							if self.BAtyp == "new":
+								os.system("rm -r %s" % self.imagename)
+							else:
+								# and now we read the devicename
+								fileread = open(self.imagename + "bootp.conf", "r" )
+								for line in fileread:
+									if line.split('=')[0] == "BADEVICE":
+											self.device = line.split('=')[1]
+											self.device = self.device.replace("\n","")
+								fileread.close()
+
+								# read mountpoint
+								procfile = open("/proc/mounts")
+								for n in procfile.readlines():
+										if n.split(' ')[0] == self.device:
+											self.device = n.split(' ')[1]
+								procfile.close()
+								os.system("rm -r %s" % self.device)
+								os.system("rm -r %s" % self.imagename)
+
+					# select Image
+					if self.select == "1":
+						if self.imagename == imgname:
+							message = "%s" % (_("Dieses Image ist bereits AKTIV!"))
+							self.session.open(MessageBox, message, MessageBox.TYPE_INFO,5)
+						else:
+							self.urlname = self.imagename.replace("/var/baroot/ba/ba/","")
+							self.urlname = self.urlname.replace("/","")
+
+							restartbox = self.session.openWithCallback(self.restart,MessageBox,_("Soll nun ein Neustart durchgefuehrt werden?"), MessageBox.TYPE_YESNO)
+							restartbox.setTitle(_("UFS-Box starten?"))
+
+		self["filelist"].refresh()
+		self["ipklist"].refresh()
+		self["devicelist"].refresh()
+
+	def restart(self, answer):
+		if answer is True:
+			# make bootimage active for restart
+			if self.BAtyp == "new":
+				ffile = open("/var/baroot/ba/.baboot", "w")
+				ffile.write(self.urlname)
+				ffile.write("\n")
+				ffile.close()
+				#if os.path.exists("/var/baroot/ba/ba/Flash") is True:
+				#	os.system("rm -r /var/baroot/ba/ba/Flash")
+			else:
+
+				ffile = open("/var/baroot/ba/.baboot", "w")
+				ffile.write(self.urlname_org)
+				ffile.write("\n")
+				ffile.close()
+				# and now we write the devicename
+				fileread = open("/var/baroot/ba/ba/" + self.urlname_org + "/bootp.conf", "r" )
+				for line in fileread:
+					if line.split('=')[0] == "BADEVICE":
+							self.device = line.split('=')[1]
+							ffile = open("/var/baroot/ba/.badevice", "w")
+							ffile.write(self.device)
+							#ffile.write("\n")
+							ffile.close()
+				fileread.close()
+
+			os.system("sync")
+			os.system("reboot -f")
+
+
+	def Exit(self):
+		if self.rebootflag:
+			#self["statusbar"].text = _("rebooting...")
+			message = "%s" % (_("Ein Plugin hat einen Neustart angefordert!\nDie Box wird nun rebootet!"))
+			self.session.open( MessageBox, message, MessageBox.TYPE_INFO)
+			TryQuitMainloop(self.session,2)
+		self.close()
+
+	def settings_menu(self):
+		self.session.open(AddonConfigScreen)
+
+
+
+	def settings_copy(self, answer):
+		if answer == True:
+      # install Image
+			if self.focus is self.LIST_FILE:
+				self["filelist"].refresh()
+				self["ipklist"].refresh()
+				self.currDir = "/var/baroot/UFS_Images/"
+				self.urlname = self.urlname2
+				self.error_counter = "0"
+
+				if os.path.exists("/bootp.conf") is False:
+						message = "%s" % (_("Das ist kein Multiboot BA!\nbootp.conf fehlt"))
+						self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+						self.error_counter = "1"
+
+				if os.path.exists("/var/baroot/activImage") is False:
+						message = "%s" % (_("Das ist kein Multiboot BA!\nactivImage fehlt!"))
+						self.session.open(MessageBox, message, MessageBox.TYPE_ERROR)
+						self.error_counter = "1"
+
+				# is it an multiboot environment?
+				if self.error_counter == "0":
+					evfd.getInstance().vfd_write_string("Settings copy")
+
+					# write name to userfile
+					TargetDir = "NewDir=" + self.urlname
+					ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_url", "w")
+					ffile.write(TargetDir)
+					ffile.close()
+
+					CpString = "cp /bootp.conf /var/baroot/ba/ba/" + self.urlname
+					os.system(CpString)
+					if os.path.exists("/bootp2.conf") is True:
+						CpString = "cp /bootp2.conf /var/baroot/ba/ba/" + self.urlname
+						os.system(CpString)
+
+          # and now we copy the settings
+					if config.AddonManager.ba_settings_on.value == 1:
+						evfd.getInstance().vfd_write_string("install Settings")
+						self["statusbar"].text = _("Settings werden uebernommen....")
+
+						CpString = "rm /var/baroot/ba/ba/" + self.urlname + "/var/etc/.firstboot"
+						os.system(CpString)
+						CpString = "cp -RP /var/emu /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp -RP /var/keys /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp /var/etc/active_cam /var/baroot/ba/ba/" + self.urlname + "/var/etc/active_cam"
+						os.system(CpString)
+						CpString = "cp /var/etc/*emu /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+						CpString = "cp /var/etc/smbfs /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+						CpString = "cp /var/etc/upnpfs /var/baroot/ba/ba/" + self.urlname + "/var/etc/"
+						os.system(CpString)
+
+
+						CpString = "cp /var/*emu /var/baroot/ba/ba/" + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/lamedb /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/bouquets* /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/userbouquet* /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /etc/tuxbox/satellites.xml /var/baroot/ba/ba/" + self.urlname + "/etc/tuxbox/satellites.xml"
+						os.system(CpString)
+						#CpString = "cp /usr/local/share/enigma2/settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						#os.system(CpString)
+						CpString = "cp /usr/automount/amount.ini /var/baroot/ba/ba/" + self.urlname + "/usr/automount/amount.ini"
+						os.system(CpString)
+
+						#// Check for default skin
+						defaultSkin = 0
+						PathString = "/var/baroot/ba/ba/" + self.urlname + "/var/usr/local/share/enigma2/settings"
+						if os.path.exists(PathString) is True:
+							em = open(PathString)
+							e = em.readlines()
+							em.close()
+							for line in e:
+								if line.find("config.skin.primary_skin") > -1:
+										defaultSkin = 1
+										PrimarySkin = line
+
+						CpString = "cp /usr/local/share/enigma2/settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+
+						if defaultSkin == 1:
+								em = open(PathString, "a")
+								em.write(PrimarySkin)
+								em.close()
+
+
+					if config.AddonManager.ba_skins_on.value == 1:
+							CpString = "cp -RP /usr/local/share/enigma2/ /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/"
+							os.system(CpString)
+
+							CpString = "cp -RP /usr/lib/enigma2/python/Plugins/Extensions/InfoBarConfig/ /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/Extensions/"
+							os.system(CpString)
+
+							CpString = "cp /usr/lib/enigma2/python/Components/Converter/MaxCryptoInfo.pyc /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Components/Converter/"
+							os.system(CpString)
+
+							CpString = "cp /usr/lib/enigma2/python/Components/Converter/MaxServiceInfo.pyc /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Components/Converter/"
+							os.system(CpString)
+
+							if os.path.exists("/usr/share/enigma2/picon/") is True:
+								CpString = "cp -RP /usr/share/enigma2/picon/ /var/baroot/ba/ba/" + self.urlname + "/usr/share/enigma2/"
+								os.system(CpString)
+
+					if config.AddonManager.ba_plugins_on.value == 1:
+							# save AddonManager + Aafpanel, because in new image is newer
+							os.system("cp -RP /usr/lib/enigma2/python/Plugins/Extensions/AddonManager /tmp/")
+							os.system("cp -RP /usr/lib/enigma2/python/Plugins/Extensions/Aafpanel /tmp/")
+							CpString = "cp -RP /usr/lib/enigma2/python/Plugins/Extensions /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+							# restore AddonManager + Aafpanel
+							CpString = "cp -RP /tmp/AddonManager /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+							CpString = "cp -RP /tmp/Aafpanel /var/baroot/ba/ba/" + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+
+					if config.AddonManager.ba_remove_on.value == 1:
+							CpString = "rm -r /var/baroot/UFS_Images/" + self.urlnameorg
+							os.system(CpString)
+
+					if config.AddonManager.ba_usersettings_on.value == 1:
+						if os.path.exists("/var/baroot/default_settings") is True:
+							CpString = "cp /var/baroot/default_settings /var/baroot/ba/ba/" + self.urlname + "/usr/local/share/enigma2/settings"
+							os.system(CpString)
+
+					if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh") is True:
+						os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh")
+
+
+					evfd.getInstance().vfd_write_string("Image Ready!")
+					restartbox = self.session.openWithCallback(self.restart,MessageBox,_("Die Settings wurden kopiert!\nSoll ein Neustart durchgefuehrt werden?"), MessageBox.TYPE_YESNO)
+					restartbox.setTitle(_("UFS-Box starten?"))
+
+	def oldimage_install(self, answer):
+		if answer == True:
+      # install Old-Image
+			if self.focus is self.LIST_DEVICE:
+				self.focus = self.LIST_IPK
+				self["filelist"].hide()
+				self["devicelist"].hide()
+				self["ipklist"].show()
+				self["textbar"].text = _("Install-Image")
+				self["filelist"].refresh()
+				self["ipklist"].refresh()
+				self["devicelist"].refresh()
+
+				self.target = self.devicelist.getFilename()
+				self.currDir = "/UFS_Images/"
+				self.urlname = self.ipklist.getFilename()
+				self.error_counter = "0"
+
+
+      # install Old-Image
+				if self.BAtyp == "old":
+					evfd.getInstance().vfd_write_string("Install Image")
+					self["statusbar"].text = _("Decompressing Image in progress...")
+
+					# this is the Imagename in /var/baroot/UFS_Images
+					self.urlnameorg = self.urlname
+					self.urlname = self.urlname.replace(".img.tar.gz","")
+					self.urlname = self.urlname.replace(".tar.gz","")
+					self.urlname_org = self.urlname
+
+					# write name to userfile
+					TargetDir = "NewDir=" + self.urlname_org
+					ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_url", "w")
+					ffile.write(TargetDir)
+					ffile.close()
+
+ 					self.fulltarget = "/mnt/usb/" + self.target
+					TarString = "cd /UFS_Images; tar -xzf " + self.urlnameorg + " -C " + self.fulltarget
+					os.system(TarString)
+
+					os.system("sync")
+ 					self.device = "/dev/sda2"
+ 					# read mountpoint
+					procfile = open("/proc/mounts")
+					for n in procfile.readlines():
+						if n.split(' ')[1] == self.fulltarget:
+							self.device = n.split(' ')[0]
+					procfile.close()
+
+					# read current imagename
+					if os.path.exists("/ba/.baboot") is True:
+						f = open("/ba/.baboot", "r" )
+						for line in f:
+							self.sourceimg = line.lstrip()
+						f.close
+						self.sourceimg = self.sourceimg.replace("\n","")
+
+					TarString = "mkdir -p /ba/ba/" + self.urlname
+					os.system(TarString)
+
+					self.devid = "0:" + self.device[8:9]
+					fileread = open("/ba/ba/" + self.sourceimg + "/bootp.conf", "r" )
+					filewrite = open("/ba/ba/" + self.urlname + "/bootp.conf", "w" )
+
+					self.urlname = self.fulltarget
+
+					for line in fileread:
+								if line.split('=')[0] == "BADEVICE":
+											line = "BADEVICE=" + self.device + "\n"
+								if line.split('=')[0] == "BADEVID":
+											line = "BADEVID=" + self.devid + "\n"
+								filewrite.write(line)
+					fileread.close()
+					filewrite.close()
+
+          # and now we copy the settings
+					if config.AddonManager.ba_settings_on.value == 1:
+						evfd.getInstance().vfd_write_string("install Settings")
+						self["statusbar"].text = _("Settings werden uebernommen....")
+
+						CpString = "rm  " + self.urlname + "/var/etc/.firstboot"
+						os.system(CpString)
+						CpString = "cp -RP /var/emu " + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp -RP /var/keys " + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp /var/etc/active_cam " + self.urlname + "/var/etc/active_cam"
+						os.system(CpString)
+						CpString = "cp /var/etc/*emu " + self.urlname + "/var/etc/"
+						os.system(CpString)
+						CpString = "cp /var/etc/smbfs " + self.urlname + "/var/etc/"
+						os.system(CpString)
+						CpString = "cp /var/etc/upnpfs " + self.urlname + "/var/etc/"
+						os.system(CpString)
+
+
+						CpString = "cp /var/*emu " + self.urlname + "/var/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/lamedb " + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/bouquets* " + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /usr/local/share/enigma2/userbouquet* " + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+						CpString = "cp /etc/tuxbox/satellites.xml " + self.urlname + "/etc/tuxbox/satellites.xml"
+						os.system(CpString)
+						#CpString = "cp /usr/local/share/enigma2/settings " + self.urlname + "/usr/local/share/enigma2/"
+						#os.system(CpString)
+						CpString = "cp /usr/automount/amount.ini " + self.urlname + "/usr/automount/amount.ini"
+						os.system(CpString)
+
+						#// Check for default skin
+						defaultSkin = 0
+						PathString = self.urlname + "/var/usr/local/share/enigma2/settings"
+						if os.path.exists(PathString) is True:
+							em = open(PathString)
+							e = em.readlines()
+							em.close()
+							for line in e:
+								if line.find("config.skin.primary_skin") > -1:
+										defaultSkin = 1
+										PrimarySkin = line
+
+						CpString = "cp /usr/local/share/enigma2/settings " + self.urlname + "/usr/local/share/enigma2/"
+						os.system(CpString)
+
+						if defaultSkin == 1:
+								em = open(PathString, "a")
+								em.write(PrimarySkin)
+								em.close()
+
+
+					if config.AddonManager.ba_skins_on.value == 1:
+							CpString = "cp -RP /usr/local/share/enigma2/ " + self.urlname + "/usr/local/share/"
+							os.system(CpString)
+
+							CpString = "cp -RP /usr/lib/enigma2/python/Plugins/Extensions/InfoBarConfig/ " + self.urlname + "/usr/lib/enigma2/python/Plugins/Extensions/"
+							os.system(CpString)
+
+							CpString = "cp /usr/lib/enigma2/python/Components/Converter/MaxCryptoInfo.pyc " + self.urlname + "/usr/lib/enigma2/python/Components/Converter/"
+							os.system(CpString)
+
+							CpString = "cp /usr/lib/enigma2/python/Components/Converter/MaxServiceInfo.pyc " + self.urlname + "/usr/lib/enigma2/python/Components/Converter/"
+							os.system(CpString)
+
+							if os.path.exists("/usr/share/enigma2/picon/") is True:
+								CpString = "cp -RP /usr/share/enigma2/picon/ " + self.urlname + "/usr/share/enigma2/"
+								os.system(CpString)
+
+					if config.AddonManager.ba_plugins_on.value == 1:
+							# save AddonManager + Aafpanel, because in new image is newer
+							os.system("cp -RP /usr/lib/enigma2/python/Plugins/Extensions/AddonManager /tmp/")
+							os.system("cp -RP /usr/lib/enigma2/python/Plugins/Extensions/Aafpanel /tmp/")
+							CpString = "cp -RP /usr/lib/enigma2/python/Plugins/Extensions " + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+							# restore AddonManager + Aafpanel
+							CpString = "cp -RP /tmp/AddonManager " + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+							CpString = "cp -RP /tmp/Aafpanel " + self.urlname + "/usr/lib/enigma2/python/Plugins/"
+							os.system(CpString)
+
+					if config.AddonManager.ba_remove_on.value == 1:
+							CpString = "rm -r /var/baroot/ba/UFS_Images/" + self.urlname
+							os.system(CpString)
+
+					if config.AddonManager.ba_usersettings_on.value == 1:
+						if os.path.exists("/default_settings") is True:
+							CpString = "cp /default_settings " + self.urlname + "/usr/local/share/enigma2/settings"
+							os.system(CpString)
+
+					if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh") is True:
+						os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh")
+
+					evfd.getInstance().vfd_write_string("Image Ready!")
+					#restartbox = self.session.openWithCallback(self.restart,MessageBox,_("Das Image ist nun fertig installiert!\nSoll ein Neustart durchgefuehrt werden?"), MessageBox.TYPE_YESNO)
+					#restartbox.setTitle(_("UFS-Box starten?"))
+		 	 		message = "%s" % (_("Das Image ist nun fertig installiert!\nSoll ein Neustart durchgefuehrt werden?"))
+		 	 		self.session.openWithCallback(self.restart, MessageBox, message, MessageBox.TYPE_YESNO)
