X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d3bc0e501ea1768cfb24ee6d7a780784e956a706..cab018779de4f2f01e0fe651e71112754ebd0ef8:/lib/python/Components/DreamInfoHandler.py diff --git a/lib/python/Components/DreamInfoHandler.py b/lib/python/Components/DreamInfoHandler.py index 261e800f..900a2180 100644 --- a/lib/python/Components/DreamInfoHandler.py +++ b/lib/python/Components/DreamInfoHandler.py @@ -1,8 +1,9 @@ import xml.sax -from Tools.Directories import crawlDirectory, resolveFilename, SCOPE_CONFIG, SCOPE_SKIN +from Tools.Directories import crawlDirectory, resolveFilename, SCOPE_CONFIG, SCOPE_SKIN, copyfile, copytree from Components.NimManager import nimmanager from Components.Ipkg import IpkgComponent from Components.config import config, configfile +from Tools.HardwareInfo import HardwareInfo from enigma import eConsoleAppContainer, eDVBDB import os @@ -22,8 +23,7 @@ class InfoHandler(xml.sax.ContentHandler): self.elements = [] self.validFileTypes = ["skin", "config", "services", "favourites", "package"] self.prerequisitesMet = prerequisiteMet - - + def printError(self, error): print "Error in defaults xml files:", error raise InfoHandlerParseError, error @@ -98,6 +98,7 @@ class DreamInfoHandler: STATUS_INIT = 4 def __init__(self, statusCallback, blocking = False, neededTag = None): + self.hardware_info = HardwareInfo() self.directory = "/" self.neededTag = neededTag @@ -110,6 +111,7 @@ class DreamInfoHandler: self.console = eConsoleAppContainer() self.console.appClosed.get().append(self.installNext) + self.reloadFavourites = False self.statusCallback = statusCallback self.setStatus(self.STATUS_INIT) @@ -165,14 +167,19 @@ class DreamInfoHandler: if int(sat) not in nimmanager.getConfiguredSats(): return False if prerequisites.has_key("bcastsystem"): + has_system = False for bcastsystem in prerequisites["bcastsystem"]: if nimmanager.hasNimType(bcastsystem): - return True - return False + has_system = True + if not has_system: + return False if prerequisites.has_key("hardware"): + hardware_found = False for hardware in prerequisites["hardware"]: - # TODO: hardware detection - met = True + if hardware == self.hardware_info.device_name: + hardware_found = True + if not hardware_found: + return False return True def installPackages(self, indexes): @@ -186,6 +193,10 @@ class DreamInfoHandler: self.installPackage(self.installIndexes[self.currentlyInstallingMetaIndex]) def installPackage(self, index): + print "self.packageslist:", self.packageslist + if len(self.packageslist) <= index: + print "no package with index", index, "found... installing nothing" + return print "installing package with index", index, "and name", self.packageslist[index][0]["attributes"]["name"] attributes = self.packageslist[index][0]["attributes"] @@ -200,6 +211,10 @@ class DreamInfoHandler: self.statusCallback(self.status, None) def installNext(self, *args, **kwargs): + if self.reloadFavourites: + self.reloadFavourites = False + db = eDVBDB.getInstance().reloadBouquets() + self.currentIndex += 1 attributes = self.installingAttributes #print "attributes:", attributes @@ -213,10 +228,13 @@ class DreamInfoHandler: else: print "increment meta index to install next package" self.currentlyInstallingMetaIndex += 1 + self.currentAttributeIndex = 0 self.installPackage(self.installIndexes[self.currentlyInstallingMetaIndex]) + return self.setStatus(self.STATUS_WORKING) + print "currentAttributeIndex:", self.currentAttributeIndex currentAttribute = self.attributeNames[self.currentAttributeIndex] print "installing", currentAttribute, "with index", self.currentIndex @@ -287,7 +305,7 @@ class DreamInfoHandler: print "installing skin:", directory, " - ", name print "cp -a %s %s" % (directory, resolveFilename(SCOPE_SKIN)) if self.blocking: - os.system("cp -a %s %s" % (directory, resolveFilename(SCOPE_SKIN))) + copytree(directory, resolveFilename(SCOPE_SKIN)) self.installNext() else: if self.console.execute("cp -a %s %s" % (directory, resolveFilename(SCOPE_SKIN))): @@ -305,9 +323,10 @@ class DreamInfoHandler: def installFavourites(self, directory, name): print "installing favourites:", directory, " - ", name + self.reloadFavourites = True if self.blocking: - os.system("cp %s %s" % ((directory + name), resolveFilename(SCOPE_CONFIG))) + copyfile(directory + name, resolveFilename(SCOPE_CONFIG)) self.installNext() else: if self.console.execute("cp %s %s" % ((directory + name), resolveFilename(SCOPE_CONFIG))):