diff src/browser/sat_browser/game_radiocol.py @ 676:849ffb24d5bf frontends_multi_profiles

browser side: menus refactorisation: - use of the new quick_frontends.quick_menus module, resulting in a big code simplification in Libervia - menu are added in there respective modules: main menus are done directely in libervia_main, while tarot and radiocol menus are done in game_tarot and game_radiocol - launchAction has the same signature as in QuickApp - base_menu: there are now 2 classes to launch an action: MenuCmd which manage quick_menus classes, and SimpleCmd to launch a generic callback - base_menu: MenuNode has been removed as logic is now in quick_menus - base_menu: GenericMenuBar.update method can be called to fully (re)build the menus - base_widget: removed WidgetSubMenuBar which is no more useful (GenericMenuBar do the same thing) - plugin_menu_context is used in LiberviaWidget and other classes with menus to indicate which menu types must be used - otr menus hooks are temporarily removed, will be fixed soon
author Goffi <goffi@goffi.org>
date Tue, 17 Mar 2015 20:42:02 +0100
parents b39a9eddfe56
children e876f493dccc
line wrap: on
line diff
--- a/src/browser/sat_browser/game_radiocol.py	Tue Mar 17 20:28:41 2015 +0100
+++ b/src/browser/sat_browser/game_radiocol.py	Tue Mar 17 20:42:02 2015 +0100
@@ -21,8 +21,9 @@
 from sat.core.log import getLogger
 log = getLogger(__name__)
 
-from sat.core.i18n import _
+from sat.core.i18n import _, D_
 from sat_frontends.tools.misc import DEFAULT_MUC
+from sat_frontends.tools import host_listener
 from constants import Const as C
 
 from pyjamas.ui.VerticalPanel import VerticalPanel
@@ -40,6 +41,7 @@
 
 import html_tools
 import file_tools
+import dialog
 
 
 class MetadataPanel(FlexTable):
@@ -320,3 +322,22 @@
 
     def radiocolSongRejectedHandler(self, reason):
         Window.alert("Song rejected: %s" % reason)
+
+
+##  Menu
+
+def hostReady(host):
+    def onCollectiveRadio(self):
+        def callback(room_jid, contacts):
+            contacts = [unicode(contact) for contact in contacts]
+            room_jid_s = unicode(room_jid) if room_jid else ''
+            host.bridge.RadioCollective(contacts, room_jid_s, profile=C.PROF_KEY_NONE)
+        dialog.RoomAndContactsChooser(host, callback, ok_button="Choose", title="Collective Radio", visible=(False, True))
+
+
+    def gotMenus():
+        host.menus.addMenu(C.MENU_GLOBAL, (D_(u"Groups"), D_(u"Collective radio")), callback=onCollectiveRadio)
+
+    host.addListener('gotMenus', gotMenus)
+
+host_listener.addListener(hostReady)