MediaPlayer/settings.py: small skin corrections
[enigma2.git] / lib / python / Plugins / Extensions / MediaPlayer / settings.py
1 from Screens.Screen import Screen
2 from Screens.HelpMenu import HelpableScreen
3 from Components.Label import Label
4 from Components.FileList import FileList
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
9
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
16 class DirectoryBrowser(Screen, HelpableScreen):
17         skin = """
18                 <screen name="DirectoryBrowser" position="center,center" size="560,400" title="Directory browser" >
19                         <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
20                         <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
21                         <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
22                         <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
23                         <widget name="filelist" position="5,50" size="550,350" scrollbarMode="showOnDemand" />
24                 </screen>"""
25         def __init__(self, session, currDir):
26                 from Components.Sources.StaticText import StaticText
27                 Screen.__init__(self, session)
28                 HelpableScreen.__init__(self)
29                 
30                 self["key_red"] = StaticText(_("Cancel"))
31                 self["key_green"] = StaticText(_("Use"))
32
33                 self.filelist = FileList(currDir, matchingPattern="")
34                 self["filelist"] = self.filelist
35
36                 self["FilelistActions"] = ActionMap(["SetupActions", "ColorActions"],
37                         {
38                                 "green": self.use,
39                                 "red": self.exit,
40                                 "ok": self.ok,
41                                 "cancel": self.exit
42                         })
43
44         def ok(self):
45                 if self.filelist.canDescent():
46                         self.filelist.descent()
47
48         def use(self):
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())
52
53         def exit(self):
54                 self.close(False)
55
56 class MediaPlayerSettings(Screen,ConfigListScreen):
57         skin = """
58                 <screen name="MediaPlayerSettings" position="center,center" size="560,300" title="Edit settings">
59                         <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
60                         <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
61                         <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
62                         <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
63                         <widget name="config" position="5,50" size="550,250" />
64                 </screen>"""
65
66         def __init__(self, session, parent):
67                 from Components.Sources.StaticText import StaticText
68                 Screen.__init__(self, session)
69                 self["key_red"] = StaticText(_("Cancel"))
70                 self["key_green"] = StaticText(_("Save"))
71
72                 ConfigListScreen.__init__(self, [])
73                 self.parent = parent
74                 self.initConfigList()
75                 config.mediaplayer.saveDirOnExit.addNotifier(self.initConfigList)
76
77                 self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
78                 {
79                     "green": self.save,
80                     "red": self.cancel,
81                     "cancel": self.cancel,
82                     "ok": self.ok,
83                 }, -2)
84
85         def initConfigList(self, element=None):
86                 print "[initConfigList]", element
87                 try:
88                         self.list = []
89                         self.list.append(getConfigListEntry(_("repeat playlist"), config.mediaplayer.repeat))
90                         self.list.append(getConfigListEntry(_("save playlist on exit"), config.mediaplayer.savePlaylistOnExit))
91                         self.list.append(getConfigListEntry(_("save last directory on exit"), config.mediaplayer.saveDirOnExit))
92                         if not config.mediaplayer.saveDirOnExit.getValue():
93                                 self.list.append(getConfigListEntry(_("start directory"), config.mediaplayer.defaultDir))
94                         self["config"].setList(self.list)
95                 except KeyError:
96                         print "keyError"
97
98         def changedConfigList(self):
99                 self.initConfigList()
100
101         def ok(self):
102                 if self["config"].getCurrent()[1] == config.mediaplayer.defaultDir:
103                         self.session.openWithCallback(self.DirectoryBrowserClosed, DirectoryBrowser, self.parent.filelist.getCurrentDirectory())
104
105         def DirectoryBrowserClosed(self, path):
106                 print "PathBrowserClosed:" + str(path)
107                 if path != False:
108                         config.mediaplayer.defaultDir.setValue(path)
109
110         def save(self):
111                 for x in self["config"].list:
112                         x[1].save()
113                 self.close()
114
115         def cancel(self):
116                 self.close()
117