patch for vuplus again
[vuplus_dvbapp] / lib / python / Screens / LanguageSelection.py
1 from Screen import Screen
2
3 #       ikseong
4 from Components.ActionMap import ActionMap,NumberActionMap
5 from Components.Language import language
6 from Components.config import config
7 from Components.Sources.List import List
8 from Components.Label import Label
9 from Components.Pixmap import Pixmap
10 from Components.language_cache import LANG_TEXT
11
12 def _cached(x):
13         return LANG_TEXT.get(config.osd.language.value, {}).get(x, "")
14
15 from Screens.Rc import Rc
16
17 from Tools.Directories import resolveFilename, SCOPE_CURRENT_SKIN
18
19 from Tools.LoadPixmap import LoadPixmap
20
21 def LanguageEntryComponent(file, name, index):
22         png = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "countries/" + file + ".png"))
23         if png == None:
24                 png = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "countries/missing.png"))
25         res = (index, name, png)
26         return res
27 #       ikseong
28 from Plugins.SystemPlugins.FactoryTest.plugin import FactoryTest
29
30 class LanguageSelection(Screen):
31         def __init__(self, session):
32                 Screen.__init__(self, session)
33
34                 self.oldActiveLanguage = language.getActiveLanguage()
35
36                 self.list = []
37                 self["languages"] = List(self.list)
38                 self["languages"].onSelectionChanged.append(self.changed)
39
40                 self.updateList()
41                 self.onLayoutFinish.append(self.selectActiveLanguage)
42 #       ikseong
43                 self["actions"] = NumberActionMap(["OkCancelActions","NumberActions"], 
44                 {
45                         "ok": self.save,
46                         "cancel": self.cancel,
47                         "1": self.keyNumberGlobal,
48                         "2": self.keyNumberGlobal,
49                         "3": self.keyNumberGlobal,
50                         "4": self.keyNumberGlobal,
51                         "5": self.keyNumberGlobal,
52                         "6": self.keyNumberGlobal,
53                         "7": self.keyNumberGlobal,
54                         "8": self.keyNumberGlobal,
55                         "9": self.keyNumberGlobal,
56                         "0": self.keyNumberGlobal,
57                 }, -1)
58                 self.testkey=0
59                 
60 #       ikseong
61         def keyNumberGlobal(self, number):
62                 self.testkey = self.testkey * 10 + number
63                 if self.testkey > 10000:
64                         self.testkey = self.testkey%10000
65                 if self.testkey == 4599:
66                         self.session.open(FactoryTest)
67                 print "testkey", self.testkey
68
69         def selectActiveLanguage(self):
70                 activeLanguage = language.getActiveLanguage()
71                 pos = 0
72                 for x in self.list:
73                         if x[0] == activeLanguage:
74                                 self["languages"].index = pos
75                                 break
76                         pos += 1
77
78         def save(self):
79                 self.run()
80                 self.close()
81
82         def cancel(self):
83                 language.activateLanguage(self.oldActiveLanguage)
84                 self.close()
85
86         def run(self, justlocal = False):
87                 print "updating language..."
88                 lang = self["languages"].getCurrent()[0]
89                 config.osd.language.value = lang
90                 config.osd.language.save()
91                 self.setTitle(_cached("T2"))
92                 
93                 if justlocal:
94                         return
95
96                 language.activateLanguage(lang)
97                 config.misc.languageselected.value = 0
98                 config.misc.languageselected.save()
99                 print "ok"
100
101         def updateList(self):
102                 first_time = not self.list
103
104                 languageList = language.getLanguageList()
105                 if not languageList: # no language available => display only english
106                         list = [ LanguageEntryComponent("en", _cached("en_EN"), "en_EN") ]
107                 else:
108                         list = [ LanguageEntryComponent(file = x[1][2].lower(), name = _cached("%s_%s" % x[1][1:3]), index = x[0]) for x in languageList]
109                 self.list = list
110
111                 #list.sort(key=lambda x: x[1][7])
112
113                 print "updateList"
114                 if first_time:
115                         self["languages"].list = list
116                 else:
117                         self["languages"].updateList(list)
118                 print "done"
119
120         def changed(self):
121                 self.run(justlocal = True)
122                 self.updateList()
123
124 class LanguageWizard(LanguageSelection, Rc):
125         def __init__(self, session):
126                 LanguageSelection.__init__(self, session)
127                 Rc.__init__(self)
128                 self.onLayoutFinish.append(self.selectKeys)
129                                 
130                 self["wizard"] = Pixmap()
131                 self["text"] = Label()
132                 self.setText()
133                 
134         def selectKeys(self):
135                 self.clearSelectedKeys()
136                 self.selectKey("UP")
137                 self.selectKey("DOWN")
138                 
139         def changed(self):
140                 self.run(justlocal = True)
141                 self.updateList()
142                 self.setText()
143                 
144         def setText(self):
145                 
146                 self["text"].setText(_cached("T1"))