comparison src/browser/sat_browser/base_panels.py @ 589:a5019e62c3e9 frontends_multi_profiles

browser side: big refactoring to base Libervia on QuickFrontend, first draft: /!\ not finished, partially working and highly instable - add collections module with an OrderedDict like class - SatWebFrontend inherit from QuickApp - general sat_frontends tools.jid module is used - bridge/json methods have moved to json module - UniBox is partially removed (should be totally removed before merge to trunk) - Signals are now register with the generic registerSignal method (which is called mainly in QuickFrontend) - the generic getOrCreateWidget method from QuickWidgetsManager is used instead of Libervia's specific methods - all Widget are now based more or less directly on QuickWidget - with the new QuickWidgetsManager.getWidgets method, it's no more necessary to check all widgets which are instance of a particular class - ChatPanel and related moved to chat module - MicroblogPanel and related moved to blog module - global and overcomplicated send method has been disabled: each class should manage its own sending - for consistency with other frontends, former ContactPanel has been renamed to ContactList and vice versa - for the same reason, ChatPanel has been renamed to Chat - for compatibility with QuickFrontend, a fake profile is used in several places, it is set to C.PROF_KEY_NONE (real profile is managed server side for obvious security reasons) - changed default url for web panel to SàT website, and contact address to generic SàT contact address - ContactList is based on QuickContactList, UI changes are done in update method - bride call (now json module) have been greatly improved, in particular call can be done in the same way as for other frontends (bridge.method_name(arg1, arg2, ..., callback=cb, errback=eb). Blocking method must be called like async methods due to javascript architecture - in bridge calls, a callback can now exists without errback - hard reload on BridgeSignals remote error has been disabled, a better option should be implemented - use of constants where that make sens, some style improvments - avatars are temporarily disabled - lot of code disabled, will be fixed or removed before merge - various other changes, check diff for more details server side: manage remote exception on getEntityData, removed getProfileJid call, added getWaitingConf, added getRoomsSubjects
author Goffi <goffi@goffi.org>
date Sat, 24 Jan 2015 01:45:39 +0100
parents 0a06cf833f5a
children 32dbbc941123
comparison
equal deleted inserted replaced
585:bade589dbd5a 589:a5019e62c3e9
24 from sat_frontends.tools import strings 24 from sat_frontends.tools import strings
25 25
26 from pyjamas.ui.AbsolutePanel import AbsolutePanel 26 from pyjamas.ui.AbsolutePanel import AbsolutePanel
27 from pyjamas.ui.VerticalPanel import VerticalPanel 27 from pyjamas.ui.VerticalPanel import VerticalPanel
28 from pyjamas.ui.HorizontalPanel import HorizontalPanel 28 from pyjamas.ui.HorizontalPanel import HorizontalPanel
29 from pyjamas.ui.HTMLPanel import HTMLPanel
30 from pyjamas.ui.Button import Button 29 from pyjamas.ui.Button import Button
31 from pyjamas.ui.HTML import HTML 30 from pyjamas.ui.HTML import HTML
32 from pyjamas.ui.SimplePanel import SimplePanel 31 from pyjamas.ui.SimplePanel import SimplePanel
33 from pyjamas.ui.PopupPanel import PopupPanel 32 from pyjamas.ui.PopupPanel import PopupPanel
34 from pyjamas.ui.StackPanel import StackPanel 33 from pyjamas.ui.StackPanel import StackPanel
37 from pyjamas.ui.KeyboardListener import KEY_ENTER, KEY_SHIFT, KeyboardHandler 36 from pyjamas.ui.KeyboardListener import KEY_ENTER, KEY_SHIFT, KeyboardHandler
38 from pyjamas.ui.FocusListener import FocusHandler 37 from pyjamas.ui.FocusListener import FocusHandler
39 from pyjamas.ui.ClickListener import ClickHandler 38 from pyjamas.ui.ClickListener import ClickHandler
40 from pyjamas import DOM 39 from pyjamas import DOM
41 40
42 from datetime import datetime
43 from time import time
44
45 import html_tools 41 import html_tools
46 from constants import Const as C 42 from constants import Const as C
47
48
49 class ChatText(HTMLPanel):
50
51 def __init__(self, timestamp, nick, mymess, msg, xhtml=None):
52 _date = datetime.fromtimestamp(float(timestamp or time()))
53 _msg_class = ["chat_text_msg"]
54 if mymess:
55 _msg_class.append("chat_text_mymess")
56 HTMLPanel.__init__(self, "<span class='chat_text_timestamp'>%(timestamp)s</span> <span class='chat_text_nick'>%(nick)s</span> <span class='%(msg_class)s'>%(msg)s</span>" %
57 {"timestamp": _date.strftime("%H:%M"),
58 "nick": "[%s]" % html_tools.html_sanitize(nick),
59 "msg_class": ' '.join(_msg_class),
60 "msg": strings.addURLToText(html_tools.html_sanitize(msg)) if not xhtml else html_tools.inlineRoot(xhtml)} # FIXME: images and external links must be removed according to preferences
61 )
62 self.setStyleName('chatText')
63 43
64 44
65 class Occupant(HTML): 45 class Occupant(HTML):
66 """Occupant of a MUC room""" 46 """Occupant of a MUC room"""
67 47