add DreamPackageWizard
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Sat, 17 May 2008 22:54:46 +0000 (22:54 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Sat, 17 May 2008 22:54:46 +0000 (22:54 +0000)
data/skin_default.xml
lib/python/Components/Scanner.py
lib/python/Screens/DefaultWizard.py

index 85e5a430717b401dd8b5d639f784bbade2a35d41..c6d1bb464b7d1345257fa0aafcc2189925dba01e 100644 (file)
@@ -183,7 +183,22 @@ self.instance.move(ePoint((720-wsizex)/2, (576-wsizey)/(count &gt; 7 and 2 or 3)
                        <widget name="arrowdown" pixmap="skin_default/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="on"/>
                        <widget name="arrowup" pixmap="skin_default/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="on"/>
                        <widget name="arrowup2" pixmap="skin_default/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="on"/>
-               </screen>
+       </screen>
+       <screen name="DreamPackageWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
+                       <widget name="text" position="153,50" size="340,270" font="Regular;23" />
+                       <widget source="list" render="Listbox" position="50,300" size="440,200" scrollbarMode="showOnDemand" >
+                               <convert type="StringList" />
+                       </widget>
+                       <ePixmap pixmap="skin_default/buttons/button_red.png" position="40,225" size="15,16" alphatest="on" />
+                       <widget name="languagetext" position="55,225" size="95,30" font="Regular;18" />
+                       <widget name="config" position="50,300" zPosition="1" size="440,200" transparent="1" scrollbarMode="showOnDemand" />            
+                       <!--widget name="stepslider" position="50,500" zPosition="1" borderWidth="2" size="440,20" backgroundColor="dark" /-->
+                       <widget name="wizard" pixmap="skin_default/wizard.png" position="40,50" zPosition="10" size="110,174" transparent="1" alphatest="on"/>
+                       <widget name="rc" pixmap="skin_default/rc.png" position="500,600" zPosition="10" size="154,475" transparent="1" alphatest="on"/>
+                       <widget name="arrowdown" pixmap="skin_default/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="on"/>
+                       <widget name="arrowup" pixmap="skin_default/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="on"/>
+                       <widget name="arrowup2" pixmap="skin_default/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="on"/>
+       </screen>
        <!-- Dish -->
        <screen name="Dish" flags="wfNoBorder" position="300,100" size="130,160" title="Dish" zPosition="-1" backgroundColor="transparent">
                <widget name="Dishpixmap" pixmap="skin_default/icons/dish.png" position="0,0" size="130,160" alphatest="off" />
index 6acdecc89b41ce25d3cda1576c2c456ac3faa036..94c9cc2fa3db55b604470b7eb04a7aeec0034101 100644 (file)
@@ -24,6 +24,8 @@ def getType(file):
                        return "application/x-debian-package"
                elif ext == "ogg":
                        return "application/ogg"
+               elif ext == "dmpkg":
+                       return "application/x-dream-package"
        return type
 
 class Scanner:
index 87f6816a50d816f47e160bf5c43b64b3f965deb2..33a3d20efa819124b0cadfbadf8fea05c8175829 100644 (file)
@@ -5,6 +5,8 @@ from Tools.Directories import crawlDirectory, resolveFilename, SCOPE_DEFAULTDIR,
 from Components.Pixmap import Pixmap, MovingPixmap
 from Components.config import config, ConfigBoolean, configfile, ConfigYesNo, getConfigListEntry
 from Components.DreamInfoHandler import DreamInfoHandler, InfoHandler, InfoHandlerParseError
+from Components.PluginComponent import plugins
+from Plugins.Plugin import PluginDescriptor
 import os
 
 config.misc.defaultchosen = ConfigBoolean(default = True)
@@ -15,9 +17,7 @@ class DefaultWizard(WizardLanguage, DreamInfoHandler):
        def __init__(self, session, silent = True):
                DreamInfoHandler.__init__(self, self.statusCallback)
                self.silent = silent
-               os.system("mount %s %s" % (resolveFilename(SCOPE_DEFAULTPARTITION), resolveFilename(SCOPE_DEFAULTPARTITIONMOUNTDIR)))
-               self.directory = resolveFilename(SCOPE_DEFAULTPARTITIONMOUNTDIR)
-               self.xmlfile = "defaultwizard.xml"
+               self.setDirectory()
         
                WizardLanguage.__init__(self, session, showSteps = False)
                self["wizard"] = Pixmap()
@@ -25,6 +25,11 @@ class DefaultWizard(WizardLanguage, DreamInfoHandler):
                self["arrowdown"] = MovingPixmap()
                self["arrowup"] = MovingPixmap()
                self["arrowup2"] = MovingPixmap()
+       
+       def setDirectory(self):
+               os.system("mount %s %s" % (resolveFilename(SCOPE_DEFAULTPARTITION), resolveFilename(SCOPE_DEFAULTPARTITIONMOUNTDIR)))
+               self.directory = resolveFilename(SCOPE_DEFAULTPARTITIONMOUNTDIR)
+               self.xmlfile = "defaultwizard.xml"
         
        def markDone(self):
                config.misc.defaultchosen.value = 0
@@ -58,6 +63,17 @@ class DefaultWizard(WizardLanguage, DreamInfoHandler):
                                indexList.append(x)
                self.installPackages(indexList)
                
+class DreamPackageWizard(DefaultWizard):
+       def __init__(self, session, packagefile, silent = False):
+               os.system("mkdir /tmp/package")
+               os.system("tar xpzf %s -C /tmp/package" % packagefile)
+               self.packagefile = packagefile
+               DefaultWizard.__init__(self, session, silent)
+               
+       def setDirectory(self):
+               self.directory = "/tmp/package"
+               self.xmlfile = "dreampackagewizard.xml"
+               
 class ImageDefaultInstaller(DreamInfoHandler):
        def __init__(self):
                DreamInfoHandler.__init__(self, self.statusCallback, blocking = True)
@@ -67,8 +83,40 @@ class ImageDefaultInstaller(DreamInfoHandler):
                
        def statusCallback(self, status, progress):
                pass
-               
+
+def install(choice):
+       if choice is not None:
+               #os.system("mkdir /tmp/package && tar xpzf %s ")
+               choice[2].open(DreamPackageWizard, choice[1])
+
+def filescan_open(list, session, **kwargs):
+       from Screens.ChoiceBox import ChoiceBox
+       print "open default wizard"
+       filelist = [(os.path.split(x.path)[1], x.path, session) for x in list]
+       print filelist
+       session.openWithCallback(install, ChoiceBox, title = _("Please choose he package..."), list=filelist)
+
+def filescan(**kwargs):
+       from Components.Scanner import Scanner, ScanPath
+       from mimetypes import add_type
+       add_type("application/x-dream-package", "dmpkg")
+       return \
+               Scanner(mimetypes = ["application/x-dream-package"], 
+                       paths_to_scan = 
+                               [
+                                       ScanPath(path = "dmpkg", with_subdirs = True), 
+                                       ScanPath(path = "", with_subdirs = False), 
+                               ], 
+                       name = "Dream-Package", 
+                       description = "Install settings, skins, software...", 
+                       openfnc = filescan_open, )
+
+print "add dreampackage scanner plugin"
+plugins.addPlugin(PluginDescriptor(name="Dream-Package", where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan, internal = True))
+print "added"
+
 wizardManager.registerWizard(DefaultWizard, config.misc.defaultchosen.value, priority = 6)
+
 if config.misc.defaultchosen.value:
        print "Installing image defaults"
        installer = ImageDefaultInstaller()