fix some crashes during settings wizard
[enigma2.git] / lib / python / Plugins / SystemPlugins / Videomode / VideoHardware.py
index 71529a037b569db725229b23bc12a56ab48dc5c6..6ecbfd49cd37081dbce722d24d9112d3805c580c 100644 (file)
@@ -2,6 +2,7 @@ from enigma import eTimer
 from Components.config import config, ConfigSelection, ConfigSubDict, ConfigYesNo
 
 from Tools.CList import CList
+from Tools.HardwareInfo import HardwareInfo
 
 # The "VideoHardware" is the interface to /proc/stb/video.
 # It generates hotplug events, and gives you the list of 
@@ -195,10 +196,12 @@ class VideoHardware:
                print "saveMode", port, mode, rate
                config.av.videoport.value = port
                config.av.videoport.save()
-               config.av.videomode[port].value = mode
-               config.av.videomode[port].save()
-               config.av.videorate[mode].value = rate
-               config.av.videorate[mode].save()
+               if port in config.av.videomode:
+                       config.av.videomode[port].value = mode
+                       config.av.videomode[port].save()
+               if mode in config.av.videorate:
+                       config.av.videorate[mode].value = rate
+                       config.av.videorate[mode].save()
 
        def isPortAvailable(self, port):
                # fixme
@@ -228,20 +231,29 @@ class VideoHardware:
                return res
 
        def createConfig(self, *args):
-               # create list of output ports
-               portlist = self.getPortList()
+               hw_type = HardwareInfo().get_device_name()
+               lst = []
 
-               # create list of available modes
-               config.av.videoport = ConfigSelection(choices = [(port, _(port)) for port in portlist])
                config.av.videomode = ConfigSubDict()
                config.av.videorate = ConfigSubDict()
 
+               # create list of output ports
+               portlist = self.getPortList()
                for port in portlist:
+                       descr = port
+                       if descr == 'DVI' and hw_type in ('dm500hd', 'dm800se', 'dm7020hd'):
+                               descr = 'HDMI'
+                       elif descr == 'DVI-PC' and hw_type in ('dm500hd', 'dm800se', 'dm7020hd'):
+                               descr = 'HDMI-PC'
+                       lst.append((port, descr))
+
+                       # create list of available modes
                        modes = self.getModeList(port)
                        if len(modes):
                                config.av.videomode[port] = ConfigSelection(choices = [mode for (mode, rates) in modes])
                        for (mode, rates) in modes:
                                config.av.videorate[mode] = ConfigSelection(choices = rates)
+               config.av.videoport = ConfigSelection(choices = lst)
 
        def setConfiguredMode(self):
                port = config.av.videoport.value