Mercurial > libervia-web
annotate src/browser/libervia_main.py @ 699:be55a782a976
browser_side: change frontend method "setStatusOnline" for "setPresenceStatus"
author | souliane <souliane@mailoo.org> |
---|---|
date | Mon, 20 Apr 2015 17:10:38 +0200 |
parents | b395d1309936 |
children | b81816f42c81 |
rev | line source |
---|---|
0 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
339
2067d6241927
fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents:
336
diff
changeset
|
4 # Libervia: a Salut à Toi frontend |
685 | 5 # Copyright (C) 2011, 2012, 2013, 2014, 2015 Jérôme Poisson <goffi@goffi.org> |
0 | 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. |
0 | 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. |
0 | 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/>. |
0 | 19 |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
20 |
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
21 ### logging configuration ### |
467 | 22 from sat_browser import logging |
440
88461e9c3e47
browser_side (log): move logging configuration in a "logging" module + use custom backend with console.debug/info/etc output.
Goffi <goffi@goffi.org>
parents:
439
diff
changeset
|
23 logging.configure() |
88461e9c3e47
browser_side (log): move logging configuration in a "logging" module + use custom backend with console.debug/info/etc output.
Goffi <goffi@goffi.org>
parents:
439
diff
changeset
|
24 from sat.core.log import getLogger |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
25 log = getLogger(__name__) |
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
26 ### |
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
27 |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
28 from sat.core.i18n import D_ |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
29 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
30 from sat_frontends.quick_frontend.quick_app import QuickApp |
631
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
31 from sat_frontends.quick_frontend import quick_widgets |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
32 from sat_frontends.quick_frontend import quick_menus |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
33 |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
34 from sat_frontends.tools.misc import InputHistory |
503
88ece2a00c63
browser_side: display new lines and clickable URLs for headline message
souliane <souliane@mailoo.org>
parents:
500
diff
changeset
|
35 from sat_frontends.tools import strings |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
36 from sat_frontends.tools import jid |
675
941e53b3af5c
browser side: host listeners are called when host is instantiated
Goffi <goffi@goffi.org>
parents:
670
diff
changeset
|
37 from sat_frontends.tools import host_listener |
449
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
38 from sat.core.i18n import _ |
981ed669d3b3
/!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents:
442
diff
changeset
|
39 |
0 | 40 from pyjamas.ui.RootPanel import RootPanel |
21
77c2e48efa29
browser side: a warning message now show who will receive the message entered in UniBox, with a color depending on how many people will be able to see it
Goffi <goffi@goffi.org>
parents:
20
diff
changeset
|
41 from pyjamas.ui.HTML import HTML |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
42 from pyjamas.ui.KeyboardListener import KEY_ESCAPE |
108
fad0e51cf565
on failure, Libervia now wait 5 s before trying again to call the serveur + only room name is now shown in tabs
Goffi <goffi@goffi.org>
parents:
107
diff
changeset
|
43 from pyjamas.Timer import Timer |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
44 from pyjamas import Window, DOM |
323
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
321
diff
changeset
|
45 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
46 from sat_browser import json |
467 | 47 from sat_browser import register |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
48 from sat_browser.contact_list import ContactList |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
49 from sat_browser import widget |
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
50 from sat_browser import main_panel |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
51 from sat_browser import blog |
467 | 52 from sat_browser import dialog |
53 from sat_browser import xmlui | |
54 from sat_browser import html_tools | |
55 from sat_browser import notification | |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
56 from sat_browser import libervia_widget |
323
0b7934e75e76
misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents:
321
diff
changeset
|
57 |
467 | 58 from sat_browser.constants import Const as C |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
59 import os.path |
317
bbadd490e63c
misc: gather the constants in a single file, as it is done for other frontends
souliane <souliane@mailoo.org>
parents:
316
diff
changeset
|
60 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
61 |
549
cd56f2b0e85b
browser_side: disable OTR if the browser is too old to offer crypto.getRandomValues (CSPRNG)
souliane <souliane@mailoo.org>
parents:
548
diff
changeset
|
62 try: |
cd56f2b0e85b
browser_side: disable OTR if the browser is too old to offer crypto.getRandomValues (CSPRNG)
souliane <souliane@mailoo.org>
parents:
548
diff
changeset
|
63 # FIXME: import plugin dynamically |
cd56f2b0e85b
browser_side: disable OTR if the browser is too old to offer crypto.getRandomValues (CSPRNG)
souliane <souliane@mailoo.org>
parents:
548
diff
changeset
|
64 from sat_browser import plugin_sec_otr |
cd56f2b0e85b
browser_side: disable OTR if the browser is too old to offer crypto.getRandomValues (CSPRNG)
souliane <souliane@mailoo.org>
parents:
548
diff
changeset
|
65 except ImportError: |
cd56f2b0e85b
browser_side: disable OTR if the browser is too old to offer crypto.getRandomValues (CSPRNG)
souliane <souliane@mailoo.org>
parents:
548
diff
changeset
|
66 pass |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
229
diff
changeset
|
67 |
624
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
623
diff
changeset
|
68 |
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
623
diff
changeset
|
69 unicode = str # FIXME: pyjamas workaround |
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
623
diff
changeset
|
70 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
71 |
230
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
229
diff
changeset
|
72 MAX_MBLOG_CACHE = 500 # Max microblog entries kept in memories |
266e9678eec0
browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents:
229
diff
changeset
|
73 |
58
4fa3d57f72f8
browser side: microblog entries caching
Goffi <goffi@goffi.org>
parents:
57
diff
changeset
|
74 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
75 class SatWebFrontend(InputHistory, QuickApp): |
0 | 76 def onModuleLoad(self): |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
77 log.info("============ onModuleLoad ==============") |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
78 self.bridge_signals = json.BridgeSignals(self) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
79 QuickApp.__init__(self, json.BridgeCall) |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
80 self.panel = main_panel.MainPanel(self) |
84 | 81 self.tab_panel = self.panel.tab_panel |
193
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
82 self.tab_panel.addTabListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
64
diff
changeset
|
83 self._register_box = None |
0 | 84 RootPanel().add(self.panel) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
85 |
467 | 86 self.notification = notification.Notification() |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
87 DOM.addEventPreview(self) |
521
69bffcf37ce3
browser_side: add minimal requirements for generic plugins handling
souliane <souliane@mailoo.org>
parents:
520
diff
changeset
|
88 self.importPlugins() |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
89 self._register = json.RegisterCall() |
494
5d8632a7bfde
browser_side: refactorisation of menus and LiberviaWidget's header
souliane <souliane@mailoo.org>
parents:
483
diff
changeset
|
90 self._register.call('getMenus', self.gotMenus) |
318
c12c9a1acf2f
server_side: added support for paramsRegisterApp to define frontend's specific parameters like "Enable unibox"
souliane <souliane@mailoo.org>
parents:
317
diff
changeset
|
91 self._register.call('registerParams', None) |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
92 self._register.call('isRegistered', self._isRegisteredCB) |
205
ee744ffed7fc
browser side: events data are cached until initialisation is finished (we get all microblogs)
Goffi <goffi@goffi.org>
parents:
204
diff
changeset
|
93 self.initialised = False |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
94 self.init_cache = [] # used to cache events until initialisation is done |
478
992b900ab876
browser side: rename and refactor constant UI_PARAMS to CACHED_PARAMS, from a dict of dict to a list of 2-tuple
souliane <souliane@mailoo.org>
parents:
477
diff
changeset
|
95 self.cached_params = {} |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
96 self.next_rsm_index = 0 |
193
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
97 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
98 #FIXME: microblog cache should be managed directly in blog module |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
99 self.mblog_cache = [] # used to keep our own blog entries in memory, to show them in new mblog panel |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
100 |
683
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
101 self._versions={} # SàT and Libervia versions cache |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
102 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
103 @property |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
104 def whoami(self): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
105 # XXX: works because Libervia is mono-profile |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
106 # if one day Libervia manage several profiles at once, this must be deleted |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
107 return self.profiles[C.PROF_KEY_NONE].whoami |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
108 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
109 @property |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
110 def contact_list(self): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
111 return self.contact_lists[C.PROF_KEY_NONE] |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
112 |
613
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
113 @property |
631
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
114 def visible_widgets(self): |
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
115 widgets_panel = self.tab_panel.getCurrentPanel() |
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
116 return [wid for wid in widgets_panel.widgets if isinstance(wid, quick_widgets.QuickWidget)] |
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
117 |
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
118 @property |
613
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
119 def base_location(self): |
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
120 """Return absolute base url of this Libervia instance""" |
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
121 url = Window.getLocation().getHref() |
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
122 if url.endswith(C.LIBERVIA_MAIN_PAGE): |
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
123 url = url[:-len(C.LIBERVIA_MAIN_PAGE)] |
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
124 if url.endswith("/"): |
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
125 url = url[:-1] |
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
126 return url |
deddd1cd8aa5
browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
127 |
683
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
128 @property |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
129 def sat_version(self): |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
130 return self._versions["sat"] |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
131 |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
132 @property |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
133 def libervia_version(self): |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
134 return self._versions["libervia"] |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
135 |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
136 def getVersions(self, callback=None): |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
137 """Ask libervia server for SàT and Libervia version and fill local cache |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
138 |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
139 @param callback: method to call when both versions have been received |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
140 """ |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
141 def gotVersion(): |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
142 if len(self._versions) == 2 and callback is not None: |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
143 callback() |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
144 |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
145 if len(self._versions) == 2: |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
146 # we already have versions in cache |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
147 gotVersion() |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
148 return |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
149 |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
150 def gotSat(version): |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
151 self._versions["sat"] = version |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
152 gotVersion() |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
153 |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
154 def gotLibervia(version): |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
155 self._versions["libervia"] = version |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
156 gotVersion() |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
157 |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
158 self.bridge.getVersion(callback=gotSat) |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
159 self.bridge.getLiberviaVersion(callback=gotLibervia, profile=None) # XXX: bridge direct call expect a profile, even for method with no profile needed |
801eb94aa869
browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents:
679
diff
changeset
|
160 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
161 def registerSignal(self, functionName, handler=None, iface="core", with_profile=True): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
162 if handler is None: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
163 callback = getattr(self, "{}{}".format(functionName, "Handler")) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
164 else: |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
165 callback = handler |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
166 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
167 self.bridge_signals.register(functionName, callback, with_profile=with_profile) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
168 |
521
69bffcf37ce3
browser_side: add minimal requirements for generic plugins handling
souliane <souliane@mailoo.org>
parents:
520
diff
changeset
|
169 def importPlugins(self): |
69bffcf37ce3
browser_side: add minimal requirements for generic plugins handling
souliane <souliane@mailoo.org>
parents:
520
diff
changeset
|
170 self.plugins = {} |
549
cd56f2b0e85b
browser_side: disable OTR if the browser is too old to offer crypto.getRandomValues (CSPRNG)
souliane <souliane@mailoo.org>
parents:
548
diff
changeset
|
171 try: |
cd56f2b0e85b
browser_side: disable OTR if the browser is too old to offer crypto.getRandomValues (CSPRNG)
souliane <souliane@mailoo.org>
parents:
548
diff
changeset
|
172 self.plugins['otr'] = plugin_sec_otr.OTR(self) |
cd56f2b0e85b
browser_side: disable OTR if the browser is too old to offer crypto.getRandomValues (CSPRNG)
souliane <souliane@mailoo.org>
parents:
548
diff
changeset
|
173 except TypeError: # plugin_sec_otr has not been imported |
665
6a8a1103ad10
browser_side: OTR uses 'profilePlugged', 'disconnect' and 'gotMenus' listeners
souliane <souliane@mailoo.org>
parents:
663
diff
changeset
|
174 pass |
521
69bffcf37ce3
browser_side: add minimal requirements for generic plugins handling
souliane <souliane@mailoo.org>
parents:
520
diff
changeset
|
175 |
192
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
176 def getSelected(self): |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
177 wid = self.tab_panel.getCurrentPanel() |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
178 if not isinstance(wid, libervia_widget.WidgetsPanel): |
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
179 log.error("Tab widget is not a WidgetsPanel, can't get selected widget") |
192
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
180 return None |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
181 return wid.selected |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
182 |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
183 def setSelected(self, widget): |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
184 """Define the selected widget""" |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
185 widgets_panel = self.tab_panel.getCurrentPanel() |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
186 if not isinstance(widgets_panel, libervia_widget.WidgetsPanel): |
192
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
187 return |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
188 |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
189 selected = widgets_panel.selected |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
190 |
193
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
191 if selected == widget: |
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
192 return |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
205
diff
changeset
|
193 |
192
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
194 if selected: |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
195 selected.removeStyleName('selected_widget') |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
196 |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
197 # FIXME: check that widget is in the current WidgetsPanel |
192
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
198 widgets_panel.selected = widget |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
199 self.selected_widget = widget |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
200 |
192
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
201 if widget: |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
202 widgets_panel.selected.addStyleName('selected_widget') |
cf5c83e7d515
browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents:
179
diff
changeset
|
203 |
33 | 204 def resize(self): |
205 """Resize elements""" | |
206 Window.onResize() | |
207 | |
193
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
208 def onBeforeTabSelected(self, sender, tab_index): |
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
209 return True |
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
210 |
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
211 def onTabSelected(self, sender, tab_index): |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
212 pass |
193
f2ae8e170c49
browser side: selected widget caching in UniBox, to avoid to ask the getter at each key pressed, which make the box very slow.
Goffi <goffi@goffi.org>
parents:
192
diff
changeset
|
213 |
43
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
214 def onEventPreview(self, event): |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
215 if event.type in ["keydown", "keypress", "keyup"] and event.keyCode == KEY_ESCAPE: |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
216 #needed to prevent request cancellation in Firefox |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
217 event.preventDefault() |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
218 return True |
a7ff1e6f1229
browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents:
41
diff
changeset
|
219 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
220 # FIXME: must not call _entityDataUpdatedCb by itself |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
221 # should not get VCard, backend plugin must be fixed too |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
222 def getAvatarURL(self, jid_): |
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
223 """Return avatar of a jid if in cache, else ask for it. |
479
c21ea1fe3593
browser side: small refactoring to prepare displaying avatars in the contact panel
souliane <souliane@mailoo.org>
parents:
478
diff
changeset
|
224 |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
225 @param jid_ (jid.JID): JID of the contact |
662
ebb602d8b3f2
browser_side: replace all instances of 'str' with 'unicode'
souliane <souliane@mailoo.org>
parents:
659
diff
changeset
|
226 @return: the URL to the avatar (unicode) |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
227 """ |
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
228 assert isinstance(jid_, jid.JID) |
624
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
623
diff
changeset
|
229 contact_list = self.contact_list # pyjamas issue: need a temporary variable to call a property's method |
9092e624bb27
browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents:
623
diff
changeset
|
230 avatar_hash = contact_list.getCache(jid_, 'avatar') |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
231 if avatar_hash is None: |
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
232 # we have no value for avatar_hash, so we request the vcard |
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
233 self.bridge.getCard(unicode(jid_), profile=C.PROF_KEY_NONE) |
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
234 if not avatar_hash: |
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
235 return C.DEFAULT_AVATAR_URL |
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
236 ret = os.path.join(C.AVATARS_DIR, avatar_hash) |
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
237 return ret |
119 | 238 |
84 | 239 def registerWidget(self, wid): |
694
82123705474b
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
692
diff
changeset
|
240 log.debug(u"Registering %s" % wid.getDebugName()) |
84 | 241 self.libervia_widgets.add(wid) |
242 | |
243 def unregisterWidget(self, wid): | |
244 try: | |
245 self.libervia_widgets.remove(wid) | |
246 except KeyError: | |
694
82123705474b
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
692
diff
changeset
|
247 log.warning(u'trying to remove a non registered Widget: %s' % wid.getDebugName()) |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
205
diff
changeset
|
248 |
326
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
249 def refresh(self): |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
250 """Refresh the general display.""" |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
251 self.panel.refresh() |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
252 for lib_wid in self.libervia_widgets: |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
253 lib_wid.refresh() |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
254 self.resize() |
33 | 255 |
267
a76243c02074
browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents:
266
diff
changeset
|
256 def addWidget(self, wid, tab_index=None): |
a76243c02074
browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents:
266
diff
changeset
|
257 """ Add a widget at the bottom of the current or specified tab |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
258 |
267
a76243c02074
browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents:
266
diff
changeset
|
259 @param wid: LiberviaWidget to add |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
260 @param tab_index: index of the tab to add the widget to |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
261 """ |
267
a76243c02074
browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents:
266
diff
changeset
|
262 if tab_index is None or tab_index < 0 or tab_index >= self.tab_panel.getWidgetCount(): |
a76243c02074
browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents:
266
diff
changeset
|
263 panel = self.tab_panel.getCurrentPanel() |
a76243c02074
browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents:
266
diff
changeset
|
264 else: |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
265 panel = self.tab_panel.deck.getWidget(tab_index) |
200
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
195
diff
changeset
|
266 panel.addWidget(wid) |
0f5c2f799913
browser side: clicking on the contacts list (contact item, group or the "contacts" main title) open a discussion or microblog
Goffi <goffi@goffi.org>
parents:
195
diff
changeset
|
267 |
328
835a8ae799e7
Add notifications support, fixes bug 7.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
326
diff
changeset
|
268 def displayNotification(self, title, body): |
835a8ae799e7
Add notifications support, fixes bug 7.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
326
diff
changeset
|
269 self.notification.notify(title, body) |
835a8ae799e7
Add notifications support, fixes bug 7.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
326
diff
changeset
|
270 |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
271 def gotMenus(self, backend_menus): |
494
5d8632a7bfde
browser_side: refactorisation of menus and LiberviaWidget's header
souliane <souliane@mailoo.org>
parents:
483
diff
changeset
|
272 """Put the menus data in cache and build the main menu bar |
5d8632a7bfde
browser_side: refactorisation of menus and LiberviaWidget's header
souliane <souliane@mailoo.org>
parents:
483
diff
changeset
|
273 |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
274 @param backend_menus (list[tuple]): menu data from backend |
494
5d8632a7bfde
browser_side: refactorisation of menus and LiberviaWidget's header
souliane <souliane@mailoo.org>
parents:
483
diff
changeset
|
275 """ |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
276 main_menu = self.panel.menu # most of global menu callbacks are in main_menu |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
277 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
278 # Categories (with icons) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
279 self.menus.addCategory(C.MENU_GLOBAL, [D_(u"General")], extra={'icon': 'home'}) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
280 self.menus.addCategory(C.MENU_GLOBAL, [D_(u"Contacts")], extra={'icon': 'social'}) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
281 self.menus.addCategory(C.MENU_GLOBAL, [D_(u"Groups")], extra={'icon': 'social'}) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
282 self.menus.addCategory(C.MENU_GLOBAL, [D_(u"Games")], extra={'icon': 'games'}) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
283 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
284 # menus to have before backend menus |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
285 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Groups"), D_(u"Discussion")), callback=main_menu.onJoinRoom) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
286 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
287 # menus added by the backend/plugins (include other types than C.MENU_GLOBAL) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
288 self.menus.addMenus(backend_menus, top_extra={'icon': 'plugins'}) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
289 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
290 # menus to have under backend menus |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
291 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Contacts"), D_(u"Manage groups")), callback=main_menu.onManageContactGroups) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
292 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
293 # separator and right hand menus |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
294 self.menus.addMenuItem(C.MENU_GLOBAL, [], quick_menus.MenuSeparator()) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
295 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
296 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Help"), D_("Social contract")), top_extra={'icon': 'help'}, callback=main_menu.onSocialContract) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
297 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Help"), D_("About")), callback=main_menu.onAbout) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
298 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Settings"), D_("Account")), top_extra={'icon': 'settings'}, callback=main_menu.onAccount) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
299 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Settings"), D_("Parameters")), callback=main_menu.onParameters) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
300 # XXX: temporary, will change when a full profile will be managed in SàT |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
301 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Settings"), D_("Upload avatar")), callback=main_menu.onAvatarUpload) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
302 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
303 # we call listener to have menu added by local classes/plugins |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
304 self.callListeners('gotMenus') # FIXME: to be done another way or moved to quick_app |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
305 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
306 # and finally the menus which must appear at the bottom |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
307 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"General"), D_(u"Disconnect")), callback=main_menu.onDisconnect) |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
308 |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
309 # we can now display all the menus |
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
310 main_menu.update(C.MENU_GLOBAL) |
494
5d8632a7bfde
browser_side: refactorisation of menus and LiberviaWidget's header
souliane <souliane@mailoo.org>
parents:
483
diff
changeset
|
311 |
415
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
312 def _isRegisteredCB(self, result): |
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
313 registered, warning = result |
0 | 314 if not registered: |
467 | 315 self._register_box = register.RegisterBox(self.logged) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
64
diff
changeset
|
316 self._register_box.centerBox() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
64
diff
changeset
|
317 self._register_box.show() |
415
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
318 if warning: |
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
319 dialog.InfoDialog(_('Security warning'), warning).show() |
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
320 self._tryAutoConnect(skip_validation=not not warning) |
0 | 321 else: |
1 | 322 self._register.call('isConnected', self._isConnectedCB) |
0 | 323 |
1 | 324 def _isConnectedCB(self, connected): |
0 | 325 if not connected: |
456
da2a7f2b34c9
browser and server sides: use asyncConnect instead of connect
souliane <souliane@mailoo.org>
parents:
455
diff
changeset
|
326 self._register.call('asyncConnect', lambda x: self.logged()) |
0 | 327 else: |
328 self.logged() | |
329 | |
330 def logged(self): | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
64
diff
changeset
|
331 if self._register_box: |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
64
diff
changeset
|
332 self._register_box.hide() |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
333 del self._register_box # don't work if self._register_box is None |
210
3092f6b1710c
browser side: make the OK button title for group selector configureable + few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
205
diff
changeset
|
334 |
657
0b7e4226378d
browser_side: hide the tab bar and contact list's toggle button until the profile is connected
souliane <souliane@mailoo.org>
parents:
655
diff
changeset
|
335 # display the presence status panel and tab bar |
654
40c72f3b7638
browser_side: MainPanel is now based on a DockPanel, which allows to use less tables and also to remove some "window resized" listeners
souliane <souliane@mailoo.org>
parents:
651
diff
changeset
|
336 self.presence_status_panel = main_panel.PresenceStatusPanel(self) |
40c72f3b7638
browser_side: MainPanel is now based on a DockPanel, which allows to use less tables and also to remove some "window resized" listeners
souliane <souliane@mailoo.org>
parents:
651
diff
changeset
|
337 self.panel.addPresenceStatusPanel(self.presence_status_panel) |
657
0b7e4226378d
browser_side: hide the tab bar and contact list's toggle button until the profile is connected
souliane <souliane@mailoo.org>
parents:
655
diff
changeset
|
338 self.panel.tab_panel.getTabBar().setVisible(True) |
426
77d8f55fc5f0
browser_side: hide the presence/status panel until the connection is made
souliane <souliane@mailoo.org>
parents:
422
diff
changeset
|
339 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
340 self.bridge_signals.call('getSignals', self.bridge_signals.signalHandler) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
341 |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
239
diff
changeset
|
342 def domain_cb(value): |
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
239
diff
changeset
|
343 self._defaultDomain = value |
694
82123705474b
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
692
diff
changeset
|
344 log.info(u"new account domain: %s" % value) |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
239
diff
changeset
|
345 |
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
239
diff
changeset
|
346 def domain_eb(value): |
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
239
diff
changeset
|
347 self._defaultDomain = "libervia.org" |
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
239
diff
changeset
|
348 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
349 self.bridge.getNewAccountDomain(callback=domain_cb, errback=domain_eb) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
350 self.plug_profiles([C.PROF_KEY_NONE]) # XXX: None was used intitially, but pyjamas bug when using variable arguments and None is the only arg. |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
309
diff
changeset
|
351 |
665
6a8a1103ad10
browser_side: OTR uses 'profilePlugged', 'disconnect' and 'gotMenus' listeners
souliane <souliane@mailoo.org>
parents:
663
diff
changeset
|
352 def profilePlugged(self, dummy): # FIXME: to be called as a "profilePlugged" listener? |
644
7692bbfe0b2f
browser side: call of parent profilePlugged for overriden method
Goffi <goffi@goffi.org>
parents:
643
diff
changeset
|
353 QuickApp.profilePlugged(self, dummy) |
667
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
665
diff
changeset
|
354 |
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
665
diff
changeset
|
355 microblog_widget = self.displayWidget(blog.MicroblogPanel, ()) |
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
665
diff
changeset
|
356 self.setSelected(microblog_widget) |
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
665
diff
changeset
|
357 |
606
7af8f4ab3675
browser side: fixed avatar getting + better DEFAULT/EMPTY avatars constants + use of jid.JID for microblog's author
Goffi <goffi@goffi.org>
parents:
597
diff
changeset
|
358 # we fill the panels already here |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
359 for wid in self.widgets.getWidgets(blog.MicroblogPanel): |
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
360 if wid.accept_all(): |
679 | 361 self.bridge.getMassiveMblogs('ALL', (), None, profile=C.PROF_KEY_NONE, callback=wid.massiveInsert) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
362 else: |
679 | 363 self.bridge.getMassiveMblogs('GROUP', list(wid.accepted_groups), None, profile=C.PROF_KEY_NONE, callback=wid.massiveInsert) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
364 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
365 #we ask for our own microblogs: |
679 | 366 self.loadOurMainEntries() |
312
b4781a350483
browser_side: display a "New message" button and add a "comment" icon for main entries in MicroblogPanel when the unibox is disabled
souliane <souliane@mailoo.org>
parents:
309
diff
changeset
|
367 |
692
7a9c7b9f6a28
browser_side: use host.default_muc instead of C.DEFAULT_MUC
souliane <souliane@mailoo.org>
parents:
687
diff
changeset
|
368 def gotDefaultMUC(default_muc): |
7a9c7b9f6a28
browser_side: use host.default_muc instead of C.DEFAULT_MUC
souliane <souliane@mailoo.org>
parents:
687
diff
changeset
|
369 self.default_muc = default_muc |
7a9c7b9f6a28
browser_side: use host.default_muc instead of C.DEFAULT_MUC
souliane <souliane@mailoo.org>
parents:
687
diff
changeset
|
370 self.bridge.getDefaultMUC(profile=None, callback=gotDefaultMUC) |
7a9c7b9f6a28
browser_side: use host.default_muc instead of C.DEFAULT_MUC
souliane <souliane@mailoo.org>
parents:
687
diff
changeset
|
371 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
372 def addContactList(self, dummy): |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
373 contact_list = ContactList(self) |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
374 self.panel.addContactList(contact_list) |
658
476d8d9973d3
browser_side: the contact list's height needs a window resize after it's been added or when the tab bar display is changed
souliane <souliane@mailoo.org>
parents:
657
diff
changeset
|
375 |
476d8d9973d3
browser_side: the contact list's height needs a window resize after it's been added or when the tab bar display is changed
souliane <souliane@mailoo.org>
parents:
657
diff
changeset
|
376 # FIXME: the contact list height has to be set manually the first time |
476d8d9973d3
browser_side: the contact list's height needs a window resize after it's been added or when the tab bar display is changed
souliane <souliane@mailoo.org>
parents:
657
diff
changeset
|
377 self.resize() |
476d8d9973d3
browser_side: the contact list's height needs a window resize after it's been added or when the tab bar display is changed
souliane <souliane@mailoo.org>
parents:
657
diff
changeset
|
378 |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
379 return contact_list |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
380 |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
381 def newWidget(self, wid): |
694
82123705474b
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
692
diff
changeset
|
382 log.debug(u"newWidget: {}".format(wid)) |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
383 self.addWidget(wid) |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
384 |
663
423182fea41c
browser_side: fixes OTR using the new resource system and proper triggers (send and receive message) or listener (presence update)
souliane <souliane@mailoo.org>
parents:
662
diff
changeset
|
385 def newMessageHandler(self, from_jid_s, msg, type_, to_jid_s, extra, profile=C.PROF_KEY_NONE): |
645
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
386 if type_ == C.MESS_TYPE_HEADLINE: |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
387 from_jid = jid.JID(from_jid_s) |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
388 if from_jid.domain == self._defaultDomain: |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
389 # we display announcement from the server in a dialog for better visibility |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
390 try: |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
391 title = extra['subject'] |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
392 except KeyError: |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
393 title = _('Announcement from %s') % from_jid |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
394 msg = strings.addURLToText(html_tools.XHTML2Text(msg)) |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
395 dialog.InfoDialog(title, msg).show() |
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
396 return |
646
9972a24592b0
browser side: fixed typo in newMessageHandler
Goffi <goffi@goffi.org>
parents:
645
diff
changeset
|
397 QuickApp.newMessageHandler(self, from_jid_s, msg, type_, to_jid_s, extra, profile) |
645
122b4483dac4
browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents:
644
diff
changeset
|
398 |
643
3e4826948eef
browser side: do a hard reload on disconnected signal
Goffi <goffi@goffi.org>
parents:
637
diff
changeset
|
399 def disconnectedHandler(self, profile): |
3e4826948eef
browser side: do a hard reload on disconnected signal
Goffi <goffi@goffi.org>
parents:
637
diff
changeset
|
400 QuickApp.disconnectedHandler(self, profile) |
3e4826948eef
browser side: do a hard reload on disconnected signal
Goffi <goffi@goffi.org>
parents:
637
diff
changeset
|
401 Window.getLocation().reload() |
3e4826948eef
browser side: do a hard reload on disconnected signal
Goffi <goffi@goffi.org>
parents:
637
diff
changeset
|
402 |
699
be55a782a976
browser_side: change frontend method "setStatusOnline" for "setPresenceStatus"
souliane <souliane@mailoo.org>
parents:
697
diff
changeset
|
403 def setPresenceStatus(self, show='', status=None, profile=C.PROF_KEY_NONE): |
655
048401e5c506
browser_side: implements setStatusOnline since it is not used only for setting the connected state on/off, but also to update the user presence and status
souliane <souliane@mailoo.org>
parents:
654
diff
changeset
|
404 self.presence_status_panel.setPresence(show) |
699
be55a782a976
browser_side: change frontend method "setStatusOnline" for "setPresenceStatus"
souliane <souliane@mailoo.org>
parents:
697
diff
changeset
|
405 if status is not None: |
be55a782a976
browser_side: change frontend method "setStatusOnline" for "setPresenceStatus"
souliane <souliane@mailoo.org>
parents:
697
diff
changeset
|
406 self.presence_status_panel.setStatus(status) |
242
a25aa882e09a
browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents:
239
diff
changeset
|
407 |
415
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
408 def _tryAutoConnect(self, skip_validation=False): |
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
409 """This method retrieve the eventual URL parameters to auto-connect the user. |
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
410 @param skip_validation: if True, set the form values but do not validate it |
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
411 """ |
503
88ece2a00c63
browser_side: display new lines and clickable URLs for headline message
souliane <souliane@mailoo.org>
parents:
500
diff
changeset
|
412 params = strings.getURLParams(Window.getLocation().getSearch()) |
250
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
413 if "login" in params: |
457
b55bc50756fa
browser side: select the "Login" tab when using auto-connect feature
souliane <souliane@mailoo.org>
parents:
456
diff
changeset
|
414 self._register_box._form.right_side.selectTab(0) |
250
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
415 self._register_box._form.login_box.setText(params["login"]) |
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
416 self._register_box._form.login_pass_box.setFocus(True) |
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
417 if "passwd" in params: |
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
418 # try to connect |
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
419 self._register_box._form.login_pass_box.setText(params["passwd"]) |
415
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
420 if not skip_validation: |
fadbba1d793f
server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents:
408
diff
changeset
|
421 self._register_box._form.onLogin(None) |
250
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
422 return True |
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
423 else: |
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
424 # this would eventually set the browser saved password |
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
425 Timer(5, lambda: self._register_box._form.login_pass_box.setFocus(True)) |
38e6211d36ca
browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents:
244
diff
changeset
|
426 |
316
4148f8f4caa0
browser_side: fix import and method signatures relative to changeset e4f586fc6101
souliane <souliane@mailoo.org>
parents:
313
diff
changeset
|
427 def _actionCb(self, data): |
299
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
428 if not data: |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
429 # action was a one shot, nothing to do |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
430 pass |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
431 elif "xmlui" in data: |
500
67a4e8383b70
browser side (XMLUI): XMLUI update to follow core changes:
Goffi <goffi@goffi.org>
parents:
495
diff
changeset
|
432 ui = xmlui.create(self, xml_data=data['xmlui']) |
67a4e8383b70
browser side (XMLUI): XMLUI update to follow core changes:
Goffi <goffi@goffi.org>
parents:
495
diff
changeset
|
433 ui.show() |
495
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
494
diff
changeset
|
434 elif "public_blog" in data: |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
494
diff
changeset
|
435 # TODO: use the bare instead of node when all blogs can be retrieved |
587fe75d1b16
browser_side: handle menus of type ROOM, SINGLE and ROSTER_JID
souliane <souliane@mailoo.org>
parents:
494
diff
changeset
|
436 node = jid.JID(data['public_blog']).node |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
437 # FIXME: "/blog/{}" won't work with unicode nodes |
659
8e7d4de56e75
browser_side: allow to drop a widget in the "+" tab
souliane <souliane@mailoo.org>
parents:
658
diff
changeset
|
438 self.displayWidget(widget.WebWidget, "/blog/{}".format(node), show_url=False, new_tab=_(u"{}'s blog").format(unicode(node))) |
299
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
439 else: |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
440 dialog.InfoDialog("Error", |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
441 "Unmanaged action result", Width="400px").center() |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
442 |
316
4148f8f4caa0
browser_side: fix import and method signatures relative to changeset e4f586fc6101
souliane <souliane@mailoo.org>
parents:
313
diff
changeset
|
443 def _actionEb(self, err_data): |
299
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
444 err_code, err_obj = err_data |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
445 dialog.InfoDialog("Error", |
662
ebb602d8b3f2
browser_side: replace all instances of 'str' with 'unicode'
souliane <souliane@mailoo.org>
parents:
659
diff
changeset
|
446 unicode(err_obj), Width="400px").center() |
299
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
447 |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
448 def launchAction(self, callback_id, data=None, callback=None, profile=C.PROF_KEY_NONE): |
299
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
449 """ Launch a dynamic action |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
450 @param callback_id: id of the action to launch |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
451 @param data: data needed only for certain actions |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
452 |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
453 """ |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
454 if data is None: |
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
455 data = {} |
676
849ffb24d5bf
browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents:
675
diff
changeset
|
456 self.bridge.launchAction(callback_id, data, profile=profile, callback=self._actionCb, errback=self._actionEb) |
299
e4f586fc6101
server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents:
298
diff
changeset
|
457 |
1 | 458 def _getContactsCB(self, contacts_data): |
467 | 459 for contact_ in contacts_data: |
460 jid, attributes, groups = contact_ | |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
461 self._newContactCb(jid, attributes, groups) |
0 | 462 |
467 | 463 def _getParamsUICB(self, xml_ui): |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
464 """Hide the parameters item if there's nothing to display""" |
467 | 465 if not xml_ui: |
218
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
466 self.panel.menu.removeItemParams() |
4e6467efd6bf
browser_side: small improvements for parameters panel
souliane <souliane@mailoo.org>
parents:
215
diff
changeset
|
467 |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
468 def _ownBlogsFills(self, mblogs, mblog_panel=None): |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
469 """Put our own microblogs in cache, then fill the panels with them. |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
470 |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
471 @param mblogs (dict): dictionary mapping a publisher JID to blogs data. |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
472 @param mblog_panel (MicroblogPanel): the panel to fill, or all if None. |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
473 """ |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
474 cache = [] |
139 | 475 for publisher in mblogs: |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
476 for mblog in mblogs[publisher][0]: |
451 | 477 if 'content' not in mblog: |
694
82123705474b
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
692
diff
changeset
|
478 log.warning(u"No content found in microblog [%s]" % mblog) |
139 | 479 continue |
452
7b6506372466
browser_side: fixes bug introduced with previous changeset (1a0cec9b0f1e)
souliane <souliane@mailoo.org>
parents:
451
diff
changeset
|
480 if 'groups' in mblog: |
139 | 481 _groups = set(mblog['groups'].split() if mblog['groups'] else []) |
482 else: | |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
483 _groups = None |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
484 mblog_entry = blog.MicroblogItem(mblog) |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
485 cache.append((_groups, mblog_entry)) |
215
e830a0c60d32
server side: added the security_limit to setParam
souliane <souliane@mailoo.org>
parents:
213
diff
changeset
|
486 |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
487 self.mblog_cache.extend(cache) |
139 | 488 if len(self.mblog_cache) > MAX_MBLOG_CACHE: |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
489 del self.mblog_cache[0:len(self.mblog_cache - MAX_MBLOG_CACHE)] |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
490 |
679 | 491 widget_list = [mblog_panel] if mblog_panel else self.widgets.getWidgets(blog.MicroblogPanel) |
492 | |
493 for wid in widget_list: | |
494 self.fillMicroblogPanel(wid, cache) | |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
495 |
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
496 # FIXME |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
497 |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
498 if self.initialised: |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
499 return |
451 | 500 self.initialised = True # initialisation phase is finished here |
501 for event_data in self.init_cache: # so we have to send all the cached events | |
667
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
665
diff
changeset
|
502 self.personalEventHandler(*event_data) |
205
ee744ffed7fc
browser side: events data are cached until initialisation is finished (we get all microblogs)
Goffi <goffi@goffi.org>
parents:
204
diff
changeset
|
503 del self.init_cache |
139 | 504 |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
505 def loadOurMainEntries(self, index=0, mblog_panel=None): |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
506 """Load a page of our own blogs from the cache or ask them to the |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
507 backend. Then fill the panels with them. |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
508 |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
509 @param index (int): starting index of the blog page to retrieve. |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
510 @param mblog_panel (MicroblogPanel): the panel to fill, or all if None. |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
511 """ |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
512 delta = index - self.next_rsm_index |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
513 if delta < 0: |
679 | 514 assert mblog_panel is not None |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
515 self.fillMicroblogPanel(mblog_panel, self.mblog_cache[index:index + C.RSM_MAX_ITEMS]) |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
516 return |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
517 |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
518 def cb(result): |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
519 self._ownBlogsFills(result, mblog_panel) |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
520 |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
521 rsm = {'max': str(delta + C.RSM_MAX_ITEMS), 'index': str(self.next_rsm_index)} |
679 | 522 self.bridge.getMassiveMblogs('JID', [unicode(self.whoami.bare)], rsm, callback=cb, profile=C.PROF_KEY_NONE) |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
523 self.next_rsm_index = index + C.RSM_MAX_ITEMS |
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
524 |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
525 ## Signals callbacks ## |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
526 |
667
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
665
diff
changeset
|
527 def personalEventHandler(self, sender, event_type, data): |
166f3b624816
browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents:
665
diff
changeset
|
528 # FIXME: move some code from here to QuickApp |
205
ee744ffed7fc
browser side: events data are cached until initialisation is finished (we get all microblogs)
Goffi <goffi@goffi.org>
parents:
204
diff
changeset
|
529 if not self.initialised: |
ee744ffed7fc
browser side: events data are cached until initialisation is finished (we get all microblogs)
Goffi <goffi@goffi.org>
parents:
204
diff
changeset
|
530 self.init_cache.append((sender, event_type, data)) |
ee744ffed7fc
browser side: events data are cached until initialisation is finished (we get all microblogs)
Goffi <goffi@goffi.org>
parents:
204
diff
changeset
|
531 return |
467 | 532 sender = jid.JID(sender).bare |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
533 if event_type == "MICROBLOG": |
202
2bc6cf004e61
browser, server: comments handling:
Goffi <goffi@goffi.org>
parents:
200
diff
changeset
|
534 if not 'content' in data: |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
535 log.warning("No content found in microblog data") |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
536 return |
202
2bc6cf004e61
browser, server: comments handling:
Goffi <goffi@goffi.org>
parents:
200
diff
changeset
|
537 if 'groups' in data: |
16
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
14
diff
changeset
|
538 _groups = set(data['groups'].split() if data['groups'] else []) |
099c05a0dcab
browser side: microblog panel improvments
Goffi <goffi@goffi.org>
parents:
14
diff
changeset
|
539 else: |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
540 _groups = None |
589
a5019e62c3e9
browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents:
584
diff
changeset
|
541 mblog_entry = blog.MicroblogItem(data) |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
542 |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
543 for wid in self.widgets.getWidgets(blog.MicroblogPanel): |
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
544 wid.addEntryIfAccepted(sender, _groups, mblog_entry) |
58
4fa3d57f72f8
browser side: microblog entries caching
Goffi <goffi@goffi.org>
parents:
57
diff
changeset
|
545 |
139 | 546 if sender == self.whoami.bare: |
282
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
547 found = False |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
548 for index in xrange(0, len(self.mblog_cache)): |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
549 entry = self.mblog_cache[index] |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
550 if entry[1].id == mblog_entry.id: |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
551 # replace existing entry |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
552 self.mblog_cache.remove(entry) |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
553 self.mblog_cache.insert(index, (_groups, mblog_entry)) |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
554 found = True |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
555 break |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
556 if not found: |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
557 self.mblog_cache.append((_groups, mblog_entry)) |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
558 if len(self.mblog_cache) > MAX_MBLOG_CACHE: |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
559 del self.mblog_cache[0:len(self.mblog_cache - MAX_MBLOG_CACHE)] |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
560 elif event_type == 'MICROBLOG_DELETE': |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
561 for wid in self.widgets.getWidgets(blog.MicroblogPanel): |
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
562 wid.removeEntry(data['type'], data['id']) |
439
d52f529a6d42
browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents:
433
diff
changeset
|
563 |
282
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
564 if sender == self.whoami.bare and data['type'] == 'main_item': |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
565 for index in xrange(0, len(self.mblog_cache)): |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
566 entry = self.mblog_cache[index] |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
567 if entry[1].id == data['id']: |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
568 self.mblog_cache.remove(entry) |
ae3ec654836d
browser_side: added blog item modification/deletion
souliane <souliane@mailoo.org>
parents:
280
diff
changeset
|
569 break |
58
4fa3d57f72f8
browser side: microblog entries caching
Goffi <goffi@goffi.org>
parents:
57
diff
changeset
|
570 |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
571 def fillMicroblogPanel(self, mblog_panel, mblogs): |
58
4fa3d57f72f8
browser side: microblog entries caching
Goffi <goffi@goffi.org>
parents:
57
diff
changeset
|
572 """Fill a microblog panel with entries in cache |
597
be2891462e63
browser side (blog): added addEntryIfAccepeted method in MicroblogPanel, so it decide itself is an entry should be added, it's not done anymore in libervia_main.
Goffi <goffi@goffi.org>
parents:
589
diff
changeset
|
573 |
58
4fa3d57f72f8
browser side: microblog entries caching
Goffi <goffi@goffi.org>
parents:
57
diff
changeset
|
574 @param mblog_panel: MicroblogPanel instance |
4fa3d57f72f8
browser side: microblog entries caching
Goffi <goffi@goffi.org>
parents:
57
diff
changeset
|
575 """ |
139 | 576 #XXX: only our own entries are cached |
586
3eb3a2c0c011
browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
584
diff
changeset
|
577 for cache_entry in mblogs: |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
578 _groups, mblog_entry = cache_entry |
597
be2891462e63
browser side (blog): added addEntryIfAccepeted method in MicroblogPanel, so it decide itself is an entry should be added, it's not done anymore in libervia_main.
Goffi <goffi@goffi.org>
parents:
589
diff
changeset
|
579 mblog_panel.addEntryIfAccepted(self.whoami.bare, *cache_entry) |
0 | 580 |
163
b887186e8fc8
browser side: get entity's microblogs for newly added contacts
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
581 def getEntityMBlog(self, entity): |
694
82123705474b
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
692
diff
changeset
|
582 log.info(u"geting mblog for entity [%s]" % (entity,)) |
163
b887186e8fc8
browser side: get entity's microblogs for newly added contacts
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
583 for lib_wid in self.libervia_widgets: |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
584 if isinstance(lib_wid, blog.MicroblogPanel): |
163
b887186e8fc8
browser side: get entity's microblogs for newly added contacts
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
585 if lib_wid.isJidAccepted(entity): |
679 | 586 self.bridge.call('getMassiveMblogs', lib_wid.massiveInsert, 'JID', [unicode(entity)]) |
163
b887186e8fc8
browser side: get entity's microblogs for newly added contacts
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
587 |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
588 def displayWidget(self, class_, target, dropped=False, new_tab=None, *args, **kwargs): |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
589 """Get or create a LiberviaWidget and select it. When the user dropped |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
590 something, a new widget is always created, otherwise we look for an |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
591 existing widget and re-use it if it's in the current tab. |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
592 |
631
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
593 @arg class_(class): see quick_widgets.getOrCreateWidget |
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
594 @arg target: see quick_widgets.getOrCreateWidget |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
595 @arg dropped(bool): if True, assume the widget has been dropped |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
596 @arg new_tab(unicode): if not None, it holds the name of a new tab to |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
597 open for the widget. If None, use the default behavior. |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
598 @param args(list): optional args to create a new instance of class_ |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
599 @param kwargs(list): optional kwargs to create a new instance of class_ |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
600 @return: the widget |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
601 """ |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
602 kwargs['profile'] = C.PROF_KEY_NONE |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
603 |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
604 if dropped: |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
605 kwargs['on_new_widget'] = None |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
606 kwargs['on_existing_widget'] = C.WIDGET_RECREATE |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
607 wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs) |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
608 self.setSelected(wid) |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
609 return wid |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
610 |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
611 if new_tab: |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
612 kwargs['on_new_widget'] = None |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
613 kwargs['on_existing_widget'] = C.WIDGET_RECREATE |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
614 wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs) |
620
ac5881d683d3
browser_side: move SatWebFrontend.addTab to MainTabPanel.addWidgetsTab and rename MainTabPanel.add to MainTabPanel.addTab
souliane <souliane@mailoo.org>
parents:
616
diff
changeset
|
615 self.tab_panel.addWidgetsTab(new_tab) |
659
8e7d4de56e75
browser_side: allow to drop a widget in the "+" tab
souliane <souliane@mailoo.org>
parents:
658
diff
changeset
|
616 self.addWidget(wid, tab_index=self.tab_panel.getWidgetCount() - 1) |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
617 return wid |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
618 |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
619 kwargs['on_existing_widget'] = C.WIDGET_RAISE |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
620 try: |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
621 wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs) |
631
e287a4b431c1
browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents:
616
diff
changeset
|
622 except quick_widgets.WidgetAlreadyExistsError: |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
623 kwargs['on_existing_widget'] = C.WIDGET_KEEP |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
624 wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs) |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
625 widgets_panel = wid.getParent(libervia_widget.WidgetsPanel, expect=False) |
636
86ae737da6f3
browser side (widgets management): removed getWidgetsPanel: we use directly getParent which do the same thing + displayWidget now detect hidden widgets (widgets without parent WidgetsPanel)
Goffi <goffi@goffi.org>
parents:
631
diff
changeset
|
626 if widgets_panel is None: |
86ae737da6f3
browser side (widgets management): removed getWidgetsPanel: we use directly getParent which do the same thing + displayWidget now detect hidden widgets (widgets without parent WidgetsPanel)
Goffi <goffi@goffi.org>
parents:
631
diff
changeset
|
627 # The widget exists but is hidden |
86ae737da6f3
browser side (widgets management): removed getWidgetsPanel: we use directly getParent which do the same thing + displayWidget now detect hidden widgets (widgets without parent WidgetsPanel)
Goffi <goffi@goffi.org>
parents:
631
diff
changeset
|
628 self.addWidget(wid) |
86ae737da6f3
browser side (widgets management): removed getWidgetsPanel: we use directly getParent which do the same thing + displayWidget now detect hidden widgets (widgets without parent WidgetsPanel)
Goffi <goffi@goffi.org>
parents:
631
diff
changeset
|
629 elif widgets_panel != self.tab_panel.getCurrentPanel(): |
86ae737da6f3
browser side (widgets management): removed getWidgetsPanel: we use directly getParent which do the same thing + displayWidget now detect hidden widgets (widgets without parent WidgetsPanel)
Goffi <goffi@goffi.org>
parents:
631
diff
changeset
|
630 # the widget is on an other tab, so we add a new one here |
616
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
631 kwargs['on_existing_widget'] = C.WIDGET_RECREATE |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
632 wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs) |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
633 self.addWidget(wid) |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
634 self.setSelected(wid) |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
635 return wid |
1c0d5a87c554
browser_side: add and use method displayWidget to harmonize widget's management in Libervia (not completely done, there are some issues)
souliane <souliane@mailoo.org>
parents:
615
diff
changeset
|
636 |
427
b5b440e6ea16
server + browser side, getPresenceStatuses has been renamed
Goffi <goffi@goffi.org>
parents:
426
diff
changeset
|
637 def _getPresenceStatusesCb(self, presence_data): |
28 | 638 for entity in presence_data: |
639 for resource in presence_data[entity]: | |
640 args = presence_data[entity][resource] | |
576
daa9be94e88f
browser_side: fixes wrong JID construction when processing getPresenceStatuses result
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
641 full = ('%s/%s' % (jid.JID(entity).bare, resource)) if resource else entity |
daa9be94e88f
browser_side: fixes wrong JID construction when processing getPresenceStatuses result
souliane <souliane@mailoo.org>
parents:
574
diff
changeset
|
642 self._presenceUpdateCb(full, *args) |
20 | 643 |
122
397a88b340f3
browser: fixed call to getRoomsJoined
Goffi <goffi@goffi.org>
parents:
119
diff
changeset
|
644 def _getRoomsJoinedCb(self, room_data): |
33 | 645 for room in room_data: |
646 self._roomJoinedCb(*room) | |
647 | |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
648 def _getWaitingSubCb(self, waiting_sub): |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
649 for sub in waiting_sub: |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
650 self._subscribeCb(waiting_sub[sub], sub) |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
651 |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
652 def _subscribeCb(self, sub_type, entity): |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
653 if sub_type == 'subscribed': |
467 | 654 dialog.InfoDialog('Subscription confirmation', 'The contact <b>%s</b> has added you to his/her contact list' % html_tools.html_sanitize(entity)).show() |
163
b887186e8fc8
browser side: get entity's microblogs for newly added contacts
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
655 self.getEntityMBlog(entity) |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
656 |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
657 elif sub_type == 'unsubscribed': |
467 | 658 dialog.InfoDialog('Subscription refusal', 'The contact <b>%s</b> has refused to add you in his/her contact list' % html_tools.html_sanitize(entity)).show() |
163
b887186e8fc8
browser side: get entity's microblogs for newly added contacts
Goffi <goffi@goffi.org>
parents:
158
diff
changeset
|
659 #TODO: remove microblogs from panels |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
660 |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
661 elif sub_type == 'subscribe': |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
662 #The user want to subscribe to our presence |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
663 _dialog = None |
467 | 664 msg = HTML('The contact <b>%s</b> want to add you in his/her contact list, do you accept ?' % html_tools.html_sanitize(entity)) |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
665 |
62 | 666 def ok_cb(ignore): |
623
4f7550a083b4
server and browser sides: fixes bad call to "subscription" bridge method
souliane <souliane@mailoo.org>
parents:
620
diff
changeset
|
667 self.bridge.call('subscription', None, "subscribed", entity) |
4f7550a083b4
server and browser sides: fixes bad call to "subscription" bridge method
souliane <souliane@mailoo.org>
parents:
620
diff
changeset
|
668 self.bridge.updateContact(entity, '', _dialog.getSelectedGroups()) |
451 | 669 |
62 | 670 def cancel_cb(ignore): |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
671 self.bridge.call('subscription', None, "unsubscribed", entity, '', '') |
226
744426c2b699
browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
223
diff
changeset
|
672 |
227
67e24c342e7f
browser_side: bug fix for changeset 3092f6b1710c
souliane <souliane@mailoo.org>
parents:
226
diff
changeset
|
673 _dialog = dialog.GroupSelector([msg], self.contact_panel.getGroups(), [], "Add", ok_cb, cancel_cb) |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
674 _dialog.setHTML('<b>Add contact request</b>') |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
675 _dialog.show() |
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
676 |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
677 def _contactDeletedCb(self, entity): |
687
3845a086f0b3
browser_side: update ContactList, Chat, ContactsPanel, ContactBox, ContactLabel to update the display using listeners as it is done in quick_frontend:
souliane <souliane@mailoo.org>
parents:
686
diff
changeset
|
678 self.contact_panel.removeContactBox(entity) |
55
d5266c41ca24
Roster list update, contact deletion + some refactoring
Goffi <goffi@goffi.org>
parents:
54
diff
changeset
|
679 |
482
437eefa53a01
misc: remove some pylint errors and warnings
souliane <souliane@mailoo.org>
parents:
480
diff
changeset
|
680 def _newContactCb(self, contact_jid, attributes, groups): |
437eefa53a01
misc: remove some pylint errors and warnings
souliane <souliane@mailoo.org>
parents:
480
diff
changeset
|
681 self.contact_panel.updateContact(contact_jid, attributes, groups) |
54
f25c4077f6b9
addind contact + subscription management + misc
Goffi <goffi@goffi.org>
parents:
50
diff
changeset
|
682 |
670
a80c13249f5d
browser_side: rename askConfirmation handler
souliane <souliane@mailoo.org>
parents:
667
diff
changeset
|
683 def askConfirmationHandler(self, confirmation_id, confirmation_type, data): |
251
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
684 answer_data = {} |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
685 |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
686 def confirm_cb(result): |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
687 self.bridge.call('confirmationAnswer', None, confirmation_id, result, answer_data) |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
688 |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
689 if confirmation_type == "YES/NO": |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
690 dialog.ConfirmDialog(confirm_cb, text=data["message"], title=data["title"]).show() |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
691 |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
692 def _newAlert(self, message, title, alert_type): |
24335e82fef0
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation:
souliane <souliane@mailoo.org>
parents:
250
diff
changeset
|
693 dialog.InfoDialog(title, message).show() |
239
b911f2b43fd4
browser_side: added input history in the unibox:
souliane <souliane@mailoo.org>
parents:
235
diff
changeset
|
694 |
326
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
695 def _paramUpdate(self, name, value, category, refresh=True): |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
696 """This is called when the paramUpdate signal is received, but also |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
697 during initialization when the UI parameters values are retrieved. |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
698 @param refresh: set to True to refresh the general UI |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
699 """ |
478
992b900ab876
browser side: rename and refactor constant UI_PARAMS to CACHED_PARAMS, from a dict of dict to a list of 2-tuple
souliane <souliane@mailoo.org>
parents:
477
diff
changeset
|
700 for param_cat, param_name in C.CACHED_PARAMS: |
992b900ab876
browser side: rename and refactor constant UI_PARAMS to CACHED_PARAMS, from a dict of dict to a list of 2-tuple
souliane <souliane@mailoo.org>
parents:
477
diff
changeset
|
701 if name == param_name and category == param_cat: |
992b900ab876
browser side: rename and refactor constant UI_PARAMS to CACHED_PARAMS, from a dict of dict to a list of 2-tuple
souliane <souliane@mailoo.org>
parents:
477
diff
changeset
|
702 self.cached_params[(category, name)] = value |
326
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
703 if refresh: |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
704 self.refresh() |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
705 break |
36927be51481
browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents:
325
diff
changeset
|
706 |
478
992b900ab876
browser side: rename and refactor constant UI_PARAMS to CACHED_PARAMS, from a dict of dict to a list of 2-tuple
souliane <souliane@mailoo.org>
parents:
477
diff
changeset
|
707 def getCachedParam(self, category, name): |
992b900ab876
browser side: rename and refactor constant UI_PARAMS to CACHED_PARAMS, from a dict of dict to a list of 2-tuple
souliane <souliane@mailoo.org>
parents:
477
diff
changeset
|
708 """Return a parameter cached value (e.g for refreshing the UI) |
462
07433bd892ee
server and browser sides: fixes UI parameters initialisation with user values + small refactoring
souliane <souliane@mailoo.org>
parents:
460
diff
changeset
|
709 |
662
ebb602d8b3f2
browser_side: replace all instances of 'str' with 'unicode'
souliane <souliane@mailoo.org>
parents:
659
diff
changeset
|
710 @param category (unicode): the parameter category |
ebb602d8b3f2
browser_side: replace all instances of 'str' with 'unicode'
souliane <souliane@mailoo.org>
parents:
659
diff
changeset
|
711 @pram name (unicode): the parameter name |
462
07433bd892ee
server and browser sides: fixes UI parameters initialisation with user values + small refactoring
souliane <souliane@mailoo.org>
parents:
460
diff
changeset
|
712 """ |
478
992b900ab876
browser side: rename and refactor constant UI_PARAMS to CACHED_PARAMS, from a dict of dict to a list of 2-tuple
souliane <souliane@mailoo.org>
parents:
477
diff
changeset
|
713 return self.cached_params[(category, name)] if (category, name) in self.cached_params else None |
462
07433bd892ee
server and browser sides: fixes UI parameters initialisation with user values + small refactoring
souliane <souliane@mailoo.org>
parents:
460
diff
changeset
|
714 |
298
e99f578c7179
browser side: sendMessage alert on error
Goffi <goffi@goffi.org>
parents:
296
diff
changeset
|
715 def sendError(self, errorData): |
e99f578c7179
browser side: sendMessage alert on error
Goffi <goffi@goffi.org>
parents:
296
diff
changeset
|
716 dialog.InfoDialog("Error while sending message", |
e99f578c7179
browser side: sendMessage alert on error
Goffi <goffi@goffi.org>
parents:
296
diff
changeset
|
717 "Your message can't be sent", Width="400px").center() |
662
ebb602d8b3f2
browser_side: replace all instances of 'str' with 'unicode'
souliane <souliane@mailoo.org>
parents:
659
diff
changeset
|
718 log.error("sendError: %s" % unicode(errorData)) |
298
e99f578c7179
browser side: sendMessage alert on error
Goffi <goffi@goffi.org>
parents:
296
diff
changeset
|
719 |
361
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
720 def showWarning(self, type_=None, msg=None): |
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
721 """Display a popup information message, e.g. to notify the recipient of a message being composed. |
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
722 If type_ is None, a popup being currently displayed will be hidden. |
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
723 @type_: a type determining the CSS style to be applied (see WarningPopup.showWarning) |
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
724 @msg: message to be displayed |
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
725 """ |
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
726 if not hasattr(self, "warning_popup"): |
648
6d3142b782c3
browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents:
646
diff
changeset
|
727 self.warning_popup = main_panel.WarningPopup() |
361
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
728 self.warning_popup.showWarning(type_, msg) |
f4efffb9627c
browser_side: the popup notifying the message's recipient is no more dependent to the unibox.
souliane <souliane@mailoo.org>
parents:
349
diff
changeset
|
729 |
628
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
730 def showDialog(self, message, title="", type_="info", answer_cb=None, answer_data=None): |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
731 if type_ == 'info': |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
732 popup = dialog.InfoDialog(unicode(title), unicode(message), callback=answer_cb) |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
733 elif type_ == 'error': |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
734 popup = dialog.InfoDialog(unicode(title), unicode(message), callback=answer_cb) |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
735 elif type_ == 'yes/no': |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
736 popup = dialog.ConfirmDialog(lambda answer: answer_cb(answer, answer_data), |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
737 text=unicode(message), title=unicode(title)) |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
738 popup.cancel_button.setText(_("No")) |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
739 else: |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
740 popup = dialog.InfoDialog(unicode(title), unicode(message), callback=answer_cb) |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
741 log.error(_('unmanaged dialog type: %s'), type_) |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
742 popup.show() |
66a547539185
browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents:
624
diff
changeset
|
743 |
686
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
744 def showFailure(self, err_data, msg=''): |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
745 """Show a failure that has been returned by an asynchronous bridge method. |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
746 |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
747 @param failure (defer.Failure): Failure instance |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
748 @param msg (unicode): message to display |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
749 """ |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
750 # FIXME: message is lost by JSON, we hardcode it for now... remove msg argument when possible |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
751 err_code, err_obj = err_data |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
752 title = err_obj['message']['faultString'] if isinstance(err_obj['message'], dict) else err_obj['message'] |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
753 self.showDialog(msg, title, 'error') |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
754 |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
755 def showFailureRoomInvalid(self, err_data): |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
756 """Show a failure that has been returned when trying to join an invalid room. |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
757 |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
758 @param failure (defer.Failure): Failure instance |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
759 """ |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
760 # FIXME: remove asap, see self.showFailure |
692
7a9c7b9f6a28
browser_side: use host.default_muc instead of C.DEFAULT_MUC
souliane <souliane@mailoo.org>
parents:
687
diff
changeset
|
761 msg = _(u"Invalid room identifier. Please give a room short or full identifier like 'room' or '%s'.") % self.default_muc |
686
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
762 self.showFailure(err_data, msg) |
90a5a5af2550
browser_side: let the backend check for the validity of MUC JIDs that come from a user input
souliane <souliane@mailoo.org>
parents:
685
diff
changeset
|
763 |
269
9eb9c7d41bdc
browser_side: added generic method "send" in SatWebFrontend
souliane <souliane@mailoo.org>
parents:
267
diff
changeset
|
764 |
0 | 765 if __name__ == '__main__': |
766 app = SatWebFrontend() | |
767 app.onModuleLoad() | |
675
941e53b3af5c
browser side: host listeners are called when host is instantiated
Goffi <goffi@goffi.org>
parents:
670
diff
changeset
|
768 host_listener.callListeners(app) |