From a5e92800477f6195a6b2e8c6e64a56859117d5b8 Mon Sep 17 00:00:00 2001 From: mathieui Date: Sun, 29 Sep 2019 18:12:48 +0200 Subject: Pass a message to add_message instead of messed up kwargs everywhere Changes LOTS of things --- poezio/core/core.py | 55 +++++++++++--------- poezio/core/handlers.py | 131 ++++++++++++++++++++++++++++-------------------- 2 files changed, 106 insertions(+), 80 deletions(-) (limited to 'poezio/core') diff --git a/poezio/core/core.py b/poezio/core/core.py index 2b8252b1..8f25d551 100644 --- a/poezio/core/core.py +++ b/poezio/core/core.py @@ -53,8 +53,15 @@ from poezio.core.completions import CompletionCore from poezio.core.tabs import Tabs from poezio.core.commands import CommandCore from poezio.core.handlers import HandlerCore -from poezio.core.structs import POSSIBLE_SHOW, DEPRECATED_ERRORS, \ - ERROR_AND_STATUS_CODES, Command, Status +from poezio.core.structs import ( + Command, + Status, + DEPRECATED_ERRORS, + ERROR_AND_STATUS_CODES, + POSSIBLE_SHOW, +) + +from poezio.ui.types import Message, InfoMessage log = logging.getLogger(__name__) @@ -1317,7 +1324,7 @@ class Core: """ tab = self.tabs.by_name_and_class(jid, tabs.ConversationTab) if tab is not None: - tab.add_message(msg, typ=2) + tab.add_message(InfoMessage(msg), typ=2) if self.tabs.current_tab is tab: self.refresh_window() @@ -1349,9 +1356,11 @@ class Core: colors = get_theme().INFO_COLORS color = colors.get(typ.lower(), colors.get('default', None)) nb_lines = self.information_buffer.add_message( - txt=msg, - nickname=typ, - nick_color=color + Message( + txt=msg, + nickname=typ, + nick_color=color + ) ) popup_on = config.get('information_buffer_popup_on').split() if isinstance(self.tabs.current_tab, tabs.RosterInfoTab): @@ -1582,17 +1591,6 @@ class Core: self.tab_win.resize(1, tabs.Tab.width, tabs.Tab.height - 2, 0) self.left_tab_win = None - def add_message_to_text_buffer(self, buff, txt, nickname=None): - """ - Add the message to the room if possible, else, add it to the Info window - (in the Info tab of the info window in the RosterTab) - """ - if not buff: - self.information('Trying to add a message in no room: %s' % txt, - 'Error') - return - buff.add_message(txt, nickname=nickname) - def full_screen_redraw(self): """ Completely erase and redraw the screen @@ -2064,15 +2062,18 @@ class Core: return error_message = self.get_error_message(error) tab.add_message( - error_message, - highlight=True, - nickname='Error', - nick_color=get_theme().COLOR_ERROR_MSG, - typ=2) + Message( + error_message, + highlight=True, + nickname='Error', + nick_color=get_theme().COLOR_ERROR_MSG, + ), + typ=2, + ) code = error['error']['code'] if code == '401': msg = 'To provide a password in order to join the room, type "/join / password" (replace "password" by the real password)' - tab.add_message(msg, typ=2) + tab.add_message(InfoMessage(msg), typ=2) if code == '409': if config.get('alternative_nickname') != '': if not tab.joined: @@ -2081,8 +2082,12 @@ class Core: else: if not tab.joined: tab.add_message( - 'You can join the room with an other nick, by typing "/join /other_nick"', - typ=2) + InfoMessage( + 'You can join the room with another nick, ' + 'by typing "/join /other_nick"' + ), + typ=2, + ) self.refresh_window() diff --git a/poezio/core/handlers.py b/poezio/core/handlers.py index 2232f723..cf04d582 100644 --- a/poezio/core/handlers.py +++ b/poezio/core/handlers.py @@ -39,6 +39,7 @@ from poezio.logger import logger from poezio.roster import roster from poezio.text_buffer import CorrectionError, AckError from poezio.theming import dump_tuple, get_theme +from poezio.ui.types import XMLLog, Message as PMessage, BaseMessage, InfoMessage from poezio.core.commands import dumb_callback @@ -326,7 +327,7 @@ class HandlerCore: error = '\x19%s}%s\x19o' % (dump_tuple(get_theme().COLOR_CHAR_NACK), error_msg) if not tab.nack_message('\n' + error, message['id'], message['to']): - tab.add_message(error, typ=0) + tab.add_message(InfoMessage(error), typ=0) self.core.refresh_window() def on_normal_message(self, message): @@ -421,14 +422,17 @@ class HandlerCore: if not try_modify(): conversation.add_message( - body, - date, - nickname=remote_nick, - nick_color=color, - history=delayed, - identifier=message['id'], - jid=jid, - typ=1) + PMessage( + txt=body, + time=date, + nickname=remote_nick, + nick_color=color, + history=delayed, + identifier=message['id'], + jid=jid, + ), + typ=1, + ) if not own and 'private' in config.get('beep_on').split(): if not config.get_by_tabname('disable_beep', conv_jid.bare): @@ -769,12 +773,15 @@ class HandlerCore: except CorrectionError: log.debug('Unable to correct a message', exc_info=True) if not replaced and tab.add_message( - body, - date, - nick_from, - history=delayed, - identifier=message['id'], - jid=message['from'], + PMessage( + txt=body, + time=date, + nickname=nick_from, + history=delayed, + identifier=message['id'], + jid=message['from'], + user=user, + ), typ=1): self.core.events.trigger('highlight', message, tab) @@ -862,14 +869,16 @@ class HandlerCore: log.debug('Unable to correct a message', exc_info=True) if not replaced: tab.add_message( - body, - time=None, - nickname=sender_nick, - nick_color=get_theme().COLOR_OWN_NICK if sent else None, - forced_user=user, - identifier=message['id'], - jid=message['from'], - typ=1) + PMessage( + txt=body, + nickname=sender_nick, + nick_color=get_theme().COLOR_OWN_NICK if sent else None, + user=user, + identifier=message['id'], + jid=message['from'], + ), + typ=1, + ) if sent: tab.set_last_sent_message(message, correct=replaced) else: @@ -1361,36 +1370,52 @@ class HandlerCore: if show_unavailable or hide_unavailable or non_priv or logging_off\ or non_anon or semi_anon or full_anon: tab.add_message( - '\x19%(info_col)s}Info: A configuration change not privacy-related occurred.' % info_col, + InfoMessage( + 'Info: A configuration change not privacy-related occurred.' + ), typ=2) modif = True if show_unavailable: tab.add_message( - '\x19%(info_col)s}Info: The unavailable members are now shown.' % info_col, + InfoMessage( + 'Info: The unavailable members are now shown.' + ), typ=2) elif hide_unavailable: tab.add_message( - '\x19%(info_col)s}Info: The unavailable members are now hidden.' % info_col, + InfoMessage( + 'Info: The unavailable members are now hidden.', + ), typ=2) if non_anon: tab.add_message( - '\x191}Warning:\x19%(info_col)s} The room is now not anonymous. (public JID)' % info_col, + InfoMessage( + '\x191}Warning:\x19%(info_col)s} The room is now not anonymous. (public JID)' % info_col + ), typ=2) elif semi_anon: tab.add_message( - '\x19%(info_col)s}Info: The room is now semi-anonymous. (moderators-only JID)' % info_col, + InfoMessage( + 'Info: The room is now semi-anonymous. (moderators-only JID)', + ), typ=2) elif full_anon: tab.add_message( - '\x19%(info_col)s}Info: The room is now fully anonymous.' % info_col, + InfoMessage( + 'Info: The room is now fully anonymous.', + ), typ=2) if logging_on: tab.add_message( - '\x191}Warning: \x19%(info_col)s}This room is publicly logged' % info_col, + InfoMessage( + '\x191}Warning: \x19%(info_col)s}This room is publicly logged' % info_col + ), typ=2) elif logging_off: tab.add_message( - '\x19%(info_col)s}Info: This room is not logged anymore.' % info_col, + InfoMessage( + 'Info: This room is not logged anymore.', + ), typ=2) if modif: self.core.refresh_window() @@ -1434,15 +1459,17 @@ class HandlerCore: if nick_from: tab.add_message( - "%(user)s set the subject to: \x19%(text_col)s}%(subject)s" - % fmt, - str_time=time, + InfoMessage( + "%(user)s set the subject to: \x19%(text_col)s}%(subject)s" % fmt, + time=time, + ), typ=2) else: tab.add_message( - "\x19%(info_col)s}The subject is: \x19%(text_col)s}%(subject)s" - % fmt, - str_time=time, + InfoMessage( + "The subject is: \x19%(text_col)s}%(subject)s" % fmt, + time=time, + ), typ=2) tab.topic = subject tab.topic_from = nick_from @@ -1506,18 +1533,15 @@ class HandlerCore: xhtml_text, force=True).rstrip('\x19o').strip() else: poezio_colored = str(stanza) - char = get_theme().CHAR_XML_OUT - self.core.add_message_to_text_buffer( - self.core.xml_buffer, - poezio_colored, - nickname=char) + self.core.xml_buffer.add_message( + XMLLog(txt=poezio_colored, incoming=False), + ) try: if self.core.xml_tab.match_stanza( ElementBase(ET.fromstring(stanza))): - self.core.add_message_to_text_buffer( - self.core.xml_tab.filtered_buffer, - poezio_colored, - nickname=char) + self.core.xml_tab.filtered_buffer.add_message( + XMLLog(txt=poezio_colored, incoming=False), + ) except: # Most of the time what gets logged is whitespace pings. Skip. # And also skip tab updates. @@ -1540,17 +1564,14 @@ class HandlerCore: xhtml_text, force=True).rstrip('\x19o').strip() else: poezio_colored = str(stanza) - char = get_theme().CHAR_XML_IN - self.core.add_message_to_text_buffer( - self.core.xml_buffer, - poezio_colored, - nickname=char) + self.core.xml_buffer.add_message( + XMLLog(txt=poezio_colored, incoming=True), + ) try: if self.core.xml_tab.match_stanza(stanza): - self.core.add_message_to_text_buffer( - self.core.xml_tab.filtered_buffer, - poezio_colored, - nickname=char) + self.core.xml_tab.filtered_buffer.add_message( + XMLLog(txt=poezio_colored, incoming=True), + ) except: log.debug('', exc_info=True) if isinstance(self.core.tabs.current_tab, tabs.XMLTab): -- cgit v1.2.3