first pickle, then save to avoid killing config file on sigint
[enigma2.git] / lib / python / Components / DreamInfoHandler.py
index 8e34632c7ed80e8bc7a5a6cde8d9529e359f0dfd..2f2e757cf4e12b22662c7b2ebb1d9788cce612da 100644 (file)
@@ -1,5 +1,5 @@
 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
@@ -31,7 +31,7 @@ class InfoHandler(xml.sax.ContentHandler):
        def startElement(self, name, attrs):
                #print name, ":", attrs.items()
                self.elements.append(name)
-               if name in ["hardware", "bcastsystem", "satellite", "tag"]:
+               if name in ("hardware", "bcastsystem", "satellite", "tag"):
                        if not attrs.has_key("type"):
                                        self.printError(str(name) + " tag with no type attribute")
                        if self.elements[-3] == "default":
@@ -110,7 +110,7 @@ class DreamInfoHandler:
                self.currentlyInstallingMetaIndex = None
                
                self.console = eConsoleAppContainer()
-               self.console.appClosed.get().append(self.installNext)
+               self.console.appClosed.append(self.installNext)
                self.reloadFavourites = False
                
                self.statusCallback = statusCallback
@@ -305,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))):
@@ -324,9 +324,9 @@ 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))):