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
13 class NetworkAdapterSelection(Screen):
14 def __init__(self, session):
15 Screen.__init__(self, session)
17 self["adapterlist"] = MenuList([(self.getFriendlyName(x),x) for x in iNetwork.getAdapterList()])
19 self["actions"] = ActionMap(["OkCancelActions"],
21 "ok": self.okbuttonClick ,
25 def getFriendlyName(self, x):
26 # maybe this needs to be replaced by an external list.
28 "eth0": _("Integrated Ethernet"),
29 "wlan0": _("Wireless")
32 return friendlyNames.get(x, x) # when we have no friendly name, use adapter name
34 def okbuttonClick(self):
35 selection = self["adapterlist"].getCurrent()
36 if selection is not None:
37 self.session.open(AdapterSetup, selection[1])
39 class NameserverSetup(Screen, ConfigListScreen):
40 def __init__(self, session):
41 Screen.__init__(self, session)
42 self.backupNameserverList = iNetwork.getNameserverList()[:]
43 print "backup-list:", self.backupNameserverList
45 self["red"] = Label(_("Delete"))
46 self["green"] = Label(_("Add"))
50 self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
53 "cancel": self.cancel,
59 ConfigListScreen.__init__(self, self.list)
62 def createConfig(self):
63 self.nameservers = iNetwork.getNameserverList()
64 self.nameserverEntries = []
66 for nameserver in self.nameservers:
67 self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver)))
69 def createSetup(self):
72 #self.nameserverConfigEntries = []
73 for i in range(len(self.nameserverEntries)):
74 self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
76 self["config"].list = self.list
77 self["config"].l.setList(self.list)
80 iNetwork.clearNameservers()
81 for nameserver in self.nameserverEntries:
82 iNetwork.addNameserver(nameserver.value)
83 iNetwork.writeNameserverConfig()
87 iNetwork.clearNameservers()
88 print "backup-list:", self.backupNameserverList
89 for nameserver in self.backupNameserverList:
90 iNetwork.addNameserver(nameserver)
94 iNetwork.addNameserver([0,0,0,0])
99 print "currentIndex:", self["config"].getCurrentIndex()
101 index = self["config"].getCurrentIndex()
102 if index < len(self.nameservers):
103 iNetwork.removeNameserver(self.nameservers[index])
108 class AdapterSetup(Screen, ConfigListScreen):
109 def __init__(self, session, iface):
110 Screen.__init__(self, session)
114 print iNetwork.getAdapterAttribute(self.iface, "dhcp")
115 self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp")))
116 self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=True))
117 self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")))
118 self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask")))
119 self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway")))
121 self["iface"] = Label(iNetwork.getAdapterName(self.iface))
123 self["actions"] = ActionMap(["SetupActions"],
126 "cancel": self.cancel,
130 ConfigListScreen.__init__(self, self.list)
133 self["introduction"] = Label(_("Press OK to activate the settings."))
135 def createSetup(self):
138 self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
139 self.list.append(self.dhcpEntry)
140 if not self.dhcpConfigEntry.value:
141 self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
142 self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
143 self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry))
144 if self.hasGatewayConfigEntry.value:
145 self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
148 self.extendedSetup = None
149 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
150 callFnc = p.__call__["ifaceSupported"](self.iface)
151 if callFnc is not None:
152 self.extended = callFnc
154 if p.__call__.has_key("configStrings"):
155 self.configStrings = p.__call__["configStrings"]
157 self.configStrings = None
159 if p.__call__.has_key("menuEntryName"):
160 menuEntryName = p.__call__["menuEntryName"](self.iface)
162 menuEntryName = _('Extended Setup...')
163 self.extendedSetup = getConfigListEntry(menuEntryName, NoSave(ConfigNothing()))
164 self.list.append(self.extendedSetup)
166 self["config"].list = self.list
167 self["config"].l.setList(self.list)
170 print self["config"].getCurrent()
171 if self["config"].getCurrent() == self.dhcpEntry:
175 ConfigListScreen.keyLeft(self)
179 ConfigListScreen.keyRight(self)
183 selection = self["config"].getCurrent()
184 if selection == self.extendedSetup:
185 self.extended(self.session, self.iface)
187 iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
188 iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
189 iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
190 if self.hasGatewayConfigEntry.value:
191 iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
193 iNetwork.removeAdapterAttribute(self.iface, "gateway")
195 if self.extended is not None and self.configStrings is not None:
196 iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
198 iNetwork.deactivateNetworkConfig()
199 iNetwork.writeNetworkConfig()
200 iNetwork.activateNetworkConfig()
204 iNetwork.getInterfaces()