from Plugins.Plugin import PluginDescriptor from Components.ConfigList import ConfigListScreen from Components.config import getConfigListEntry, config, ConfigNothing, ConfigSelection from Components.ActionMap import ActionMap from Components.Sources.StaticText import StaticText from Screens.Screen import Screen from Screens.MessageBox import MessageBox import VideoEnhancement from os import path as os_path class VideoEnhancementSetup(Screen, ConfigListScreen): skin = """ """ def __init__(self, session): Screen.__init__(self, session) self.session = session self.onChangedEntry = [ ] self.setup_title = "Videoenhancement" self.list = [ ] self.xtdlist = [ ] ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry) self["actions"] = ActionMap(["SetupActions", "ColorActions"], { "cancel": self.keyCancel, "save": self.apply, "yellow": self.keyYellow, "blue": self.keyBlue, }, -2) 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.onLayoutFinish.append(self.layoutFinished) def layoutFinished(self): self.setTitle(_("Video enhancement setup")) def rememberOldSettings(self): self.oldContrast = config.pep.contrast.value self.oldSaturation = config.pep.saturation.value self.oldHue = config.pep.hue.value self.oldBrightness = config.pep.brightness.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.oldScaler_sharpness = config.av.scaler_sharpness.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.oldDynamic_contrast = config.pep.dynamic_contrast.value def addToConfigList(self, description, configEntry, add_to_xtdlist=False): if isinstance(configEntry, ConfigNothing): return None entry = getConfigListEntry(description, configEntry) self.list.append(entry); if add_to_xtdlist: self.xtdlist.append(entry) return entry def createSetup(self): self.list = [] self.xtdlist = [] addToConfigList = self.addToConfigList self.contrastEntry = addToConfigList(_("Contrast"), config.pep.contrast) self.saturationEntry = addToConfigList(_("Saturation"), config.pep.saturation) self.hueEntry = addToConfigList(_("Hue"), config.pep.hue) self.brightnessEntry = addToConfigList(_("Brightness"), config.pep.brightness) self.scaler_sharpnessEntry = addToConfigList(_("Scaler sharpness"), config.av.scaler_sharpness) self.splitEntry = addToConfigList(_("Split preview mode"), config.pep.split, True) add_to_xtdlist = self.splitEntry is not None self.sharpnessEntry = addToConfigList(_("Sharpness"), config.pep.sharpness, add_to_xtdlist) self.auto_fleshEntry = addToConfigList(_("Auto flesh"), config.pep.auto_flesh, add_to_xtdlist) self.green_boostEntry = addToConfigList(_("Green boost"), config.pep.green_boost, add_to_xtdlist) self.blue_boostEntry = addToConfigList(_("Blue boost"), config.pep.blue_boost, add_to_xtdlist) self.dynamic_contrastEntry = addToConfigList(_("Dynamic contrast"), config.pep.dynamic_contrast, add_to_xtdlist) self.block_noise_reductionEntry = addToConfigList(_("Block noise reduction"), config.pep.block_noise_reduction, add_to_xtdlist) self.mosquito_noise_reductionEntry = addToConfigList(_("Mosquito noise reduction"), config.pep.mosquito_noise_reduction, add_to_xtdlist) self.digital_contour_removalEntry = addToConfigList(_("Digital contour removal"), config.pep.digital_contour_removal, add_to_xtdlist) 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()) def PreviewClosed(self): self["config"].invalidate(self["config"].getCurrent()) self.createSetup() def keyLeft(self): current = self["config"].getCurrent() if current == self.splitEntry: ConfigListScreen.keyLeft(self) elif current != self.splitEntry and current in self.xtdlist: self.previewlist = [ current, self.splitEntry ] maxvalue = current[1].max self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = config.pep.split.value, maxValue = maxvalue) else: self.previewlist = [ current ] maxvalue = current[1].max self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = None, maxValue = maxvalue) def keyRight(self): current = self["config"].getCurrent() if current == self.splitEntry: ConfigListScreen.keyRight(self) elif current != self.splitEntry and current in self.xtdlist: self.previewlist = [ current, self.splitEntry ] maxvalue = current[1].max self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = config.pep.split.value, maxValue = maxvalue ) else: self.previewlist = [ current ] maxvalue = current[1].max self.session.openWithCallback(self.PreviewClosed, VideoEnhancementPreview, configEntry = self.previewlist, oldSplitMode = None, maxValue = maxvalue) def confirm(self, confirmed): if not confirmed: print "not confirmed" else: if self.splitEntry is not None: config.pep.split.setValue('off') self.keySave() def apply(self): self.session.openWithCallback(self.confirm, MessageBox, _("Use this video enhancement settings?"), MessageBox.TYPE_YESNO, timeout = 20, default = False) def cancelConfirm(self, result): if not result: return self.keyYellowConfirm(True) self.close() def keyCancel(self): if self["config"].isChanged(): self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?")) else: self.close() def keyYellowConfirm(self, confirmed): if not confirmed: print "not confirmed" else: if self.contrastEntry is not None: config.pep.contrast.setValue(self.oldContrast) if self.saturationEntry is not None: config.pep.saturation.setValue(self.oldSaturation) if self.hueEntry is not None: config.pep.hue.setValue(self.oldHue) if self.brightnessEntry is not None: config.pep.brightness.setValue(self.oldBrightness) 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.scaler_sharpnessEntry is not None: config.av.scaler_sharpness.setValue(self.oldScaler_sharpness) if self.splitEntry is not None: config.pep.split.setValue('off') if self.sharpnessEntry is not None: config.pep.sharpness.setValue(self.oldSharpness) if self.auto_fleshEntry is not None: config.pep.auto_flesh.setValue(self.oldAuto_flesh) if self.green_boostEntry is not None: 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.dynamic_contrastEntry is not None: config.pep.dynamic_contrast.setValue(self.oldDynamic_contrast) self.keySave() def keyYellow(self): self.session.openWithCallback(self.keyYellowConfirm, MessageBox, _("Reset video enhancement settings to your last configuration?"), MessageBox.TYPE_YESNO, timeout = 20, default = False) def keyBlueConfirm(self, confirmed): if not confirmed: print "not confirmed" else: if self.contrastEntry is not None: config.pep.contrast.setValue(128) if self.saturationEntry is not None: config.pep.saturation.setValue(128) if self.hueEntry is not None: config.pep.hue.setValue(128) if self.brightnessEntry is not None: config.pep.brightness.setValue(128) 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.scaler_sharpnessEntry is not None: config.av.scaler_sharpness.setValue(13) if self.splitEntry is not None: config.pep.split.setValue('off') if self.sharpnessEntry is not None: config.pep.sharpness.setValue(0) if self.auto_fleshEntry is not None: config.pep.auto_flesh.setValue(0) if self.green_boostEntry is not None: config.pep.green_boost.setValue(0) if self.blue_boostEntry is not None: config.pep.blue_boost.setValue(0) if self.dynamic_contrastEntry is not None: config.pep.dynamic_contrast.setValue(0) self.keySave() def keyBlue(self): self.session.openWithCallback(self.keyBlueConfirm, MessageBox, _("Reset video enhancement settings to system defaults?"), MessageBox.TYPE_YESNO, timeout = 20, default = False) # for summary: def changedEntry(self): for x in self.onChangedEntry: x() self.selectionChanged() def getCurrentEntry(self): return self["config"].getCurrent()[0] def getCurrentValue(self): return str(self["config"].getCurrent()[1].getText()) def createSummary(self): from Screens.Setup import SetupSummary return SetupSummary class VideoEnhancementPreview(Screen, ConfigListScreen): skin = """ """ def __init__(self, session, configEntry = None, oldSplitMode = None, maxValue = None): 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 ConfigListScreen.__init__(self, self.list, session = session, on_change = self.changedEntry) self["actions"] = ActionMap(["SetupActions"], { "cancel": self.keyCancel, "save": self.keySave, }, -2) self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("OK")) self["introduction"] = StaticText() self.createSetup() self.onLayoutFinish.append(self.layoutFinished) def layoutFinished(self): self.setTitle(_("Video enhancement preview")) 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.maxValue == 256: self.list.append(self.configStepsEntry) 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): if self.isStepSlider is True: self["config"].getCurrent()[1].increment = config.pep.configsteps.value ConfigListScreen.keyLeft(self) def keyRight(self): if self.isStepSlider is True: self["config"].getCurrent()[1].increment = config.pep.configsteps.value ConfigListScreen.keyRight(self) def keySave(self): if self.oldSplitMode is not None: currentSplitMode = config.pep.split.value if self.oldSplitMode == 'off' and currentSplitMode != 'off': config.pep.split.setValue('off') else: pass self.close() def keyCancel(self): for x in self["config"].list: x[1].cancel() if self.oldSplitMode is not None: currentSplitMode = config.pep.split.value if self.oldSplitMode == 'off' and currentSplitMode != 'off': config.pep.split.setValue('off') else: pass self.close() # for summary: def changedEntry(self): for x in self.onChangedEntry: x() self.selectionChanged() def getCurrentEntry(self): return self["config"].getCurrent()[0] def getCurrentValue(self): return str(self["config"].getCurrent()[1].getText()) def createSummary(self): from Screens.Setup import SetupSummary return SetupSummary def videoEnhancementSetupMain(session, **kwargs): session.open(VideoEnhancementSetup) def startSetup(menuid): if menuid != "system": return [ ] return [(_("Video enhancement settings") , videoEnhancementSetupMain, "videoenhancement_setup", 41)] def Plugins(**kwargs): list = [] if config.usage.setup_level.index >= 2 and os_path.exists("/proc/stb/vmpeg/0/pep_apply"): list.append(PluginDescriptor(name=_("Videoenhancement Setup"), description=_("Advanced Video Enhancement Setup"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup)) return list