Mercurial > libervia-backend
annotate sat_frontends/primitivus/chat.py @ 3028:ab2696e34d29
Python 3 port:
/!\ this is a huge commit
/!\ starting from this commit, SàT is needs Python 3.6+
/!\ SàT maybe be instable or some feature may not work anymore, this will improve with time
This patch port backend, bridge and frontends to Python 3.
Roughly this has been done this way:
- 2to3 tools has been applied (with python 3.7)
- all references to python2 have been replaced with python3 (notably shebangs)
- fixed files not handled by 2to3 (notably the shell script)
- several manual fixes
- fixed issues reported by Python 3 that where not handled in Python 2
- replaced "async" with "async_" when needed (it's a reserved word from Python 3.7)
- replaced zope's "implements" with @implementer decorator
- temporary hack to handle data pickled in database, as str or bytes may be returned,
to be checked later
- fixed hash comparison for password
- removed some code which is not needed anymore with Python 3
- deactivated some code which needs to be checked (notably certificate validation)
- tested with jp, fixed reported issues until some basic commands worked
- ported Primitivus (after porting dependencies like urwid satext)
- more manual fixes
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 13 Aug 2019 19:08:41 +0200 |
parents | 4d5b9d4c7448 |
children | ab7e8ade848a |
rev | line source |
---|---|
1934
2daf7b4c6756
use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents:
1788
diff
changeset
|
1 #!/usr/bin/env python2 |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
4 # Primitivus: a SAT frontend |
2771 | 5 # Copyright (C) 2009-2019 Jérôme Poisson (goffi@goffi.org) |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
10 # (at your option) any later version. |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
15 # GNU Affero General Public License for more details. |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
771 | 20 from sat.core.i18n import _ |
1180
69aace10b46d
Primitivus (file transfer): an error popup is shown when bad unicode is used in path, and an info popup is show to indicate that the file request has been sent
Goffi <goffi@goffi.org>
parents:
1173
diff
changeset
|
21 from sat.core import log as logging |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
22 |
1180
69aace10b46d
Primitivus (file transfer): an error popup is shown when bad unicode is used in path, and an info popup is show to indicate that the file request has been sent
Goffi <goffi@goffi.org>
parents:
1173
diff
changeset
|
23 log = logging.getLogger(__name__) |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 import urwid |
222
3198bfd66daa
primitivus: refactoring to use urwid-satext which is now a separate project
Goffi <goffi@goffi.org>
parents:
202
diff
changeset
|
25 from urwid_satext import sat_widgets |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
26 from sat_frontends.quick_frontend import quick_widgets |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
27 from sat_frontends.quick_frontend import quick_chat |
1360
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
28 from sat_frontends.quick_frontend import quick_games |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
29 from sat_frontends.primitivus import game_tarot |
1058
0a9986452bba
frontends: fixes bug with private message introduced with revision 1000 (6f1e03068b5f) + display messages from contacts not in roster
souliane <souliane@mailoo.org>
parents:
911
diff
changeset
|
30 from sat_frontends.primitivus.constants import Const as C |
1158
c0f15e52695a
primitivus: use of new keys modules from Urwid SàText
Goffi <goffi@goffi.org>
parents:
1139
diff
changeset
|
31 from sat_frontends.primitivus.keys import action_key_map as a_key |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
32 from sat_frontends.primitivus.widget import PrimitivusWidget |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
33 from sat_frontends.primitivus.contact_list import ContactList |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
34 from functools import total_ordering |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
35 import bisect |
124 | 36 |
37 | |
3028 | 38 OCCUPANTS_FOOTER = _("{} occupants") |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
39 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
40 |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
41 class MessageWidget(urwid.WidgetWrap, quick_chat.MessageWidget): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
42 def __init__(self, mess_data): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
43 """ |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
44 @param mess_data(quick_chat.Message, None): message data |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
45 None: used only for non text widgets (e.g.: focus separator) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
46 """ |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
47 self.mess_data = mess_data |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
48 mess_data.widgets.add(self) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
49 super(MessageWidget, self).__init__(urwid.Text(self.markup)) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
50 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
51 @property |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
52 def markup(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
53 return ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
54 self._generateInfoMarkup() |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
55 if self.mess_data.type == C.MESS_TYPE_INFO |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
56 else self._generateMarkup() |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
57 ) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
58 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
59 @property |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
60 def info_type(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
61 return self.mess_data.info_type |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
62 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
63 @property |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
64 def parent(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
65 return self.mess_data.parent |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
66 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
67 @property |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
68 def message(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
69 """Return currently displayed message""" |
1993
981e2abbb56c
quick_frontend, primitivus: moved main_message property to quick_frontend
Goffi <goffi@goffi.org>
parents:
1988
diff
changeset
|
70 return self.mess_data.main_message |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
71 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
72 @message.setter |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
73 def message(self, value): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
74 self.mess_data.message = {"": value} |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
75 self.redraw() |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
76 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
77 @property |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
78 def type(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
79 try: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
80 return self.mess_data.type |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
81 except AttributeError: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
82 return C.MESS_TYPE_INFO |
124 | 83 |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
84 def redraw(self): |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
85 self._w.set_text(self.markup) |
2024
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
86 self.mess_data.parent.host.redraw() # FIXME: should not be necessary |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
87 |
124 | 88 def selectable(self): |
89 return True | |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
90 |
124 | 91 def keypress(self, size, key): |
92 return key | |
93 | |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
94 def get_cursor_coords(self, size): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
95 return 0, 0 |
124 | 96 |
97 def render(self, size, focus=False): | |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
98 # Text widget doesn't render cursor, but we want one |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
99 # so we add it here |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
100 canvas = urwid.CompositeCanvas(self._w.render(size, focus)) |
125
8d611eb9ae48
primitivus: contact list enhancement
Goffi <goffi@goffi.org>
parents:
124
diff
changeset
|
101 if focus: |
8d611eb9ae48
primitivus: contact list enhancement
Goffi <goffi@goffi.org>
parents:
124
diff
changeset
|
102 canvas.set_cursor(self.get_cursor_coords(size)) |
8d611eb9ae48
primitivus: contact list enhancement
Goffi <goffi@goffi.org>
parents:
124
diff
changeset
|
103 return canvas |
8d611eb9ae48
primitivus: contact list enhancement
Goffi <goffi@goffi.org>
parents:
124
diff
changeset
|
104 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
105 def _generateInfoMarkup(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
106 return ("info_msg", self.message) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
107 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
108 def _generateMarkup(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
109 """Generate text markup according to message data and Widget options""" |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
110 markup = [] |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
111 d = self.mess_data |
1980
2a85c818751a
primitivus (chat): mention is now visible by date in red instead of body (or a "[*]" if date is hidden)
Goffi <goffi@goffi.org>
parents:
1979
diff
changeset
|
112 mention = d.mention |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
113 |
2024
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
114 # message status |
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
115 if d.status is None: |
3028 | 116 markup.append(" ") |
2024
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
117 elif d.status == "delivered": |
3028 | 118 markup.append(("msg_status_received", "✔")) |
2024
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
119 else: |
3028 | 120 log.warning("Unknown status: {}".format(d.status)) |
2024
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
121 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
122 # timestamp |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
123 if self.parent.show_timestamp: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
124 attr = "msg_mention" if mention else "date" |
3028 | 125 markup.append((attr, "[{}]".format(d.time_text))) |
1980
2a85c818751a
primitivus (chat): mention is now visible by date in red instead of body (or a "[*]" if date is hidden)
Goffi <goffi@goffi.org>
parents:
1979
diff
changeset
|
126 else: |
2a85c818751a
primitivus (chat): mention is now visible by date in red instead of body (or a "[*]" if date is hidden)
Goffi <goffi@goffi.org>
parents:
1979
diff
changeset
|
127 if mention: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
128 markup.append(("msg_mention", "[*]")) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
129 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
130 # nickname |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
131 if self.parent.show_short_nick: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
132 markup.append( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
133 ("my_nick" if d.own_mess else "other_nick", "**" if d.own_mess else "*") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
134 ) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
135 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
136 markup.append( |
3028 | 137 ("my_nick" if d.own_mess else "other_nick", "[{}] ".format(d.nick or "")) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
138 ) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
139 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
140 msg = self.message # needed to generate self.selected_lang |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
141 |
1993
981e2abbb56c
quick_frontend, primitivus: moved main_message property to quick_frontend
Goffi <goffi@goffi.org>
parents:
1988
diff
changeset
|
142 if d.selected_lang: |
3028 | 143 markup.append(("msg_lang", "[{}] ".format(d.selected_lang))) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
144 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
145 # message body |
1980
2a85c818751a
primitivus (chat): mention is now visible by date in red instead of body (or a "[*]" if date is hidden)
Goffi <goffi@goffi.org>
parents:
1979
diff
changeset
|
146 markup.append(msg) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
147 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
148 return markup |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
149 |
2024
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
150 # events |
2075
4f3ebf786fbc
quick_frontend, primitivus (chat): renamed updated to update, using a dict as argument + fixed Primitivus group chat
Goffi <goffi@goffi.org>
parents:
2067
diff
changeset
|
151 def update(self, update_dict=None): |
4f3ebf786fbc
quick_frontend, primitivus (chat): renamed updated to update, using a dict as argument + fixed Primitivus group chat
Goffi <goffi@goffi.org>
parents:
2067
diff
changeset
|
152 """update all the linked message widgets |
4f3ebf786fbc
quick_frontend, primitivus (chat): renamed updated to update, using a dict as argument + fixed Primitivus group chat
Goffi <goffi@goffi.org>
parents:
2067
diff
changeset
|
153 |
4f3ebf786fbc
quick_frontend, primitivus (chat): renamed updated to update, using a dict as argument + fixed Primitivus group chat
Goffi <goffi@goffi.org>
parents:
2067
diff
changeset
|
154 @param update_dict(dict, None): key=attribute updated value=new_value |
4f3ebf786fbc
quick_frontend, primitivus (chat): renamed updated to update, using a dict as argument + fixed Primitivus group chat
Goffi <goffi@goffi.org>
parents:
2067
diff
changeset
|
155 """ |
2024
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
156 self.redraw() |
01aff34e8873
quick frontends, primitivus: messageState signal handling
Goffi <goffi@goffi.org>
parents:
2022
diff
changeset
|
157 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
158 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
159 @total_ordering |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
160 class OccupantWidget(urwid.WidgetWrap): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
161 def __init__(self, occupant_data): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
162 self.occupant_data = occupant_data |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
163 occupant_data.widgets.add(self) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
164 markup = self._generateMarkup() |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
165 text = sat_widgets.ClickableText(markup) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
166 urwid.connect_signal( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
167 text, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
168 "click", |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
169 self.occupant_data.parent._occupantsClicked, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
170 user_args=[self.occupant_data], |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
171 ) |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
172 super(OccupantWidget, self).__init__(text) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
173 |
3028 | 174 def __hash__(self): |
175 return id(self) | |
176 | |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
177 def __eq__(self, other): |
1988
3f0d22565684
primitivus (chat): fixed a crash when page-up was pressed on room contacts list
Goffi <goffi@goffi.org>
parents:
1987
diff
changeset
|
178 if other is None: |
3f0d22565684
primitivus (chat): fixed a crash when page-up was pressed on room contacts list
Goffi <goffi@goffi.org>
parents:
1987
diff
changeset
|
179 return False |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
180 return self.occupant_data.nick == other.occupant_data.nick |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
181 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
182 def __lt__(self, other): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
183 return self.occupant_data.nick.lower() < other.occupant_data.nick.lower() |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
184 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
185 @property |
2007
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
186 def markup(self): |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
187 return self._generateMarkup() |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
188 |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
189 @property |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
190 def parent(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
191 return self.mess_data.parent |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
192 |
1971
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
193 @property |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
194 def nick(self): |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
195 return self.occupant_data.nick |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
196 |
2007
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
197 def redraw(self): |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
198 self._w.set_text(self.markup) |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
199 self.occupant_data.parent.host.redraw() # FIXME: should not be necessary |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
200 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
201 def selectable(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
202 return True |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
203 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
204 def keypress(self, size, key): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
205 return key |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
206 |
125
8d611eb9ae48
primitivus: contact list enhancement
Goffi <goffi@goffi.org>
parents:
124
diff
changeset
|
207 def get_cursor_coords(self, size): |
8d611eb9ae48
primitivus: contact list enhancement
Goffi <goffi@goffi.org>
parents:
124
diff
changeset
|
208 return 0, 0 |
124 | 209 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
210 def render(self, size, focus=False): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
211 # Text widget doesn't render cursor, but we want one |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
212 # so we add it here |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
213 canvas = urwid.CompositeCanvas(self._w.render(size, focus)) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
214 if focus: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
215 canvas.set_cursor(self.get_cursor_coords(size)) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
216 return canvas |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
217 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
218 def _generateMarkup(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
219 # TODO: role and affiliation are shown in a Q&D way |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
220 # should be more intuitive and themable |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
221 o = self.occupant_data |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
222 markup = [] |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
223 markup.append( |
3028 | 224 ("info_msg", "{}{} ".format(o.role[0].upper(), o.affiliation[0].upper())) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
225 ) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
226 markup.append(o.nick) |
2007
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
227 if o.state is not None: |
3028 | 228 markup.append(" {}".format(C.CHAT_STATE_ICON[o.state])) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
229 return markup |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
230 |
2007
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
231 # events |
2075
4f3ebf786fbc
quick_frontend, primitivus (chat): renamed updated to update, using a dict as argument + fixed Primitivus group chat
Goffi <goffi@goffi.org>
parents:
2067
diff
changeset
|
232 def update(self, update_dict=None): |
2007
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
233 self.redraw() |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
234 |
638
6821fc06a324
misc: a few "cosmetic" changes (PEP 8...)
souliane <souliane@mailoo.org>
parents:
637
diff
changeset
|
235 |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
236 class OccupantsWidget(urwid.WidgetWrap): |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
237 def __init__(self, parent): |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
238 self.parent = parent |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
239 self.occupants_walker = urwid.SimpleListWalker([]) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
240 self.occupants_footer = urwid.Text("", align="center") |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
241 self.updateFooter() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
242 occupants_widget = urwid.Frame( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
243 urwid.ListBox(self.occupants_walker), footer=self.occupants_footer |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
244 ) |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
245 super(OccupantsWidget, self).__init__(occupants_widget) |
3028 | 246 occupants_list = sorted(list(self.parent.occupants.keys()), key=lambda o: o.lower()) |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
247 for occupant in occupants_list: |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
248 occupant_data = self.parent.occupants[occupant] |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
249 self.occupants_walker.append(OccupantWidget(occupant_data)) |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
250 |
2988
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
251 def clear(self): |
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
252 del self.occupants_walker[:] |
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
253 |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
254 def updateFooter(self): |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
255 """update footer widget""" |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
256 txt = OCCUPANTS_FOOTER.format(len(self.parent.occupants)) |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
257 self.occupants_footer.set_text(txt) |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
258 |
3028 | 259 def getNicks(self, start=""): |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
260 """Return nicks of all occupants |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
261 |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
262 @param start(unicode): only return nicknames which start with this text |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
263 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
264 return [ |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
265 w.nick |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
266 for w in self.occupants_walker |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
267 if isinstance(w, OccupantWidget) and w.nick.startswith(start) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
268 ] |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
269 |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
270 def addUser(self, occupant_data): |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
271 """add a user to the list""" |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
272 bisect.insort(self.occupants_walker, OccupantWidget(occupant_data)) |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
273 self.updateFooter() |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
274 self.parent.host.redraw() # FIXME: should not be necessary |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
275 |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
276 def removeUser(self, occupant_data): |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
277 """remove a user from the list""" |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
278 for widget in occupant_data.widgets: |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
279 self.occupants_walker.remove(widget) |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
280 self.updateFooter() |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
281 self.parent.host.redraw() # FIXME: should not be necessary |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
282 |
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
283 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
284 class Chat(PrimitivusWidget, quick_chat.QuickChat): |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
285 def __init__(self, host, target, type_=C.CHAT_ONE2ONE, nick=None, occupants=None, |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
286 subject=None, profiles=None): |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
287 self.filters = [] # list of filter callbacks to apply |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
288 self.mess_walker = urwid.SimpleListWalker([]) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
289 self.mess_widgets = urwid.ListBox(self.mess_walker) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
290 self.chat_widget = urwid.Frame(self.mess_widgets) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
291 self.chat_colums = urwid.Columns([("weight", 8, self.chat_widget)]) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
137
diff
changeset
|
292 self.pile = urwid.Pile([self.chat_colums]) |
3028 | 293 PrimitivusWidget.__init__(self, self.pile, target) |
294 quick_chat.QuickChat.__init__( | |
295 self, host, target, type_, nick, occupants, subject, profiles=profiles | |
296 ) | |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
297 |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
298 # we must adapt the behaviour with the type |
1762
2e2fb462729a
quick_frontend, primitivus (chat): printing the history is left to quick_frontend
souliane <souliane@mailoo.org>
parents:
1751
diff
changeset
|
299 if type_ == C.CHAT_GROUP: |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
300 if len(self.chat_colums.contents) == 1: |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
301 self.occupants_widget = OccupantsWidget(self) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
302 self.occupants_panel = sat_widgets.VerticalSeparator( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
303 self.occupants_widget |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
304 ) |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
305 self._appendOccupantsPanel() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
306 self.host.addListener("presence", self.presenceListener, [profiles]) |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
307 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
308 # focus marker is a separator indicated last visible message before focus was lost |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
309 self.focus_marker = None # link to current marker |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
310 self.focus_marker_set = None # True if a new marker has been inserted |
124 | 311 self.show_timestamp = True |
312 self.show_short_nick = False | |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
313 self.show_title = 1 # 0: clip title; 1: full title; 2: no title |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
314 self.postInit() |
124 | 315 |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
316 @property |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
317 def message_widgets_rev(self): |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
318 return reversed(self.mess_walker) |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
319 |
124 | 320 def keypress(self, size, key): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
321 if key == a_key["OCCUPANTS_HIDE"]: # user wants to (un)hide the occupants panel |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
322 if self.type == C.CHAT_GROUP: |
607
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
323 widgets = [widget for (widget, options) in self.chat_colums.contents] |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
324 if self.occupants_panel in widgets: |
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
325 self._removeOccupantsPanel() |
124 | 326 else: |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
327 self._appendOccupantsPanel() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
328 elif key == a_key["TIMESTAMP_HIDE"]: # user wants to (un)hide timestamp |
124 | 329 self.show_timestamp = not self.show_timestamp |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
330 self.redraw() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
331 elif key == a_key["SHORT_NICKNAME"]: # user wants to (not) use short nick |
124 | 332 self.show_short_nick = not self.show_short_nick |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
333 self.redraw() |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
334 elif (key == a_key["SUBJECT_SWITCH"]): |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
335 # user wants to (un)hide group's subject or change its apperance |
124 | 336 if self.subject: |
130
5a88ad24ccc0
Primitivus: subject in group chat can now be shown in 3 ways: clip, full, or hidden
Goffi <goffi@goffi.org>
parents:
126
diff
changeset
|
337 self.show_title = (self.show_title + 1) % 3 |
5a88ad24ccc0
Primitivus: subject in group chat can now be shown in 3 ways: clip, full, or hidden
Goffi <goffi@goffi.org>
parents:
126
diff
changeset
|
338 if self.show_title == 0: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
339 self.setSubject(self.subject, "clip") |
130
5a88ad24ccc0
Primitivus: subject in group chat can now be shown in 3 ways: clip, full, or hidden
Goffi <goffi@goffi.org>
parents:
126
diff
changeset
|
340 elif self.show_title == 1: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
341 self.setSubject(self.subject, "space") |
130
5a88ad24ccc0
Primitivus: subject in group chat can now be shown in 3 ways: clip, full, or hidden
Goffi <goffi@goffi.org>
parents:
126
diff
changeset
|
342 elif self.show_title == 2: |
124 | 343 self.chat_widget.header = None |
344 self._invalidate() | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
345 elif key == a_key["GOTO_BOTTOM"]: # user wants to focus last message |
2333
a21b3b31086d
primitivus (chat): added "GOTO_BOTTOM" ("G") shortcut to scroll down to last message in history
Goffi <goffi@goffi.org>
parents:
2332
diff
changeset
|
346 self.mess_widgets.focus_position = len(self.mess_walker) - 1 |
124 | 347 |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
348 return super(Chat, self).keypress(size, key) |
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
349 |
1971
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
350 def completion(self, text, completion_data): |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
351 """Completion method which complete nicknames in group chat |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
352 |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
353 for params, see [sat_widgets.AdvancedEdit] |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
354 """ |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
355 if self.type != C.CHAT_GROUP: |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
356 return text |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
357 |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
358 space = text.rfind(" ") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
359 start = text[space + 1 :] |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
360 words = self.occupants_widget.getNicks(start) |
1971
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
361 if not words: |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
362 return text |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
363 try: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
364 word_idx = words.index(completion_data["last_word"]) + 1 |
1971
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
365 except (KeyError, ValueError): |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
366 word_idx = 0 |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
367 else: |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
368 if word_idx == len(words): |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
369 word_idx = 0 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
370 word = completion_data["last_word"] = words[word_idx] |
3028 | 371 return "{}{}{}".format(text[: space + 1], word, ": " if space < 0 else "") |
1971
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
372 |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
373 def getMenu(self): |
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
374 """Return Menu bar""" |
222
3198bfd66daa
primitivus: refactoring to use urwid-satext which is now a separate project
Goffi <goffi@goffi.org>
parents:
202
diff
changeset
|
375 menu = sat_widgets.Menu(self.host.loop) |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
376 if self.type == C.CHAT_GROUP: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
377 self.host.addMenus(menu, C.MENU_ROOM, {"room_jid": self.target.bare}) |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
378 game = _("Game") |
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
379 menu.addMenu(game, "Tarot", self.onTarotRequest) |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
380 elif self.type == C.CHAT_ONE2ONE: |
1634
95ea323e7d04
primitivus: removed all file menu + temporary workaround to send full jid on C.MENU_SINGLE menu action.
Goffi <goffi@goffi.org>
parents:
1580
diff
changeset
|
381 # FIXME: self.target is a bare jid, we need to check that |
95ea323e7d04
primitivus: removed all file menu + temporary workaround to send full jid on C.MENU_SINGLE menu action.
Goffi <goffi@goffi.org>
parents:
1580
diff
changeset
|
382 contact_list = self.host.contact_lists[self.profile] |
1637
7751b5a51586
primivitus: fixed crash when self.target is a full jid
Goffi <goffi@goffi.org>
parents:
1634
diff
changeset
|
383 if not self.target.resource: |
7751b5a51586
primivitus: fixed crash when self.target is a full jid
Goffi <goffi@goffi.org>
parents:
1634
diff
changeset
|
384 full_jid = contact_list.getFullJid(self.target) |
7751b5a51586
primivitus: fixed crash when self.target is a full jid
Goffi <goffi@goffi.org>
parents:
1634
diff
changeset
|
385 else: |
7751b5a51586
primivitus: fixed crash when self.target is a full jid
Goffi <goffi@goffi.org>
parents:
1634
diff
changeset
|
386 full_jid = self.target |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
387 self.host.addMenus(menu, C.MENU_SINGLE, {"jid": full_jid}) |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
388 return menu |
124 | 389 |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
390 def setFilter(self, args): |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
391 """set filtering of messages |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
392 |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
393 @param args(list[unicode]): filters following syntax "[filter]=[value]" |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
394 empty list to clear all filters |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
395 only lang=XX is handled for now |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
396 """ |
1967
de6faf9be715
primitivus (chat): fixed filters clearing when changing filter while one already exists
Goffi <goffi@goffi.org>
parents:
1966
diff
changeset
|
397 del self.filters[:] |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
398 if args: |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
399 if args[0].startswith("lang="): |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
400 lang = args[0][5:].strip() |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
401 self.filters.append(lambda mess_data: lang in mess_data.message) |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
402 |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
403 self.printMessages() |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
404 |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
405 def presenceListener(self, entity, show, priority, statuses, profile): |
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
406 """Update entity's presence status |
1378
3dae6964c071
quick_frontends, primitivus: move the chat states logic to quick_frontend
souliane <souliane@mailoo.org>
parents:
1377
diff
changeset
|
407 |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
408 @param entity (jid.JID): entity updated |
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
409 @param show: availability |
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
410 @param priority: resource's priority |
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
411 @param statuses: dict of statuses |
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
412 @param profile: %(doc_profile)s |
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
413 """ |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
414 # FIXME: disable for refactoring, need to be checked and re-enabled |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
415 return |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
416 # assert self.type == C.CHAT_GROUP |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
417 # if entity.bare != self.target: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
418 # return |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
419 # self.update(entity) |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
420 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
421 def createMessage(self, message): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
422 self.appendMessage(message) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
423 |
2335
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
424 def _scrollDown(self): |
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
425 """scroll down message only if we are already at the bottom (minus 1)""" |
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
426 current_focus = self.mess_widgets.focus_position |
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
427 bottom = len(self.mess_walker) - 1 |
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
428 if current_focus == bottom - 1: |
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
429 self.mess_widgets.focus_position = bottom # scroll down |
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
430 self.host.redraw() # FIXME: should not be necessary |
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
431 |
2992
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
432 def appendMessage(self, message, minor_notifs=True): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
433 """Create a MessageWidget and append it |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
434 |
2992
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
435 Can merge info messages together if desirable (e.g.: multiple joined/leave) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
436 @param message(quick_chat.Message): message to add |
2992
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
437 @param minor_notifs(boolean): if True, basic notifications are allowed |
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
438 If False, notification are not shown except if we have an important one |
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
439 (like a mention). |
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
440 False is generally used when printing history, when we don't want every |
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
441 message to be notified. |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
442 """ |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
443 if self.filters: |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
444 if not all([f(message) for f in self.filters]): |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
445 return |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
446 |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
447 if self.handleUserMoved(message): |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
448 return |
637
3b02554d4c8b
primitivus: chat state implementation
souliane <souliane@mailoo.org>
parents:
610
diff
changeset
|
449 |
2904
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
450 if ((self.host.selected_widget != self or not self.host.x_notify.hasFocus()) |
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
451 and self.focus_marker_set is not None): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
452 if not self.focus_marker_set and not self._locked and self.mess_walker: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
453 if self.focus_marker is not None: |
2904
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
454 try: |
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
455 self.mess_walker.remove(self.focus_marker) |
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
456 except ValueError: |
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
457 # self.focus_marker may not be in mess_walker anymore if |
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
458 # mess_walker has been cleared, e.g. when showing search |
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
459 # result or using :history command |
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
460 pass |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
461 self.focus_marker = urwid.Divider("—") |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
462 self.mess_walker.append(self.focus_marker) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
463 self.focus_marker_set = True |
2335
b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
Goffi <goffi@goffi.org>
parents:
2333
diff
changeset
|
464 self._scrollDown() |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
465 else: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
466 if self.focus_marker_set: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
467 self.focus_marker_set = False |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
468 |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
469 wid = MessageWidget(message) |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
470 self.mess_walker.append(wid) |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
471 self._scrollDown() |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
472 if self.isUserMoved(message): |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
473 return # no notification for moved messages |
2010
d2144d04065e
primitivus (chat): don't send notification for move messages
Goffi <goffi@goffi.org>
parents:
2008
diff
changeset
|
474 |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
475 # notifications |
2010
d2144d04065e
primitivus (chat): don't send notification for move messages
Goffi <goffi@goffi.org>
parents:
2008
diff
changeset
|
476 |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
477 if self._locked: |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
478 # we don't want notifications when locked |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
479 # because that's history messages |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
480 return |
2018
7199e6bdb94e
quick_frontend, primitivus (chat): fixed widget bad locking + don't send notification when locked
Goffi <goffi@goffi.org>
parents:
2015
diff
changeset
|
481 |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
482 if wid.mess_data.mention: |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
483 from_jid = wid.mess_data.from_jid |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
484 msg = _( |
3028 | 485 "You have been mentioned by {nick} in {room}".format( |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
486 nick=wid.mess_data.nick, room=self.target |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
487 ) |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
488 ) |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
489 self.host.notify( |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
490 C.NOTIFY_MENTION, from_jid, msg, widget=self, profile=self.profile |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
491 ) |
2992
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
492 elif not minor_notifs: |
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
493 return |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
494 elif self.type == C.CHAT_ONE2ONE: |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
495 from_jid = wid.mess_data.from_jid |
3028 | 496 msg = _("{entity} is talking to you".format(entity=from_jid)) |
2736
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
497 self.host.notify( |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
498 C.NOTIFY_MESSAGE, from_jid, msg, widget=self, profile=self.profile |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
499 ) |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
500 else: |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
501 self.host.notify( |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
502 C.NOTIFY_MESSAGE, self.target, widget=self, profile=self.profile |
df2bc2e704bc
core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received)
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
503 ) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
504 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
505 def addUser(self, nick): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
506 occupant = super(Chat, self).addUser(nick) |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
507 self.occupants_widget.addUser(occupant) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
508 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
509 def removeUser(self, occupant_data): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
510 occupant = super(Chat, self).removeUser(occupant_data) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
511 if occupant is not None: |
1987
ab439ffe4113
primitivus (chat): moved occupants widget to a dedicated class + display occupants count in footer
Goffi <goffi@goffi.org>
parents:
1980
diff
changeset
|
512 self.occupants_widget.removeUser(occupant) |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
513 |
2988
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
514 def occupantsClear(self): |
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
515 super(Chat, self).occupantsClear() |
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
516 self.occupants_widget.clear() |
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
517 |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
518 def _occupantsClicked(self, occupant, clicked_wid): |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
519 assert self.type == C.CHAT_GROUP |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
520 contact_list = self.host.contact_lists[self.profile] |
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
521 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
522 # we have a click on a nick, we need to create the widget if it doesn't exists |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
523 self.getOrCreatePrivateWidget(occupant.jid) |
511
62f7f2403093
Primitivus: present contacts in groups chat can now be clicked
Goffi <goffi@goffi.org>
parents:
510
diff
changeset
|
524 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
525 # now we select the new window |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
526 for contact_list in self.host.widgets.getWidgets( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
527 ContactList, profiles=(self.profile,) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
528 ): |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
529 contact_list.setFocus(occupant.jid, True) |
124 | 530 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
531 def _appendOccupantsPanel(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
532 self.chat_colums.contents.append((self.occupants_panel, ("weight", 2, False))) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
533 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
534 def _removeOccupantsPanel(self): |
607
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
535 for widget, options in self.chat_colums.contents: |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
536 if widget is self.occupants_panel: |
607
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
537 self.chat_colums.contents.remove((widget, options)) |
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
538 break |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
539 |
1360
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
540 def addGamePanel(self, widget): |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
541 """Insert a game panel to this Chat dialog. |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
542 |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
543 @param widget (Widget): the game panel |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
544 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
545 assert len(self.pile.contents) == 1 |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
546 self.pile.contents.insert(0, (widget, ("weight", 1))) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
547 self.pile.contents.insert(1, (urwid.Filler(urwid.Divider("-"), ("fixed", 1)))) |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
137
diff
changeset
|
548 self.host.redraw() |
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
137
diff
changeset
|
549 |
1360
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
550 def removeGamePanel(self, widget): |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
551 """Remove the game panel from this Chat dialog. |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
552 |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
553 @param widget (Widget): the game panel |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
554 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
555 assert len(self.pile.contents) == 3 |
607
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
556 del self.pile.contents[0] |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
137
diff
changeset
|
557 self.host.redraw() |
124 | 558 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
559 def setSubject(self, subject, wrap="space"): |
120 | 560 """Set title for a group chat""" |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
561 quick_chat.QuickChat.setSubject(self, subject) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
562 self.subj_wid = urwid.Text( |
3028 | 563 str(subject.replace("\n", "|") if wrap == "clip" else subject), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
564 align="left" if wrap == "clip" else "center", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
565 wrap=wrap, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
566 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
567 self.chat_widget.header = urwid.AttrMap(self.subj_wid, "title") |
130
5a88ad24ccc0
Primitivus: subject in group chat can now be shown in 3 ways: clip, full, or hidden
Goffi <goffi@goffi.org>
parents:
126
diff
changeset
|
568 self.host.redraw() |
124 | 569 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
570 ## Messages |
1125
d6c3fea5ecfe
quick_frontend, primitivus: add primitivus command ":history [limit]" (default value for limit is 50)
souliane <souliane@mailoo.org>
parents:
1120
diff
changeset
|
571 |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
572 def printMessages(self, clear=True): |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
573 """generate message widgets |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
574 |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
575 @param clear(bool): clear message before printing if true |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
576 """ |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
577 if clear: |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
578 del self.mess_walker[:] |
3028 | 579 for message in self.messages.values(): |
2992
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
580 self.appendMessage(message, minor_notifs=False) |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
581 |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
582 def redraw(self): |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
583 """redraw all messages""" |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
584 for w in self.mess_walker: |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
585 try: |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
586 w.redraw() |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
587 except AttributeError: |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
588 pass |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
589 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
590 def updateHistory(self, size=C.HISTORY_LIMIT_DEFAULT, filters=None, profile="@NONE@"): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
591 del self.mess_walker[:] |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
592 if filters and "search" in filters: |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
593 self.mess_walker.append( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
594 urwid.Text( |
3028 | 595 _("Results for searching the globbing pattern: {}").format( |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
596 filters["search"] |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
597 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
598 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
599 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
600 self.mess_walker.append( |
3028 | 601 urwid.Text(_("Type ':history <lines>' to reset the chat history")) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
602 ) |
2013
b536dd121da1
backend (memory), frontends: improved history filtering:
Goffi <goffi@goffi.org>
parents:
2010
diff
changeset
|
603 super(Chat, self).updateHistory(size, filters, profile) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
604 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
605 def _onHistoryPrinted(self): |
1125
d6c3fea5ecfe
quick_frontend, primitivus: add primitivus command ":history [limit]" (default value for limit is 50)
souliane <souliane@mailoo.org>
parents:
1120
diff
changeset
|
606 """Refresh or scroll down the focus after the history is printed""" |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
607 self.printMessages(clear=False) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
608 super(Chat, self)._onHistoryPrinted() |
1125
d6c3fea5ecfe
quick_frontend, primitivus: add primitivus command ":history [limit]" (default value for limit is 50)
souliane <souliane@mailoo.org>
parents:
1120
diff
changeset
|
609 |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
610 def onPrivateCreated(self, widget): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
611 self.host.contact_lists[widget.profile].setSpecial( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
612 widget.target, C.CONTACT_SPECIAL_GROUP |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
613 ) |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
614 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
615 def onSelected(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
616 self.focus_marker_set = False |
678
a630b94280d5
primitivus: code factorization for user notification
souliane <souliane@mailoo.org>
parents:
638
diff
changeset
|
617 |
1786
104874018ab0
quick_frontend, primitivus (chat): move notification command to quick_frontend
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
618 def notify(self, contact="somebody", msg=""): |
678
a630b94280d5
primitivus: code factorization for user notification
souliane <souliane@mailoo.org>
parents:
638
diff
changeset
|
619 """Notify the user of a new message if primitivus doesn't have the focus. |
1748
3a6cd1c14974
frontends: small message refactorisation:
souliane <souliane@mailoo.org>
parents:
1637
diff
changeset
|
620 |
3a6cd1c14974
frontends: small message refactorisation:
souliane <souliane@mailoo.org>
parents:
1637
diff
changeset
|
621 @param contact (unicode): contact who wrote to the users |
3a6cd1c14974
frontends: small message refactorisation:
souliane <souliane@mailoo.org>
parents:
1637
diff
changeset
|
622 @param msg (unicode): the message that has been received |
678
a630b94280d5
primitivus: code factorization for user notification
souliane <souliane@mailoo.org>
parents:
638
diff
changeset
|
623 """ |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
624 # FIXME: not called anymore after refactoring |
739
7b72d5c30ebc
primivitus: do not notify when an empty message is received
souliane <souliane@mailoo.org>
parents:
688
diff
changeset
|
625 if msg == "": |
7b72d5c30ebc
primivitus: do not notify when an empty message is received
souliane <souliane@mailoo.org>
parents:
688
diff
changeset
|
626 return |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
627 if self.mess_widgets.get_focus()[1] == len(self.mess_walker) - 2: |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
628 # we don't change focus if user is not at the bottom |
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
629 # as that mean that he is probably watching discussion history |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
630 self.mess_widgets.focus_position = len(self.mess_walker) - 1 |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
631 self.host.redraw() |
507
f98bef71a918
frontends, core, plugin XEP-0045: leave implementation + better nick change
Goffi <goffi@goffi.org>
parents:
501
diff
changeset
|
632 if not self.host.x_notify.hasFocus(): |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
633 if self.type == C.CHAT_ONE2ONE: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
634 self.host.x_notify.sendNotification( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
635 _("Primitivus: %s is talking to you") % contact |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
636 ) |
1410
e2e75c3c7c7b
quick_frontend, primitivus: fixes a couple of issues:
souliane <souliane@mailoo.org>
parents:
1396
diff
changeset
|
637 elif self.nick is not None and self.nick.lower() in msg.lower(): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
638 self.host.x_notify.sendNotification( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
639 _("Primitivus: %(user)s mentioned you in room '%(room)s'") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
640 % {"user": contact, "room": self.target} |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
641 ) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
642 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
643 # MENU EVENTS # |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
644 def onTarotRequest(self, menu): |
1093
11e2bb20e896
core, frontends (menus): MENU_ROOM and MENU_SINGLE are now managed
Goffi <goffi@goffi.org>
parents:
1063
diff
changeset
|
645 # TODO: move this to plugin_misc_tarot with dynamic menu |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
646 if len(self.occupants) != 4: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
647 self.host.showPopUp( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
648 sat_widgets.Alert( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
649 _("Can't start game"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
650 _( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
651 "You need to be exactly 4 peoples in the room to start a Tarot game" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
652 ), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
653 ok_cb=self.host.removePopUp, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
654 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
655 ) |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
656 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
657 self.host.bridge.tarotGameCreate( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
658 self.target, list(self.occupants), self.profile |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
659 ) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
660 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
661 # MISC EVENTS # |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
662 |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
663 def onDelete(self): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
664 # FIXME: to be checked after refactoring |
2067
7834743705f0
quich frontend, primivius (chat): better avatar handling:
Goffi <goffi@goffi.org>
parents:
2029
diff
changeset
|
665 super(Chat, self).onDelete() |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
666 if self.type == C.CHAT_GROUP: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
667 self.host.removeListener("presence", self.presenceListener) |
1388
a025242bebe7
quick_frontend, primitivus: remove QuickChat.updateEntityState and QuickChat.setContactStates, use more general QuickChat.update (also called when joining the room to initialise the occupants list)
souliane <souliane@mailoo.org>
parents:
1386
diff
changeset
|
668 |
2007
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
669 def onChatState(self, from_jid, state, profile): |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
670 super(Chat, self).onChatState(from_jid, state, profile) |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
671 if self.type == C.CHAT_ONE2ONE: |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
672 self.title_dynamic = C.CHAT_STATE_ICON[state] |
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
673 self.host.redraw() # FIXME: should not be necessary |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
674 |
2022
88c41a195728
primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
Goffi <goffi@goffi.org>
parents:
2020
diff
changeset
|
675 def _onSubjectDialogCb(self, button, dialog): |
88c41a195728
primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
Goffi <goffi@goffi.org>
parents:
2020
diff
changeset
|
676 self.changeSubject(dialog.text) |
88c41a195728
primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
Goffi <goffi@goffi.org>
parents:
2020
diff
changeset
|
677 self.host.removePopUp(dialog) |
88c41a195728
primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
Goffi <goffi@goffi.org>
parents:
2020
diff
changeset
|
678 |
88c41a195728
primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
Goffi <goffi@goffi.org>
parents:
2020
diff
changeset
|
679 def onSubjectDialog(self, new_subject=None): |
88c41a195728
primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
Goffi <goffi@goffi.org>
parents:
2020
diff
changeset
|
680 dialog = sat_widgets.InputDialog( |
3028 | 681 _("Change title"), |
682 _("Enter the new title"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
683 default_txt=new_subject if new_subject is not None else self.subject, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
684 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
685 dialog.setCallback("ok", self._onSubjectDialogCb, dialog) |
2765
378188abe941
misc: replaced all "dummy" by the more conventional and readable "__" ("_" being used for gettext)
Goffi <goffi@goffi.org>
parents:
2736
diff
changeset
|
686 dialog.setCallback("cancel", lambda __: self.host.removePopUp(dialog)) |
2022
88c41a195728
primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
Goffi <goffi@goffi.org>
parents:
2020
diff
changeset
|
687 self.host.showPopUp(dialog) |
88c41a195728
primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
Goffi <goffi@goffi.org>
parents:
2020
diff
changeset
|
688 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
689 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
690 quick_widgets.register(quick_chat.QuickChat, Chat) |
1360
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
691 quick_widgets.register(quick_games.Tarot, game_tarot.TarotGame) |