1 from Screens.Screen import Screen
2 from Plugins.Plugin import PluginDescriptor
4 from enigma import eTimer
6 from Components.ActionMap import ActionMap
7 from Components.Label import Label
8 from Components.Pixmap import Pixmap
9 from Screens.MessageBox import MessageBox
10 from Screens.Setup import SetupSummary
11 from Components.ConfigList import ConfigListScreen
12 from Components.config import getConfigListEntry, config, ConfigNothing, ConfigSelection, ConfigSubDict
13 from VideoWizard import VideoWizard
14 from Components.config import config
16 from Tools.CList import CList
18 from VideoHardware import video_hw
20 class VideoSetup(Screen, ConfigListScreen):
21 def __init__(self, session, hw):
22 Screen.__init__(self, session)
23 self.skinName = "Setup"
24 self.setup_title = "Videomode Setup"
26 self.onChangedEntry = [ ]
28 # handle hotplug by re-creating setup
29 self.onShow.append(self.startHotplug)
30 self.onHide.append(self.stopHotplug)
33 ConfigListScreen.__init__(self, self.list, session = session, on_change = self.changedEntry)
35 self["actions"] = ActionMap(["SetupActions"],
37 "cancel": self.keyCancel,
41 self["title"] = Label(_("Video-Setup"))
43 self["oktext"] = Label(_("OK"))
44 self["canceltext"] = Label(_("Cancel"))
46 self["cancel"] = Pixmap()
49 self.grabLastGoodMode()
51 def startHotplug(self):
52 self.hw.on_hotplug.append(self.createSetup)
54 def stopHotplug(self):
55 self.hw.on_hotplug.remove(self.createSetup)
57 def createSetup(self):
59 self.list.append(getConfigListEntry(_("Output Type"), config.av.videoport))
61 # if we have modes for this port:
62 if config.av.videoport.value in config.av.videomode:
63 # add mode- and rate-selection:
64 self.list.append(getConfigListEntry(_("Mode"), config.av.videomode[config.av.videoport.value]))
65 self.list.append(getConfigListEntry(_("Rate"), config.av.videorate[config.av.videomode[config.av.videoport.value].value]))
67 self["config"].list = self.list
68 self["config"].l.setList(self.list)
71 ConfigListScreen.keyLeft(self)
75 ConfigListScreen.keyRight(self)
78 def confirm(self, confirmed):
80 self.hw.setMode(*self.last_good)
84 def grabLastGoodMode(self):
85 port = config.av.videoport.value
86 mode = config.av.videomode[port].value
87 rate = config.av.videorate[mode].value
88 self.last_good = (port, mode, rate)
91 port = config.av.videoport.value
92 mode = config.av.videomode[port].value
93 rate = config.av.videorate[mode].value
94 if (port, mode, rate) != self.last_good or True:
95 self.hw.setMode(port, mode, rate)
96 self.session.openWithCallback(self.confirm, MessageBox, "Is this videomode ok?", MessageBox.TYPE_YESNO, timeout = 5, default = False)
101 def changedEntry(self):
102 for x in self.onChangedEntry:
105 def getCurrentEntry(self):
106 return self["config"].getCurrent()[0]
108 def getCurrentValue(self):
109 return str(self["config"].getCurrent()[1].getText())
111 def createSummary(self):
114 #class VideomodeHotplug:
115 # def __init__(self, hw):
117 # self.hw.on_hotplug.append(self.hotplug)
119 # def hotplug(self, what):
120 # print "hotplug detected on port '%s'" % (what)
125 #def startHotplug(self):
127 # hotplug = VideomodeHotplug()
130 #def stopHotplug(self):
135 #def autostart(reason, session = None, **kwargs):
136 # if session is not None:
137 # global my_global_session
138 # my_global_session = session
146 def videoSetupMain(session, **kwargs):
147 session.open(VideoSetup, video_hw)
149 def startSetup(menuid):
150 if menuid != "system":
153 return [(_("Video Setup"), videoSetupMain, "video_setup", None)]
155 def Plugins(**kwargs):
157 list.append(PluginDescriptor(name=_("Video Setup"), description=_("Advanced Video Setup"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup))
158 if config.misc.firstrun.value:
159 list.append(PluginDescriptor(name=_("Video Wizard"), where = PluginDescriptor.WHERE_WIZARD, fnc=VideoWizard))