summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/lastlog.py58
1 files changed, 43 insertions, 15 deletions
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='<keyword>',
- help='Search <keyword> in the buffer and returns results'
- 'on the screen')
+ self.api.add_tab_command(
+ ConversationTab, 'lastlog', self.command_lastlog,
+ usage='<keyword>', help=(
+ 'Search <keyword> in the buffer and returns results'
+ 'on the screen'
+ ),
+ )
+ self.api.add_tab_command(
+ MucTab, 'lastlog', self.command_lastlog, usage='<keyword>',
+ help=('Search <keyword> in the buffer and returns results'
+ 'on the screen'),
+ )
+ self.api.add_tab_command(
+ PrivateTab, 'lastlog', self.command_lastlog, usage='<keyword>',
+ help=('Search <keyword> 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)