aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Screens/LanguageSelection.py
blob: 81eb2d40f0fb6ff229cca84439dd45a7591590f2 (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
from Screen import Screen

from Components.ActionMap import ActionMap
from Components.Language import language
from Components.config import config
from Components.Sources.List import List

from Tools.Directories import *

from enigma import eListboxPythonMultiContent, loadPNG, gFont, RT_HALIGN_LEFT

def LanguageEntryComponent(file, name, index):
	res = [ index ]
	res.append((eListboxPythonMultiContent.TYPE_TEXT, 80, 10, 200, 50, 0, RT_HALIGN_LEFT ,name))
	png = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "countries/" + file + ".png"))
	if png == None:
		png = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "countries/missing.png"))
	res.append((eListboxPythonMultiContent.TYPE_PIXMAP, 10, 5, 60, 40, png))
	
	return res

class LanguageSelection(Screen):
	def __init__(self, session):
		Screen.__init__(self, session)

		self.oldActiveLanguage = language.getActiveLanguage()

		self.list = []
		self["languages"] = List(self.list, item_height=50, fonts = [gFont("Regular", 20)])
		self["languages"].onSelectionChanged.append(self.changed)

		self.updateList()
		self.onLayoutFinish.append(self.selectActiveLanguage)

		self["actions"] = ActionMap(["OkCancelActions"], 
		{
			"ok": self.save,
			"cancel": self.cancel,
		}, -1)

	def selectActiveLanguage(self):
		activeLanguage = language.getActiveLanguage()
		pos = 0
		for x in self.list:
			if x[0] == activeLanguage:
				self["languages"].index = pos
				break
			pos += 1

	def save(self):
		self.run()
		self.close()

	def cancel(self):
		language.activateLanguage(self.oldActiveLanguage)
		self.close()

	def run(self):
		print "updating language..."
		lang = self["languages"].getCurrent()[0]
		language.activateLanguage(lang)
		config.osd.language.value = lang
		config.osd.language.save()
		config.misc.languageselected.value = 0
		config.misc.languageselected.save()
		self.setTitle(_("Language selection"))
		print "ok"

	def updateList(self):
		print "update list"
		first_time = len(self.list) == 0

		self.list = []
		if len(language.getLanguageList()) == 0: # no language available => display only english
			self.list.append(LanguageEntryComponent("en", _("English"), "en_EN"))
		else:
			for x in language.getLanguageList():
				self.list.append(LanguageEntryComponent(file = x[1][3].lower(), name = _(x[1][0]), index = x[0]))
		#self.list.sort(key=lambda x: x[1][7])
		
		print "updateList"
		if first_time:
			self["languages"].list = self.list
		else:
			self["languages"].updateList(self.list)
		print "done"

	def changed(self):
		self.run()
		self.updateList()