1 from Screens.Screen import Screen
2 from Screens.HelpMenu import HelpableScreen
3 from Components.FileList import FileList
4 from Components.Sources.StaticText import StaticText
5 from Components.MediaPlayer import PlayList
6 from Components.config import config, getConfigListEntry, ConfigSubsection, configfile, ConfigText, ConfigYesNo, ConfigDirectory
7 from Components.ConfigList import ConfigListScreen
8 from Components.ActionMap import ActionMap
10 config.mediaplayer = ConfigSubsection()
11 config.mediaplayer.repeat = ConfigYesNo(default=False)
12 config.mediaplayer.savePlaylistOnExit = ConfigYesNo(default=True)
13 config.mediaplayer.saveDirOnExit = ConfigYesNo(default=False)
14 config.mediaplayer.defaultDir = ConfigDirectory()
15 config.mediaplayer.useAlternateUserAgent = ConfigYesNo(default=False)
16 config.mediaplayer.alternateUserAgent = ConfigText(default="")
18 class DirectoryBrowser(Screen, HelpableScreen):
20 def __init__(self, session, currDir):
21 Screen.__init__(self, session)
22 # for the skin: first try MediaPlayerDirectoryBrowser, then FileBrowser, this allows individual skinning
23 self.skinName = ["MediaPlayerDirectoryBrowser", "FileBrowser" ]
25 HelpableScreen.__init__(self)
27 self["key_red"] = StaticText(_("Cancel"))
28 self["key_green"] = StaticText(_("Use"))
30 self.filelist = FileList(currDir, matchingPattern="")
31 self["filelist"] = self.filelist
33 self["FilelistActions"] = ActionMap(["SetupActions", "ColorActions"],
40 self.onLayoutFinish.append(self.layoutFinished)
42 def layoutFinished(self):
43 self.setTitle(_("Directory browser"))
46 if self.filelist.canDescent():
47 self.filelist.descent()
50 if self["filelist"].getCurrentDirectory() is not None:
51 if self.filelist.canDescent() and self["filelist"].getFilename() and len(self["filelist"].getFilename()) > len(self["filelist"].getCurrentDirectory()):
52 self.filelist.descent()
53 self.close(self["filelist"].getCurrentDirectory())
55 self.close(self["filelist"].getFilename())
60 class MediaPlayerSettings(Screen,ConfigListScreen):
62 def __init__(self, session, parent):
63 Screen.__init__(self, session)
64 # for the skin: first try MediaPlayerSettings, then Setup, this allows individual skinning
65 self.skinName = ["MediaPlayerSettings", "Setup" ]
66 self.setup_title = _("Edit settings")
67 self.onChangedEntry = [ ]
69 self["key_red"] = StaticText(_("Cancel"))
70 self["key_green"] = StaticText(_("Save"))
72 ConfigListScreen.__init__(self, [], session = session, on_change = self.changedEntry)
75 config.mediaplayer.saveDirOnExit.addNotifier(self.initConfigList)
77 self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
81 "cancel": self.cancel,
85 def layoutFinished(self):
86 self.setTitle(self.setup_title)
88 def initConfigList(self, element=None):
89 print "[initConfigList]", element
92 self.list.append(getConfigListEntry(_("repeat playlist"), config.mediaplayer.repeat))
93 self.list.append(getConfigListEntry(_("save playlist on exit"), config.mediaplayer.savePlaylistOnExit))
94 self.list.append(getConfigListEntry(_("save last directory on exit"), config.mediaplayer.saveDirOnExit))
95 if not config.mediaplayer.saveDirOnExit.getValue():
96 self.list.append(getConfigListEntry(_("start directory"), config.mediaplayer.defaultDir))
97 self["config"].setList(self.list)
101 def changedConfigList(self):
102 self.initConfigList()
105 if self["config"].getCurrent()[1] == config.mediaplayer.defaultDir:
106 self.session.openWithCallback(self.DirectoryBrowserClosed, DirectoryBrowser, self.parent.filelist.getCurrentDirectory())
108 def DirectoryBrowserClosed(self, path):
109 print "PathBrowserClosed:" + str(path)
111 config.mediaplayer.defaultDir.setValue(path)
114 for x in self["config"].list:
122 def changedEntry(self):
123 for x in self.onChangedEntry:
126 def getCurrentEntry(self):
127 return self["config"].getCurrent()[0]
129 def getCurrentValue(self):
130 return str(self["config"].getCurrent()[1].getText())
132 def createSummary(self):
133 from Screens.Setup import SetupSummary