# HG changeset patch # User Goffi # Date 1467131396 -7200 # Node ID 70e83ca721c8903f872d3e601b311bc061ffa1b5 # Parent 8156f2116dc952877d5028de0dfc906cf2e417b1 primitivus (chat): fixed timestamp/nick (un)hiding + new redraw and printMessages methods diff -r 8156f2116dc9 -r 70e83ca721c8 frontends/src/primitivus/chat.py --- a/frontends/src/primitivus/chat.py Tue Jun 28 18:27:02 2016 +0200 +++ b/frontends/src/primitivus/chat.py Tue Jun 28 18:29:56 2016 +0200 @@ -81,7 +81,7 @@ @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 @@ 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 @@ 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 @@ 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 @@ ## 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 @@ 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):