aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoracid-burn <acid-burn@opendreambox.org>2010-05-06 14:24:22 +0200
committeracid-burn <acid-burn@opendreambox.org>2010-05-06 14:24:22 +0200
commit11743a3babfd9e108eaea357354683aa11d7575f (patch)
tree78fbf1d2553ac7d8da66db6397dee7b55e1b36ce
parenta145e380dcf5aac25d54bd634f92e9312a791f84 (diff)
downloadenigma2-11743a3babfd9e108eaea357354683aa11d7575f.tar.gz
enigma2-11743a3babfd9e108eaea357354683aa11d7575f.zip
Network.py,NetworkSetup.py,skin_default.xml: * Introduce new unified naming for network interfaces.
* Redesign NetworkadapterSelection Screen. * small cleanups. Refs #137 , Fixes #418
-rwxr-xr-xdata/skin_default.xml14
-rwxr-xr-x[-rw-r--r--]data/skin_default/icons/Makefile.am6
-rwxr-xr-xdata/skin_default/icons/network_wired-active.pngbin0 -> 2771 bytes
-rwxr-xr-xdata/skin_default/icons/network_wired-inactive.pngbin0 -> 2745 bytes
-rwxr-xr-xdata/skin_default/icons/network_wired.pngbin0 -> 2477 bytes
-rwxr-xr-xdata/skin_default/icons/network_wireless-active.pngbin0 -> 2821 bytes
-rwxr-xr-xdata/skin_default/icons/network_wireless-inactive.pngbin0 -> 2745 bytes
-rwxr-xr-xdata/skin_default/icons/network_wireless.pngbin0 -> 2539 bytes
-rwxr-xr-xlib/python/Components/Network.py51
-rwxr-xr-xlib/python/Screens/NetworkSetup.py90
10 files changed, 114 insertions, 47 deletions
diff --git a/data/skin_default.xml b/data/skin_default.xml
index 0114349b..497d33ac 100755
--- a/data/skin_default.xml
+++ b/data/skin_default.xml
@@ -577,7 +577,19 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
<widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
<widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
<widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
- <widget name="list" position="5,50" size="550,280" scrollbarMode="showOnDemand" zPosition="10"/>
+ <widget source="list" render="Listbox" position="5,50" size="550,280" zPosition="10" scrollbarMode="showOnDemand">
+ <convert type="TemplatedMultiContent"> <!-- iface, name, description, interfacepng, defaultpng, activepng, divpng -->
+ {"template": [
+ MultiContentEntryText(pos = (85, 6), size = (440, 28), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1), # index 1 is the interfacename
+ MultiContentEntryText(pos = (85, 43), size = (440, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_BOTTOM, text = 2), # index 2 is the description
+ MultiContentEntryPixmapAlphaTest(pos = (2, 8), size = (54, 54), png = 3), # index 3 is the interface pixmap
+ MultiContentEntryPixmapAlphaTest(pos = (63, 46), size = (15, 16), png = 4), # index 4 is the default pixmap
+ ],
+ "fonts": [gFont("Regular", 28),gFont("Regular", 20)],
+ "itemHeight": 70
+ }
+ </convert>
+ </widget>
<ePixmap pixmap="skin_default/div-h.png" position="0,340" zPosition="1" size="560,2" />
<widget source="introduction" render="Label" position="0,350" size="560,50" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
</screen>
diff --git a/data/skin_default/icons/Makefile.am b/data/skin_default/icons/Makefile.am
index 8e2052b0..088556a6 100644..100755
--- a/data/skin_default/icons/Makefile.am
+++ b/data/skin_default/icons/Makefile.am
@@ -34,6 +34,12 @@ dist_install_DATA = \
lock.png \
marker.png \
mp_buttons.png \
+ network_wired.png \
+ network_wired-active.png \
+ network_wired-inactive.png \
+ network_wireless.png \
+ network_wireless-active.png \
+ network_wireless-inactive.png \
plugin.png \
rass_logo.png \
rass_page1.png \
diff --git a/data/skin_default/icons/network_wired-active.png b/data/skin_default/icons/network_wired-active.png
new file mode 100755
index 00000000..d8efc9c8
--- /dev/null
+++ b/data/skin_default/icons/network_wired-active.png
Binary files differ
diff --git a/data/skin_default/icons/network_wired-inactive.png b/data/skin_default/icons/network_wired-inactive.png
new file mode 100755
index 00000000..18f2c70f
--- /dev/null
+++ b/data/skin_default/icons/network_wired-inactive.png
Binary files differ
diff --git a/data/skin_default/icons/network_wired.png b/data/skin_default/icons/network_wired.png
new file mode 100755
index 00000000..db695ad5
--- /dev/null
+++ b/data/skin_default/icons/network_wired.png
Binary files differ
diff --git a/data/skin_default/icons/network_wireless-active.png b/data/skin_default/icons/network_wireless-active.png
new file mode 100755
index 00000000..07a21874
--- /dev/null
+++ b/data/skin_default/icons/network_wireless-active.png
Binary files differ
diff --git a/data/skin_default/icons/network_wireless-inactive.png b/data/skin_default/icons/network_wireless-inactive.png
new file mode 100755
index 00000000..5bd69f9d
--- /dev/null
+++ b/data/skin_default/icons/network_wireless-inactive.png
Binary files differ
diff --git a/data/skin_default/icons/network_wireless.png b/data/skin_default/icons/network_wireless.png
new file mode 100755
index 00000000..629a05a6
--- /dev/null
+++ b/data/skin_default/icons/network_wireless.png
Binary files differ
diff --git a/lib/python/Components/Network.py b/lib/python/Components/Network.py
index b9da48d8..e8a3d459 100755
--- a/lib/python/Components/Network.py
+++ b/lib/python/Components/Network.py
@@ -26,6 +26,9 @@ class Network:
self.DnsConsole = Console()
self.PingConsole = Console()
self.config_ready = None
+ self.friendlyNames = {}
+ self.lan_interfaces = []
+ self.wlan_interfaces = []
self.getInterfaces()
def onRemoteRootFS(self):
@@ -309,13 +312,47 @@ class Network:
return len(self.ifaces)
def getFriendlyAdapterName(self, x):
- # maybe this needs to be replaced by an external list.
- friendlyNames = {
- "eth0": _("Integrated Ethernet"),
- "wlan0": _("Wireless"),
- "ath0": _("Integrated Wireless")
- }
- return friendlyNames.get(x, x) # when we have no friendly name, use adapter name
+ if x in self.friendlyNames.keys():
+ return self.friendlyNames.get(x, x)
+ else:
+ self.friendlyNames[x] = self.getFriendlyAdapterNaming(x)
+ return self.friendlyNames.get(x, x) # when we have no friendly name, use adapter name
+
+ def getFriendlyAdapterNaming(self, iface):
+ if iface.startswith('eth'):
+ if iface not in self.lan_interfaces and len(self.lan_interfaces) == 0:
+ self.lan_interfaces.append(iface)
+ return _("LAN connection")
+ elif iface not in self.lan_interfaces and len(self.lan_interfaces) >= 1:
+ self.lan_interfaces.append(iface)
+ return _("LAN connection") + " " + str(len(self.lan_interfaces))
+ else:
+ if iface not in self.wlan_interfaces and len(self.wlan_interfaces) == 0:
+ self.wlan_interfaces.append(iface)
+ return _("WLAN connection")
+ elif iface not in self.wlan_interfaces and len(self.wlan_interfaces) >= 1:
+ self.wlan_interfaces.append(iface)
+ return _("WLAN connection") + " " + str(len(self.wlan_interfaces))
+
+ def getFriendlyAdapterDescription(self, iface):
+ if iface == 'eth0':
+ return _("Internal LAN adapter.")
+ else:
+ classdir = "/sys/class/net/" + iface + "/device/"
+ driverdir = "/sys/class/net/" + iface + "/device/driver/"
+ if os_path.exists(classdir):
+ files = listdir(classdir)
+ if 'driver' in files:
+ if os_path.realpath(driverdir).endswith('ath_pci'):
+ return _("Atheros")+ " " + str(os_path.basename(os_path.realpath(driverdir))) + " " + _("WLAN adapter.")
+ elif os_path.realpath(driverdir).endswith('zd1211b'):
+ return _("Zydas")+ " " + str(os_path.basename(os_path.realpath(driverdir))) + " " + _("WLAN adapter.")
+ elif os_path.realpath(driverdir).endswith('rt73'):
+ return _("Ralink")+ " " + str(os_path.basename(os_path.realpath(driverdir))) + " " + _("WLAN adapter.")
+ else:
+ return _("Unknown network adapter.")
+ else:
+ return _("Unknown network adapter.")
def getAdapterName(self, iface):
return iface
diff --git a/lib/python/Screens/NetworkSetup.py b/lib/python/Screens/NetworkSetup.py
index c0037f81..2e33ac3b 100755
--- a/lib/python/Screens/NetworkSetup.py
+++ b/lib/python/Screens/NetworkSetup.py
@@ -7,6 +7,7 @@ from Screens.HelpMenu import HelpableScreen
from Components.Network import iNetwork
from Components.Sources.StaticText import StaticText
from Components.Sources.Boolean import Boolean
+from Components.Sources.List import List
from Components.Label import Label,MultiColorLabel
from Components.Pixmap import Pixmap,MultiPixmap
from Components.MenuList import MenuList
@@ -23,32 +24,6 @@ from os import path as os_path, system as os_system, unlink
from re import compile as re_compile, search as re_search
-class InterfaceList(MenuList):
- def __init__(self, list, enableWrapAround=False):
- MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
- self.l.setFont(0, gFont("Regular", 20))
- self.l.setItemHeight(30)
-
-def InterfaceEntryComponent(index,name,default,active ):
- res = [
- (index),
- MultiContentEntryText(pos=(80, 5), size=(430, 25), font=0, text=name)
- ]
- num_configured_if = len(iNetwork.getConfiguredAdapters())
- if num_configured_if >= 2:
- if default is True:
- png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue.png"))
- if default is False:
- png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue_off.png"))
- res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 5), size=(25, 25), png = png))
- if active is True:
- png2 = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_on.png"))
- if active is False:
- png2 = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_error.png"))
- res.append(MultiContentEntryPixmapAlphaTest(pos=(40, 1), size=(25, 25), png = png2))
- return res
-
-
class NetworkAdapterSelection(Screen,HelpableScreen):
def __init__(self, session):
Screen.__init__(self, session)
@@ -91,13 +66,49 @@ class NetworkAdapterSelection(Screen,HelpableScreen):
})
self.list = []
- self["list"] = InterfaceList(self.list)
+ self["list"] = List(self.list)
self.updateList()
if len(self.adapters) == 1:
self.onFirstExecBegin.append(self.okbuttonClick)
self.onClose.append(self.cleanup)
+ def buildInterfaceList(self,iface,name,default,active ):
+ divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/div-h.png"))
+ defaultpng = None
+ activepng = None
+ description = None
+ interfacepng = None
+
+ if iface in iNetwork.lan_interfaces:
+ if active is True:
+ interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wired-active.png"))
+ elif active is False:
+ interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wired-inactive.png"))
+ else:
+ interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wired.png"))
+ elif iface in iNetwork.wlan_interfaces:
+ if active is True:
+ interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wireless-active.png"))
+ elif active is False:
+ interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wireless-inactive.png"))
+ else:
+ interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wireless.png"))
+
+ num_configured_if = len(iNetwork.getConfiguredAdapters())
+ if num_configured_if >= 2:
+ if default is True:
+ defaultpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue.png"))
+ elif default is False:
+ defaultpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue_off.png"))
+ if active is True:
+ activepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_on.png"))
+ elif active is False:
+ activepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_error.png"))
+
+ description = iNetwork.getFriendlyAdapterDescription(iface)
+
+ return((iface, name, description, interfacepng, defaultpng, activepng, divpng))
def updateList(self):
self.list = []
@@ -122,7 +133,7 @@ class NetworkAdapterSelection(Screen,HelpableScreen):
default_gw = result
if len(self.adapters) == 0: # no interface available => display only eth0
- self.list.append(InterfaceEntryComponent("eth0",iNetwork.getFriendlyAdapterName('eth0'),True,True ))
+ self.list.append(self.buildInterfaceList("eth0",iNetwork.getFriendlyAdapterName('eth0'),True,True ))
else:
for x in self.adapters:
if x[1] == default_gw:
@@ -133,11 +144,11 @@ class NetworkAdapterSelection(Screen,HelpableScreen):
active_int = True
else:
active_int = False
- self.list.append(InterfaceEntryComponent(index = x[1],name = _(x[0]),default=default_int,active=active_int ))
+ self.list.append(self.buildInterfaceList(x[1],_(x[0]),default_int,active_int ))
if os_path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
self["key_blue"].setText(_("NetworkWizard"))
- self["list"].l.setList(self.list)
+ self["list"].setList(self.list)
def setDefaultInterface(self):
selection = self["list"].getCurrent()
@@ -253,7 +264,7 @@ class NameserverSetup(Screen, ConfigListScreen, HelpableScreen):
self.list = []
ConfigListScreen.__init__(self, self.list)
self.createSetup()
-
+
def createConfig(self):
self.nameservers = iNetwork.getNameserverList()
self.nameserverEntries = [ NoSave(ConfigIP(default=nameserver)) for nameserver in self.nameservers]
@@ -412,7 +423,7 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
self.wsconfig = None
self.default = None
- if self.iface == "wlan0" or self.iface == "ath0" :
+ if self.iface in iNetwork.wlan_interfaces:
from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan
self.w = Wlan(self.iface)
self.ws = wpaSupplicant()
@@ -535,7 +546,7 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
self.createSetup()
if self["config"].getCurrent() == self.gatewayEntry:
self.createSetup()
- if self.iface == "wlan0" or self.iface == "ath0" :
+ if self.iface in iNetwork.wlan_interfaces:
if self["config"].getCurrent() == self.wlanSSID:
self.createSetup()
if self["config"].getCurrent() == self.encryptionEnabled:
@@ -731,7 +742,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
def ok(self):
self.cleanup()
if self["menulist"].getCurrent()[1] == 'edit':
- if self.iface == 'wlan0' or self.iface == 'ath0':
+ if self.iface in iNetwork.wlan_interfaces:
try:
from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
@@ -817,7 +828,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
if self["menulist"].getCurrent()[1] == 'dns':
self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
if self["menulist"].getCurrent()[1] == 'scanwlan':
- self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your selected wireless device.\n" ) + self.oktext )
+ self["description"].setText(_("Scan your network for wireless access points and connect to them using your selected wireless device.\n" ) + self.oktext )
if self["menulist"].getCurrent()[1] == 'wlanstatus':
self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
if self["menulist"].getCurrent()[1] == 'lanrestart':
@@ -834,7 +845,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
self["Statustext"].setText(_("Link:"))
- if self.iface == 'wlan0' or self.iface == 'ath0':
+ if self.iface in iNetwork.wlan_interfaces:
try:
from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus
except:
@@ -884,7 +895,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
def AdapterSetupClosed(self, *ret):
if ret is not None and len(ret):
- if ret[0] == 'ok' and (self.iface == 'wlan0' or self.iface == 'ath0') and iNetwork.getAdapterAttribute(self.iface, "up") is True:
+ if ret[0] == 'ok' and (self.iface in iNetwork.wlan_interfaces) and iNetwork.getAdapterAttribute(self.iface, "up") is True:
try:
from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
@@ -1263,6 +1274,7 @@ class NetworkAdapterTest(Screen):
self.nextStepTimer.stop()
def layoutFinished(self):
+ self.setTitle(_("Network test: ") + iNetwork.getFriendlyAdapterName(self.iface) )
self["shortcutsyellow"].setEnabled(False)
self["AdapterInfo_OK"].hide()
self["NetworkInfo_Check"].hide()
@@ -1282,7 +1294,7 @@ class NetworkAdapterTest(Screen):
self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info"))
self["AdapterInfo_OK"] = Pixmap()
- if self.iface == 'wlan0' or self.iface == 'ath0':
+ if self.iface in iNetwork.wlan_interfaces:
self["Networktext"] = MultiColorLabel(_("Wireless Network"))
else:
self["Networktext"] = MultiColorLabel(_("Local Network"))
@@ -1321,7 +1333,7 @@ class NetworkAdapterTest(Screen):
self["InfoText"] = Label()
def getLinkState(self,iface):
- if iface == 'wlan0' or iface == 'ath0':
+ if iface in iNetwork.wlan_interfaces:
try:
from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
except: