SystemPlugins/VideoEnhancement: - add support for dm500hd
[enigma2.git] / lib / python / Plugins / SystemPlugins / VideoEnhancement / plugin.py
index a2cb774edd1443d868f36628518b9e330679e1f9..8f8f56e18c624cea514f373c289db11bf02f28c0 100755 (executable)
@@ -2,8 +2,7 @@ from Plugins.Plugin import PluginDescriptor
 from Components.ConfigList import ConfigListScreen
 from Components.config import getConfigListEntry, config, ConfigBoolean
 from Components.ActionMap import ActionMap
 from Components.ConfigList import ConfigListScreen
 from Components.config import getConfigListEntry, config, ConfigBoolean
 from Components.ActionMap import ActionMap
-from Components.Button import Button
-from Components.Label import Label
+from Components.Sources.StaticText import StaticText
 from Screens.Screen import Screen
 from Screens.VirtualKeyBoard import VirtualKeyBoard
 from Screens.ChoiceBox import ChoiceBox
 from Screens.Screen import Screen
 from Screens.VirtualKeyBoard import VirtualKeyBoard
 from Screens.ChoiceBox import ChoiceBox
@@ -22,14 +21,13 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
                <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
                <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
                <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
                <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
                <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
-               <widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
-               <widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
-               <widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
-               <widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
+               <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+               <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="config" position="5,50" size="550,340" scrollbarMode="showOnDemand" />
                <ePixmap pixmap="skin_default/div-h.png" position="0,390" zPosition="1" size="560,2" />
                <widget name="config" position="5,50" size="550,340" scrollbarMode="showOnDemand" />
                <ePixmap pixmap="skin_default/div-h.png" position="0,390" zPosition="1" size="560,2" />
-               <widget name="introduction" position="5,400" size="550,25" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
-
+               <widget source="introduction" render="Label" position="5,400" size="550,25" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
        </screen>"""
 
        def __init__(self, session, hw):
        </screen>"""
 
        def __init__(self, session, hw):
@@ -71,11 +69,11 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                "blue": self.keyBlue,
                        }, -2)
 
                                "blue": self.keyBlue,
                        }, -2)
 
-               self["key_red"] = Button(_("Cancel"))
-               self["key_green"] = Button(_("OK"))
-               self["key_yellow"] = Button(_("Last config"))
-               self["key_blue"] = Button(_("Default"))
-               self["introduction"] = Label()
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("OK"))
+               self["key_yellow"] = StaticText(_("Last config"))
+               self["key_blue"] = StaticText(_("Default"))
+               self["introduction"] = StaticText()
 
                self.createSetup()
                self.rememberOldSettings()
 
                self.createSetup()
                self.rememberOldSettings()
@@ -95,15 +93,15 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                self.oldSaturation = config.pep.saturation.value
                self.oldHue = config.pep.hue.value
                self.oldBrightness = config.pep.brightness.value
                self.oldSaturation = config.pep.saturation.value
                self.oldHue = config.pep.hue.value
                self.oldBrightness = config.pep.brightness.value
-               if self.hw_type == 'dm8000':
+               self.oldBlock_noise = config.pep.block_noise_reduction.value
+               self.oldMosquito_noise = config.pep.mosquito_noise_reduction.value
+               self.oldDigital_contour = config.pep.digital_contour_removal.value
+               if self.hw_type in ('dm8000', 'dm500hd'):
                        self.oldSplit = config.pep.split.value
                        self.oldSharpness = config.pep.sharpness.value
                        self.oldAuto_flesh = config.pep.auto_flesh.value
                        self.oldGreen_boost = config.pep.green_boost.value
                        self.oldBlue_boost = config.pep.blue_boost.value
                        self.oldSplit = config.pep.split.value
                        self.oldSharpness = config.pep.sharpness.value
                        self.oldAuto_flesh = config.pep.auto_flesh.value
                        self.oldGreen_boost = config.pep.green_boost.value
                        self.oldBlue_boost = config.pep.blue_boost.value
-                       self.oldBlock_noise = config.pep.block_noise_reduction.value
-                       self.oldMosquito_noise = config.pep.mosquito_noise_reduction.value
-                       self.oldDigital_contour = config.pep.digital_contour_removal.value
                        self.oldDynamic_contrast = config.pep.dynamic_contrast.value
 
        def createSetup(self):
                        self.oldDynamic_contrast = config.pep.dynamic_contrast.value
 
        def createSetup(self):
@@ -111,6 +109,9 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                self.saturationEntry = getConfigListEntry(_("Saturation"), config.pep.saturation)
                self.hueEntry = getConfigListEntry(_("Hue"), config.pep.hue)
                self.brightnessEntry = getConfigListEntry(_("Brightness"), config.pep.brightness)
                self.saturationEntry = getConfigListEntry(_("Saturation"), config.pep.saturation)
                self.hueEntry = getConfigListEntry(_("Hue"), config.pep.hue)
                self.brightnessEntry = getConfigListEntry(_("Brightness"), config.pep.brightness)
+               self.block_noise_reductionEntry = getConfigListEntry(_("Block noise reduction"), config.pep.block_noise_reduction)
+               self.mosquito_noise_reductionEntry = getConfigListEntry(_("Mosquito noise reduction"), config.pep.mosquito_noise_reduction)
+               self.digital_contour_removalEntry = getConfigListEntry(_("Digital contour removal"), config.pep.digital_contour_removal)
 
                self.list = [
                        self.contrastEntry
 
                self.list = [
                        self.contrastEntry
@@ -121,15 +122,19 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                        self.hueEntry,
                        self.brightnessEntry
                ))
                        self.hueEntry,
                        self.brightnessEntry
                ))
-               if self.hw_type == 'dm8000':
+               if self.hw_type == 'dm800':
+                       self.list.extend((
+                               self.block_noise_reductionEntry,
+                               self.mosquito_noise_reductionEntry,
+                               self.digital_contour_removalEntry
+                       ))
+
+               elif self.hw_type in ( 'dm8000', 'dm500hd' ):
                        self.splitEntry = getConfigListEntry(_("Split preview mode"), config.pep.split)
                        self.sharpnessEntry = getConfigListEntry(_("Sharpness"), config.pep.sharpness)
                        self.auto_fleshEntry = getConfigListEntry(_("Auto flesh"), config.pep.auto_flesh)
                        self.green_boostEntry = getConfigListEntry(_("Green boost"), config.pep.green_boost)
                        self.blue_boostEntry = getConfigListEntry(_("Blue boost"), config.pep.blue_boost)
                        self.splitEntry = getConfigListEntry(_("Split preview mode"), config.pep.split)
                        self.sharpnessEntry = getConfigListEntry(_("Sharpness"), config.pep.sharpness)
                        self.auto_fleshEntry = getConfigListEntry(_("Auto flesh"), config.pep.auto_flesh)
                        self.green_boostEntry = getConfigListEntry(_("Green boost"), config.pep.green_boost)
                        self.blue_boostEntry = getConfigListEntry(_("Blue boost"), config.pep.blue_boost)
-                       self.block_noise_reductionEntry = getConfigListEntry(_("Block noise reduction"), config.pep.block_noise_reduction)
-                       self.mosquito_noise_reductionEntry = getConfigListEntry(_("Mosquito noise reduction"), config.pep.mosquito_noise_reduction)
-                       self.digital_contour_removalEntry = getConfigListEntry(_("Digital contour removal"), config.pep.digital_contour_removal)
                        self.dynamic_contrastEntry = getConfigListEntry(_("Dynamic contrast"), config.pep.dynamic_contrast)
 
                        self.xtdlist = [
                        self.dynamic_contrastEntry = getConfigListEntry(_("Dynamic contrast"), config.pep.dynamic_contrast)
 
                        self.xtdlist = [
@@ -183,12 +188,14 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                current,
                                self.splitEntry
                        ]
                                current,
                                self.splitEntry
                        ]
-                       self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = config.pep.split.value)
+                       maxvalue = current[1].max
+                       self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = config.pep.split.value, maxValue = maxvalue)
                else:
                        self.previewlist = [
                                current
                        ]
                else:
                        self.previewlist = [
                                current
                        ]
-                       self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist)
+                       maxvalue = current[1].max
+                       self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = None, maxValue = maxvalue)
 
        def keyRight(self):
                current = self["config"].getCurrent()
 
        def keyRight(self):
                current = self["config"].getCurrent()
@@ -200,12 +207,14 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                current,
                                self.splitEntry
                        ]
                                current,
                                self.splitEntry
                        ]
-                       self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = config.pep.split.value )
+                       maxvalue = current[1].max
+                       self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = config.pep.split.value, maxValue = maxvalue )
                else:
                        self.previewlist = [
                                current
                        ]
                else:
                        self.previewlist = [
                                current
                        ]
-                       self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist)
+                       maxvalue = current[1].max
+                       self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = None, maxValue = maxvalue)
 
        def confirm(self, confirmed):
                if not confirmed:
 
        def confirm(self, confirmed):
                if not confirmed:
@@ -242,8 +251,14 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                config.pep.hue.setValue(self.oldHue)
                        if self.brightnessEntry is not None:
                                config.pep.brightness.setValue(self.oldBrightness)
                                config.pep.hue.setValue(self.oldHue)
                        if self.brightnessEntry is not None:
                                config.pep.brightness.setValue(self.oldBrightness)
-
-                       if self.hw_type == 'dm8000':
+                       if self.block_noise_reductionEntry is not None:
+                               config.pep.block_noise_reduction.setValue(self.oldBlock_noise)
+                       if self.mosquito_noise_reductionEntry is not None:
+                               config.pep.mosquito_noise_reduction.setValue(self.oldMosquito_noise)
+                       if self.digital_contour_removalEntry is not None:
+                               config.pep.digital_contour_removal.setValue(self.oldDigital_contour)
+
+                       if self.hw_type in ( 'dm8000', 'dm500hd' ):
                                if self.splitEntry is not None:
                                        config.pep.split.setValue('off')
                                if self.sharpnessEntry is not None:
                                if self.splitEntry is not None:
                                        config.pep.split.setValue('off')
                                if self.sharpnessEntry is not None:
@@ -254,12 +269,6 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                        config.pep.green_boost.setValue(self.oldGreen_boost)
                                if self.blue_boostEntry is not None:
                                        config.pep.blue_boost.setValue(self.oldBlue_boost)
                                        config.pep.green_boost.setValue(self.oldGreen_boost)
                                if self.blue_boostEntry is not None:
                                        config.pep.blue_boost.setValue(self.oldBlue_boost)
-                               if self.block_noise_reductionEntry is not None:
-                                       config.pep.block_noise_reduction.setValue(self.oldBlock_noise)
-                               if self.mosquito_noise_reductionEntry is not None:
-                                       config.pep.mosquito_noise_reduction.setValue(self.oldMosquito_noise)
-                               if self.digital_contour_removalEntry is not None:
-                                       config.pep.digital_contour_removal.setValue(self.oldDigital_contour)
                                if self.dynamic_contrastEntry is not None:
                                        config.pep.dynamic_contrast.setValue(self.oldDynamic_contrast)
                        self.keySave()
                                if self.dynamic_contrastEntry is not None:
                                        config.pep.dynamic_contrast.setValue(self.oldDynamic_contrast)
                        self.keySave()
@@ -279,8 +288,14 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                config.pep.hue.setValue(128)
                        if self.brightnessEntry is not None:
                                config.pep.brightness.setValue(128)
                                config.pep.hue.setValue(128)
                        if self.brightnessEntry is not None:
                                config.pep.brightness.setValue(128)
-
-                       if self.hw_type == 'dm8000':
+                       if self.block_noise_reductionEntry is not None:
+                               config.pep.block_noise_reduction.setValue(0)
+                       if self.mosquito_noise_reductionEntry is not None:
+                               config.pep.mosquito_noise_reduction.setValue(0)
+                       if self.digital_contour_removalEntry is not None:
+                               config.pep.digital_contour_removal.setValue(0)
+
+                       if self.hw_type in ( 'dm8000', 'dm500hd' ):
                                if self.splitEntry is not None:
                                        config.pep.split.setValue('off')
                                if self.sharpnessEntry is not None:
                                if self.splitEntry is not None:
                                        config.pep.split.setValue('off')
                                if self.sharpnessEntry is not None:
@@ -291,12 +306,6 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                        config.pep.green_boost.setValue(0)
                                if self.blue_boostEntry is not None:
                                        config.pep.blue_boost.setValue(0)
                                        config.pep.green_boost.setValue(0)
                                if self.blue_boostEntry is not None:
                                        config.pep.blue_boost.setValue(0)
-                               if self.block_noise_reductionEntry is not None:
-                                       config.pep.block_noise_reduction.setValue(0)
-                               if self.mosquito_noise_reductionEntry is not None:
-                                       config.pep.mosquito_noise_reduction.setValue(0)
-                               if self.digital_contour_removalEntry is not None:
-                                       config.pep.digital_contour_removal.setValue(0)
                                if self.dynamic_contrastEntry is not None:
                                        config.pep.dynamic_contrast.setValue(0)
                        self.keySave()
                                if self.dynamic_contrastEntry is not None:
                                        config.pep.dynamic_contrast.setValue(0)
                        self.keySave()
@@ -308,6 +317,7 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
        def changedEntry(self):
                for x in self.onChangedEntry:
                        x()
        def changedEntry(self):
                for x in self.onChangedEntry:
                        x()
+               self.selectionChanged()
 
        def getCurrentEntry(self):
                return self["config"].getCurrent()[0]
 
        def getCurrentEntry(self):
                return self["config"].getCurrent()[0]
@@ -323,20 +333,25 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
 class VideoEnhancementPreview(Screen, ConfigListScreen):
 
        skin = """
 class VideoEnhancementPreview(Screen, ConfigListScreen):
 
        skin = """
-               <screen name="VideoEnhancementSetup" position="90,430" size="560,110" title="VideoEnhancementSetup">
+               <screen name="VideoEnhancementPreview" position="center,360" size="560,170" title="VideoEnhancementPreview">
                <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
                <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
                <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
                <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
-               <widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
-               <widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
-               <widget name="config" position="5,50" size="550,60" scrollbarMode="showOnDemand" />
+               <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+               <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 name="config" position="5,50" size="550,80" scrollbarMode="showOnDemand" />
+               <ePixmap pixmap="skin_default/div-h.png" position="0,130" zPosition="1" size="560,2" />
+               <widget source="introduction" render="Label" position="0,140" size="550,25" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
        </screen>"""
 
        </screen>"""
 
-       def __init__(self, session, configEntry = None, oldSplitMode = None):
+       def __init__(self, session, configEntry = None, oldSplitMode = None, maxValue = None):
                Screen.__init__(self, session)
 
                self.onChangedEntry = [ ]
                self.setup_title = "Videoenhancement"
                self.oldSplitMode = oldSplitMode
                Screen.__init__(self, session)
 
                self.onChangedEntry = [ ]
                self.setup_title = "Videoenhancement"
                self.oldSplitMode = oldSplitMode
+               self.maxValue = maxValue
+               self.configStepsEntry = None
+               self.isStepSlider = None
 
                self.list = [ ]
                self.configEntry = configEntry
 
                self.list = [ ]
                self.configEntry = configEntry
@@ -348,26 +363,53 @@ class VideoEnhancementPreview(Screen, ConfigListScreen):
                                "save": self.keySave,
                        }, -2)
 
                                "save": self.keySave,
                        }, -2)
 
-               self["key_red"] = Button(_("Cancel"))
-               self["key_green"] = Button(_("OK"))
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("OK"))
+               self["introduction"] = StaticText()
 
                self.createSetup()
 
                self.createSetup()
+               self.onLayoutFinish.append(self.layoutFinished)
+
+       def layoutFinished(self):
+               self.setTitle(_("Video enhancement preview"))
 
        def createSetup(self):
                self.list = [ ]
 
        def createSetup(self):
                self.list = [ ]
+               if self.maxValue == 256:
+                       self.configStepsEntry = getConfigListEntry(_("Change step size"), config.pep.configsteps)
+
                if self.configEntry is not None:
                        self.list = self.configEntry
                if self.configEntry is not None:
                        self.list = self.configEntry
+               if self.maxValue == 256:
+                       self.list.append(self.configStepsEntry)
+
                self["config"].list = self.list
                self["config"].l.setSeperation(300)
                self["config"].l.setList(self.list)
                self["config"].list = self.list
                self["config"].l.setSeperation(300)
                self["config"].l.setList(self.list)
+               if not self.selectionChanged in self["config"].onSelectionChanged:
+                       self["config"].onSelectionChanged.append(self.selectionChanged)
+               self.selectionChanged()
+
+       def selectionChanged(self):
+               self["introduction"].setText(_("Current value: ") + self.getCurrentValue())
+               try:
+                       max_avail=self["config"].getCurrent()[1].max
+                       if max_avail == 256:
+                               self.isStepSlider = True
+                       else:
+                               self.isStepSlider = False
+               except AttributeError:
+                       print "no max value"
 
        def keyLeft(self):
 
        def keyLeft(self):
+               if self.isStepSlider is True:
+                       self["config"].getCurrent()[1].increment = config.pep.configsteps.value
                ConfigListScreen.keyLeft(self)
                ConfigListScreen.keyLeft(self)
-               self.createSetup()
 
        def keyRight(self):
 
        def keyRight(self):
+               if self.isStepSlider is True:
+                       self["config"].getCurrent()[1].increment = config.pep.configsteps.value
                ConfigListScreen.keyRight(self)
                ConfigListScreen.keyRight(self)
-               self.createSetup()
 
        def keySave(self):
                if self.oldSplitMode is not None:
 
        def keySave(self):
                if self.oldSplitMode is not None:
@@ -393,6 +435,7 @@ class VideoEnhancementPreview(Screen, ConfigListScreen):
        def changedEntry(self):
                for x in self.onChangedEntry:
                        x()
        def changedEntry(self):
                for x in self.onChangedEntry:
                        x()
+               self.selectionChanged()
 
        def getCurrentEntry(self):
                return self["config"].getCurrent()[0]
 
        def getCurrentEntry(self):
                return self["config"].getCurrent()[0]
@@ -420,7 +463,7 @@ def Plugins(**kwargs):
        list = []
        if config.usage.setup_level.index >= 2: # expert+
                hw_type = HardwareInfo().get_device_name()
        list = []
        if config.usage.setup_level.index >= 2: # expert+
                hw_type = HardwareInfo().get_device_name()
-               if hw_type == 'dm8000' or hw_type == 'dm800':
+               if hw_type in ( 'dm8000', 'dm800', 'dm500hd' ):
                        if (os.path.exists("/proc/stb/vmpeg/0/pep_apply") == True):
                                list.append(PluginDescriptor(name=_("Videoenhancement Setup"), description=_("Advanced Video Enhancement Setup"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup))
        return list
                        if (os.path.exists("/proc/stb/vmpeg/0/pep_apply") == True):
                                list.append(PluginDescriptor(name=_("Videoenhancement Setup"), description=_("Advanced Video Enhancement Setup"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup))
        return list