1 # -*- coding: ISO-8859-1 -*-
2 #===============================================================================
3 # VLC Player Plugin by A. Lätsch 2007
4 # modified by Volker Christian 2008
6 # This is free software; you can redistribute it and/or modify it under
7 # the terms of the GNU General Public License as published by the Free
8 # Software Foundation; either version 2, or (at your option) any later
10 #===============================================================================
13 from enigma import eListboxPythonMultiContent, RT_HALIGN_LEFT, gFont
14 from Components.config import config
15 from Components.MenuList import MenuList
16 from Components.ActionMap import ActionMap
17 from Components.Label import Label
18 from Components.Button import Button
19 from Screens.MessageBox import MessageBox
20 from Screens.Screen import Screen
21 from Tools.LoadPixmap import LoadPixmap
23 from VlcServerConfig import VlcServerConfig
24 from VlcServerConfig import VlcServerConfigScreen
25 from VlcMediaList import VlcMediaListScreen
26 from VlcServerConfig import vlcPluginInfo,_
28 def VlcServerListEntry(vlcServer):
30 res.append((eListboxPythonMultiContent.TYPE_TEXT, 35, 1, 470, 20, 0, RT_HALIGN_LEFT, vlcServer.getName()))
32 png = LoadPixmap(vlcPluginInfo.pluginPath + "/vlc.png")
34 res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 10, 2, 20, 20, png))
39 class VlcServerList(MenuList):
41 MenuList.__init__(self, list, False, eListboxPythonMultiContent)
42 self.l.setFont(0, gFont("Regular", 18))
43 self.l.setItemHeight(23)
45 def update(self, serverList):
47 for server in serverList:
48 self.list.append(VlcServerListEntry(server))
49 self.l.setList(self.list)
52 def getSelection(self):
53 if self.l.getCurrentSelection() is None:
55 return self.l.getCurrentSelection()[0]
58 class VlcServerListScreen(Screen):
60 <screen position="80,100" size="560,400" title="VLC Video Player V2.5" >
61 <widget name="serverlabel" position="10,10" size="550,20" font="Regular;18"/>
62 <widget name="serverlist" position="10,35" size="550,310" scrollbarMode="showOnDemand"/>
63 <ePixmap name="red" position="0,355" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
64 <ePixmap name="green" position="140,355" zPosition="4" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
65 <ePixmap name="yellow" position="280,355" zPosition="4" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
66 <ePixmap name="blue" position="420,355" zPosition="4" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
67 <widget name="key_red" position="0,355" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
68 <widget name="key_green" position="140,355" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
69 <widget name="key_yellow" position="280,355" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
70 <widget name="key_blue" position="420,355" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
73 def __init__(self, session):
74 Screen.__init__(self, session)
75 self.session = session
76 self.serverlist = VlcServerList()
77 self.vlcServerConfig = VlcServerConfig()
79 self["serverlabel"] = Label("List of known VLC-Server")
80 self["serverlist"] = self.serverlist
81 self["key_red"] = Button(_("delete server"))
82 self["key_green"] = Button(_("add server"))
83 self["key_yellow"] = Button(_("edit server"))
84 self["key_blue"] = Button("")
86 self["actions"] = ActionMap(["WizardActions", "MenuActions", "ShortcutActions", "MoviePlayerActions"],
89 "red": self.keyDelete,
90 "green": self.keyAddServer,
91 "yellow": self.keyEditServer,
99 self.onLayoutFinish.append(self.updateServerlist)
101 def updateServerlist(self):
102 self.serverlist.update(self.vlcServerConfig.getServerlist())
104 def keyAddServer(self):
105 newServer = self.vlcServerConfig.new()
106 self.session.openWithCallback(self.addCallback, VlcServerConfigScreen, newServer)
108 def addCallback(self, result, server):
110 self.vlcServerConfig.save(server)
111 self.updateServerlist()
113 self.vlcServerConfig.delete(server)
116 self.session.openWithCallback(self.deleteCallback, MessageBox, _("Really delete this Server?"))
118 def deleteCallback(self, result):
120 self.vlcServerConfig.delete(self.serverlist.getSelection())
121 self.updateServerlist()
123 def keyEditServer(self):
124 server = self.serverlist.getSelection()
125 if server is not None:
126 self.session.openWithCallback(self.editCallback, VlcServerConfigScreen, server)
128 def editCallback(self, result, server):
130 self.vlcServerConfig.save(server)
131 self.updateServerlist()
137 self.serverlist.down()
140 self.serverlist.pageUp()
143 self.serverlist.pageDown()
146 if self.serverlist.getSelection() is not None:
147 self.session.open(VlcMediaListScreen, self.serverlist.getSelection()).update()