From 6cfd23196c935dbf4c6ef15091342576ef507c95 Mon Sep 17 00:00:00 2001 From: Maxime Buquet Date: Thu, 13 Jun 2019 00:23:48 +0530 Subject: patch from Maxime Buquet --- plugins/lastlog.py | 58 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 15 deletions(-) (limited to 'plugins') diff --git a/plugins/lastlog.py b/plugins/lastlog.py index 5198527e..ae946f46 100644 --- a/plugins/lastlog.py +++ b/plugins/lastlog.py @@ -12,7 +12,7 @@ import re from poezio.plugin import BasePlugin -from poezio import tabs +from poezio.tabs import ConversationTab, PrivateTab, MucTab from poezio.text_buffer import Message, TextBuffer @@ -32,32 +32,60 @@ def add_line(text_buffer: TextBuffer, text: str) -> None: ) +def add_message(text_buffer: TextBuffer, msg: Message) -> None: + """Adds a message to the TextBuffer""" + text_buffer.add_message( + msg.txt, + msg.time, + None, # Nickname + None, # Nick Color + False, # History + None, # User + msg.highlight, + msg.identifier, + msg.str_time, + None, # Jid + ) + + class Plugin(BasePlugin): """Lastlog Plugin""" def init(self): - for tab in tabs.ConversationTab, tabs.PrivateTab, tabs.MucTab: - self.api.add_tab_command( - tab, - 'lastlog', - self.command_lastlog, - usage='', - help='Search in the buffer and returns results' - 'on the screen') + self.api.add_tab_command( + ConversationTab, 'lastlog', self.command_lastlog, + usage='', help=( + 'Search in the buffer and returns results' + 'on the screen' + ), + ) + self.api.add_tab_command( + MucTab, 'lastlog', self.command_lastlog, usage='', + help=('Search in the buffer and returns results' + 'on the screen'), + ) + self.api.add_tab_command( + PrivateTab, 'lastlog', self.command_lastlog, usage='', + help=('Search in the buffer and returns results' + 'on the screen'), + ) def command_lastlog(self, input_): """Define lastlog command""" text_buffer = self.api.current_tab()._text_buffer - search_re = re.compile(input_, re.I) + search_re = re.compile(input_) res = [] - add_line(text_buffer, "Lastlog:") for message in text_buffer.messages: + if message.nickname is not None: + self.core.information('Foo: %s> %s' % (message.nickname, message.txt), 'Info') if message.nickname is not None and \ search_re.search(message.txt) is not None: res.append(message) - add_line(text_buffer, "%s" % (message.txt)) - add_line(text_buffer, "End of Lastlog") - self.api.current_tab().text_win.pos = 0 - self.api.current_tab().core.refresh_window() + + add_line(text_buffer, "Lastlog for '%s', %d match(es)" % (input_, len(res))) + + for message in res: + message.nickname = None + add_message(text_buffer, message) -- cgit v1.2.3