primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods

This commit is contained in:
Goffi 2016-06-28 18:29:56 +02:00
commit 2e204f182a

View file

@ -81,7 +81,7 @@ class MessageWidget(urwid.WidgetWrap):
@message.setter
def message(self, value):
self.mess_data.message = {'':value}
self._w.set_text(self.markup)
self.redraw()
@property
def type(self):
@ -90,6 +90,9 @@ class MessageWidget(urwid.WidgetWrap):
except AttributeError:
return C.MESS_TYPE_INFO
def redraw(self):
self._w.set_text(self.markup)
def selectable(self):
return True
@ -241,12 +244,10 @@ class Chat(PrimitivusWidget, quick_chat.QuickChat):
self._appendOccupantsPanel()
elif key == a_key['TIMESTAMP_HIDE']: # user wants to (un)hide timestamp
self.show_timestamp = not self.show_timestamp
for wid in self.mess_walker:
wid._invalidate()
self.redraw()
elif key == a_key['SHORT_NICKNAME']: # user wants to (not) use short nick
self.show_short_nick = not self.show_short_nick
for wid in self.mess_walker:
wid._invalidate()
self.redraw()
elif key == a_key['SUBJECT_SWITCH']: # user wants to (un)hide group's subject or change its apperance
if self.subject:
self.show_title = (self.show_title + 1) % 3
@ -313,9 +314,7 @@ class Chat(PrimitivusWidget, quick_chat.QuickChat):
lang = args[0][5:].strip()
self.filters.append(lambda mess_data: lang in mess_data.message)
del self.mess_walker[:]
for message in self.messages.itervalues():
self.appendMessage(message)
self.printMessages()
def presenceListener(self, entity, show, priority, statuses, profile):
"""Update entity's presence status
@ -476,6 +475,24 @@ class Chat(PrimitivusWidget, quick_chat.QuickChat):
## Messages
def printMessages(self, clear=True):
"""generate message widgets
@param clear(bool): clear message before printing if true
"""
if clear:
del self.mess_walker[:]
for message in self.messages.itervalues():
self.appendMessage(message)
def redraw(self):
"""redraw all messages"""
for w in self.mess_walker:
try:
w.redraw()
except AttributeError:
pass
def updateHistory(self, size=C.HISTORY_LIMIT_DEFAULT, search='', profile='@NONE@'):
del self.mess_walker[:]
if search:
@ -485,8 +502,7 @@ class Chat(PrimitivusWidget, quick_chat.QuickChat):
def _onHistoryPrinted(self):
"""Refresh or scroll down the focus after the history is printed"""
for message in self.messages.itervalues():
self.appendMessage(message)
self.printMessages(clear=False)
super(Chat, self)._onHistoryPrinted()
def onPrivateCreated(self, widget):