only show network adapter list when more than one adapters are available
[vuplus_dvbapp] / lib / python / Screens / NetworkSetup.py
1 from Screen import Screen
2 from Components.ActionMap import ActionMap
3 from Components.ConfigList import ConfigListScreen
4 from Components.config import config, getConfigListEntry
5 from Components.Network import iNetwork
6 from Components.Label import Label
7 from Components.MenuList import MenuList
8 from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigNothing
9 from Components.PluginComponent import plugins
10 from Plugins.Plugin import PluginDescriptor
11
12 class NetworkAdapterSelection(Screen):
13         def __init__(self, session):
14                 Screen.__init__(self, session)
15
16                 self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
17
18                 self["adapterlist"] = MenuList(self.adapters)
19                 self["actions"] = ActionMap(["OkCancelActions"],
20                 {
21                         "ok": self.okbuttonClick,
22                         "cancel": self.close
23                 })
24
25                 if len(self.adapters) == 1:
26                         self.onFirstExecBegin.append(self.okbuttonClick)
27
28         def okbuttonClick(self):
29                 selection = self["adapterlist"].getCurrent()
30                 print "SELECTION", selection
31                 if selection is not None:
32                         self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, selection[1])
33
34         def AdapterSetupClosed(self, *ret):
35                 if len(self.adapters) == 1: # just one network adapter.. close selection
36                         self.close()
37
38 class NameserverSetup(Screen, ConfigListScreen):
39         def __init__(self, session):
40                 Screen.__init__(self, session)
41                 self.backupNameserverList = iNetwork.getNameserverList()[:]
42                 print "backup-list:", self.backupNameserverList
43
44                 self["red"] = Label(_("Delete"))
45                 self["green"] = Label(_("Add"))
46
47                 self.createConfig()
48
49                 self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
50                 {
51                         "ok": self.ok,
52                         "cancel": self.cancel,
53                         "green": self.add,
54                         "red": self.remove
55                 }, -2)
56
57                 self.list = []
58                 ConfigListScreen.__init__(self, self.list)
59                 self.createSetup()
60
61         def createConfig(self):
62                 self.nameservers = iNetwork.getNameserverList()
63                 self.nameserverEntries = []
64
65                 for nameserver in self.nameservers:
66                         self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver)))
67
68         def createSetup(self):
69                 self.list = []
70
71                 #self.nameserverConfigEntries = []
72                 for i in range(len(self.nameserverEntries)):
73                         self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
74
75                 self["config"].list = self.list
76                 self["config"].l.setList(self.list)
77
78         def ok(self):
79                 iNetwork.clearNameservers()
80                 for nameserver in self.nameserverEntries:
81                         iNetwork.addNameserver(nameserver.value)
82                 iNetwork.writeNameserverConfig()
83                 self.close()
84
85         def cancel(self):
86                 iNetwork.clearNameservers()
87                 print "backup-list:", self.backupNameserverList
88                 for nameserver in self.backupNameserverList:
89                         iNetwork.addNameserver(nameserver)
90                 self.close()
91
92         def add(self):
93                 iNetwork.addNameserver([0,0,0,0])
94                 self.createConfig()
95                 self.createSetup()
96
97         def remove(self):
98                 print "currentIndex:", self["config"].getCurrentIndex()
99
100                 index = self["config"].getCurrentIndex()
101                 if index < len(self.nameservers):
102                         iNetwork.removeNameserver(self.nameservers[index])
103                         self.createConfig()
104                         self.createSetup()
105
106 class AdapterSetup(Screen, ConfigListScreen):
107         def __init__(self, session, iface):
108                 Screen.__init__(self, session)
109
110                 self.iface = iface
111
112                 print iNetwork.getAdapterAttribute(self.iface, "dhcp")
113                 self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp")))
114                 self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=True))
115                 self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")))
116                 self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask")))
117                 self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway")))
118         
119                 self["iface"] = Label(iNetwork.getFriendlyAdapterName(self.iface))
120
121                 self["actions"] = ActionMap(["SetupActions"],
122                 {
123                         "ok": self.ok,
124                         "cancel": self.cancel,
125                 }, -2)
126
127                 self.list = []
128                 ConfigListScreen.__init__(self, self.list)
129                 self.createSetup()
130
131                 self["introduction"] = Label(_("Press OK to activate the settings."))
132
133         def createSetup(self):
134                 self.list = []
135
136                 self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
137                 self.list.append(self.dhcpEntry)
138                 if not self.dhcpConfigEntry.value:
139                         self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
140                         self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
141                         self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry))
142                         if self.hasGatewayConfigEntry.value:
143                                 self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
144
145                 self.extended = None
146                 self.extendedSetup = None
147                 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
148                         callFnc = p.__call__["ifaceSupported"](self.iface)
149                         if callFnc is not None:
150                                 self.extended = callFnc
151                                 print p.__call__
152                                 if p.__call__.has_key("configStrings"):
153                                         self.configStrings = p.__call__["configStrings"]
154                                 else:
155                                         self.configStrings = None
156
157                                 if p.__call__.has_key("menuEntryName"):
158                                         menuEntryName = p.__call__["menuEntryName"](self.iface)
159                                 else:
160                                         menuEntryName = _('Extended Setup...')
161                                 self.extendedSetup = getConfigListEntry(menuEntryName, NoSave(ConfigNothing()))
162                                 self.list.append(self.extendedSetup)
163
164                 self["config"].list = self.list
165                 self["config"].l.setList(self.list)
166
167         def newConfig(self):
168                 print self["config"].getCurrent()
169                 if self["config"].getCurrent() == self.dhcpEntry:
170                         self.createSetup()
171
172         def keyLeft(self):
173                 ConfigListScreen.keyLeft(self)
174                 self.createSetup()
175
176         def keyRight(self):
177                 ConfigListScreen.keyRight(self)
178                 self.createSetup()
179
180         def ok(self):
181                 selection = self["config"].getCurrent()
182                 if selection == self.extendedSetup:
183                         self.extended(self.session, self.iface)
184                 else:
185                         iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
186                         iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
187                         iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
188                         if self.hasGatewayConfigEntry.value:
189                                 iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
190                         else:
191                                 iNetwork.removeAdapterAttribute(self.iface, "gateway")
192
193                         if self.extended is not None and self.configStrings is not None:
194                                 iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
195
196                         iNetwork.deactivateNetworkConfig()
197                         iNetwork.writeNetworkConfig()
198                         iNetwork.activateNetworkConfig()
199                         self.close()
200
201         def cancel(self):
202                 iNetwork.getInterfaces()
203                 self.close()