4da5ecfe5c3f46413243e4a15a2afe36ebf71b96
[enigma2.git] / lib / python / Screens / Satconfig.py
1 from Screen import Screen
2 from Components.ActionMap import NumberActionMap
3 from Components.ActionMap import ActionMap
4 from Components.ConfigList import ConfigList
5 from Components.config import *
6 from Components.MenuList import MenuList
7 from Components.NimManager import nimmanager
8 from Components.config import getConfigListEntry
9
10 class NimSetup(Screen):
11         def createSimpleSetup(self, nim, list, mode):
12                 if mode == 0:                   #single Sat
13                         list.append(getConfigListEntry(_("Satellite"), config.Nims[nim.slotid].diseqcA))
14                 else:                                                   # > 1 Sats
15                         list.append(getConfigListEntry(_("Port A"), config.Nims[nim.slotid].diseqcA))
16
17                 if mode >= 1:                   # > 1 Sats
18                         list.append(getConfigListEntry(_("Port B"), config.Nims[nim.slotid].diseqcB))
19                         if mode >= 3:           # > 2 Sats
20                                 list.append(getConfigListEntry(_("Port C"), config.Nims[nim.slotid].diseqcC))
21                                 list.append(getConfigListEntry(_("Port D"), config.Nims[nim.slotid].diseqcD))
22         
23         def createPositionerSetup(self, nim, list):
24                 list.append(getConfigListEntry(_("Positioner mode"), config.Nims[nim.slotid].positionerMode))
25                 if (currentConfigSelectionElement(config.Nims[nim.slotid].positionerMode) == "usals"): # USALS
26                         list.append(getConfigListEntry(_("Longitude"), config.Nims[nim.slotid].longitude))
27                         list.append(getConfigListEntry("", config.Nims[nim.slotid].longitudeOrientation))
28                         list.append(getConfigListEntry(_("Latitude"), config.Nims[nim.slotid].latitude))
29                         list.append(getConfigListEntry("", config.Nims[nim.slotid].latitudeOrientation))
30                 elif (currentConfigSelectionElement(config.Nims[nim.slotid].positionerMode) == "manual"): # manual
31                         pass
32         
33         def createSetup(self):
34                 self.list = [ ]
35                 self.diseqcModeEntry = None
36                 
37                 if (nimmanager.getNimType(self.nim.slotid) == nimmanager.nimType["DVB-S"]):
38                         self.configMode = getConfigListEntry(_("Configuration Mode"), config.Nims[self.nim.slotid].configMode)
39                         self.list.append(self.configMode)
40                         
41                         if currentConfigSelectionElement(config.Nims[self.nim.slotid].configMode) == "simple":                  #simple setup
42                                 self.diseqcModeEntry = getConfigListEntry(_("DiSEqC Mode"), config.Nims[self.nim.slotid].diseqcMode)
43                                 self.list.append(self.diseqcModeEntry)
44                         
45                                 if (0 <= config.Nims[self.nim.slotid].diseqcMode.value < 4):
46                                         self.createSimpleSetup(self.nim, self.list, config.Nims[self.nim.slotid].diseqcMode.value)
47                                 if (config.Nims[self.nim.slotid].diseqcMode.value == 4):
48                                         self.createPositionerSetup(self.nim, self.list)
49                         elif currentConfigSelectionElement(config.Nims[self.nim.slotid].configMode) == "nothing": # nothing
50                                 #self.list.append(getConfigListEntry(_("Linked to"), config.Nims[self.nim.slotid].linkedTo))
51                                 pass
52                         elif currentConfigSelectionElement(config.Nims[self.nim.slotid].configMode) == "loopthrough": # linked
53                                 pass
54                 
55                 elif (nimmanager.getNimType(self.nim.slotid) == nimmanager.nimType["DVB-C"]):
56                         self.list.append(getConfigListEntry(_("Cable provider"), config.Nims[self.nim.slotid].cable))
57                 elif (nimmanager.getNimType(self.nim.slotid) == nimmanager.nimType["DVB-T"]):
58                         self.list.append(getConfigListEntry(_("Terrestrial provider"), config.Nims[self.nim.slotid].terrestrial))
59
60
61                 self["config"].list = self.list
62                 self["config"].l.setList(self.list)
63                 
64         def newConfig(self):    
65                 if self["config"].getCurrent() == self.configMode:
66                         self.createSetup()
67                 if self["config"].getCurrent() == self.diseqcModeEntry:
68                         self.createSetup()
69                 
70         def keyLeft(self):
71                 #if self["config"].getCurrent() == self.configMode:
72                         #if self.nim.slotid == 0:
73                                 #while currentConfigSelectionElement(config.Nims[self.nim.slotid].configMode) != "simple" and currentConfigSelectionElement(config.Nims[self.nim.slotid].configMode) != "advanced":
74                                         #self["config"].handleKey(config.key["prevElement"])
75                         #else:
76                                 #self["config"].handleKey(config.key["prevElement"])
77 #               else:
78                 self["config"].handleKey(config.key["prevElement"])
79
80                 self.newConfig()
81
82         def keyRight(self):
83                 #forbid to enable advanced mode until its ready
84                 #perhaps its better to use an own element here
85                 #this suckz .. how enable advanced config?
86                 #if self["config"].getCurrent() == self.configMode:
87                         #if self.nim.slotid == 0:
88                                 #while currentConfigSelectionElement(config.Nims[self.nim.slotid].configMode) != "simple" and currentConfigSelectionElement(config.Nims[self.nim.slotid].configMode) != "advanced":
89                                         #self["config"].handleKey(config.key["nextElement"])
90                         #else:
91                                 #self["config"].handleKey(config.key["prevElement"])
92                 #else:
93                 self["config"].handleKey(config.key["nextElement"])
94                 
95                 self.newConfig()
96
97         def keyNumberGlobal(self, number):
98                 print "You pressed number " + str(number)
99                 if (self["config"].getCurrent()[1].parent.enabled == True):
100                         self["config"].handleKey(config.key[str(number)])
101
102         def run(self):
103                 for x in self["config"].list:
104                         x[1].save()
105                 nimmanager.sec.update() 
106
107         def keySave(self):
108                 self.run()
109                 self.close()
110
111         def keyCancel(self):
112                 for x in self["config"].list:
113                         x[1].cancel()
114                 self.close()
115
116         def __init__(self, session, slotid):
117                 Screen.__init__(self, session)
118                 
119                 self.nim = nimmanager.nimList()[slotid][1]
120                 
121                 self["actions"] = NumberActionMap(["SetupActions"],
122                 {
123                         "ok": self.keySave,
124                         "cancel": self.keyCancel,
125                         "left": self.keyLeft,
126                         "right": self.keyRight,
127                         "1": self.keyNumberGlobal,
128                         "2": self.keyNumberGlobal,
129                         "3": self.keyNumberGlobal,
130                         "4": self.keyNumberGlobal,
131                         "5": self.keyNumberGlobal,
132                         "6": self.keyNumberGlobal,
133                         "7": self.keyNumberGlobal,
134                         "8": self.keyNumberGlobal,
135                         "9": self.keyNumberGlobal,
136                         "0": self.keyNumberGlobal
137                 }, -1)
138
139                 self.list = [ ]
140                 self["config"] = ConfigList(self.list)
141                 
142                 self.createSetup()
143
144 class NimSelection(Screen):
145         def __init__(self, session):
146                 Screen.__init__(self, session)
147
148                 self["nimlist"] = MenuList(nimmanager.nimList())
149
150                 self["actions"] = ActionMap(["OkCancelActions"],
151                 {
152                         "ok": self.okbuttonClick ,
153                         "cancel": self.close
154                 }, -1)
155
156         def okbuttonClick(self):
157                 selection = self["nimlist"].getCurrent()
158                 if selection[1].nimType != -1:  #unknown/empty
159                         self.session.open(NimSetup, selection[1].slotid)
160