Mercurial > libervia-web
diff browser_side/radiocol.py @ 127:e19a8de8b3de
radio collective first draft
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 22 Jan 2012 19:38:05 +0100 |
parents | |
children | 2849ec993d89 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser_side/radiocol.py Sun Jan 22 19:38:05 2012 +0100 @@ -0,0 +1,120 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +""" +Libervia: a Salut à Toi frontend +Copyright (C) 2011 Jérôme Poisson <goffi@goffi.org> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +""" + +import pyjd # this is dummy in pyjs +from pyjamas.ui.VerticalPanel import VerticalPanel +from pyjamas.ui.HorizontalPanel import HorizontalPanel +from pyjamas.ui.SimplePanel import SimplePanel +from pyjamas.ui.FormPanel import FormPanel +from pyjamas.ui.DockPanel import DockPanel +from pyjamas.ui.NamedFrame import NamedFrame +from pyjamas.ui.FileUpload import FileUpload +from pyjamas.ui.Label import Label +from pyjamas.ui.Button import Button +from pyjamas.ui.ClickListener import ClickHandler +from pyjamas.ui.MouseListener import MouseHandler +from pyjamas import Window + +from jid import JID +from tools import html_sanitize + + +class MetadataPanel(VerticalPanel): + + def __init__(self): + VerticalPanel.__init__(self) + self.artist = Label("artist:") + self.album = Label("album:") + self.title = Label("title:") + self.add(self.artist) + self.add(self.album) + self.add(self.title) + +class ControlPanel(FormPanel): + """Panel used to show controls to add a song, or vote for the current one""" + + def __init__(self): + FormPanel.__init__(self) + self.setEncoding(FormPanel.ENCODING_MULTIPART) + self.setMethod(FormPanel.METHOD_POST) + self.setAction("upload") # set this as appropriate + #self.setTarget("results") + vPanel = VerticalPanel() + + hPanel = HorizontalPanel() + hPanel.setSpacing(5) + self.field = FileUpload() + self.field.setName("song") + hPanel.add(self.field) + + hPanel.add(Button("Upload song", getattr(self, "onBtnClick"))) + + vPanel.add(hPanel) + + results = NamedFrame("results") + vPanel.add(results) + + self.add(vPanel) + self.addFormHandler(self) + + def onBtnClick(self): + self.submit() + + def onSubmit(self, event): + pass + + def onSubmitComplete(self, event): + result = event.getResults() + if result == "OK": + Window.alert('Your song has been added to queue') + elif result == "KO": + Window.alert('Something went wrong during your song upload') + else: + Window.alert('Submit error: %s' % result) + +class RadioColPanel(HorizontalPanel, ClickHandler): + + def __init__(self, parent, referee, player_nick): + HorizontalPanel.__init__(self) + ClickHandler.__init__(self) + self._parent = parent + self.referee = referee + self.setStyleName("radiocolPanel") + + # Now we set up the layout + self.left_panel = VerticalPanel() + self.add(self.left_panel) + self.right_panel = DockPanel() + self.metadata_panel = MetadataPanel() + self.right_panel.add(self.metadata_panel, DockPanel.CENTER) + self.control_panel = ControlPanel() + self.right_panel.add(self.control_panel, DockPanel.SOUTH) + self.add(self.right_panel) + self.right_panel.setBorderWidth(1) + self.left_panel.add(Label("Musique 1")) + self.left_panel.add(Label("Musique 2")) + self.left_panel.add(Label("Musique 3")) + self.left_panel.add(Label("Musique 4")) + self.left_panel.add(Label("Musique 5")) + + + self.addClickListener(self) +