Mercurial > libervia-web
annotate browser_side/menu.py @ 427:b5b440e6ea16
server + browser side, getPresenceStatuses has been renamed
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 31 Mar 2014 12:26:20 +0200 |
parents | f539f6f8ee9c |
children | 4fcf9bac109c |
rev | line source |
---|---|
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
340 | 5 # Copyright (C) 2011, 2012, 2013, 2014 Jérôme Poisson <goffi@goffi.org> |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
10 # (at your option) any later version. |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
15 # GNU Affero General Public License for more details. |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
387
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
20 import pyjd # this is dummy in pyjs |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
21 from pyjamas.ui.SimplePanel import SimplePanel |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 from pyjamas.ui.MenuBar import MenuBar |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 from pyjamas.ui.MenuItem import MenuItem |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from pyjamas.ui.ListBox import ListBox |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 from pyjamas.ui.Label import Label |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 from pyjamas.ui.TextBox import TextBox |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 from pyjamas.ui.HTML import HTML |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 from pyjamas.ui.Frame import Frame |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 from pyjamas import Window |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 from jid import JID |
370
30d03d9f07e4
browser_side: refactorization of the file tools.py:
souliane <souliane@mailoo.org>
parents:
340
diff
changeset
|
31 from html_tools import html_sanitize |
387
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
32 from file_tools import FileUploadPanel |
148
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
33 from xmlui import XMLUI |
181
c0b78a3af06d
browser side: web widget first draft
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
34 import panels |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
35 import dialog |
256
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
36 from contact_group import ContactGroupEditor |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
37 import re |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
38 from sat.core.i18n import _ |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
40 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 class MenuCmd: |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
43 def __init__(self, object_, handler): |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
44 self._object = object_ |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 self._handler = handler |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
46 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
47 def execute(self): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
48 handler = getattr(self._object, self._handler) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
49 handler() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
51 |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
52 class PluginMenuCmd: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
53 |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
54 def __init__(self, host, action_id): |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
55 self.host = host |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
56 self.action_id = action_id |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
57 |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
58 def execute(self): |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
59 self.host.launchAction(self.action_id, None) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
60 |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
61 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
62 class LiberviaMenuBar(MenuBar): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
63 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
64 def __init__(self): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
65 MenuBar.__init__(self, vertical=False) |
220
09e4de9df5b7
browser side: enforced "gwt-MenuBar-horizontal" style in LiberviaMenuBar to workaround a class name fix in Pyjamas' MenuBar which was causing troubles with CSS.
Goffi <goffi@goffi.org>
parents:
218
diff
changeset
|
66 self.setStyleName('gwt-MenuBar-horizontal') # XXX: workaround for the Pyjamas' class name fix (it's now "gwt-MenuBar gwt-MenuBar-horizontal") |
09e4de9df5b7
browser side: enforced "gwt-MenuBar-horizontal" style in LiberviaMenuBar to workaround a class name fix in Pyjamas' MenuBar which was causing troubles with CSS.
Goffi <goffi@goffi.org>
parents:
218
diff
changeset
|
67 # TODO: properly adapt CSS to the new class name |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
68 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
69 def doItemAction(self, item, fireCommand): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
70 MenuBar.doItemAction(self, item, fireCommand) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
71 if item == self.items[-1] and self.popup: |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
72 self.popup.setPopupPosition(Window.getClientWidth() - |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
73 self.popup.getOffsetWidth() - 22, |
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
74 self.getAbsoluteTop() + |
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
75 self.getOffsetHeight() - 1) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
76 self.popup.addStyleName('menuLastPopup') |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
77 |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
78 |
387
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
79 class AvatarUpload(FileUploadPanel): |
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
80 def __init__(self): |
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
81 texts = {'ok_button': 'Upload avatar', |
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
82 'body': 'Please select an image to show as your avatar...<br>Your picture must be a square and will be resized to 64x64 pixels if necessary.', |
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
83 'errback': "Can't open image... did you actually submit an image?", |
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
84 'body_errback': 'Please select another image file.', |
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
85 'callback': "Your new profile picture has been set!"} |
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
86 FileUploadPanel.__init__(self, 'upload_avatar', 'avatar_path', 2, texts) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
87 |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
88 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
89 class Menu(SimplePanel): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
90 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
91 def __init__(self, host): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
92 self.host = host |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
93 SimplePanel.__init__(self) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
94 self.setStyleName('menuContainer') |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
95 |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
96 def createMenus(self, add_menus): |
79
d57e0d6b1ced
browser side: inclusion of Adrien's icons
Goffi <goffi@goffi.org>
parents:
78
diff
changeset
|
97 _item_tpl = "<img src='media/icons/menu/%s_menu_red.png' />%s" |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
98 menus_dict = {} |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
99 menus_order = [] |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
100 |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
101 def addMenu(menu_name, menu_name_i18n, item_name_i18n, icon, menu_cmd): |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
102 """ add a menu to menu_dict """ |
387
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
103 print "addMenu:", menu_name, menu_name_i18n, item_name_i18n, icon, menu_cmd |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
104 try: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
105 menu_bar = menus_dict[menu_name] |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
106 except KeyError: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
107 menu_bar = menus_dict[menu_name] = MenuBar(vertical=True) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
108 menus_order.append((menu_name, menu_name_i18n, icon)) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
109 menu_bar.addItem(item_name_i18n, menu_cmd) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
110 |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
111 addMenu("General", _("General"), _("Web widget"), 'home', MenuCmd(self, "onWebWidget")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
112 addMenu("General", _("General"), _("Disconnect"), 'home', MenuCmd(self, "onDisconnect")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
113 addMenu("Contacts", _("Contacts"), _("Add contact"), 'social', MenuCmd(self, "onAddContact")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
114 addMenu("Contacts", _("Contacts"), _("Update contact"), 'social', MenuCmd(self, "onUpdateContact")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
115 addMenu("Contacts", _("Contacts"), _("Remove contact"), 'social', MenuCmd(self, "onRemoveContact")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
116 addMenu("Contacts", _("Contacts"), _("Manage groups"), 'social', MenuCmd(self, "onManageContactGroups")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
117 addMenu("Groups", _("Groups"), _("Discussion"), 'social', MenuCmd(self, "onJoinRoom")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
118 addMenu("Groups", _("Groups"), _("Collective radio"), 'social', MenuCmd(self, "onCollectiveRadio")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
119 addMenu("Games", _("Games"), _("Tarot"), 'games', MenuCmd(self, "onTarotGame")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
120 addMenu("Games", _("Games"), _("Xiangqi"), 'games', MenuCmd(self, "onXiangqiGame")) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
121 |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
122 # additional menus |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
123 for action_id, type_, path, path_i18n in add_menus: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
124 if not path: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
125 print "WARNING: skipping menu without path" |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
126 continue |
377
603fa314880e
browser side: fixed bad variable reference in menus management
Goffi <goffi@goffi.org>
parents:
370
diff
changeset
|
127 if len(path) != len(path_i18n): |
603fa314880e
browser side: fixed bad variable reference in menus management
Goffi <goffi@goffi.org>
parents:
370
diff
changeset
|
128 print "ERROR: inconsistency between menu paths" |
603fa314880e
browser side: fixed bad variable reference in menus management
Goffi <goffi@goffi.org>
parents:
370
diff
changeset
|
129 continue |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
130 menu_name = path[0] |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
131 menu_name_i18n = path_i18n[0] |
377
603fa314880e
browser side: fixed bad variable reference in menus management
Goffi <goffi@goffi.org>
parents:
370
diff
changeset
|
132 item_name = path[1:] |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
133 if not item_name: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
134 print "WARNING: skipping menu with a path of lenght 1 [%s]" % path[0] |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
135 continue |
377
603fa314880e
browser side: fixed bad variable reference in menus management
Goffi <goffi@goffi.org>
parents:
370
diff
changeset
|
136 item_name_i18n = ' | '.join(path_i18n[1:]) |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
137 addMenu(menu_name, menu_name_i18n, item_name_i18n, 'plugins', PluginMenuCmd(self.host, action_id)) |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
138 |
387
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
139 menus_order.append(None) # we add separator |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
140 |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
141 addMenu("Help", _("Help"), _("Social contract"), 'help', MenuCmd(self, "onSocialContract")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
142 addMenu("Help", _("Help"), _("About"), 'help', MenuCmd(self, "onAbout")) |
391
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
143 addMenu("Settings", _("Settings"), _("Account"), 'settings', MenuCmd(self, "onAccount")) |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
144 addMenu("Settings", _("Settings"), _("Parameters"), 'settings', MenuCmd(self, "onParameters")) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
145 |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
146 # XXX: temporary, will change when a full profile will be managed in SàT |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
147 addMenu("Settings", _("Settings"), _("Upload avatar"), 'settings', MenuCmd(self, "onAvatarUpload")) |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
148 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
149 menubar = LiberviaMenuBar() |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
150 |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
151 for menu_data in menus_order: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
152 if menu_data is None: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
153 _separator = MenuItem('', None) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
154 _separator.setStyleName('menuSeparator') |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
155 menubar.addItem(_separator, None) |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
156 else: |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
157 menu_name, menu_name_i18n, icon = menu_data |
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
158 menubar.addItem(MenuItem(_item_tpl % (icon, menu_name_i18n), True, menus_dict[menu_name])) |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
159 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
160 self.add(menubar) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
161 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
162 #General menu |
181
c0b78a3af06d
browser side: web widget first draft
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
163 def onWebWidget(self): |
c0b78a3af06d
browser side: web widget first draft
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
164 web_panel = panels.WebPanel(self.host, "http://www.goffi.org") |
257
377de26d5bc2
browser_side: open the web widget in the current tab
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
165 self.host.addWidget(web_panel) |
377de26d5bc2
browser_side: open the web widget in the current tab
souliane <souliane@mailoo.org>
parents:
256
diff
changeset
|
166 self.host.setSelected(web_panel) |
181
c0b78a3af06d
browser side: web widget first draft
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
167 |
158
58442ed28f2b
browser side: basic disconnection management: hard reload is done on empty signal response
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
168 def onDisconnect(self): |
58442ed28f2b
browser side: basic disconnection management: hard reload is done on empty signal response
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
169 def confirm_cb(answer): |
58442ed28f2b
browser side: basic disconnection management: hard reload is done on empty signal response
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
170 if answer: |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
171 print "disconnection" |
158
58442ed28f2b
browser side: basic disconnection management: hard reload is done on empty signal response
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
172 self.host.bridge.call('disconnect', None) |
58442ed28f2b
browser side: basic disconnection management: hard reload is done on empty signal response
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
173 _dialog = dialog.ConfirmDialog(confirm_cb, text="Do you really want to disconnect ?") |
58442ed28f2b
browser side: basic disconnection management: hard reload is done on empty signal response
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
174 _dialog.show() |
58442ed28f2b
browser side: basic disconnection management: hard reload is done on empty signal response
Goffi <goffi@goffi.org>
parents:
152
diff
changeset
|
175 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
176 def onSocialContract(self): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
177 _frame = Frame('contrat_social.html') |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
178 _frame.setStyleName('infoFrame') |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
179 _dialog = dialog.GenericDialog("Contrat Social", _frame) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
180 _dialog.setSize('80%', '80%') |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
181 _dialog.show() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
182 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
183 def onAbout(self): |
147
60ea800b7237
browser side: fixed about menu + updated website URL
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
184 _about = HTML("""<b>Libervia</b>, a Salut à Toi project<br /> |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
185 <br /> |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
186 You can contact the author at <a href="mailto:goffi@goffi.org">goffi@goffi.org</a><br /> |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
187 Blog available (mainly in french) at <a href="http://www.goffi.org" target="_blank">http://www.goffi.org</a><br /> |
147
60ea800b7237
browser side: fixed about menu + updated website URL
Goffi <goffi@goffi.org>
parents:
131
diff
changeset
|
188 Project page: <a href="http://sat.goffi.org"target="_blank">http://sat.goffi.org</a><br /> |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
189 <br /> |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
190 Any help welcome :) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
191 <p style='font-size:small;text-align:center'>This project is dedicated to Roger Poisson</p> |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
192 """) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
193 _dialog = dialog.GenericDialog("About", _about) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
194 _dialog.show() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
195 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
196 #Contact menu |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
197 def onAddContact(self): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
198 """Q&D contact addition""" |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
199 _dialog = None |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
200 edit = TextBox() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
201 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
202 def addContactCb(sender): |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
203 if not re.match(r'^.+@.+\..+', edit.getText(), re.IGNORECASE): |
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
204 Window.alert('You must enter a valid contact JID (like "contact@%s")' % self.host._defaultDomain) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
205 _dialog.show() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
206 else: |
387
933bce4cb816
browser_side: factorize the code from AvatarUpload to a new class FileUploadPanel
souliane <souliane@mailoo.org>
parents:
377
diff
changeset
|
207 self.host.bridge.call('addContact', None, edit.getText(), '', _dialog.getSelectedGroups()) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
208 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
209 label = Label("New contact identifier (JID):") |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
238
diff
changeset
|
210 edit.setText('@%s' % self.host._defaultDomain) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
211 edit.setWidth('100%') |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
183
diff
changeset
|
212 _dialog = dialog.GroupSelector([label, edit], self.host.contact_panel.getGroups(), [], |
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
183
diff
changeset
|
213 "Add", addContactCb) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
214 _dialog.setHTML('Adding contact') |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
215 _dialog.show() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
216 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
217 def onUpdateContact(self): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
218 _dialog = None |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
219 _contacts_list = ListBox() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
220 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
221 def updateContactCb(sender): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
222 _jid = _contacts_list.getValue(_contacts_list.getSelectedIndex()) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
223 self.host.bridge.call('updateContact', None, _jid, '', _dialog.getSelectedGroups()) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
224 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
225 def onContactChange(_list): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
226 _jid = _contacts_list.getValue(_contacts_list.getSelectedIndex()) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
227 groups = self.host.contact_panel.getContactGroups(_jid) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
228 _dialog.setGroupsSelected(groups) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
229 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
230 for contact in self.host.contact_panel.getContacts(): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
231 _contacts_list.addItem(contact) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
232 _contacts_list.addChangeListener(onContactChange) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
233 _jid = _contacts_list.getValue(_contacts_list.getSelectedIndex()) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
234 _selected_groups = self.host.contact_panel.getContactGroups(_jid) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
235 _dialog = dialog.GroupSelector([Label('Which contact do you want to update ?'), _contacts_list], |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
183
diff
changeset
|
236 self.host.contact_panel.getGroups(), _selected_groups, |
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
183
diff
changeset
|
237 "Update", updateContactCb) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
238 _dialog.setHTML('Updating contact') |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
239 _dialog.show() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
240 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
241 def onRemoveContact(self): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
242 _dialog = None |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
243 _contacts_list = ListBox() |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
244 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
245 def secondConfirmCb(confirm): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
246 if confirm: |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
247 for contact in _contacts_list.getSelectedValues(): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
248 self.host.bridge.call('delContact', None, contact) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
249 else: |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
250 _dialog.show() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
251 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
252 def dialogCb(confirm): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
253 if confirm: |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
254 html_list = ''.join(['<li>%s</li>' % html_sanitize(contact) for contact in _contacts_list.getSelectedValues()]) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
255 html_body = "Are you sure to remove the following contacts from your contact list ?<ul>%s</ul>" % html_list |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
256 dialog.ConfirmDialog(secondConfirmCb, html_body).show() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
257 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
258 for contact in self.host.contact_panel.getContacts(): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
259 _contacts_list.addItem(contact) |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
260 _dialog = dialog.GenericConfirmDialog([_contacts_list], dialogCb, "Who do you want to remove from your contacts ?") |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
261 _dialog.show() |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
262 |
256
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
263 def onManageContactGroups(self): |
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
264 """Open the contact groups manager.""" |
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
265 |
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
266 def onCloseCallback(): |
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
267 pass |
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
268 |
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
269 ContactGroupEditor(self.host, None, onCloseCallback) |
0e7f3944bd27
browser_side: added contact group manager based on ListManager
souliane <souliane@mailoo.org>
parents:
242
diff
changeset
|
270 |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
271 #Group menu |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
272 def onJoinRoom(self): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
273 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
274 def invite(room_jid, contacts): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
275 for contact in contacts: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
276 self.host.bridge.call('inviteMUC', None, contact, room_jid) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
277 |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
278 def join(room_jid, contacts): |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
279 if self.host.whoami: |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
280 nick = self.host.whoami.node |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
281 if room_jid not in [room.bare for room in self.host.room_list]: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
282 self.host.bridge.call('joinMUC', lambda room_jid: invite(room_jid, contacts), room_jid, nick) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
283 else: |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
284 self.host.getOrCreateLiberviaWidget(panels.ChatPanel, (room_jid, "group"), True, JID(room_jid).bare) |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
285 invite(room_jid, contacts) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
286 |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
287 dialog.RoomAndContactsChooser(self.host, join, ok_button="Join", visible=(True, False)) |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
288 |
125
f9d63624699f
radio collective integration, first draft
Goffi <goffi@goffi.org>
parents:
103
diff
changeset
|
289 def onCollectiveRadio(self): |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
290 def callback(room_jid, contacts): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
291 self.host.bridge.call('launchRadioCollective', None, contacts, room_jid) |
272
0cb9869b42b6
browser_side: bug fix for RoomAndContactsChooser (do not display the MUCs in the list)
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
292 dialog.RoomAndContactsChooser(self.host, callback, ok_button="Choose", title="Collective Radio", visible=(False, True)) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
293 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
294 #Game menu |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
295 def onTarotGame(self): |
268
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
296 def onPlayersSelected(room_jid, other_players): |
79970bf6af93
browser_side: added class RoomAndContactsChooser:
souliane <souliane@mailoo.org>
parents:
257
diff
changeset
|
297 self.host.bridge.call('launchTarotGame', None, other_players, room_jid) |
272
0cb9869b42b6
browser_side: bug fix for RoomAndContactsChooser (do not display the MUCs in the list)
souliane <souliane@mailoo.org>
parents:
268
diff
changeset
|
298 dialog.RoomAndContactsChooser(self.host, onPlayersSelected, 3, title="Tarot", title_invite="Please select 3 other players", visible=(False, True)) |
78
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
299 |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
300 def onXiangqiGame(self): |
12680e220b35
browser side: refactoring: menu is now in its own module
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
301 Window.alert("A Xiangqi game is planed, but not available yet") |
148
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
302 |
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
303 #Settings menu |
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
304 |
391
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
305 def onAccount(self): |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
306 def gotUI(xmlui): |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
307 if not xmlui: |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
308 return |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
309 body = XMLUI(self.host, xmlui) |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
310 _dialog = dialog.GenericDialog("Manage your XMPP account", body, options=['NO_CLOSE']) |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
311 body.setCloseCb(_dialog.close) |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
312 _dialog.show() |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
313 self.host.bridge.call('getAccountDialogUI', gotUI) |
c86d7a8d2c1e
browser_side: added a dialog in Settings/Account to update/delete the XMPP account
souliane <souliane@mailoo.org>
parents:
387
diff
changeset
|
314 |
148
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
315 def onParameters(self): |
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
316 def gotParams(xmlui): |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
317 if not xmlui: |
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
318 return |
148
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
319 body = XMLUI(self.host, xmlui) |
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
320 _dialog = dialog.GenericDialog("Parameters", body, options=['NO_CLOSE']) |
336
629c99bbd031
browser + server side: refactored menus:
Goffi <goffi@goffi.org>
parents:
300
diff
changeset
|
321 body.setCloseCb(_dialog.close) |
148
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
322 _dialog.setSize('80%', '80%') |
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
323 _dialog.show() |
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
324 self.host.bridge.call('getParamsUI', gotParams) |
8635bc9db9bf
added parameter management to test XMLUI, but it's currently deactivated for security reasons (need some configuration options) + separated mainTabPanel CSS from LiberviaTabPanel
Goffi <goffi@goffi.org>
parents:
147
diff
changeset
|
325 |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
326 def removeItemParams(self): |
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
327 """Remove the Parameters item from the Settings menu bar.""" |
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
328 self.menu_settings.removeItem(self.item_params) |
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
329 |
152
7e87c87b7952
browser side: temporary avatar upload dialog is added to setting menu
Goffi <goffi@goffi.org>
parents:
148
diff
changeset
|
330 def onAvatarUpload(self): |
7e87c87b7952
browser side: temporary avatar upload dialog is added to setting menu
Goffi <goffi@goffi.org>
parents:
148
diff
changeset
|
331 body = AvatarUpload() |
7e87c87b7952
browser side: temporary avatar upload dialog is added to setting menu
Goffi <goffi@goffi.org>
parents:
148
diff
changeset
|
332 _dialog = dialog.GenericDialog("Avatar upload", body, options=['NO_CLOSE']) |
7e87c87b7952
browser side: temporary avatar upload dialog is added to setting menu
Goffi <goffi@goffi.org>
parents:
148
diff
changeset
|
333 body.setCloseCb(_dialog.close) |
392
f539f6f8ee9c
browser_side: standardize the dialogs size and buttons display:
souliane <souliane@mailoo.org>
parents:
391
diff
changeset
|
334 _dialog.setWidth('40%') |
152
7e87c87b7952
browser side: temporary avatar upload dialog is added to setting menu
Goffi <goffi@goffi.org>
parents:
148
diff
changeset
|
335 _dialog.show() |