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()
16 class DirectoryBrowser(Screen, HelpableScreen):
18 def __init__(self, session, currDir):
19 Screen.__init__(self, session)
20 # for the skin: first try MediaPlayerDirectoryBrowser, then FileBrowser, this allows individual skinning
21 self.skinName = ["MediaPlayerDirectoryBrowser", "FileBrowser" ]
23 HelpableScreen.__init__(self)
25 self["key_red"] = StaticText(_("Cancel"))
26 self["key_green"] = StaticText(_("Use"))
28 self.filelist = FileList(currDir, matchingPattern="")
29 self["filelist"] = self.filelist
31 self["FilelistActions"] = ActionMap(["SetupActions", "ColorActions"],
38 self.onLayoutFinish.append(self.layoutFinished)
40 def layoutFinished(self):
41 self.setTitle(_("Directory browser"))
44 if self.filelist.canDescent():
45 self.filelist.descent()
48 if self["filelist"].getCurrentDirectory() is not None:
49 if self.filelist.canDescent() and self["filelist"].getFilename() and len(self["filelist"].getFilename()) > len(self["filelist"].getCurrentDirectory()):
50 self.filelist.descent()
51 self.close(self["filelist"].getCurrentDirectory())
53 self.close(self["filelist"].getFilename())
58 class MediaPlayerSettings(Screen,ConfigListScreen):
60 def __init__(self, session, parent):
61 Screen.__init__(self, session)
62 # for the skin: first try MediaPlayerSettings, then Setup, this allows individual skinning
63 self.skinName = ["MediaPlayerSettings", "Setup" ]
64 self.setup_title = _("Edit settings")
65 self.onChangedEntry = [ ]
67 self["key_red"] = StaticText(_("Cancel"))
68 self["key_green"] = StaticText(_("Save"))
70 ConfigListScreen.__init__(self, [], session = session, on_change = self.changedEntry)
73 config.mediaplayer.saveDirOnExit.addNotifier(self.initConfigList)
75 self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
79 "cancel": self.cancel,
83 def layoutFinished(self):
84 self.setTitle(self.setup_title)
86 def initConfigList(self, element=None):
87 print "[initConfigList]", element
90 self.list.append(getConfigListEntry(_("repeat playlist"), config.mediaplayer.repeat))
91 self.list.append(getConfigListEntry(_("save playlist on exit"), config.mediaplayer.savePlaylistOnExit))
92 self.list.append(getConfigListEntry(_("save last directory on exit"), config.mediaplayer.saveDirOnExit))
93 if not config.mediaplayer.saveDirOnExit.getValue():
94 self.list.append(getConfigListEntry(_("start directory"), config.mediaplayer.defaultDir))
95 self["config"].setList(self.list)
99 def changedConfigList(self):
100 self.initConfigList()
103 if self["config"].getCurrent()[1] == config.mediaplayer.defaultDir:
104 self.session.openWithCallback(self.DirectoryBrowserClosed, DirectoryBrowser, self.parent.filelist.getCurrentDirectory())
106 def DirectoryBrowserClosed(self, path):
107 print "PathBrowserClosed:" + str(path)
109 config.mediaplayer.defaultDir.setValue(path)
112 for x in self["config"].list:
120 def changedEntry(self):
121 for x in self.onChangedEntry:
124 def getCurrentEntry(self):
125 return self["config"].getCurrent()[0]
127 def getCurrentValue(self):
128 return str(self["config"].getCurrent()[1].getText())
130 def createSummary(self):
131 from Screens.Setup import SetupSummary