add new network config
authorFelix Domke <tmbinc@elitedvb.net>
Thu, 29 May 2008 12:08:26 +0000 (12:08 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Thu, 29 May 2008 12:08:26 +0000 (12:08 +0000)
data/menu.xml
data/skin_default.xml
data/skin_default/border_info.png [new file with mode: 0755]
data/skin_default/border_menu.png [new file with mode: 0755]
data/skin_default/bottombar.png [new file with mode: 0755]
data/skin_default/buttons/blue_pressed.png [new file with mode: 0755]
data/skin_default/icons/lock_error.png [new file with mode: 0755]
lib/python/Components/Network.py
lib/python/Screens/NetworkSetup.py

index 2ff3a23..93455b2 100644 (file)
                                <!--<item text="Keyboard"><setup id="keyboard" /></item>-->
                                <!--<item text="OSD"><setup id="osd" /></item>-->
                                <item requires="Display"><setup level="1" id="lcd" /></item>
                                <!--<item text="Keyboard"><setup id="keyboard" /></item>-->
                                <!--<item text="OSD"><setup id="osd" /></item>-->
                                <item requires="Display"><setup level="1" id="lcd" /></item>
-                               <menu level="1" text="Network..." entryID="network_setup">
+                               <item level="0" text="Network..." entryID="network_setup"><screen module="NetworkSetup" screen="NetworkAdapterSelection" /></item>
+                               <!--<menu level="1" text="Network..." entryID="network_setup">
                                        <id val="network" />
                                        <item level="1" text="Device Setup..." entryID="device_setup"><screen module="NetworkSetup" screen="NetworkAdapterSelection"/></item>
                                        <item level="1" text="Nameserver Setup..." entryID="dns_setup"><screen module="NetworkSetup" screen="NameserverSetup"/></item>
                                        <id val="network" />
                                        <item level="1" text="Device Setup..." entryID="device_setup"><screen module="NetworkSetup" screen="NetworkAdapterSelection"/></item>
                                        <item level="1" text="Nameserver Setup..." entryID="dns_setup"><screen module="NetworkSetup" screen="NameserverSetup"/></item>
-                               </menu>
+                               </menu>-->
                        </menu>
                        <item level="1" text="Common Interface" entryID="ci_setup" requires="CommonInterface"><screen module="Ci" screen="CiSelection" /></item>
                        <item level="0" text="Parental control" entryID="parental_setup"><screen module="ParentalControlSetup" screen="ParentalControlSetup" /></item>
                        </menu>
                        <item level="1" text="Common Interface" entryID="ci_setup" requires="CommonInterface"><screen module="Ci" screen="CiSelection" /></item>
                        <item level="0" text="Parental control" entryID="parental_setup"><screen module="ParentalControlSetup" screen="ParentalControlSetup" /></item>
index 679e2f9..f4f140f 100644 (file)
                <eLabel text=" " position="100,330" size="200,20" font="Regular;20" halign="center" />
        </screen>
        <!-- Adapter setup -->
                <eLabel text=" " position="100,330" size="200,20" font="Regular;20" halign="center" />
        </screen>
        <!-- Adapter setup -->
-       <screen name="AdapterSetup" position="130,140" size="460,330" title="Network Setup">
-               <widget name="introduction2" position="10,10" size="440,20" font="Regular;23" />
-               <widget name="IPtext" position="10,45" size="130,21" font="Regular;21" />
-               <widget name="Netmasktext" position="10,70" size="130,21" font="Regular;21" />
-               <widget name="Gatewaytext" position="10,95" size="130,21" font="Regular;21" />
-               <widget name="IP" position="140,45" size="300,21" font="Regular;21" />
-               <widget name="Mask" position="140,70" size="300,21" font="Regular;21" />
-               <widget name="Gateway" position="140,95" size="300,21" font="Regular;21" />
-               <widget name="iface" position="10,135" size="440,23" font="Regular;23" />
-               <widget name="config" position="10,170" size="440,125" scrollbarMode="showOnDemand" />
-               <widget name="introduction" position="0,305" size="460,20" font="Regular;21" halign="center" />
+       <screen name="AdapterSetup" position="90,100" size="550,400" title="Network Setup" >
+               <widget name="config" position="10,10" size="530,130" scrollbarMode="showOnDemand" />
+               <ePixmap pixmap="skin_default/div-h.png" position="0,140" zPosition="1" size="550,2" />
+               <widget name="DNS1text" position="10,145" size="190,21" zPosition="1" font="Regular;19" />
+               <widget name="DNS2text" position="10,175" size="190,21" zPosition="1" font="Regular;19" />
+               <widget name="DNS1" position="430,145" size="120,21" zPosition="1" font="Regular;17" />
+               <widget name="DNS2" position="430,175" size="120,21" zPosition="1" font="Regular;17" />
+               <ePixmap pixmap="skin_default/div-h.png" position="0,200" zPosition="1" size="550,2" />         
+               <widget name="introduction" position="10,205" size="440,20" font="Regular;19" halign="center" />
+
+               <widget name="IPtext" position="100,240" size="190,21" zPosition="1" font="Regular;19" />
+               <widget name="Netmasktext" position="100,265" size="190,21" zPosition="1" font="Regular;19" />
+               <widget name="Gatewaytext" position="100,290" size="190,21" zPosition="1" font="Regular;19" />
+               <widget name="IP" position="300,240" size="440,21" zPosition="1" font="Regular;19" />
+               <widget name="Mask" position="300,265" size="440,21" zPosition="1" font="Regular;19" />
+               <widget name="Gateway" position="300,290" size="440,21" zPosition="1" font="Regular;19" />
+
+               <widget name="BottomBG" pixmap="skin_default/bottombar.png" position="5,310" size="540,120" zPosition="1" transparent="1" alphatest="on" />
+               <widget name="Adaptertext" position="20,325" size="100,21" zPosition="10" font="Regular;19" transparent="1" />
+               <widget name="Adapter" position="110,325" size="300,21" zPosition="10" font="Regular;19" transparent="1" />
+               <widget name="introduction2" position="110,360" size="300,20" zPosition="10" font="Regular;21" halign="center" transparent="1" />
+               <widget name="ButtonRedtext" position="430,325" size="80,21" zPosition="10" font="Regular;21" transparent="1" />
+               <widget name="ButtonRed" pixmap="skin_default/buttons/button_red.png" position="410,325" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="ButtonBluetext" position="430,360" size="80,21" zPosition="10" font="Regular;21" transparent="1" />
+               <widget name="ButtonBlue" pixmap="skin_default/buttons/button_blue.png" position="410,360" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+       </screen>
+       <screen name="AdapterSetupConfiguration" position="90,100" size="550,400" title="Network Configuration..." >
+               <ePixmap pixmap="skin_default/border_menu.png" position="10,10" zPosition="1" size="250,300" transparent="1" alphatest="on" />
+               <widget name="menulist" position="20,20" size="230,260" zPosition="10" scrollbarMode="showOnDemand" />
+               <widget name="description" position="305,10" size="230,300" font="Regular;19" halign="center" valign="center" />
+               <widget name="BottomBG" pixmap="skin_default/bottombar.png" position="5,310" size="540,120" zPosition="1" transparent="1" alphatest="on" />
+               <widget name="IFtext" position="20,325" size="100,21" zPosition="10" font="Regular;19" transparent="1" />
+               <widget name="IF" position="110,325" size="300,21" zPosition="10" font="Regular;19" transparent="1" />
+               <widget name="Statustext" position="20,350" size="60,21" zPosition="10" font="Regular;19" transparent="1"/>
+               <widget name="statuspic_inactive" pixmap="skin_default/buttons/button_green_off.png" position="70,350" zPosition="10" size="15,16" transparent="1" alphatest="on"/>
+               <widget name="statuspic_active" pixmap="skin_default/buttons/button_green.png" position="70,350" zPosition="10" size="15,16" transparent="1" alphatest="on"/>
+               <widget name="ButtonRedtext" position="430,325" size="80,21" zPosition="10" font="Regular;21" transparent="1" />
+               <widget name="ButtonRed" pixmap="skin_default/buttons/button_red.png" position="410,325" zPosition="10" size="15,16" transparent="1" alphatest="on" />
        </screen>
        <!-- Audio selection -->
        <screen name="AudioSelection" position="210,203" size="300,170" title="Audio">
        </screen>
        <!-- Audio selection -->
        <screen name="AudioSelection" position="210,203" size="300,170" title="Audio">
@@ -490,17 +517,71 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                <ePixmap position="0,0" size="34,45" pixmap="skin_default/mute.png" alphatest="on" />
        </screen>
        <!-- Nameserver -->
                <ePixmap position="0,0" size="34,45" pixmap="skin_default/mute.png" alphatest="on" />
        </screen>
        <!-- Nameserver -->
-       <screen name="NameserverSetup" position="130,140" size="460,330" title="Nameserver Setup">
-               <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
-               <ePixmap pixmap="skin_default/buttons/green.png" position="315,0" size="140,40" alphatest="on" />
-               <widget name="red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" transparent="1" />
-               <widget name="green" position="315,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" transparent="1" />
-               <widget name="config" position="10,50" size="440,175" scrollbarMode="showOnDemand" />
+       <screen name="NameserverSetup" position="90,100" size="550,400" title="Nameserver Setup" >
+               <widget name="config" position="10,10" size="530,175" scrollbarMode="showOnDemand" />
+               <ePixmap pixmap="skin_default/bottombar.png" position="5,310" size="540,120" zPosition="1" transparent="1" alphatest="on" />
+               <widget name="ButtonRedtext" position="430,325" size="80,21" zPosition="10" font="Regular;21" transparent="1" />
+               <ePixmap pixmap="skin_default/buttons/button_red.png" position="410,325" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="ButtonGreentext" position="60,325" size="150,21" zPosition="10" font="Regular;21" transparent="1" />
+               <ePixmap pixmap="skin_default/buttons/button_green.png" position="30,325" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="ButtonYellowtext" position="60,355" size="150,21" zPosition="10" font="Regular;21" transparent="1" />
+               <ePixmap pixmap="skin_default/buttons/button_yellow.png" position="30,355" zPosition="10" size="15,16" transparent="1" alphatest="on" />
        </screen>
        <!-- Network adapter selection -->
        <screen name="NetworkAdapterSelection" position="130,140" size="460,330" title="Select Network Adapter">
                <widget name="adapterlist" position="10,10" size="440,310" />
        </screen>
        </screen>
        <!-- Network adapter selection -->
        <screen name="NetworkAdapterSelection" position="130,140" size="460,330" title="Select Network Adapter">
                <widget name="adapterlist" position="10,10" size="440,310" />
        </screen>
+       <!-- Network adapter test -->
+       <screen name="NetworkAdapterTest" position="70,100" size="570,400" title="Network test..." >
+               <widget name="Adaptertext" position="10,20" size="120,21" zPosition="1" font="Regular;19" foregroundColor="#8c8c93" />                  
+               <widget name="Adapter" position="130,20" size="270,21" zPosition="1" font="Regular;19" halign="center" foregroundColor="#8c8c93" />
+               <widget name="AdapterInfo" pixmap="skin_default/buttons/blue.png" position="425,10" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="AdapterInfo_selected" pixmap="skin_default/buttons/blue_pressed.png" position="425,10" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="AdapterInfo_Text" position="440,20" size="110,21" zPosition="2" font="Regular;19" foregroundColor="#8c8c93" transparent="1" />
+               <widget name="AdapterInfo_OK" pixmap="skin_default/icons/lock_on.png" position="400,15" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="Networktext" position="10,70" size="120,21" zPosition="1" font="Regular;19" foregroundColor="#8c8c93" />                  
+               <widget name="Network" position="160,70" size="240,21" zPosition="1" font="Regular;19" halign="center" foregroundColor="#8c8c93" />
+               <widget name="NetworkInfo" pixmap="skin_default/buttons/blue.png" position="425,60" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="NetworkInfo_selected" pixmap="skin_default/buttons/blue_pressed.png" position="425,60" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="NetworkInfo_Text" position="440,70" size="110,21" zPosition="2" font="Regular;19" foregroundColor="#8c8c93" transparent="1"/>
+               <widget name="NetworkInfo_OK" pixmap="skin_default/icons/lock_on.png" position="400,65" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="NetworkInfo_NOK" pixmap="skin_default/icons/lock_error.png" position="400,65" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="Dhcptext" position="10,120" size="120,21" zPosition="1" font="Regular;19" foregroundColor="#8c8c93" />                    
+               <widget name="Dhcp" position="160,120" size="240,21" zPosition="1" font="Regular;19" halign="center" foregroundColor="#8c8c93" />
+               <widget name="DhcpInfo" pixmap="skin_default/buttons/blue.png" position="425,110" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="DhcpInfo_selected" pixmap="skin_default/buttons/blue_pressed.png" position="425,110" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="DhcpInfo_Text" position="440,120" size="110,21" zPosition="2" font="Regular;19" foregroundColor="#8c8c93" transparent="1" />
+               <widget name="DhcpInfo_OK" pixmap="skin_default/icons/lock_on.png" position="400,115" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="DhcpInfo_NOK" pixmap="skin_default/icons/lock_error.png" position="400,115" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="IPtext" position="10,170" size="120,21" zPosition="1" font="Regular;19" foregroundColor="#8c8c93" />                      
+               <widget name="IP" position="160,170" size="240,21" zPosition="1" font="Regular;19" halign="center" foregroundColor="#8c8c93" />
+               <widget name="IPInfo" pixmap="skin_default/buttons/blue.png" position="425,160" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="IPInfo_selected" pixmap="skin_default/buttons/blue_pressed.png" position="425,160" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="IPInfo_Text" position="440,170" size="110,21" zPosition="2" font="Regular;19" foregroundColor="#8c8c93" transparent="1" />
+               <widget name="IPInfo_OK" pixmap="skin_default/icons/lock_on.png" position="400,165" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="IPInfo_NOK" pixmap="skin_default/icons/lock_error.png" position="400,165" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="DNStext" position="10,220" size="120,21" zPosition="1" font="Regular;19" foregroundColor="#8c8c93" />                     
+               <widget name="DNS" position="160,220" size="240,21" zPosition="1" font="Regular;19" halign="center" foregroundColor="#8c8c93" />
+               <widget name="DNSInfo" pixmap="skin_default/buttons/blue.png" position="425,210" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="DNSInfo_selected" pixmap="skin_default/buttons/blue_pressed.png" position="425,210" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="DNSInfo_Text" position="440,220" size="110,21" zPosition="2" font="Regular;19" foregroundColor="#8c8c93" transparent="1" />
+               <widget name="DNSInfo_OK" pixmap="skin_default/icons/lock_on.png" position="400,215" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="DNSInfo_NOK" pixmap="skin_default/icons/lock_error.png" position="400,215" size="38,31" alphatest="on" zPosition="2" />
+               <widget name="EditSettingsButton" pixmap="skin_default/buttons/blue.png" position="425,260" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="EditSettingsButton_selected" pixmap="skin_default/buttons/blue_pressed.png" position="425,260" zPosition="1" size="140,40" transparent="1" alphatest="on" />
+               <widget name="EditSettings_Text" position="440,270" size="110,21" zPosition="2" font="Regular;19" foregroundColor="black" transparent="1" />
+               <ePixmap pixmap="skin_default/bottombar.png" position="15,310" size="540,120" zPosition="1" transparent="1" alphatest="on" />
+               <widget name="ButtonRedtext" position="430,325" size="80,21" zPosition="10" font="Regular;21" transparent="1" />
+               <widget name="ButtonRed" pixmap="skin_default/buttons/button_red.png" position="410,325" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="ButtonGreentext" position="60,325" size="80,21" zPosition="10" font="Regular;21" transparent="1" />
+               <widget name="ButtonGreen" pixmap="skin_default/buttons/button_green.png" position="30,325" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="ButtonGreen_off" pixmap="skin_default/buttons/button_green_off.png" position="30,325" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="ButtonYellowtext" position="60,355" size="80,21" zPosition="10" font="Regular;21" transparent="1" />
+               <widget name="ButtonYellow" pixmap="skin_default/buttons/button_yellow.png" position="30,355" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="ButtonYellow_off" pixmap="skin_default/buttons/button_yellow_off.png" position="30,355" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="InfoTextBorder" pixmap="skin_default/border_info.png" position="0,0" zPosition="20" size="550,300" alphatest="on" />
+               <widget name="InfoText" position="5,5" size="541,290" zPosition="25" font="Regular;21" />
+       </screen>
        <!-- Network setup -->
        <screen name="NetworkSetup" position="130,140" size="460,330" title="Network Setup">
                <widget name="menu" position="10,10" size="440,310" />
        <!-- Network setup -->
        <screen name="NetworkSetup" position="130,140" size="460,330" title="Network Setup">
                <widget name="menu" position="10,10" size="440,310" />
diff --git a/data/skin_default/border_info.png b/data/skin_default/border_info.png
new file mode 100755 (executable)
index 0000000..8393a9e
Binary files /dev/null and b/data/skin_default/border_info.png differ
diff --git a/data/skin_default/border_menu.png b/data/skin_default/border_menu.png
new file mode 100755 (executable)
index 0000000..e7f9ede
Binary files /dev/null and b/data/skin_default/border_menu.png differ
diff --git a/data/skin_default/bottombar.png b/data/skin_default/bottombar.png
new file mode 100755 (executable)
index 0000000..7bb023c
Binary files /dev/null and b/data/skin_default/bottombar.png differ
diff --git a/data/skin_default/buttons/blue_pressed.png b/data/skin_default/buttons/blue_pressed.png
new file mode 100755 (executable)
index 0000000..aac592e
Binary files /dev/null and b/data/skin_default/buttons/blue_pressed.png differ
diff --git a/data/skin_default/icons/lock_error.png b/data/skin_default/icons/lock_error.png
new file mode 100755 (executable)
index 0000000..d4d8e6d
Binary files /dev/null and b/data/skin_default/icons/lock_error.png differ
index d10163f..3d114c1 100644 (file)
@@ -1,16 +1,19 @@
 import os
 import re
 from socket import *
 import os
 import re
 from socket import *
+from enigma import eTimer, eConsoleAppContainer
 
 class Network:
        def __init__(self):
                self.ifaces = {}
                self.nameservers = []
                self.getInterfaces()
 
 class Network:
        def __init__(self):
                self.ifaces = {}
                self.nameservers = []
                self.getInterfaces()
-               
+               self.ethtool_bin = "/usr/sbin/ethtool"
+               self.container = eConsoleAppContainer()
+
        def getInterfaces(self):
                devicesPattern = re.compile('[a-z]+[0-9]+')
        def getInterfaces(self):
                devicesPattern = re.compile('[a-z]+[0-9]+')
-               
+
                fp = file('/proc/net/dev', 'r')
                result = fp.readlines()
                fp.close()
                fp = file('/proc/net/dev', 'r')
                result = fp.readlines()
                fp.close()
@@ -18,15 +21,18 @@ class Network:
                        try:
                                device = devicesPattern.search(line).group()
                                self.ifaces[device] = self.getDataForInterface(device)
                        try:
                                device = devicesPattern.search(line).group()
                                self.ifaces[device] = self.getDataForInterface(device)
+                               # Show only UP Interfaces in E2
+                               if self.getAdapterAttribute(device, 'up') is False:
+                                       del self.ifaces[device]
                        except AttributeError:
                                pass
                        except AttributeError:
                                pass
-               
+
                print "self.ifaces:", self.ifaces
                self.loadNetworkConfig()
                #self.writeNetworkConfig()
                #print ord(' ')
                #for line in result:
                print "self.ifaces:", self.ifaces
                self.loadNetworkConfig()
                #self.writeNetworkConfig()
                #print ord(' ')
                #for line in result:
-#                      print ord(line[0])
+               #       print ord(line[0])
 
        # helper function
        def regExpMatch(self, pattern, string):
 
        # helper function
        def regExpMatch(self, pattern, string):
@@ -36,7 +42,7 @@ class Network:
                        return pattern.search(string).group()
                except AttributeError:
                        None
                        return pattern.search(string).group()
                except AttributeError:
                        None
-       
+
        # helper function to convert ips from a sring to a list of ints
        def convertIP(self, ip):
                strIP = ip.split('.')
        # helper function to convert ips from a sring to a list of ints
        def convertIP(self, ip):
                strIP = ip.split('.')
@@ -54,7 +60,7 @@ class Network:
                ipPattern = re.compile(ipRegexp)
                upPattern = re.compile('UP ')
                macPattern = re.compile('[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}')
                ipPattern = re.compile(ipRegexp)
                upPattern = re.compile('UP ')
                macPattern = re.compile('[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}')
-               
+
                fp = os.popen("ifconfig " + iface)
                result = fp.readlines()
                fp.close()
                fp = os.popen("ifconfig " + iface)
                result = fp.readlines()
                fp.close()
@@ -80,10 +86,10 @@ class Network:
                        data['ip'] = [192, 168, 1, 2]
                        data['netmask'] = [255, 255, 255, 0]
                        data['gateway'] = [192, 168, 1, 1]
                        data['ip'] = [192, 168, 1, 2]
                        data['netmask'] = [255, 255, 255, 0]
                        data['gateway'] = [192, 168, 1, 1]
-               
+
                fp = os.popen("route -n | grep  " + iface)
                result = fp.readlines()
                fp = os.popen("route -n | grep  " + iface)
                result = fp.readlines()
-               fp.close()                              
+               fp.close()
                for line in result:
                        print line[0:7]
                        if line[0:7] == "0.0.0.0":
                for line in result:
                        print line[0:7]
                        if line[0:7] == "0.0.0.0":
@@ -97,7 +103,7 @@ class Network:
                fp.write("# automatically generated by enigma 2\n# do NOT change manually!\n\n")
                fp.write("auto lo\n")
                fp.write("iface lo inet loopback\n\n")
                fp.write("# automatically generated by enigma 2\n# do NOT change manually!\n\n")
                fp.write("auto lo\n")
                fp.write("iface lo inet loopback\n\n")
-               
+
                for ifacename, iface in self.ifaces.items():
                        if iface['up'] == True:
                                fp.write("auto " + ifacename + "\n")
                for ifacename, iface in self.ifaces.items():
                        if iface['up'] == True:
                                fp.write("auto " + ifacename + "\n")
@@ -111,24 +117,21 @@ class Network:
                                        fp.write("      netmask %d.%d.%d.%d\n" % tuple(iface['netmask']))
                                        if iface.has_key('gateway'):
                                                fp.write("      gateway %d.%d.%d.%d\n" % tuple(iface['gateway']))
                                        fp.write("      netmask %d.%d.%d.%d\n" % tuple(iface['netmask']))
                                        if iface.has_key('gateway'):
                                                fp.write("      gateway %d.%d.%d.%d\n" % tuple(iface['gateway']))
-                                               
+
                        if iface.has_key("configStrings"):
                                fp.write("\n" + iface["configStrings"] + "\n")
                        fp.write("\n")
                fp.close()
                self.writeNameserverConfig()
 
                        if iface.has_key("configStrings"):
                                fp.write("\n" + iface["configStrings"] + "\n")
                        fp.write("\n")
                fp.close()
                self.writeNameserverConfig()
 
-               
        def writeNameserverConfig(self):
                fp = file('/etc/resolv.conf', 'w')
                for nameserver in self.nameservers:
                        fp.write("nameserver %d.%d.%d.%d\n" % tuple(nameserver))
                fp.close()
        def writeNameserverConfig(self):
                fp = file('/etc/resolv.conf', 'w')
                for nameserver in self.nameservers:
                        fp.write("nameserver %d.%d.%d.%d\n" % tuple(nameserver))
                fp.close()
-               
 
        def loadNetworkConfig(self):
                self.loadNameserverConfig()
 
        def loadNetworkConfig(self):
                self.loadNameserverConfig()
-               
                interfaces = []
                # parse the interfaces-file
                try:
                interfaces = []
                # parse the interfaces-file
                try:
@@ -137,7 +140,7 @@ class Network:
                        fp.close()
                except:
                        print "[Network.py] interfaces - opening failed"
                        fp.close()
                except:
                        print "[Network.py] interfaces - opening failed"
-                       
+
                ifaces = {}
                currif = ""
                for i in interfaces:
                ifaces = {}
                currif = ""
                for i in interfaces:
@@ -155,20 +158,20 @@ class Network:
                                if (split[0] == "netmask"):
                                        ifaces[currif]["netmask"] = map(int, split[1].split('.'))
                                if (split[0] == "gateway"):
                                if (split[0] == "netmask"):
                                        ifaces[currif]["netmask"] = map(int, split[1].split('.'))
                                if (split[0] == "gateway"):
-                                       ifaces[currif]["gateway"] = map(int, split[1].split('.'))                                                                       
-               
+                                       ifaces[currif]["gateway"] = map(int, split[1].split('.'))
+
                print "read interfaces:", ifaces
                for ifacename, iface in ifaces.items():
                        if self.ifaces.has_key(ifacename):
                                self.ifaces[ifacename]["dhcp"] = iface["dhcp"]
                print "read interfaces:", ifaces
                for ifacename, iface in ifaces.items():
                        if self.ifaces.has_key(ifacename):
                                self.ifaces[ifacename]["dhcp"] = iface["dhcp"]
-               
+
                print "self.ifaces after loading:", self.ifaces
 
        def loadNameserverConfig(self):
                ipRegexp = "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
                nameserverPattern = re.compile("nameserver +" + ipRegexp)
                ipPattern = re.compile(ipRegexp)
                print "self.ifaces after loading:", self.ifaces
 
        def loadNameserverConfig(self):
                ipRegexp = "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
                nameserverPattern = re.compile("nameserver +" + ipRegexp)
                ipPattern = re.compile(ipRegexp)
-               
+
                resolv = []
                try:
                        fp = file('/etc/resolv.conf', 'r')
                resolv = []
                try:
                        fp = file('/etc/resolv.conf', 'r')
@@ -177,14 +180,14 @@ class Network:
                        self.nameservers = []
                except:
                        print "[Network.py] resolv.conf - opening failed"
                        self.nameservers = []
                except:
                        print "[Network.py] resolv.conf - opening failed"
-               
+
                for line in resolv:
                        if self.regExpMatch(nameserverPattern, line) is not None:
                                ip = self.regExpMatch(ipPattern, line)
                                if ip is not None:
                                        self.nameservers.append(self.convertIP(ip))
                for line in resolv:
                        if self.regExpMatch(nameserverPattern, line) is not None:
                                ip = self.regExpMatch(ipPattern, line)
                                if ip is not None:
                                        self.nameservers.append(self.convertIP(ip))
-                                       
-               print "nameservers:", self.nameservers          
+
+               print "nameservers:", self.nameservers
 
        def deactivateNetworkConfig(self):
                for iface in self.ifaces.keys():
 
        def deactivateNetworkConfig(self):
                for iface in self.ifaces.keys():
@@ -195,7 +198,8 @@ class Network:
 
        def activateNetworkConfig(self):
                os.system("/etc/init.d/networking start")
 
        def activateNetworkConfig(self):
                os.system("/etc/init.d/networking start")
-               
+               self.getInterfaces()
+
        def getNumberOfAdapters(self):
                return len(self.ifaces)
 
        def getNumberOfAdapters(self):
                return len(self.ifaces)
 
@@ -209,16 +213,16 @@ class Network:
 
        def getAdapterName(self, iface):
                return iface
 
        def getAdapterName(self, iface):
                return iface
-       
+
        def getAdapterList(self):
                return self.ifaces.keys()
        def getAdapterList(self):
                return self.ifaces.keys()
-       
+
        def getAdapterAttribute(self, iface, attribute):
                if self.ifaces.has_key(iface):
                        if self.ifaces[iface].has_key(attribute):
                                return self.ifaces[iface][attribute]
                return None
        def getAdapterAttribute(self, iface, attribute):
                if self.ifaces.has_key(iface):
                        if self.ifaces[iface].has_key(attribute):
                                return self.ifaces[iface][attribute]
                return None
-       
+
        def setAdapterAttribute(self, iface, attribute, value):
                print "setting for adapter", iface, "attribute", attribute, " to value", value
                if self.ifaces.has_key(iface):
        def setAdapterAttribute(self, iface, attribute, value):
                print "setting for adapter", iface, "attribute", attribute, " to value", value
                if self.ifaces.has_key(iface):
@@ -228,27 +232,76 @@ class Network:
                if self.ifaces.has_key(iface):
                        if self.ifaces[iface].has_key(attribute):
                                del self.ifaces[iface][attribute]
                if self.ifaces.has_key(iface):
                        if self.ifaces[iface].has_key(attribute):
                                del self.ifaces[iface][attribute]
-                               
+
        def getNameserverList(self):
        def getNameserverList(self):
-               return self.nameservers
-       
+               if len(self.nameservers) == 0:
+                       return [[0, 0, 0, 0], [0, 0, 0, 0]]
+               else: 
+                       return self.nameservers
+
        def clearNameservers(self):
                self.nameservers = []
        def clearNameservers(self):
                self.nameservers = []
-       
+
        def addNameserver(self, nameserver):
                if nameserver not in self.nameservers:
                        self.nameservers.append(nameserver)
        def addNameserver(self, nameserver):
                if nameserver not in self.nameservers:
                        self.nameservers.append(nameserver)
-               
+
        def removeNameserver(self, nameserver):
                if nameserver in self.nameservers:
                        self.nameservers.remove(nameserver)
        def removeNameserver(self, nameserver):
                if nameserver in self.nameservers:
                        self.nameservers.remove(nameserver)
-                       
+
        def changeNameserver(self, oldnameserver, newnameserver):
                if oldnameserver in self.nameservers:
                        for i in range(len(self.nameservers)):
                                if self.nameservers[i] == oldnameserver:
                                        self.nameservers[i] = newnameserver
 
        def changeNameserver(self, oldnameserver, newnameserver):
                if oldnameserver in self.nameservers:
                        for i in range(len(self.nameservers)):
                                if self.nameservers[i] == oldnameserver:
                                        self.nameservers[i] = newnameserver
 
+       def writeDefaultNetworkConfig(self,mode='lan'):
+               fp = file('/etc/network/interfaces', 'w')
+               fp.write("# automatically generated by enigma 2\n# do NOT change manually!\n\n")
+               fp.write("auto lo\n")
+               fp.write("iface lo inet loopback\n\n")
+               if mode == 'wlan':
+                       fp.write("auto wlan0\n")
+                       fp.write("iface wlan0 inet dhcp\n")
+               else:
+                       fp.write("auto eth0\n")
+                       fp.write("iface eth0 inet dhcp\n")
+               fp.write("\n")
+               fp.close()
+
+       def resetNetworkConfig(self,mode='lan'):
+               self.deactivateNetworkConfig()
+               self.writeDefaultNetworkConfig(mode)
+               if mode == 'wlan':
+                       os.system("ifconfig eth0 down")
+                       os.system("ifconfig wlan0 up")
+               else:
+                       os.system("ifconfig eth0 up")
+                       os.system("ifconfig wlan0 down")
+
+       def checkNetworkState(self):
+               ret=os.system("ping -c 1 www.dream-multimedia-tv.de")
+               if ret == 0:
+                       return True
+               else:
+                       return False
+
+       def restartNetwork(self):
+               iNetwork.deactivateNetworkConfig()
+               iNetwork.activateNetworkConfig()
+
+       def getLinkState(self,iface,callback):
+               self.dataAvail = callback
+               cmd = self.ethtool_bin + " " + iface
+               self.container.appClosed.get().append(self.cmdFinished)
+               self.container.dataAvail.get().append(callback)
+               self.container.execute(cmd)
+
+       def cmdFinished(self,retval):
+               self.container.appClosed.get().remove(self.cmdFinished)
+               self.container.dataAvail.get().remove(self.dataAvail)
+
 iNetwork = Network()
 
 def InitNetwork():
 iNetwork = Network()
 
 def InitNetwork():
index cf03f11..a4a355a 100644 (file)
@@ -1,20 +1,42 @@
 from Screen import Screen
 from Screen import Screen
-from Components.ActionMap import ActionMap
+from Components.ActionMap import ActionMap,NumberActionMap
+from Screens.MessageBox import MessageBox
+from Screens.Standby import *
 from Components.ConfigList import ConfigListScreen
 from Components.config import config, getConfigListEntry
 from Components.Network import iNetwork
 from Components.ConfigList import ConfigListScreen
 from Components.config import config, getConfigListEntry
 from Components.Network import iNetwork
+from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
 from Components.Label import Label
 from Components.Label import Label
+from Components.Pixmap import Pixmap
+from Tools.LoadPixmap import LoadPixmap
 from Components.MenuList import MenuList
 from Components.MenuList import MenuList
-from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigNothing
+from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigNothing, ConfigSubsection, ConfigText, ConfigSelection, getConfigListEntry
 from Components.PluginComponent import plugins
 from Plugins.Plugin import PluginDescriptor
 from Components.PluginComponent import plugins
 from Plugins.Plugin import PluginDescriptor
+#from Plugins.SystemPlugins.WirelessLan.plugin import *
+#from Plugins.SystemPlugins.WirelessLan.Wlan import *
+from enigma import eTimer, eConsoleAppContainer,gRGB
+import time, os, re
+
+
+Black = "#000000"
+Grey = "#8c8c93"
+Green = "1cff1c"
+nextstep = None
+activebutton = None
+
+def getColor(str):
+       return gRGB(int(str[1:], 0x10))
 
 class NetworkAdapterSelection(Screen):
        def __init__(self, session):
                Screen.__init__(self, session)
 
                self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
 
 class NetworkAdapterSelection(Screen):
        def __init__(self, session):
                Screen.__init__(self, session)
 
                self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
-
+               if len(self.adapters) == 0:
+                       #Reset Network to defaults if network broken
+                       iNetwork.resetNetworkConfig('lan')
+                       
                self["adapterlist"] = MenuList(self.adapters)
                self["actions"] = ActionMap(["OkCancelActions"],
                {
                self["adapterlist"] = MenuList(self.adapters)
                self["actions"] = ActionMap(["OkCancelActions"],
                {
@@ -28,29 +50,30 @@ class NetworkAdapterSelection(Screen):
        def okbuttonClick(self):
                selection = self["adapterlist"].getCurrent()
                if selection is not None:
        def okbuttonClick(self):
                selection = self["adapterlist"].getCurrent()
                if selection is not None:
-                       self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, selection[1])
-
+                       self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[1])
        def AdapterSetupClosed(self, *ret):
                if len(self.adapters) == 1: # just one network adapter.. close selection
                        self.close()
 
 class NameserverSetup(Screen, ConfigListScreen):
        def AdapterSetupClosed(self, *ret):
                if len(self.adapters) == 1: # just one network adapter.. close selection
                        self.close()
 
 class NameserverSetup(Screen, ConfigListScreen):
+
        def __init__(self, session):
                Screen.__init__(self, session)
                self.backupNameserverList = iNetwork.getNameserverList()[:]
                print "backup-list:", self.backupNameserverList
 
        def __init__(self, session):
                Screen.__init__(self, session)
                self.backupNameserverList = iNetwork.getNameserverList()[:]
                print "backup-list:", self.backupNameserverList
 
-               self["red"] = Label(_("Delete"))
-               self["green"] = Label(_("Add"))
-
+               self["ButtonGreentext"] = Label(_("Add"))
+               self["ButtonYellowtext"] = Label(_("Delete"))
+               self["ButtonRedtext"] = Label(_("Close"))               
                self.createConfig()
 
                self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
                {
                        "ok": self.ok,
                        "cancel": self.cancel,
                self.createConfig()
 
                self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
                {
                        "ok": self.ok,
                        "cancel": self.cancel,
+                       "red": self.cancel,
                        "green": self.add,
                        "green": self.add,
-                       "red": self.remove
+                       "yellow": self.remove
                }, -2)
 
                self.list = []
                }, -2)
 
                self.list = []
@@ -67,7 +90,6 @@ class NameserverSetup(Screen, ConfigListScreen):
        def createSetup(self):
                self.list = []
 
        def createSetup(self):
                self.list = []
 
-               #self.nameserverConfigEntries = []
                for i in range(len(self.nameserverEntries)):
                        self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
 
                for i in range(len(self.nameserverEntries)):
                        self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
 
@@ -102,42 +124,87 @@ class NameserverSetup(Screen, ConfigListScreen):
                        self.createConfig()
                        self.createSetup()
 
                        self.createConfig()
                        self.createSetup()
 
+
 class AdapterSetup(Screen, ConfigListScreen):
        def __init__(self, session, iface):
                Screen.__init__(self, session)
 class AdapterSetup(Screen, ConfigListScreen):
        def __init__(self, session, iface):
                Screen.__init__(self, session)
+               self.session = session
+               ## FIXME , workaround against current wizzard not able to send arguments
+               if iface == 0:
+                       self.iface = "eth0"
+               elif iface == 1:
+                       self.iface = "wlan0"
+               else:
+                       self.iface = iface
+
+               if self.iface == 'wlan0':
+                       from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant
+                       self.ws = wpaSupplicant()
+                       list = []
+                       list.append(_("WEP"))
+                       list.append(_("WPA"))
+                       list.append(_("WPA2"))
+
+                       config.plugins.wlan.essid = NoSave(ConfigText(default = "home", fixed_size = False))
+                       config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = False))
+                       config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = _("WPA")))
+                       config.plugins.wlan.encryption.psk = NoSave(ConfigText(default = "mysecurewlan", fixed_size = False))
+                       self.ws.loadConfig()
 
 
-               self.iface = iface
-
-               print iNetwork.getAdapterAttribute(self.iface, "dhcp")
                self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
                self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=True))
                self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
                self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
                self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
                self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
                self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=True))
                self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
                self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
                self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
-       
-               self["iface"] = Label(iNetwork.getFriendlyAdapterName(self.iface))
+               nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
+               self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
+               self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
 
 
-               self["actions"] = ActionMap(["SetupActions"],
+               self["actions"] = ActionMap(["SetupActions","ShortcutActions"],
                {
                        "ok": self.ok,
                        "cancel": self.cancel,
                {
                        "ok": self.ok,
                        "cancel": self.cancel,
+                       "red": self.cancel,
+                       "blue": self.KeyBlue,
                }, -2)
 
                self.list = []
                ConfigListScreen.__init__(self, self.list)
                self.createSetup()
                }, -2)
 
                self.list = []
                ConfigListScreen.__init__(self, self.list)
                self.createSetup()
-
-               self["introduction"] = Label(_("Press OK to activate the settings."))
-               self["introduction2"] = Label(_("Current settings:"))
+               self.onLayoutFinish.append(self.layoutFinished)
+               
+               self["DNS1text"] = Label(_("Primary DNS"))
+               self["DNS2text"] = Label(_("Secondary DNS"))
+               self["DNS1"] = Label()
+               self["DNS2"] = Label()
+               
+               self["introduction"] = Label(_("Current settings:"))
                
                self["IPtext"] = Label(_("IP Address"))
                self["Netmasktext"] = Label(_("Netmask"))
                self["Gatewaytext"] = Label(_("Gateway"))
                
                
                self["IPtext"] = Label(_("IP Address"))
                self["Netmasktext"] = Label(_("Netmask"))
                self["Gatewaytext"] = Label(_("Gateway"))
                
-               self["IP"] = Label(self.ipConfigEntry.getText())
-               self["Mask"] = Label(self.netmaskConfigEntry.getText())
-               self["Gateway"] = Label(self.gatewayConfigEntry.getText())
-
+               self["IP"] = Label()
+               self["Mask"] = Label()
+               self["Gateway"] = Label()
+               
+               self["BottomBG"] = Pixmap()
+               self["Adaptertext"] = Label(_("Network:"))
+               self["Adapter"] = Label()
+               self["introduction2"] = Label(_("Press OK to activate the settings."))
+               self["ButtonRed"] = Pixmap()
+               self["ButtonRedtext"] = Label(_("Close"))
+               self["ButtonBlue"] = Pixmap()
+               self["ButtonBluetext"] = Label(_("Edit DNS"))
+
+       def layoutFinished(self):
+               self["DNS1"].setText(self.primaryDNS.getText())
+               self["DNS2"].setText(self.secondaryDNS.getText())
+               self["IP"].setText(self.ipConfigEntry.getText())
+               self["Mask"].setText(self.netmaskConfigEntry.getText())
+               self["Gateway"].setText(self.gatewayConfigEntry.getText())              
+               self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
+               
        def createSetup(self):
                self.list = []
 
        def createSetup(self):
                self.list = []
 
@@ -162,16 +229,21 @@ class AdapterSetup(Screen, ConfigListScreen):
                                else:
                                        self.configStrings = None
 
                                else:
                                        self.configStrings = None
 
-                               if p.__call__.has_key("menuEntryName"):
-                                       menuEntryName = p.__call__["menuEntryName"](self.iface)
-                               else:
-                                       menuEntryName = _('Extended Setup...')
-                               self.extendedSetup = getConfigListEntry(menuEntryName, NoSave(ConfigNothing()))
-                               self.list.append(self.extendedSetup)
+                               self.list.append(getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid))
+                               self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
+                               self.list.append(self.encryptionEnabled)
+               
+                               if config.plugins.wlan.encryption.enabled.value:
+                                       self.list.append(getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type))
+                                       self.list.append(getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk))
+
 
                self["config"].list = self.list
                self["config"].l.setList(self.list)
 
 
                self["config"].list = self.list
                self["config"].l.setList(self.list)
 
+       def KeyBlue(self):
+               self.session.open(NameserverSetup)
+
        def newConfig(self):
                print self["config"].getCurrent()
                if self["config"].getCurrent() == self.dhcpEntry:
        def newConfig(self):
                print self["config"].getCurrent()
                if self["config"].getCurrent() == self.dhcpEntry:
@@ -200,12 +272,593 @@ class AdapterSetup(Screen, ConfigListScreen):
 
                        if self.extended is not None and self.configStrings is not None:
                                iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
 
                        if self.extended is not None and self.configStrings is not None:
                                iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
-
+                               self.ws.writeConfig()
+                       
                        iNetwork.deactivateNetworkConfig()
                        iNetwork.writeNetworkConfig()
                        iNetwork.activateNetworkConfig()
                        iNetwork.deactivateNetworkConfig()
                        iNetwork.writeNetworkConfig()
                        iNetwork.activateNetworkConfig()
+                       #if self.iface == 'wlan0':
+                       #       iNetwork.restartNetwork()
                        self.close()
 
        def cancel(self):
                iNetwork.getInterfaces()
                self.close()
                        self.close()
 
        def cancel(self):
                iNetwork.getInterfaces()
                self.close()
+
+       def run(self):
+               self.ok()
+
+
+class AdapterSetupConfiguration(Screen):
+       
+       def __init__(self, session,iface):
+               Screen.__init__(self, session)
+               self.iface = iface
+               self.session = session
+               #self.ethtool_bin = "/usr/sbin/ethtool"
+               #self.output = None
+               #self.container = eConsoleAppContainer()
+               self.mainmenu = self.genMainMenu()
+               self["menulist"] = MenuList(self.mainmenu)
+               self["description"] = Label()
+               self["IFtext"] = Label()
+               self["IF"] = Label()
+               self["BottomBG"] = Label()
+               self["Statustext"] = Label()
+               self["statuspic_active"] = Pixmap()
+               self["statuspic_active"].hide()
+               self["statuspic_inactive"] = Pixmap()
+               self["statuspic_inactive"].hide()
+               self["BottomBG"] = Pixmap()
+               self["ButtonRed"] = Pixmap()
+               self["ButtonRedtext"] = Label(_("Close"))
+
+               self.oktext = _("Press OK on your remote control to continue.")
+               self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
+               
+               self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
+               {
+                       "ok": self.ok,
+                       "back": self.close,
+                       "up": self.up,
+                       "down": self.down,
+                       "red": self.close,
+               }, -2)
+
+               iNetwork.loadNetworkConfig()
+               self.onLayoutFinish.append(self.layoutFinished)
+               self.updateStatusbar()
+
+       def ok(self):
+               if self["menulist"].getCurrent()[1] == 'edit':
+                       self.session.open(AdapterSetup,self.iface)
+               if self["menulist"].getCurrent()[1] == 'test':
+                       self.session.open(NetworkAdapterTest,self.iface)
+               if self["menulist"].getCurrent()[1] == 'dns':
+                       self.session.open(NameserverSetup)
+               if self["menulist"].getCurrent()[1] == 'scanwlan':
+                       from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
+                       self.session.open(WlanScan,self.iface)
+               if self["menulist"].getCurrent()[1] == 'wlanstatus':
+                       from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
+                       self.session.open(WlanStatus,self.iface)
+               if self["menulist"].getCurrent()[1] == 'lanrestart':
+                       self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
+               if self["menulist"].getCurrent()[1] == 'enablewlan':
+                       self.session.openWithCallback(self.enablewlan, MessageBox, (_("Are you sure you want to enable WLAN support?\nConnect your Wlan USB Stick to your Dreambox and press OK.\n\n") + self.reboottext ) )
+               if self["menulist"].getCurrent()[1] == 'resetconfig':
+                       self.session.openWithCallback(self.resetconfig, MessageBox, (_("Are you sure you want to reset \nyour network configuration to defaults?\n\n") + self.reboottext ) )
+               
+       def up(self):
+               self["menulist"].up()
+               self.loadDescription()
+
+       def down(self):
+               self["menulist"].down()
+               self.loadDescription()
+
+       def layoutFinished(self):
+               idx = 0
+               self["menulist"].moveToIndex(idx)
+               self.loadDescription()
+
+       def loadDescription(self):
+               if self["menulist"].getCurrent()[1] == 'edit':
+                       self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
+               if self["menulist"].getCurrent()[1] == 'test':
+                       self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
+               if self["menulist"].getCurrent()[1] == 'resetconfig':
+                       self["description"].setText(_("Reset the network configuration of your Dreambox.\n\n" ) + self.reboottext )
+               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 WLAN USB Stick\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':
+                       self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
+               if self["menulist"].getCurrent()[1] == 'enablewlan':
+                       self["description"].setText(_("Pressing OK enables the built in wireless LAN support of your Dreambox.\nWlan USB Sticks with Zydas ZD1211B and RAlink RT73 Chipset are supported.\nConnect your Wlan USB Stick to your Dreambox before pressing OK.\n\n" ) + self.reboottext )
+
+
+       def updateStatusbar(self):
+               self["IFtext"].setText(_("Network:"))
+               self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
+               self["Statustext"].setText(_("Link:"))
+
+               if self.iface == 'wlan0':
+                       from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan, WlanList, wpaSupplicant
+                       w = Wlan(self.iface)
+                       stats = w.getStatus()
+                       if stats['BSSID'] == "00:00:00:00:00:00":
+                               self["statuspic_active"].hide()
+                               self["statuspic_inactive"].show()
+                       else:
+                               self["statuspic_active"].show()
+                               self["statuspic_inactive"].hide()
+               else:
+                       self.getLinkState(self.iface)
+               
+       def doNothing(self):
+               pass
+
+       def genMainMenu(self):
+               menu = []
+               menu.append((_("Adapter settings"), "edit"));
+               menu.append((_("Nameserver settings"), "dns"));
+               menu.append((_("Network test"), "test"));
+               menu.append((_("Restart network"), "lanrestart"));
+               menu.append((_("Reset configuration"), "resetconfig"));
+
+               self.extended = None
+               self.extendedSetup = None
+               for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
+                       callFnc = p.__call__["ifaceSupported"](self.iface)
+                       if callFnc is not None:
+                               menu.append((_("Scan Wireless Networks"), "scanwlan"));
+                               menu.append((_("Show WLAN Status"), "wlanstatus"));
+                       if callFnc is None and iNetwork.ifaces.has_key('wlan0') is False:
+                               menu.append((_("Enable WLAN Support"), "enablewlan"));
+               return menu
+
+       
+       def enablewlan(self, ret = False):
+               if (ret == True):
+                       iNetwork.resetNetworkConfig('wlan')
+                       TryQuitMainloop(self.session,2)
+               
+       def resetconfig(self, ret = False):
+               if (ret == True):
+                       iNetwork.resetNetworkConfig('lan')
+                       TryQuitMainloop(self.session,2)
+
+       def restartLan(self, ret = False):
+               if (ret == True):
+                       iNetwork.restartNetwork()
+
+       def getLinkState(self,iface):
+               iNetwork.getLinkState(iface,self.dataAvail)
+
+       def dataAvail(self,data):
+               self.output = data.strip()
+               result = self.output.split('\n')
+               pattern = re.compile("Link detected: yes")
+               for item in result:
+                       if re.search(pattern, item):
+                               self["statuspic_active"].show()
+                               self["statuspic_inactive"].hide()
+                       else:
+                               self["statuspic_active"].hide()
+                               self["statuspic_inactive"].show()
+       
+
+class NetworkAdapterTest(Screen):      
+
+       def __init__(self, session,iface):
+               Screen.__init__(self, session)
+               self.iface = iface
+
+               self.setLabels()
+       
+               self["updown_actions"] = NumberActionMap(["WizardActions"],
+               {
+                       "ok": self.KeyOK,
+                       "up": lambda: self.updownhandler('up'),
+                       "down": lambda: self.updownhandler('down'),
+       
+               }, -2)
+
+               self["shortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
+               {
+                       "red": self.close,
+                       "back": self.close,
+               }, -2)
+               self["infoshortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
+               {
+                       "red": self.closeInfo,
+                       "back": self.closeInfo,
+               }, -2)
+               self["shortcutsgreen"] = ActionMap(["ShortcutActions"],
+               {
+                       "green": self.KeyGreen,
+               }, -2)
+               self["shortcutsgreen_restart"] = ActionMap(["ShortcutActions"],
+               {
+                       "green": self.KeyGreenRestart,
+               }, -2)
+               self["shortcutsyellow"] = ActionMap(["ShortcutActions"],
+               {
+                       "yellow": self.KeyYellow,
+               }, -2)
+
+               self["shortcutsgreen_restart"].setEnabled(False)
+               self["updown_actions"].setEnabled(False)
+               self["infoshortcuts"].setEnabled(False)
+               self.onClose.append(self.delTimer)      
+               self.onLayoutFinish.append(self.layoutFinished)
+               self.steptimer = False
+               global nextstep
+               nextstep = 0
+               global activebutton
+               activebutton = 0                
+               self.nextStepTimer = eTimer()
+               self.nextStepTimer.callback.append(self.nextStepTimerFire)
+
+       def closeInfo(self):
+               self["shortcuts"].setEnabled(True)              
+               self["infoshortcuts"].setEnabled(False)
+               self["InfoText"].hide()
+               self["InfoTextBorder"].hide()
+               self["ButtonRedtext"].setText(_("Close"))
+               
+       def delTimer(self):
+               del self.steptimer
+               del self.nextStepTimer
+
+       def nextStepTimerFire(self):
+               global nextstep
+               self.nextstep= nextstep
+               self.nextStepTimer.stop()
+               self.steptimer = False
+               self.runTest(self.nextstep)
+
+       def updownhandler(self,direction):
+               global activebutton
+               if direction == 'up':
+                       if activebutton >=2:
+                               activebutton = activebutton -1
+                       self.setActiveButton(activebutton)
+               if direction == 'down':
+                       if activebutton <=5:
+                               activebutton = activebutton +1
+                       self.setActiveButton(activebutton)
+
+       def setActiveButton(self,button):
+               if button == 1:
+                       self["NetworkInfo"].show()
+                       self["NetworkInfo_selected"].hide()
+                       self["AdapterInfo"].hide()
+                       self["AdapterInfo_selected"].show()
+               if button == 2:
+                       self["AdapterInfo"].show()
+                       self["AdapterInfo_selected"].hide()
+                       self["DhcpInfo"].show()
+                       self["DhcpInfo_selected"].hide()
+                       self["NetworkInfo"].hide()
+                       self["NetworkInfo_selected"].show()             
+               if button == 3:
+                       self["NetworkInfo"].show()
+                       self["NetworkInfo_selected"].hide()
+                       self["IPInfo"].show()
+                       self["IPInfo_selected"].hide()
+                       self["DhcpInfo"].hide()
+                       self["DhcpInfo_selected"].show()
+               if button == 4:
+                       self["DhcpInfo"].show()
+                       self["DhcpInfo_selected"].hide()
+                       self["DNSInfo"].show()
+                       self["DNSInfo_selected"].hide()
+                       self["IPInfo"].hide()
+                       self["IPInfo_selected"].show()
+               if button == 5:
+                       self["IPInfo"].show()
+                       self["IPInfo_selected"].hide()
+                       self["EditSettingsButton"].show()
+                       self["EditSettingsButton_selected"].hide()
+                       self["DNSInfo"].hide()
+                       self["DNSInfo_selected"].show()
+               if button == 6:
+                       self["DNSInfo"].show()
+                       self["DNSInfo_selected"].hide()
+                       self["EditSettingsButton"].hide()
+                       self["EditSettingsButton_selected"].show()
+                       
+       def runTest(self,next):
+               global nextstep
+               if next == 0:
+                       nextstep = next + 1
+                       self.doStep1()
+               if next == 1:
+                       nextstep = next + 1
+                       self.doStep2()          
+               if next == 2:
+                       nextstep = next + 1
+                       self.doStep3()
+               if next == 3:
+                       nextstep = next + 1
+                       self.doStep4()
+               if next == 4:
+                       nextstep = next + 1
+                       self.doStep5()
+               if next == 5:
+                       nextstep = next + 1
+                       self.doStep6()                  
+               
+       def doStep1(self):
+               self.steptimer = True
+               self.nextStepTimer.start(3000)
+
+       def doStep2(self):
+               self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
+               self["Adapter"].instance.setForegroundColor(getColor(Green))
+               self["AdapterInfo_Text"].instance.setForegroundColor(getColor(Black))
+               self["AdapterInfo_OK"].show()           
+               self.steptimer = True
+               self.nextStepTimer.start(3000)          
+
+       def doStep3(self):
+               self.getLinkState(self.iface)
+               self["NetworkInfo_Text"].instance.setForegroundColor(getColor(Black))
+               self.steptimer = True
+               self.nextStepTimer.start(3000)                  
+
+       def doStep4(self):
+               if iNetwork.getAdapterAttribute(self.iface, 'dhcp') is True:
+                       self["Dhcp"].instance.setForegroundColor(getColor(Green))
+                       self["Dhcp"].setText(_("enabled"))
+                       self["DhcpInfo_OK"].show()
+                       self["DhcpInfo_NOK"].hide()
+               else:
+                       self["Dhcp"].instance.setForegroundColor(getColor(Grey))
+                       self["Dhcp"].setText(_("disabled"))             
+                       self["DhcpInfo_NOK"].show()
+                       self["DhcpInfo_OK"].hide()
+               self["DhcpInfo_Text"].instance.setForegroundColor(getColor(Black))      
+               self.steptimer = True
+               self.nextStepTimer.start(3000)
+
+       def doStep5(self):
+               if len(iNetwork.getAdapterAttribute(self.iface,'ip')) != 0:
+                       self["IP"].instance.setForegroundColor(getColor(Green))
+                       self["IP"].setText(_("confirmed"))
+                       self["IPInfo_OK"].show()
+                       self["IPInfo_NOK"].hide()
+               else:
+                       self["IP"].instance.setForegroundColor(getColor(Grey))
+                       self["IP"].setText(_("unconfirmed"))                    
+                       self["IPInfo_NOK"].show()
+                       self["IPInfo_OK"].hide()
+               self["IPInfo_Text"].instance.setForegroundColor(getColor(Black))        
+               self.steptimer = True
+               self.nextStepTimer.start(3000)
+
+       def doStep6(self):
+               self.steptimer = False
+               self.nextStepTimer.stop()
+               if len (iNetwork.getNameserverList()) != 0:
+                       self["DNS"].instance.setForegroundColor(getColor(Green))
+                       self["DNS"].setText(_("confirmed"))
+                       self["DNSInfo_OK"].show()
+                       self["DNSInfo_NOK"].hide()
+               else:
+                       self["DNS"].instance.setForegroundColor(getColor(Grey))
+                       self["DNS"].setText(_("unconfirmed"))
+                       self["DNSInfo_NOK"].show()
+                       self["DNSInfo_OK"].hide()
+                       
+               self["DNSInfo_Text"].instance.setForegroundColor(getColor(Black))
+               self["EditSettings_Text"].show()
+               self["EditSettingsButton_selected"].show()
+               self["ButtonYellow_off"].show()
+               self["ButtonYellow"].hide()
+               self["ButtonGreentext"].setText(_("Restart test"))
+               self["ButtonGreen"].show()              
+               self["ButtonGreen_off"].hide()
+               self["shortcutsgreen"].setEnabled(False)
+               self["shortcutsgreen_restart"].setEnabled(True)
+               self["shortcutsyellow"].setEnabled(False)
+               self["updown_actions"].setEnabled(True)
+               global activebutton
+               activebutton = 6
+               
+       def KeyGreen(self):
+               self["shortcutsgreen"].setEnabled(False)
+               self["shortcutsyellow"].setEnabled(True)
+               self["updown_actions"].setEnabled(False)
+               self["ButtonYellow_off"].hide()
+               self["ButtonYellow"].show()
+               self["ButtonGreen"].hide()              
+               self["ButtonGreen_off"].show()
+               self.steptimer = True
+               self.nextStepTimer.start(1000)
+
+       def KeyGreenRestart(self):
+               global nextstep
+               nextstep = 0            
+               self.layoutFinished()
+               self["Adapter"].setText((""))
+               self["Network"].setText((""))
+               self["Dhcp"].setText((""))
+               self["IP"].setText((""))
+               self["DNS"].setText((""))
+               self["AdapterInfo_Text"].instance.setForegroundColor(getColor(Grey))
+               self["NetworkInfo_Text"].instance.setForegroundColor(getColor(Grey))
+               self["DhcpInfo_Text"].instance.setForegroundColor(getColor(Grey))
+               self["IPInfo_Text"].instance.setForegroundColor(getColor(Grey))
+               self["DNSInfo_Text"].instance.setForegroundColor(getColor(Grey))
+               self["shortcutsgreen_restart"].setEnabled(False)
+               self["shortcutsgreen"].setEnabled(False)
+               self["shortcutsyellow"].setEnabled(True)
+               self["updown_actions"].setEnabled(False)
+               self["ButtonYellow_off"].hide()
+               self["ButtonYellow"].show()
+               self["ButtonGreen"].hide()              
+               self["ButtonGreen_off"].show()
+               self.steptimer = True
+               self.nextStepTimer.start(1000)
+               
+       def KeyOK(self):
+               global activebutton
+               self["infoshortcuts"].setEnabled(True)
+               self["shortcuts"].setEnabled(False)
+               if activebutton == 1: # Adapter Check
+                       self["InfoText"].setText(_("This test detects your configured LAN-Adapter."))
+                       self["InfoTextBorder"].show()
+                       self["InfoText"].show()
+                       self["ButtonRedtext"].setText(_("Back"))
+               if activebutton == 2: #LAN Check
+                       self["InfoText"].setText(_("This test checks whether a network cable is connected to your LAN-Adapter.\nIf you get a \"disconnected\" message:\n- verify that a network cable is attached\n- verify that the cable is not broken"))
+                       self["InfoTextBorder"].show()
+                       self["InfoText"].show()
+                       self["ButtonRedtext"].setText(_("Back"))
+               if activebutton == 3: #DHCP Check
+                       self["InfoText"].setText(_("This test checks whether your LAN Adapter is set up for automatic IP Address configuration with DHCP.\nIf you get a \"disabled\" message:\n - then your LAN Adapter is configured for manual IP Setup\n- verify thay you have entered correct IP informations in the AdapterSetup dialog.\nIf you get an \"enabeld\" message:\n-verify that you have a configured and working DHCP Server in your network."))
+                       self["InfoTextBorder"].show()
+                       self["InfoText"].show()
+                       self["ButtonRedtext"].setText(_("Back"))
+               if activebutton == 4: # IP Check
+                       self["InfoText"].setText(_("This test checks whether a valid IP Address is found for your LAN Adapter.\nIf you get a \"unconfirmed\" message:\n- no valid IP Address was found\n- please check your DHCP, cabling and adapter setup"))
+                       self["InfoTextBorder"].show()
+                       self["InfoText"].show()
+                       self["ButtonRedtext"].setText(_("Back"))
+               if activebutton == 5: # DNS Check
+                       self["InfoText"].setText(_("This test checks for configured Nameservers.\nIf you get a \"unconfirmed\" message:\n- please check your DHCP, cabling and Adapter setup\n- if you configured your Nameservers manually please verify your entries in the \"Nameserver\" Configuration"))
+                       self["InfoTextBorder"].show()
+                       self["InfoText"].show()
+                       self["ButtonRedtext"].setText(_("Back"))
+               if activebutton == 6: # Edit Settings
+                       self.session.open(AdapterSetup,self.iface)
+
+       def KeyYellow(self):
+               global nextstep
+               nextstep = 0
+               self["shortcutsgreen_restart"].setEnabled(True)
+               self["shortcutsgreen"].setEnabled(False)
+               self["shortcutsyellow"].setEnabled(False)
+               self["ButtonGreentext"].setText(_("Restart test"))
+               self["ButtonYellow_off"].show()
+               self["ButtonYellow"].hide()
+               self["ButtonGreen"].show()              
+               self["ButtonGreen_off"].hide()
+               self.steptimer = False
+               self.nextStepTimer.stop()
+               
+       def layoutFinished(self):
+               self["shortcutsyellow"].setEnabled(False)
+               self["AdapterInfo_selected"].hide()
+               self["AdapterInfo_OK"].hide()
+               
+               self["NetworkInfo_selected"].hide()
+               self["NetworkInfo_OK"].hide()
+               self["NetworkInfo_NOK"].hide()
+               
+               self["DhcpInfo_selected"].hide()
+               self["DhcpInfo_OK"].hide()
+               self["DhcpInfo_NOK"].hide()
+               
+               self["IPInfo_selected"].hide()
+               self["IPInfo_OK"].hide()
+               self["IPInfo_NOK"].hide()
+               
+               self["DNSInfo_selected"].hide()
+               self["DNSInfo_OK"].hide()
+               self["DNSInfo_NOK"].hide()
+               
+               self["EditSettings_Text"].hide()
+               self["EditSettingsButton"].hide()
+               self["EditSettingsButton_selected"].hide()
+               self["ButtonYellow"].hide()
+               self["ButtonGreen_off"].hide()
+               self["InfoText"].hide()
+               self["InfoTextBorder"].hide()
+               
+       def setLabels(self):
+               self["Adaptertext"] = Label(_("LAN Adapter"))
+               self["Adapter"] = Label()
+               self["AdapterInfo"] = Pixmap()
+               self["AdapterInfo_selected"] = Pixmap()
+               self["AdapterInfo_Text"] = Label(_("Show Info"))
+               self["AdapterInfo_OK"] = Pixmap()
+               
+               if self.iface == 'wlan0':
+                       self["Networktext"] = Label(_("Wireless Network"))
+               else:
+                       self["Networktext"] = Label(_("Local Network"))
+               
+               self["Network"] = Label()
+               self["NetworkInfo"] = Pixmap()
+               self["NetworkInfo_selected"] = Pixmap()
+               self["NetworkInfo_Text"] = Label(_("Show Info"))
+               self["NetworkInfo_OK"] = Pixmap()
+               self["NetworkInfo_NOK"] = Pixmap()
+               
+               self["Dhcptext"] = Label(_("DHCP"))
+               self["Dhcp"] = Label()
+               self["DhcpInfo"] = Pixmap()
+               self["DhcpInfo_selected"] = Pixmap()
+               self["DhcpInfo_Text"] = Label(_("Show Info"))
+               self["DhcpInfo_OK"] = Pixmap()
+               self["DhcpInfo_NOK"] = Pixmap()
+               
+               self["IPtext"] = Label(_("IP Address"))
+               self["IP"] = Label()
+               self["IPInfo"] = Pixmap()
+               self["IPInfo_selected"] = Pixmap()
+               self["IPInfo_Text"] = Label(_("Show Info"))
+               self["IPInfo_OK"] = Pixmap()
+               self["IPInfo_NOK"] = Pixmap()
+               
+               self["DNStext"] = Label(_("Nameserver"))
+               self["DNS"] = Label()
+               self["DNSInfo"] = Pixmap()
+               self["DNSInfo_selected"] = Pixmap()
+               self["DNSInfo_Text"] = Label(_("Show Info"))
+               self["DNSInfo_OK"] = Pixmap()
+               self["DNSInfo_NOK"] = Pixmap()
+               
+               self["EditSettings_Text"] = Label(_("Edit settings"))           
+               self["EditSettingsButton"] = Pixmap()
+               self["EditSettingsButton_selected"] = Pixmap()
+               
+               self["ButtonRedtext"] = Label(_("Close"))
+               self["ButtonRed"] = Pixmap()
+               self["ButtonGreentext"] = Label(_("Start test"))
+               self["ButtonGreen"] = Pixmap()
+               self["ButtonGreen_off"] = Pixmap()
+               self["ButtonYellowtext"] = Label(_("Stop test"))
+               self["ButtonYellow"] = Pixmap()         
+               self["ButtonYellow_off"] = Pixmap()
+               
+               self["InfoTextBorder"] = Pixmap()
+               self["InfoText"] = Label()
+
+       def getLinkState(self,iface):
+               iNetwork.getLinkState(iface,self.dataAvail)
+
+       def dataAvail(self,data):
+               self.output = data.strip()
+               result = self.output.split('\n')
+               pattern = re.compile("Link detected: yes")
+               for item in result:
+                       if re.search(pattern, item):
+                               self["Network"].instance.setForegroundColor(getColor(Green))
+                               self["Network"].setText(_("connected"))
+                               self["NetworkInfo_OK"].show()
+                               self["NetworkInfo_NOK"].hide()
+                       else:
+                               self["Network"].instance.setForegroundColor(getColor(Grey))
+                               self["Network"].setText(_("disconnected"))
+                               self["NetworkInfo_OK"].hide()
+                               self["NetworkInfo_NOK"].show()
+
+