Mercurial > libervia-backend
annotate sat_frontends/primitivus/chat.py @ 3101:ab7e8ade848a
plugin XEP-0045: added room statuses to metadata:
room statuses are now sent with other metadata on bridge signals, and saved in Room
instance. They give useful data on the room, for instance they can be used to know if a
full jid is used in this room.
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 30 Dec 2019 20:44:02 +0100 |
parents | ab2696e34d29 |
children | 9d0df638c8b4 |
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, |
3101
ab7e8ade848a
plugin XEP-0045: added room statuses to metadata:
Goffi <goffi@goffi.org>
parents:
3028
diff
changeset
|
286 subject=None, statuses=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__( | |
3101
ab7e8ade848a
plugin XEP-0045: added room statuses to metadata:
Goffi <goffi@goffi.org>
parents:
3028
diff
changeset
|
295 self, host, target, type_, nick, occupants, subject, statuses, |
ab7e8ade848a
plugin XEP-0045: added room statuses to metadata:
Goffi <goffi@goffi.org>
parents:
3028
diff
changeset
|
296 profiles=profiles |
3028 | 297 ) |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
298 |
1290
faa1129559b8
core, frontends: refactoring to base Libervia on QuickFrontend (big mixed commit):
Goffi <goffi@goffi.org>
parents:
1265
diff
changeset
|
299 # 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
|
300 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
|
301 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
|
302 self.occupants_widget = OccupantsWidget(self) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
303 self.occupants_panel = sat_widgets.VerticalSeparator( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
304 self.occupants_widget |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
305 ) |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
306 self._appendOccupantsPanel() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
307 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
|
308 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
309 # 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
|
310 self.focus_marker = None # link to current marker |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
311 self.focus_marker_set = None # True if a new marker has been inserted |
124 | 312 self.show_timestamp = True |
313 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
|
314 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
|
315 self.postInit() |
124 | 316 |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
317 @property |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
318 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
|
319 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
|
320 |
124 | 321 def keypress(self, size, key): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
322 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
|
323 if self.type == C.CHAT_GROUP: |
607
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
324 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
|
325 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
|
326 self._removeOccupantsPanel() |
124 | 327 else: |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
328 self._appendOccupantsPanel() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
329 elif key == a_key["TIMESTAMP_HIDE"]: # user wants to (un)hide timestamp |
124 | 330 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
|
331 self.redraw() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
332 elif key == a_key["SHORT_NICKNAME"]: # user wants to (not) use short nick |
124 | 333 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
|
334 self.redraw() |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
335 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
|
336 # user wants to (un)hide group's subject or change its apperance |
124 | 337 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
|
338 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
|
339 if self.show_title == 0: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
340 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
|
341 elif self.show_title == 1: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
342 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
|
343 elif self.show_title == 2: |
124 | 344 self.chat_widget.header = None |
345 self._invalidate() | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
346 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
|
347 self.mess_widgets.focus_position = len(self.mess_walker) - 1 |
124 | 348 |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
349 return super(Chat, self).keypress(size, key) |
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
350 |
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
|
351 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
|
352 """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
|
353 |
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 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
|
355 """ |
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 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
|
357 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
|
358 |
9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
359 space = text.rfind(" ") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
360 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
|
361 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
|
362 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
|
363 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
|
364 try: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
365 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
|
366 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
|
367 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
|
368 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
|
369 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
|
370 word_idx = 0 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
371 word = completion_data["last_word"] = words[word_idx] |
3028 | 372 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
|
373 |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
374 def getMenu(self): |
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
375 """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
|
376 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
|
377 if self.type == C.CHAT_GROUP: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
378 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
|
379 game = _("Game") |
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
380 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
|
381 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
|
382 # 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
|
383 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
|
384 if not self.target.resource: |
7751b5a51586
primivitus: fixed crash when self.target is a full jid
Goffi <goffi@goffi.org>
parents:
1634
diff
changeset
|
385 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
|
386 else: |
7751b5a51586
primivitus: fixed crash when self.target is a full jid
Goffi <goffi@goffi.org>
parents:
1634
diff
changeset
|
387 full_jid = self.target |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
388 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
|
389 return menu |
124 | 390 |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
391 def setFilter(self, args): |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
392 """set filtering of messages |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
393 |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
394 @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
|
395 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
|
396 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
|
397 """ |
1967
de6faf9be715
primitivus (chat): fixed filters clearing when changing filter while one already exists
Goffi <goffi@goffi.org>
parents:
1966
diff
changeset
|
398 del self.filters[:] |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
399 if args: |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
400 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
|
401 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
|
402 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
|
403 |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
404 self.printMessages() |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
405 |
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
|
406 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
|
407 """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
|
408 |
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
|
409 @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
|
410 @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
|
411 @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
|
412 @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
|
413 @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
|
414 """ |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
415 # 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
|
416 return |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
417 # assert self.type == C.CHAT_GROUP |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
418 # if entity.bare != self.target: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
419 # return |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
420 # 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
|
421 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
422 def createMessage(self, message): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
423 self.appendMessage(message) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
424 |
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
|
425 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
|
426 """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
|
427 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
|
428 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
|
429 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
|
430 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
|
431 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
|
432 |
2992
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
433 def appendMessage(self, message, minor_notifs=True): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
434 """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
|
435 |
2992
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
436 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
|
437 @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
|
438 @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
|
439 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
|
440 (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
|
441 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
|
442 message to be notified. |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
443 """ |
1966
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
444 if self.filters: |
d727aab9a80e
primitivus: basic handling of filter, only language can filtered for now
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
445 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
|
446 return |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
447 |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
448 if self.handleUserMoved(message): |
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
449 return |
637
3b02554d4c8b
primitivus: chat state implementation
souliane <souliane@mailoo.org>
parents:
610
diff
changeset
|
450 |
2904
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
451 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
|
452 and self.focus_marker_set is not None): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
453 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
|
454 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
|
455 try: |
5bba8953061e
primitivus (chat): fixed crash when removing focus_marker after a :search or :history command
Goffi <goffi@goffi.org>
parents:
2881
diff
changeset
|
456 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
|
457 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
|
458 # 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
|
459 # 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
|
460 # 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
|
461 pass |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
462 self.focus_marker = urwid.Divider("—") |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
463 self.mess_walker.append(self.focus_marker) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
464 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
|
465 self._scrollDown() |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
466 else: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
467 if self.focus_marker_set: |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
468 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
|
469 |
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
|
470 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
|
471 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
|
472 self._scrollDown() |
2881
13e0a260e7b8
primitivus (chat): use the factorised code for user moved info messages.
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
473 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
|
474 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
|
475 |
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
|
476 # notifications |
2010
d2144d04065e
primitivus (chat): don't send notification for move messages
Goffi <goffi@goffi.org>
parents:
2008
diff
changeset
|
477 |
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
|
478 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
|
479 # 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
|
480 # 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
|
481 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
|
482 |
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
|
483 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
|
484 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
|
485 msg = _( |
3028 | 486 "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
|
487 nick=wid.mess_data.nick, room=self.target |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
488 ) |
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
|
489 ) |
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 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
|
491 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
|
492 ) |
2992
4d5b9d4c7448
primitivus (chat): don't show minor notifications (all but mentions) when printing history
Goffi <goffi@goffi.org>
parents:
2988
diff
changeset
|
493 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
|
494 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
|
495 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
|
496 from_jid = wid.mess_data.from_jid |
3028 | 497 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
|
498 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
|
499 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
|
500 ) |
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 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
|
502 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
|
503 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
|
504 ) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
505 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
506 def addUser(self, nick): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
507 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
|
508 self.occupants_widget.addUser(occupant) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
509 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
510 def removeUser(self, occupant_data): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
511 occupant = super(Chat, self).removeUser(occupant_data) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
512 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
|
513 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
|
514 |
2988
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
515 def occupantsClear(self): |
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
516 super(Chat, self).occupantsClear() |
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
517 self.occupants_widget.clear() |
b5f8cb26ef6f
quick frontend (chat), primitivus(chat): properly clear occupants on resync:
Goffi <goffi@goffi.org>
parents:
2904
diff
changeset
|
518 |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
519 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
|
520 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
|
521 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
|
522 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
523 # 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
|
524 self.getOrCreatePrivateWidget(occupant.jid) |
511
62f7f2403093
Primitivus: present contacts in groups chat can now be clicked
Goffi <goffi@goffi.org>
parents:
510
diff
changeset
|
525 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
526 # now we select the new window |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
527 for contact_list in self.host.widgets.getWidgets( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
528 ContactList, profiles=(self.profile,) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
529 ): |
2020
f67da1cab6d3
quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:
Goffi <goffi@goffi.org>
parents:
2018
diff
changeset
|
530 contact_list.setFocus(occupant.jid, True) |
124 | 531 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
532 def _appendOccupantsPanel(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
533 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
|
534 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
535 def _removeOccupantsPanel(self): |
607
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
536 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
|
537 if widget is self.occupants_panel: |
607
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
538 self.chat_colums.contents.remove((widget, options)) |
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
539 break |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
540 |
1360
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
541 def addGamePanel(self, widget): |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
542 """Insert a game panel to this Chat dialog. |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
543 |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
544 @param widget (Widget): the game panel |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
545 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
546 assert len(self.pile.contents) == 1 |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
547 self.pile.contents.insert(0, (widget, ("weight", 1))) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
548 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
|
549 self.host.redraw() |
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
137
diff
changeset
|
550 |
1360
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
551 def removeGamePanel(self, widget): |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
552 """Remove the game panel from this Chat dialog. |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
553 |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
554 @param widget (Widget): the game panel |
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
555 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
556 assert len(self.pile.contents) == 3 |
607
c123dddaea6b
primitivus: fixed urwid issues with recent urwid versions
Goffi <goffi@goffi.org>
parents:
587
diff
changeset
|
557 del self.pile.contents[0] |
144
80661755ea8d
Primitivus: Tarot card game implementation
Goffi <goffi@goffi.org>
parents:
137
diff
changeset
|
558 self.host.redraw() |
124 | 559 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
560 def setSubject(self, subject, wrap="space"): |
120 | 561 """Set title for a group chat""" |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
562 quick_chat.QuickChat.setSubject(self, subject) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
563 self.subj_wid = urwid.Text( |
3028 | 564 str(subject.replace("\n", "|") if wrap == "clip" else subject), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
565 align="left" if wrap == "clip" else "center", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
566 wrap=wrap, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
567 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
568 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
|
569 self.host.redraw() |
124 | 570 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
571 ## 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
|
572 |
1979
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
573 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
|
574 """generate message widgets |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
575 |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
576 @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
|
577 """ |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
578 if clear: |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
579 del self.mess_walker[:] |
3028 | 580 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
|
581 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
|
582 |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
583 def redraw(self): |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
584 """redraw all messages""" |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
585 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
|
586 try: |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
587 w.redraw() |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
588 except AttributeError: |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
589 pass |
70e83ca721c8
primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods
Goffi <goffi@goffi.org>
parents:
1973
diff
changeset
|
590 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
591 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
|
592 del self.mess_walker[:] |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
593 if filters and "search" in filters: |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
594 self.mess_walker.append( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
595 urwid.Text( |
3028 | 596 _("Results for searching the globbing pattern: {}").format( |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
597 filters["search"] |
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 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
601 self.mess_walker.append( |
3028 | 602 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
|
603 ) |
2013
b536dd121da1
backend (memory), frontends: improved history filtering:
Goffi <goffi@goffi.org>
parents:
2010
diff
changeset
|
604 super(Chat, self).updateHistory(size, filters, profile) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
605 |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
606 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
|
607 """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
|
608 self.printMessages(clear=False) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
609 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
|
610 |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
611 def onPrivateCreated(self, widget): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
612 self.host.contact_lists[widget.profile].setSpecial( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
613 widget.target, C.CONTACT_SPECIAL_GROUP |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
614 ) |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
615 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
616 def onSelected(self): |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
617 self.focus_marker_set = False |
678
a630b94280d5
primitivus: code factorization for user notification
souliane <souliane@mailoo.org>
parents:
638
diff
changeset
|
618 |
1786
104874018ab0
quick_frontend, primitivus (chat): move notification command to quick_frontend
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
619 def notify(self, contact="somebody", msg=""): |
678
a630b94280d5
primitivus: code factorization for user notification
souliane <souliane@mailoo.org>
parents:
638
diff
changeset
|
620 """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
|
621 |
3a6cd1c14974
frontends: small message refactorisation:
souliane <souliane@mailoo.org>
parents:
1637
diff
changeset
|
622 @param contact (unicode): contact who wrote to the users |
3a6cd1c14974
frontends: small message refactorisation:
souliane <souliane@mailoo.org>
parents:
1637
diff
changeset
|
623 @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
|
624 """ |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
625 # 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
|
626 if msg == "": |
7b72d5c30ebc
primivitus: do not notify when an empty message is received
souliane <souliane@mailoo.org>
parents:
688
diff
changeset
|
627 return |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
628 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
|
629 # 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
|
630 # 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
|
631 self.mess_widgets.focus_position = len(self.mess_walker) - 1 |
119
ded2431cea5a
Primitivus: chat window / text sending.
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
632 self.host.redraw() |
507
f98bef71a918
frontends, core, plugin XEP-0045: leave implementation + better nick change
Goffi <goffi@goffi.org>
parents:
501
diff
changeset
|
633 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
|
634 if self.type == C.CHAT_ONE2ONE: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
635 self.host.x_notify.sendNotification( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
636 _("Primitivus: %s is talking to you") % contact |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
637 ) |
1410
e2e75c3c7c7b
quick_frontend, primitivus: fixes a couple of issues:
souliane <souliane@mailoo.org>
parents:
1396
diff
changeset
|
638 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
|
639 self.host.x_notify.sendNotification( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
640 _("Primitivus: %(user)s mentioned you in room '%(room)s'") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
641 % {"user": contact, "room": self.target} |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
642 ) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
643 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
644 # MENU EVENTS # |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
645 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
|
646 # 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
|
647 if len(self.occupants) != 4: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
648 self.host.showPopUp( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
649 sat_widgets.Alert( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
650 _("Can't start game"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
651 _( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
652 "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
|
653 ), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
654 ok_cb=self.host.removePopUp, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
655 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
656 ) |
137
227394eb080c
Primitivus: menu are now managed and fully working
Goffi <goffi@goffi.org>
parents:
130
diff
changeset
|
657 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
658 self.host.bridge.tarotGameCreate( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
659 self.target, list(self.occupants), self.profile |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
660 ) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
661 |
1382
b01efa1c0f5e
quick_frontend, primitivus: better PEP-8 compliance + remove/rename some (Quick)Chat attributes:
souliane <souliane@mailoo.org>
parents:
1378
diff
changeset
|
662 # MISC EVENTS # |
1265
e3a9ea76de35
quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p):
Goffi <goffi@goffi.org>
parents:
1223
diff
changeset
|
663 |
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
|
664 def onDelete(self): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
665 # FIXME: to be checked after refactoring |
2067
7834743705f0
quich frontend, primivius (chat): better avatar handling:
Goffi <goffi@goffi.org>
parents:
2029
diff
changeset
|
666 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
|
667 if self.type == C.CHAT_GROUP: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
668 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
|
669 |
2007
19b9d3f8a6c7
plugin XEP-0085, quick_frontends, primitivus: chat states are working again
Goffi <goffi@goffi.org>
parents:
1993
diff
changeset
|
670 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
|
671 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
|
672 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
|
673 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
|
674 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
|
675 |
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
|
676 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
|
677 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
|
678 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
|
679 |
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 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
|
681 dialog = sat_widgets.InputDialog( |
3028 | 682 _("Change title"), |
683 _("Enter the new title"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
684 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
|
685 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
686 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
|
687 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
|
688 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
|
689 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
690 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
691 quick_widgets.register(quick_chat.QuickChat, Chat) |
1360
8ea8fa13c351
frontends (quick_frontend, primitivus): fixes room games:
souliane <souliane@mailoo.org>
parents:
1290
diff
changeset
|
692 quick_widgets.register(quick_games.Tarot, game_tarot.TarotGame) |