from Screens.Screen import Screen from Screens.HelpMenu import HelpableScreen from Components.Label import Label from Components.FileList import FileList from Components.MediaPlayer import PlayList from Components.config import config, getConfigListEntry, ConfigSubsection, configfile, ConfigText, ConfigYesNo from Components.ConfigList import ConfigListScreen from Components.ActionMap import ActionMap class ConfigDirectory(ConfigText): def __init__(self, default="", visible_width=60): ConfigText.__init__(self, default, fixed_size = True, visible_width = visible_width) def handleKey(self, key): pass def getValue(self): if self.text == "": return None else: return ConfigText.getValue(self) def setValue(self, val): if val == None: val = "" ConfigText.setValue(self, val) def getMulti(self, selected): if self.text == "": return ("mtext"[1-selected:], _("List of Storage Devices"), range(0)) else: return ConfigText.getMulti(self, selected) config.mediaplayer = ConfigSubsection() config.mediaplayer.repeat = ConfigYesNo(default=False) config.mediaplayer.savePlaylistOnExit = ConfigYesNo(default=True) config.mediaplayer.saveDirOnExit = ConfigYesNo(default=False) config.mediaplayer.defaultDir = ConfigDirectory() class DirectoryBrowser(Screen, HelpableScreen): skin = """ """ def __init__(self, session, currDir): from Components.Sources.StaticText import StaticText Screen.__init__(self, session) HelpableScreen.__init__(self) self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("Use")) self.filelist = FileList(currDir, matchingPattern="") self["filelist"] = self.filelist self["FilelistActions"] = ActionMap(["SetupActions", "ColorActions"], { "green": self.use, "red": self.exit, "ok": self.ok, "cancel": self.exit }) def ok(self): if self.filelist.canDescent(): self.filelist.descent() def use(self): if self.filelist.canDescent() and len(self["filelist"].getFilename()) > len(self["filelist"].getCurrentDirectory()): self.filelist.descent() self.close(self["filelist"].getCurrentDirectory()) def exit(self): self.close(False) class MediaPlayerSettings(Screen,ConfigListScreen): skin = """ """ def __init__(self, session, parent): from Components.Sources.StaticText import StaticText Screen.__init__(self, session) self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("Save")) ConfigListScreen.__init__(self, []) self.parent = parent self.initConfigList() config.mediaplayer.saveDirOnExit.addNotifier(self.initConfigList) self["setupActions"] = ActionMap(["SetupActions", "ColorActions"], { "green": self.save, "red": self.cancel, "cancel": self.cancel, "ok": self.ok, }, -2) def initConfigList(self, element=None): print "[initConfigList]", element try: self.list = [] self.list.append(getConfigListEntry(_("repeat playlist"), config.mediaplayer.repeat)) self.list.append(getConfigListEntry(_("save playlist on exit"), config.mediaplayer.savePlaylistOnExit)) self.list.append(getConfigListEntry(_("save last directory on exit"), config.mediaplayer.saveDirOnExit)) if not config.mediaplayer.saveDirOnExit.getValue(): self.list.append(getConfigListEntry(_("start directory"), config.mediaplayer.defaultDir)) self["config"].setList(self.list) except KeyError: print "keyError" def changedConfigList(self): self.initConfigList() def ok(self): if self["config"].getCurrent()[1] == config.mediaplayer.defaultDir: self.session.openWithCallback(self.DirectoryBrowserClosed, DirectoryBrowser, self.parent.filelist.getCurrentDirectory()) def DirectoryBrowserClosed(self, path): print "PathBrowserClosed:" + str(path) if path != False: config.mediaplayer.defaultDir.setValue(path) def save(self): for x in self["config"].list: x[1].save() self.close() def cancel(self): self.close()