aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Screens/DefaultWizard.py
blob: 9883dc8e9ef4259d9885a2ac0cbb017826252ac4 (plain)
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
120
121
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
	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()
	print "installing done!"