annotate browser/libervia_main.py @ 1199:b300eaec53b6

server: don't raise error anymore if themes_dir is invalid or legacy blog can't be created: legacy blog will be entirely removed with 0.8 release, and themes_dir is only used by it. This patch limit troubles with this old code by not raising an error anymore if option is wrong or if the legacy blog can't be created. fix 317
author Goffi <goffi@goffi.org>
date Tue, 09 Jul 2019 20:20:46 +0200
parents 3048bd137aaf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/python
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
3
339
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
4 # Libervia: a Salut à Toi frontend
1144
2af117bfe6cc dates update
Goffi <goffi@goffi.org>
parents: 1124
diff changeset
5 # Copyright (C) 2011-2019 Jérôme Poisson <goffi@goffi.org>
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
6
339
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
7 # This program is free software: you can redistribute it and/or modify
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
10 # (at your option) any later version.
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
11
339
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
12 # This program is distributed in the hope that it will be useful,
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
15 # GNU Affero General Public License for more details.
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
16
339
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
2067d6241927 fixed docstrings wrong usage for licence informations
Goffi <goffi@goffi.org>
parents: 336
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
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
97c72fe4a5f2 browser_side: import fixes:
Goffi <goffi@goffi.org>
parents: 462
diff changeset
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
1156
3048bd137aaf server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents: 1144
diff changeset
28 from sat_browser import json
3048bd137aaf server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents: 1144
diff changeset
29 # XXX: workaround for incomplete json.dumps in pyjamas
3048bd137aaf server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents: 1144
diff changeset
30 import json as json_pyjs
3048bd137aaf server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents: 1144
diff changeset
31 dumps_old = json_pyjs.dumps
3048bd137aaf server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents: 1144
diff changeset
32 json_pyjs.dumps = lambda obj, *args, **kwargs: dumps_old(obj)
3048bd137aaf server, browser: changed blog items serialisation following changes in backend
Goffi <goffi@goffi.org>
parents: 1144
diff changeset
33
676
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
34 from sat.core.i18n import D_
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
35
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.quick_frontend.quick_app import QuickApp
631
e287a4b431c1 browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents: 616
diff changeset
37 from sat_frontends.quick_frontend import quick_widgets
676
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
38 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
39
449
981ed669d3b3 /!\ reorganize all the file hierarchy, move the code and launching script to src:
souliane <souliane@mailoo.org>
parents: 442
diff changeset
40 from sat_frontends.tools.misc import InputHistory
784
f3cd261ea12f browser side: workaround for a pyjamas bug which freeze the browser in some case with addURLToText regex
Goffi <goffi@goffi.org>
parents: 783
diff changeset
41 from sat_browser import strings
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
42 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
43 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
44 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
45
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
46 from pyjamas.ui.RootPanel import RootPanel
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
47 # 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
48 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
49 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
50 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
51
467
97c72fe4a5f2 browser_side: import fixes:
Goffi <goffi@goffi.org>
parents: 462
diff changeset
52 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
53 from sat_browser.contact_list import ContactList
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
54 from sat_browser import main_panel
944
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
55 # from sat_browser import chat
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
56 from sat_browser import blog
718
5745b5e6586a browser + server sides: actionNew signal handling
Goffi <goffi@goffi.org>
parents: 716
diff changeset
57 from sat_browser import xmlui
467
97c72fe4a5f2 browser_side: import fixes:
Goffi <goffi@goffi.org>
parents: 462
diff changeset
58 from sat_browser import dialog
97c72fe4a5f2 browser_side: import fixes:
Goffi <goffi@goffi.org>
parents: 462
diff changeset
59 from sat_browser import html_tools
97c72fe4a5f2 browser_side: import fixes:
Goffi <goffi@goffi.org>
parents: 462
diff changeset
60 from sat_browser import notification
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
61 from sat_browser import libervia_widget
764
b392ea1514ee browser side: restored web widget
Goffi <goffi@goffi.org>
parents: 752
diff changeset
62 from sat_browser import web_widget
b392ea1514ee browser side: restored web widget
Goffi <goffi@goffi.org>
parents: 752
diff changeset
63 assert web_widget # XXX: just here to avoid pyflakes warning
323
0b7934e75e76 misc: reorganization of the file panels.py + clean the modules import:
souliane <souliane@mailoo.org>
parents: 321
diff changeset
64
467
97c72fe4a5f2 browser_side: import fixes:
Goffi <goffi@goffi.org>
parents: 462
diff changeset
65 from sat_browser.constants import Const as C
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
66
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
67
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
68 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
69 # 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
70 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
71 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
72 pass
230
266e9678eec0 browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents: 229
diff changeset
73
624
9092e624bb27 browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents: 623
diff changeset
74
9092e624bb27 browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents: 623
diff changeset
75 unicode = str # FIXME: pyjamas workaround
9092e624bb27 browser_side: fixes various issues
souliane <souliane@mailoo.org>
parents: 623
diff changeset
76
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
77
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
78 # MAX_MBLOG_CACHE = 500 # Max microblog entries kept in memories # FIXME
230
266e9678eec0 browser_side: added the flag REUSE_EXISTING_LIBERVIA_WIDGETS
souliane <souliane@mailoo.org>
parents: 229
diff changeset
79
58
4fa3d57f72f8 browser side: microblog entries caching
Goffi <goffi@goffi.org>
parents: 57
diff changeset
80
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
81 class SatWebFrontend(InputHistory, QuickApp):
1123
63a4b8fe9782 browser: fixes to handle encryption changes in backend
Goffi <goffi@goffi.org>
parents: 1054
diff changeset
82 ENCRYPTION_HANDLERS = False # e2e encryption is handled directly by Libervia,
63a4b8fe9782 browser: fixes to handle encryption changes in backend
Goffi <goffi@goffi.org>
parents: 1054
diff changeset
83 # not backend
718
5745b5e6586a browser + server sides: actionNew signal handling
Goffi <goffi@goffi.org>
parents: 716
diff changeset
84
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
85 def onModuleLoad(self):
439
d52f529a6d42 browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents: 433
diff changeset
86 log.info("============ onModuleLoad ==============")
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
87 self.bridge_signals = json.BridgeSignals(self)
914
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
88 QuickApp.__init__(self, json.BridgeCall, xmlui=xmlui, connect_bridge=False)
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
89 self.connectBridge()
700
b81816f42c81 browser side: added signal caching before profile is plugged, as QuickFrontend mechanism is not used
Goffi <goffi@goffi.org>
parents: 699
diff changeset
90 self._profile_plugged = False
b81816f42c81 browser side: added signal caching before profile is plugged, as QuickFrontend mechanism is not used
Goffi <goffi@goffi.org>
parents: 699
diff changeset
91 self.signals_cache[C.PROF_KEY_NONE] = []
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
92 self.panel = main_panel.MainPanel(self)
84
8f35e9970e7f browser side: new widget handling:
Goffi <goffi@goffi.org>
parents: 83
diff changeset
93 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
94 self.tab_panel.addTabListener(self)
66
9d8e79ac4c9c Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents: 64
diff changeset
95 self._register_box = None
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
96 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
97
714
03e9fe91081c browser_side: use favico.js to display alerts counter
souliane <souliane@mailoo.org>
parents: 711
diff changeset
98 self.alerts_counter = notification.FaviconCounter()
834
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
99 self.notification = notification.Notification(self.alerts_counter)
43
a7ff1e6f1229 browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents: 41
diff changeset
100 DOM.addEventPreview(self)
521
69bffcf37ce3 browser_side: add minimal requirements for generic plugins handling
souliane <souliane@mailoo.org>
parents: 520
diff changeset
101 self.importPlugins()
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
102 self._register = json.RegisterCall()
914
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
103 self._register.call('menusGet', 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
104 self._register.call('registerParams', None)
869
fa7703642c0e server, browser: replaced isRegistered call by a more generic getSessionMetadata which return a dictionary
Goffi <goffi@goffi.org>
parents: 852
diff changeset
105 self._register.call('getSessionMetadata', self._getSessionMetadataCB)
205
ee744ffed7fc browser side: events data are cached until initialisation is finished (we get all microblogs)
Goffi <goffi@goffi.org>
parents: 204
diff changeset
106 self.initialised = False
226
744426c2b699 browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 223
diff changeset
107 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
108 self.cached_params = {}
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 584
diff changeset
109 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
110
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
111 #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
112 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
113
683
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
114 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
115
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
116 @property
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
117 def whoami(self):
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
118 # 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
119 # 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
120 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
121
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
122 @property
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
123 def contact_list(self):
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
124 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
125
613
deddd1cd8aa5 browser side: added a base_location property to get location of current Libervia instance
Goffi <goffi@goffi.org>
parents: 609
diff changeset
126 @property
631
e287a4b431c1 browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents: 616
diff changeset
127 def visible_widgets(self):
e287a4b431c1 browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents: 616
diff changeset
128 widgets_panel = self.tab_panel.getCurrentPanel()
e287a4b431c1 browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents: 616
diff changeset
129 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
130
e287a4b431c1 browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents: 616
diff changeset
131 @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
132 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
133 """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
134 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
135 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
136 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
137 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
138 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
139 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
140
683
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
141 @property
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
142 def sat_version(self):
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
143 return self._versions["sat"]
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 @property
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
146 def libervia_version(self):
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
147 return self._versions["libervia"]
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
148
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
149 def getVersions(self, callback=None):
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
150 """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
151
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
152 @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
153 """
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
154 def gotVersion():
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
155 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
156 callback()
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 if len(self._versions) == 2:
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
159 # 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
160 gotVersion()
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
161 return
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
162
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
163 def gotSat(version):
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
164 self._versions["sat"] = version
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
165 gotVersion()
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
166
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
167 def gotLibervia(version):
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
168 self._versions["libervia"] = version
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
169 gotVersion()
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
170
843
83a40d786e7a browser: use new style calls for getSignals
Goffi <goffi@goffi.org>
parents: 839
diff changeset
171 self.bridge.getVersion(callback=gotSat, profile=None)
683
801eb94aa869 browser side: versions management + version is shown in about dialog
Goffi <goffi@goffi.org>
parents: 679
diff changeset
172 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
173
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
174 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
175 if handler is None:
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
176 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
177 else:
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
178 callback = handler
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
179
914
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
180 self.bridge_signals.register_signal(functionName, callback, with_profile=with_profile)
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
181
521
69bffcf37ce3 browser_side: add minimal requirements for generic plugins handling
souliane <souliane@mailoo.org>
parents: 520
diff changeset
182 def importPlugins(self):
69bffcf37ce3 browser_side: add minimal requirements for generic plugins handling
souliane <souliane@mailoo.org>
parents: 520
diff changeset
183 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
184 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
185 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
186 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
187 pass
521
69bffcf37ce3 browser_side: add minimal requirements for generic plugins handling
souliane <souliane@mailoo.org>
parents: 520
diff changeset
188
192
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
189 def getSelected(self):
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
190 wid = self.tab_panel.getCurrentPanel()
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
191 if not isinstance(wid, libervia_widget.WidgetsPanel):
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
192 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
193 return None
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
194 return wid.selected
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
195
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
196 def setSelected(self, widget):
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
197 """Define the selected widget"""
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
198 widgets_panel = self.tab_panel.getCurrentPanel()
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
199 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
200 return
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
201
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
202 selected = widgets_panel.selected
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
203
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
204 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
205 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
206
192
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
207 if selected:
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
208 selected.removeStyleName('selected_widget')
226
744426c2b699 browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 223
diff changeset
209
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
210 # 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
211 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
212 self.selected_widget = widget
226
744426c2b699 browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 223
diff changeset
213
192
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
214 if widget:
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
215 widgets_panel.selected.addStyleName('selected_widget')
cf5c83e7d515 browser side: per tab selected widget management
Goffi <goffi@goffi.org>
parents: 179
diff changeset
216
33
e70521e6d803 browser side, misc stuffs
Goffi <goffi@goffi.org>
parents: 28
diff changeset
217 def resize(self):
e70521e6d803 browser side, misc stuffs
Goffi <goffi@goffi.org>
parents: 28
diff changeset
218 """Resize elements"""
e70521e6d803 browser side, misc stuffs
Goffi <goffi@goffi.org>
parents: 28
diff changeset
219 Window.onResize()
e70521e6d803 browser side, misc stuffs
Goffi <goffi@goffi.org>
parents: 28
diff changeset
220
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
221 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
222 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
223
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
224 def onTabSelected(self, sender, tab_index):
944
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
225 pass
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
226 # def onTabSelected(self, sender, tab_index):
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
227 # for widget in self.tab_panel.getCurrentPanel().widgets:
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
228 # if isinstance(widget, chat.Chat):
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
229 # clist = self.contact_list
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
230 # clist.removeAlerts(widget.current_target, True)
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
231
43
a7ff1e6f1229 browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents: 41
diff changeset
232 def onEventPreview(self, event):
a7ff1e6f1229 browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents: 41
diff changeset
233 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
234 #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
235 event.preventDefault()
a7ff1e6f1229 browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents: 41
diff changeset
236 return True
a7ff1e6f1229 browser_side: prevent default for escape key (cancel HTTPRequest in FF)
Goffi <goffi@goffi.org>
parents: 41
diff changeset
237
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
238 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
239 """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
240
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
241 @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
242 @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
243 """
914
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
244 return self.getAvatar(jid_) or self.getDefaultAvatar()
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
245
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
246 def getDefaultAvatar(self):
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
247 return C.DEFAULT_AVATAR_URL
119
a8d11fdea090 microblog avatar update
Goffi <goffi@goffi.org>
parents: 116
diff changeset
248
84
8f35e9970e7f browser side: new widget handling:
Goffi <goffi@goffi.org>
parents: 83
diff changeset
249 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
250 log.debug(u"Registering %s" % wid.getDebugName())
84
8f35e9970e7f browser side: new widget handling:
Goffi <goffi@goffi.org>
parents: 83
diff changeset
251 self.libervia_widgets.add(wid)
8f35e9970e7f browser side: new widget handling:
Goffi <goffi@goffi.org>
parents: 83
diff changeset
252
8f35e9970e7f browser side: new widget handling:
Goffi <goffi@goffi.org>
parents: 83
diff changeset
253 def unregisterWidget(self, wid):
8f35e9970e7f browser side: new widget handling:
Goffi <goffi@goffi.org>
parents: 83
diff changeset
254 try:
8f35e9970e7f browser side: new widget handling:
Goffi <goffi@goffi.org>
parents: 83
diff changeset
255 self.libervia_widgets.remove(wid)
8f35e9970e7f browser side: new widget handling:
Goffi <goffi@goffi.org>
parents: 83
diff changeset
256 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
257 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
258
326
36927be51481 browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents: 325
diff changeset
259 def refresh(self):
36927be51481 browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents: 325
diff changeset
260 """Refresh the general display."""
780
b3f04e58ec15 browser_side: fixed contact list refresh on param change
souliane <souliane@mailoo.org>
parents: 778
diff changeset
261 self.contact_list.refresh()
326
36927be51481 browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents: 325
diff changeset
262 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
263 lib_wid.refresh()
36927be51481 browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents: 325
diff changeset
264 self.resize()
33
e70521e6d803 browser side, misc stuffs
Goffi <goffi@goffi.org>
parents: 28
diff changeset
265
267
a76243c02074 browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents: 266
diff changeset
266 def addWidget(self, wid, tab_index=None):
a76243c02074 browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents: 266
diff changeset
267 """ 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
268
267
a76243c02074 browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents: 266
diff changeset
269 @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
270 @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
271 """
267
a76243c02074 browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents: 266
diff changeset
272 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
273 panel = self.tab_panel.getCurrentPanel()
a76243c02074 browser_side: changes regarding widgets and tabs:
souliane <souliane@mailoo.org>
parents: 266
diff changeset
274 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
275 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
276 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
277
676
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
278 def gotMenus(self, backend_menus):
494
5d8632a7bfde browser_side: refactorisation of menus and LiberviaWidget's header
souliane <souliane@mailoo.org>
parents: 483
diff changeset
279 """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
280
676
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
281 @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
282 """
676
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
283 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
284
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
285 # Categories (with icons)
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
286 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
287 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
288 self.menus.addCategory(C.MENU_GLOBAL, [D_(u"Groups")], extra={'icon': 'social'})
782
10a56f6bc5db browser_side (menu): moved Tarot from Games to Groups
souliane <souliane@mailoo.org>
parents: 780
diff changeset
289 #self.menus.addCategory(C.MENU_GLOBAL, [D_(u"Games")], extra={'icon': 'games'})
676
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
290
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
291 # menus to have before backend menus
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
292 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
293
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
294 # 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
295 self.menus.addMenus(backend_menus, top_extra={'icon': 'plugins'})
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
296
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
297 # menus to have under backend menus
783
d24e56a5f2ef browser_side: rename "Manage groups" to "Manage contact groups" to avoid confusion
souliane <souliane@mailoo.org>
parents: 782
diff changeset
298 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Contacts"), D_(u"Manage contact groups")), callback=main_menu.onManageContactGroups)
676
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
299
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
300 # separator and right hand menus
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
301 self.menus.addMenuItem(C.MENU_GLOBAL, [], quick_menus.MenuSeparator())
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
302
776
627b9073a2ec browser side: the new menu 'help/official room chat' launch the default_muc room, which can be used to get some help
Goffi <goffi@goffi.org>
parents: 764
diff changeset
303 self.menus.addMenu(C.MENU_GLOBAL, (D_(u"Help"), D_("Official chat room")), top_extra={'icon': 'help'}, callback=main_menu.onOfficialChatRoom)
676
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
304 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
305 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
306 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
307 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
308 # 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
309 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
310
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
311 # we call listener to have menu added by local classes/plugins
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
312 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
313
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
314 # and finally the menus which must appear at the bottom
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
315 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
316
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
317 # we can now display all the menus
849ffb24d5bf browser side: menus refactorisation:
Goffi <goffi@goffi.org>
parents: 675
diff changeset
318 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
319
788
7ebde6d1a4bd browser side: fixed public blog menu (moved temporarily to frontend side)
Goffi <goffi@goffi.org>
parents: 784
diff changeset
320 # XXX: temp, will be reworked in the backed static blog plugin
7ebde6d1a4bd browser side: fixed public blog menu (moved temporarily to frontend side)
Goffi <goffi@goffi.org>
parents: 784
diff changeset
321 self.menus.addMenu(C.MENU_JID_CONTEXT, (D_(u"User"), D_("Public blog")), callback=main_menu.onPublicBlog)
7ebde6d1a4bd browser side: fixed public blog menu (moved temporarily to frontend side)
Goffi <goffi@goffi.org>
parents: 784
diff changeset
322
944
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
323 def removeListener(self, type_, callback):
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
324 """Remove a callback from listeners
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
325
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
326 @param type_: same as for [addListener]
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
327 @param callback: callback to remove
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
328 """
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
329 # FIXME: workaround for pyjamas
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
330 # check KeyError issue
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
331 assert type_ in C.LISTENERS
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
332 try:
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
333 self._listeners[type_].pop(callback)
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
334 except KeyError:
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
335 pass
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
336
869
fa7703642c0e server, browser: replaced isRegistered call by a more generic getSessionMetadata which return a dictionary
Goffi <goffi@goffi.org>
parents: 852
diff changeset
337 def _getSessionMetadataCB(self, metadata):
fa7703642c0e server, browser: replaced isRegistered call by a more generic getSessionMetadata which return a dictionary
Goffi <goffi@goffi.org>
parents: 852
diff changeset
338 if not metadata['plugged']:
fa7703642c0e server, browser: replaced isRegistered call by a more generic getSessionMetadata which return a dictionary
Goffi <goffi@goffi.org>
parents: 852
diff changeset
339 warning = metadata.get("warning")
852
6f0a127077c4 browser: set the background transparent when the register panel is displayed
souliane <souliane@mailoo.org>
parents: 843
diff changeset
340 self.panel.setStyleAttribute("opacity", "0.25") # set background transparency
871
54f6c5b86a87 server, browser: new "allow_registration" option to enable/disable new account registration through Liberia interface
Goffi <goffi@goffi.org>
parents: 869
diff changeset
341 self._register_box = register.RegisterBox(self.logged, metadata)
66
9d8e79ac4c9c Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents: 64
diff changeset
342 self._register_box.centerBox()
9d8e79ac4c9c Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents: 64
diff changeset
343 self._register_box.show()
415
fadbba1d793f server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents: 408
diff changeset
344 if warning:
fadbba1d793f server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents: 408
diff changeset
345 dialog.InfoDialog(_('Security warning'), warning).show()
fadbba1d793f server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents: 408
diff changeset
346 self._tryAutoConnect(skip_validation=not not warning)
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
347 else:
1
0a7c685faa53 ContactPanel: first draft
Goffi <goffi@goffi.org>
parents: 0
diff changeset
348 self._register.call('isConnected', self._isConnectedCB)
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
349
1
0a7c685faa53 ContactPanel: first draft
Goffi <goffi@goffi.org>
parents: 0
diff changeset
350 def _isConnectedCB(self, connected):
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
351 if not connected:
914
0c0551967bdf server, browser: partial Libervia fix
Goffi <goffi@goffi.org>
parents: 913
diff changeset
352 self._register.call('connect', lambda x: self.logged())
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
353 else:
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
354 self.logged()
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
355
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
356 def logged(self):
852
6f0a127077c4 browser: set the background transparent when the register panel is displayed
souliane <souliane@mailoo.org>
parents: 843
diff changeset
357 self.panel.setStyleAttribute("opacity", "1") # background becomes foreground
66
9d8e79ac4c9c Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents: 64
diff changeset
358 if self._register_box:
9d8e79ac4c9c Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents: 64
diff changeset
359 self._register_box.hide()
226
744426c2b699 browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 223
diff changeset
360 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
361
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
362 # 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
363 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
364 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
365 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
366
843
83a40d786e7a browser: use new style calls for getSignals
Goffi <goffi@goffi.org>
parents: 839
diff changeset
367 self.bridge_signals.getSignals(callback=self.bridge_signals.signalHandler, profile=None)
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
368
242
a25aa882e09a browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents: 239
diff changeset
369 def domain_cb(value):
a25aa882e09a browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents: 239
diff changeset
370 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
371 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
372
a25aa882e09a browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents: 239
diff changeset
373 def domain_eb(value):
a25aa882e09a browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents: 239
diff changeset
374 self._defaultDomain = "libervia.org"
a25aa882e09a browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents: 239
diff changeset
375
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
376 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
377 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
378
700
b81816f42c81 browser side: added signal caching before profile is plugged, as QuickFrontend mechanism is not used
Goffi <goffi@goffi.org>
parents: 699
diff changeset
379 def profilePlugged(self, dummy):
b81816f42c81 browser side: added signal caching before profile is plugged, as QuickFrontend mechanism is not used
Goffi <goffi@goffi.org>
parents: 699
diff changeset
380 self._profile_plugged = True
b81816f42c81 browser side: added signal caching before profile is plugged, as QuickFrontend mechanism is not used
Goffi <goffi@goffi.org>
parents: 699
diff changeset
381 QuickApp.profilePlugged(self, C.PROF_KEY_NONE)
909
e8b133b77aa4 browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents: 871
diff changeset
382 contact_list = self.widgets.getOrCreateWidget(ContactList, None, on_new_widget=None, profile=C.PROF_KEY_NONE)
944
5d9f6d25c586 browser: various fixes
Goffi <goffi@goffi.org>
parents: 914
diff changeset
383 self.contact_list_widget = contact_list
909
e8b133b77aa4 browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents: 871
diff changeset
384 self.panel.addContactList(contact_list)
e8b133b77aa4 browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents: 871
diff changeset
385
e8b133b77aa4 browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents: 871
diff changeset
386 # FIXME: the contact list height has to be set manually the first time
e8b133b77aa4 browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents: 871
diff changeset
387 self.resize()
e8b133b77aa4 browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents: 871
diff changeset
388
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
389 # XXX: as contact_list.update() is slow and it's called a lot of time
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
390 # during profile plugging, we prevent it before it's plugged
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
391 # and do all at once now
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
392 contact_list.update()
667
166f3b624816 browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents: 665
diff changeset
393
752
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
394 try:
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
395 self.mblog_available = C.bool(self.features['XEP-0277']['available'])
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
396 except KeyError:
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
397 self.mblog_available = False
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
398
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
399 try:
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
400 self.groupblog_available = C.bool(self.features['GROUPBLOG']['available'])
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
401 except KeyError:
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
402 self.groupblog_available = False
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
403
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
404 blog_widget = self.displayWidget(blog.Blog, ())
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
405 self.setSelected(blog_widget)
667
166f3b624816 browser_side (blog): clean the MicroblogPanel:
souliane <souliane@mailoo.org>
parents: 665
diff changeset
406
752
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
407 if self.mblog_available:
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
408 if not self.groupblog_available:
778
31c682149d52 browser_side: modify a message to avoid a confusion when fine access blogging is not available
souliane <souliane@mailoo.org>
parents: 776
diff changeset
409 dialog.InfoDialog(_(u"Group blogging not available"), _(u"Your server can manage (micro)blogging, but not fine permissions.<br />You'll only be able to blog publicly.")).show()
752
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
410
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
411 else:
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
412 dialog.InfoDialog(_(u"Blogging not available"), _(u"Your server can't handle (micro)blogging.<br />You'll be able to see your contacts (micro)blogs, but not to post yourself.")).show()
9b57d117e8c5 browser side: features are checked for microblogging and group blogging. If one of them is not available, a pop-up warns it, and it is not possible to write a new entry.
Goffi <goffi@goffi.org>
parents: 730
diff changeset
413
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
414 # we fill the panels already here
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
415 # for wid in self.widgets.getWidgets(blog.MicroblogPanel):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
416 # if wid.accept_all():
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
417 # self.bridge.getMassiveMblogs('ALL', (), None, profile=C.PROF_KEY_NONE, callback=wid.massiveInsert)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
418 # else:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
419 # 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
420
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
421 #we ask for our own microblogs:
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
422 # 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
423
692
7a9c7b9f6a28 browser_side: use host.default_muc instead of C.DEFAULT_MUC
souliane <souliane@mailoo.org>
parents: 687
diff changeset
424 def gotDefaultMUC(default_muc):
7a9c7b9f6a28 browser_side: use host.default_muc instead of C.DEFAULT_MUC
souliane <souliane@mailoo.org>
parents: 687
diff changeset
425 self.default_muc = default_muc
909
e8b133b77aa4 browser, server: update to get compatibility with 0.7-dev (not finished):
Goffi <goffi@goffi.org>
parents: 871
diff changeset
426 self.bridge.mucGetDefaultService(profile=None, callback=gotDefaultMUC)
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
427
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
428 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
429 log.debug(u"newWidget: {}".format(wid))
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
430 self.addWidget(wid)
589
a5019e62c3e9 browser side: big refactoring to base Libervia on QuickFrontend, first draft:
Goffi <goffi@goffi.org>
parents: 584
diff changeset
431
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
432 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
433 if type_ == C.MESS_TYPE_HEADLINE:
122b4483dac4 browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents: 644
diff changeset
434 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
435 if from_jid.domain == self._defaultDomain:
122b4483dac4 browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents: 644
diff changeset
436 # 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
437 try:
122b4483dac4 browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents: 644
diff changeset
438 title = extra['subject']
122b4483dac4 browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents: 644
diff changeset
439 except KeyError:
122b4483dac4 browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents: 644
diff changeset
440 title = _('Announcement from %s') % from_jid
122b4483dac4 browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents: 644
diff changeset
441 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
442 dialog.InfoDialog(title, msg).show()
122b4483dac4 browser side: restored infoDialog for headline messages from server
Goffi <goffi@goffi.org>
parents: 644
diff changeset
443 return
646
9972a24592b0 browser side: fixed typo in newMessageHandler
Goffi <goffi@goffi.org>
parents: 645
diff changeset
444 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
445
643
3e4826948eef browser side: do a hard reload on disconnected signal
Goffi <goffi@goffi.org>
parents: 637
diff changeset
446 def disconnectedHandler(self, profile):
3e4826948eef browser side: do a hard reload on disconnected signal
Goffi <goffi@goffi.org>
parents: 637
diff changeset
447 QuickApp.disconnectedHandler(self, profile)
3e4826948eef browser side: do a hard reload on disconnected signal
Goffi <goffi@goffi.org>
parents: 637
diff changeset
448 Window.getLocation().reload()
3e4826948eef browser side: do a hard reload on disconnected signal
Goffi <goffi@goffi.org>
parents: 637
diff changeset
449
699
be55a782a976 browser_side: change frontend method "setStatusOnline" for "setPresenceStatus"
souliane <souliane@mailoo.org>
parents: 697
diff changeset
450 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
451 self.presence_status_panel.setPresence(show)
699
be55a782a976 browser_side: change frontend method "setStatusOnline" for "setPresenceStatus"
souliane <souliane@mailoo.org>
parents: 697
diff changeset
452 if status is not None:
be55a782a976 browser_side: change frontend method "setStatusOnline" for "setPresenceStatus"
souliane <souliane@mailoo.org>
parents: 697
diff changeset
453 self.presence_status_panel.setStatus(status)
242
a25aa882e09a browser_side: add context menu for contact:
souliane <souliane@mailoo.org>
parents: 239
diff changeset
454
415
fadbba1d793f server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents: 408
diff changeset
455 def _tryAutoConnect(self, skip_validation=False):
fadbba1d793f server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents: 408
diff changeset
456 """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
457 @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
458 """
503
88ece2a00c63 browser_side: display new lines and clickable URLs for headline message
souliane <souliane@mailoo.org>
parents: 500
diff changeset
459 params = strings.getURLParams(Window.getLocation().getSearch())
250
38e6211d36ca browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents: 244
diff changeset
460 if "login" in params:
730
108bb9d74fa2 browser_side: fixes auto-login (broken by previous changeset)
souliane <souliane@mailoo.org>
parents: 718
diff changeset
461 self._register_box._form.right_side.showStack(0)
250
38e6211d36ca browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents: 244
diff changeset
462 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
463 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
464 if "passwd" in params:
38e6211d36ca browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents: 244
diff changeset
465 # try to connect
38e6211d36ca browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents: 244
diff changeset
466 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
467 if not skip_validation:
fadbba1d793f server_side: added support for SSL and related parameters:
souliane <souliane@mailoo.org>
parents: 408
diff changeset
468 self._register_box._form.onLogin(None)
250
38e6211d36ca browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents: 244
diff changeset
469 return True
38e6211d36ca browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents: 244
diff changeset
470 else:
38e6211d36ca browser_side: added auto-connection with URL parameters:
souliane <souliane@mailoo.org>
parents: 244
diff changeset
471 # 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
472 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
473
718
5745b5e6586a browser + server sides: actionNew signal handling
Goffi <goffi@goffi.org>
parents: 716
diff changeset
474 def _actionManagerUnknownError(self):
299
e4f586fc6101 server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents: 298
diff changeset
475 dialog.InfoDialog("Error",
718
5745b5e6586a browser + server sides: actionNew signal handling
Goffi <goffi@goffi.org>
parents: 716
diff changeset
476 "Unmanaged action result", Width="400px").center()
299
e4f586fc6101 server and browser side: updated callback system to follow core changes
Goffi <goffi@goffi.org>
parents: 298
diff changeset
477
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
478 # def _ownBlogsFills(self, mblogs, mblog_panel=None):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
479 # """Put our own microblogs in cache, then fill the panels with them.
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 584
diff changeset
480
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
481 # @param mblogs (dict): dictionary mapping a publisher JID to blogs data.
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
482 # @param mblog_panel (MicroblogPanel): the panel to fill, or all if None.
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
483 # """
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
484 # cache = []
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
485 # for publisher in mblogs:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
486 # for mblog in mblogs[publisher][0]:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
487 # if 'content' not in mblog:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
488 # log.warning(u"No content found in microblog [%s]" % mblog)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
489 # continue
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
490 # if 'groups' in mblog:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
491 # _groups = set(mblog['groups'].split() if mblog['groups'] else [])
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
492 # else:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
493 # _groups = None
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
494 # mblog_entry = blog.MicroblogItem(mblog)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
495 # cache.append((_groups, mblog_entry))
215
e830a0c60d32 server side: added the security_limit to setParam
souliane <souliane@mailoo.org>
parents: 213
diff changeset
496
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
497 # self.mblog_cache.extend(cache)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
498 # if len(self.mblog_cache) > MAX_MBLOG_CACHE:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
499 # 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
500
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
501 # widget_list = [mblog_panel] if mblog_panel else self.widgets.getWidgets(blog.MicroblogPanel)
679
a90cc8fc9605 merged branch frontends_multi_profiles
Goffi <goffi@goffi.org>
parents: 586 676
diff changeset
502
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
503 # for wid in widget_list:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
504 # 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
505
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
506 # # FIXME
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 584
diff changeset
507
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
508 # if self.initialised:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
509 # return
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
510 # self.initialised = True # initialisation phase is finished here
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
511 # for event_data in self.init_cache: # so we have to send all the cached events
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
512 # self.personalEventHandler(*event_data)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
513 # del self.init_cache
139
b6658f3ac8a0 browser side: own microblogs print
Goffi <goffi@goffi.org>
parents: 138
diff changeset
514
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
515 # def loadOurMainEntries(self, index=0, mblog_panel=None):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
516 # """Load a page of our own blogs from the cache or ask them to the
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
517 # backend. Then fill the panels with them.
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 584
diff changeset
518
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
519 # @param index (int): starting index of the blog page to retrieve.
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
520 # @param mblog_panel (MicroblogPanel): the panel to fill, or all if None.
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
521 # """
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
522 # delta = index - self.next_rsm_index
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
523 # if delta < 0:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
524 # assert mblog_panel is not None
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
525 # self.fillMicroblogPanel(mblog_panel, self.mblog_cache[index:index + C.RSM_MAX_ITEMS])
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
526 # return
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 584
diff changeset
527
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
528 # def cb(result):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
529 # self._ownBlogsFills(result, mblog_panel)
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 584
diff changeset
530
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
531 # rsm = {'max_': str(delta + C.RSM_MAX_ITEMS), 'index': str(self.next_rsm_index)}
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
532 # self.bridge.getMassiveMblogs('JID', [unicode(self.whoami.bare)], rsm, callback=cb, profile=C.PROF_KEY_NONE)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
533 # self.next_rsm_index = index + C.RSM_MAX_ITEMS
586
3eb3a2c0c011 browser and server side: uses RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 584
diff changeset
534
4
7325e787c22b personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents: 2
diff changeset
535 ## Signals callbacks ##
7325e787c22b personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents: 2
diff changeset
536
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
537 # def personalEventHandler(self, sender, event_type, data):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
538 # elif event_type == 'MICROBLOG_DELETE':
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
539 # for wid in self.widgets.getWidgets(blog.MicroblogPanel):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
540 # wid.removeEntry(data['type'], data['id'])
226
744426c2b699 browser_side, misc: better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 223
diff changeset
541
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
542 # if sender == self.whoami.bare and data['type'] == 'main_item':
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
543 # for index in xrange(0, len(self.mblog_cache)):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
544 # entry = self.mblog_cache[index]
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
545 # if entry[1].id == data['id']:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
546 # self.mblog_cache.remove(entry)
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
547 # break
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
548
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
549 # def fillMicroblogPanel(self, mblog_panel, mblogs):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
550 # """Fill a microblog panel with entries in cache
58
4fa3d57f72f8 browser side: microblog entries caching
Goffi <goffi@goffi.org>
parents: 57
diff changeset
551
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
552 # @param mblog_panel: MicroblogPanel instance
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
553 # """
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
554 # #XXX: only our own entries are cached
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
555 # for cache_entry in mblogs:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
556 # _groups, mblog_entry = cache_entry
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
557 # mblog_panel.addEntryIfAccepted(self.whoami.bare, *cache_entry)
439
d52f529a6d42 browser side: use of new log system (first draft):
Goffi <goffi@goffi.org>
parents: 433
diff changeset
558
716
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
559 # def getEntityMBlog(self, entity):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
560 # # FIXME: call this after a contact has been added to roster
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
561 # log.info(u"geting mblog for entity [%s]" % (entity,))
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
562 # for lib_wid in self.libervia_widgets:
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
563 # if isinstance(lib_wid, blog.MicroblogPanel):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
564 # if lib_wid.isJidAccepted(entity):
3b91225b457a server + browser side: blogging refactoring (draft), huge commit sorry:
Goffi <goffi@goffi.org>
parents: 714
diff changeset
565 # 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
566
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
567 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
568 """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
569 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
570 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
571
631
e287a4b431c1 browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents: 616
diff changeset
572 @arg class_(class): see quick_widgets.getOrCreateWidget
e287a4b431c1 browser side (libervia main): implemented visible_widgets property
Goffi <goffi@goffi.org>
parents: 616
diff changeset
573 @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
574 @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
575 @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
576 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
577 @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
578 @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
579 @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
580 """
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
581 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
582
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
583 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
584 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
585 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
586 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
587 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
588 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
589
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 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
591 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
592 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
593 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
594 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
595 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
596 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
597
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 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
599 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
600 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
601 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
602 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
603 wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs)
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
604 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
605 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
606 # 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
607 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
608 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
609 # 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
610 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
611 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
612 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
613 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
614 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
615
834
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
616 def isHidden(self):
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
617 """Tells if the frontend window is hidden.
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
618
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
619 @return bool
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
620 """
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
621 return self.notification.isHidden()
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
622
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
623 def updateAlertsCounter(self, extra_inc=0):
714
03e9fe91081c browser_side: use favico.js to display alerts counter
souliane <souliane@mailoo.org>
parents: 711
diff changeset
624 """Update the over whole alerts counter
03e9fe91081c browser_side: use favico.js to display alerts counter
souliane <souliane@mailoo.org>
parents: 711
diff changeset
625
834
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
626 @param extra_inc (int): extra counter
714
03e9fe91081c browser_side: use favico.js to display alerts counter
souliane <souliane@mailoo.org>
parents: 711
diff changeset
627 """
834
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
628 extra = self.alerts_counter.extra + extra_inc
2491898b3041 browser (chat, notification): remove the textual alerts counter, merge it with the favicon counter
souliane <souliane@mailoo.org>
parents: 818
diff changeset
629 self.alerts_counter.update(self.alerts_count, extra=extra)
714
03e9fe91081c browser_side: use favico.js to display alerts counter
souliane <souliane@mailoo.org>
parents: 711
diff changeset
630
326
36927be51481 browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents: 325
diff changeset
631 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
632 """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
633 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
634 @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
635 """
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
636 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
637 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
638 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
639 if refresh:
36927be51481 browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents: 325
diff changeset
640 self.refresh()
36927be51481 browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents: 325
diff changeset
641 break
36927be51481 browser_side: fixed the behavior regarding "Enable unibox" parameter:
souliane <souliane@mailoo.org>
parents: 325
diff changeset
642
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
643 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
644 """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
645
662
ebb602d8b3f2 browser_side: replace all instances of 'str' with 'unicode'
souliane <souliane@mailoo.org>
parents: 659
diff changeset
646 @param category (unicode): the parameter category
ebb602d8b3f2 browser_side: replace all instances of 'str' with 'unicode'
souliane <souliane@mailoo.org>
parents: 659
diff changeset
647 @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
648 """
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
649 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
650
298
e99f578c7179 browser side: sendMessage alert on error
Goffi <goffi@goffi.org>
parents: 296
diff changeset
651 def sendError(self, errorData):
e99f578c7179 browser side: sendMessage alert on error
Goffi <goffi@goffi.org>
parents: 296
diff changeset
652 dialog.InfoDialog("Error while sending message",
e99f578c7179 browser side: sendMessage alert on error
Goffi <goffi@goffi.org>
parents: 296
diff changeset
653 "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
654 log.error("sendError: %s" % unicode(errorData))
298
e99f578c7179 browser side: sendMessage alert on error
Goffi <goffi@goffi.org>
parents: 296
diff changeset
655
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
656 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
657 """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
658 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
659 @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
660 @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
661 """
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
662 if not hasattr(self, "warning_popup"):
648
6d3142b782c3 browser_side: classes reorganisation:
Goffi <goffi@goffi.org>
parents: 646
diff changeset
663 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
664 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
665
628
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
666 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
667 if type_ == 'info':
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
668 popup = dialog.InfoDialog(unicode(title), unicode(message), callback=answer_cb)
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
669 elif type_ == 'error':
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
670 popup = dialog.InfoDialog(unicode(title), unicode(message), callback=answer_cb)
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
671 elif type_ == 'yes/no':
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
672 popup = dialog.ConfirmDialog(lambda answer: answer_cb(answer, answer_data),
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
673 text=unicode(message), title=unicode(title))
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
674 popup.cancel_button.setText(_("No"))
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
675 else:
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
676 popup = dialog.InfoDialog(unicode(title), unicode(message), callback=answer_cb)
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
677 log.error(_('unmanaged dialog type: %s'), type_)
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
678 popup.show()
66a547539185 browser_side: implements showDialog
souliane <souliane@mailoo.org>
parents: 624
diff changeset
679
718
5745b5e6586a browser + server sides: actionNew signal handling
Goffi <goffi@goffi.org>
parents: 716
diff changeset
680 def dialogFailure(self, failure):
5745b5e6586a browser + server sides: actionNew signal handling
Goffi <goffi@goffi.org>
parents: 716
diff changeset
681 dialog.InfoDialog("Error",
5745b5e6586a browser + server sides: actionNew signal handling
Goffi <goffi@goffi.org>
parents: 716
diff changeset
682 unicode(failure), Width="400px").center()
5745b5e6586a browser + server sides: actionNew signal handling
Goffi <goffi@goffi.org>
parents: 716
diff changeset
683
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
684 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
685 """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
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
687 @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
688 @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
689 """
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
690 # 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
691 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
692 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
693 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
694
839
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
695 def onJoinMUCFailure(self, err_data):
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
696 """Show a failure that has been returned when trying to join a room.
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
697
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
698 @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
699 """
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
700 # FIXME: remove asap, see self.showFailure
839
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
701 err_code, err_obj = err_data
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
702 if err_obj["data"] == "AlreadyJoinedRoom":
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
703 msg = _(u"The room has already been joined.")
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
704 err_obj["message"] = _(u"Information")
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
705 else:
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
706 msg = _(u"Invalid room identifier. Please give a room short or full identifier like 'room' or '%s'.") % self.default_muc
09ace5cbcb9b browser (games, menu): rename showFailureRoomInvalid to onJoinMUCFailure and display a nice message when the room has already been joined (it is not a real error)
souliane <souliane@mailoo.org>
parents: 835
diff changeset
707 err_obj["message"] = _(u"Error")
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
708 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
709
269
9eb9c7d41bdc browser_side: added generic method "send" in SatWebFrontend
souliane <souliane@mailoo.org>
parents: 267
diff changeset
710
0
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
711 if __name__ == '__main__':
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
712 app = SatWebFrontend()
140cec48224a Initial commit
Goffi <goffi@goffi.org>
parents:
diff changeset
713 app.onModuleLoad()
675
941e53b3af5c browser side: host listeners are called when host is instantiated
Goffi <goffi@goffi.org>
parents: 670
diff changeset
714 host_listener.callListeners(app)