1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
from Wizard import wizardManager
from Screens.WizardLanguage import WizardLanguage
from Tools.Directories import pathExists, resolveFilename, SCOPE_DEFAULTDIR, SCOPE_DEFAULTPARTITIONMOUNTDIR, SCOPE_DEFAULTPARTITION
from Components.Pixmap import Pixmap, MovingPixmap
from Components.config import config, ConfigBoolean, configfile, ConfigYesNo, getConfigListEntry
from Components.DreamInfoHandler import DreamInfoHandler
from Components.PluginComponent import plugins
from Plugins.Plugin import PluginDescriptor
from os import system as os_system, path as os_path, mkdir
config.misc.defaultchosen = ConfigBoolean(default = True)
class DefaultWizard(WizardLanguage, DreamInfoHandler):
def __init__(self, session, silent = True, showSteps = False, neededTag = None):
DreamInfoHandler.__init__(self, self.statusCallback, neededTag = neededTag)
self.silent = silent
self.setDirectory()
WizardLanguage.__init__(self, session, showSteps = False)
self["wizard"] = Pixmap()
self["rc"] = MovingPixmap()
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
config.misc.defaultchosen.save()
configfile.save()
def statusCallback(self, status, progress):
print "statusCallback:", status, progress
if status == DreamInfoHandler.STATUS_DONE:
self["text"].setText(_("The installation of the default settings is finished. You can now continue configuring your Dreambox by pressing the OK button on the remote control."))
self.markDone()
self.disableKeys = False
def getConfigList(self):
self.packageslist = []
configList = []
self.fillPackagesList()
self.packagesConfig = []
for x in range(len(self.packageslist)):
entry = ConfigYesNo()
self.packagesConfig.append(entry)
configList.append(getConfigListEntry(self.packageslist[x][0]["attributes"]["name"], entry))
return configList
def selectionMade(self):
print "selection made"
#self.installPackage(int(index))
self.indexList = []
for x in range(len(self.packagesConfig)):
if self.packagesConfig[x].value:
self.indexList.append(x)
class DreamPackageWizard(DefaultWizard):
def __init__(self, session, packagefile, silent = False):
if not pathExists("/tmp/package"):
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)
self.directory = resolveFilename(SCOPE_DEFAULTDIR)
self.fillPackagesList()
self.installPackage(0)
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
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()
print "installing done!"
|