comparison browser_side/radiocol.py @ 127:e19a8de8b3de

radio collective first draft
author Goffi <goffi@goffi.org>
date Sun, 22 Jan 2012 19:38:05 +0100 (2012-01-22)
parents
children 2849ec993d89
comparison
equal deleted inserted replaced
126:adecb2566b53 127:e19a8de8b3de
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 """
5 Libervia: a Salut à Toi frontend
6 Copyright (C) 2011 Jérôme Poisson <goffi@goffi.org>
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU Affero General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Affero General Public License for more details.
17
18 You should have received a copy of the GNU Affero General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 """
21
22 import pyjd # this is dummy in pyjs
23 from pyjamas.ui.VerticalPanel import VerticalPanel
24 from pyjamas.ui.HorizontalPanel import HorizontalPanel
25 from pyjamas.ui.SimplePanel import SimplePanel
26 from pyjamas.ui.FormPanel import FormPanel
27 from pyjamas.ui.DockPanel import DockPanel
28 from pyjamas.ui.NamedFrame import NamedFrame
29 from pyjamas.ui.FileUpload import FileUpload
30 from pyjamas.ui.Label import Label
31 from pyjamas.ui.Button import Button
32 from pyjamas.ui.ClickListener import ClickHandler
33 from pyjamas.ui.MouseListener import MouseHandler
34 from pyjamas import Window
35
36 from jid import JID
37 from tools import html_sanitize
38
39
40 class MetadataPanel(VerticalPanel):
41
42 def __init__(self):
43 VerticalPanel.__init__(self)
44 self.artist = Label("artist:")
45 self.album = Label("album:")
46 self.title = Label("title:")
47 self.add(self.artist)
48 self.add(self.album)
49 self.add(self.title)
50
51 class ControlPanel(FormPanel):
52 """Panel used to show controls to add a song, or vote for the current one"""
53
54 def __init__(self):
55 FormPanel.__init__(self)
56 self.setEncoding(FormPanel.ENCODING_MULTIPART)
57 self.setMethod(FormPanel.METHOD_POST)
58 self.setAction("upload") # set this as appropriate
59 #self.setTarget("results")
60 vPanel = VerticalPanel()
61
62 hPanel = HorizontalPanel()
63 hPanel.setSpacing(5)
64 self.field = FileUpload()
65 self.field.setName("song")
66 hPanel.add(self.field)
67
68 hPanel.add(Button("Upload song", getattr(self, "onBtnClick")))
69
70 vPanel.add(hPanel)
71
72 results = NamedFrame("results")
73 vPanel.add(results)
74
75 self.add(vPanel)
76 self.addFormHandler(self)
77
78 def onBtnClick(self):
79 self.submit()
80
81 def onSubmit(self, event):
82 pass
83
84 def onSubmitComplete(self, event):
85 result = event.getResults()
86 if result == "OK":
87 Window.alert('Your song has been added to queue')
88 elif result == "KO":
89 Window.alert('Something went wrong during your song upload')
90 else:
91 Window.alert('Submit error: %s' % result)
92
93 class RadioColPanel(HorizontalPanel, ClickHandler):
94
95 def __init__(self, parent, referee, player_nick):
96 HorizontalPanel.__init__(self)
97 ClickHandler.__init__(self)
98 self._parent = parent
99 self.referee = referee
100 self.setStyleName("radiocolPanel")
101
102 # Now we set up the layout
103 self.left_panel = VerticalPanel()
104 self.add(self.left_panel)
105 self.right_panel = DockPanel()
106 self.metadata_panel = MetadataPanel()
107 self.right_panel.add(self.metadata_panel, DockPanel.CENTER)
108 self.control_panel = ControlPanel()
109 self.right_panel.add(self.control_panel, DockPanel.SOUTH)
110 self.add(self.right_panel)
111 self.right_panel.setBorderWidth(1)
112 self.left_panel.add(Label("Musique 1"))
113 self.left_panel.add(Label("Musique 2"))
114 self.left_panel.add(Label("Musique 3"))
115 self.left_panel.add(Label("Musique 4"))
116 self.left_panel.add(Label("Musique 5"))
117
118
119 self.addClickListener(self)
120