# HG changeset patch # User Goffi # Date 1472426629 -7200 # Node ID 7819e9efa250e066b7e098ab747788d3665eab38 # Parent 12fdc7d1feb1ffdd417fd82861d0e5ae8382928d chat: avatar and nick are now displayed, need further aesthetic improvments diff -r 12fdc7d1feb1 -r 7819e9efa250 src/cagou/core/cagou_main.py --- a/src/cagou/core/cagou_main.py Sun Aug 28 16:50:56 2016 +0200 +++ b/src/cagou/core/cagou_main.py Mon Aug 29 01:23:49 2016 +0200 @@ -430,3 +430,6 @@ def closeUI(self): self.app.root.show() + + def getDefaultAvatar(self, entity=None): + return self.app.default_avatar diff -r 12fdc7d1feb1 -r 7819e9efa250 src/cagou/plugins/plugin_wid_chat.kv --- a/src/cagou/plugins/plugin_wid_chat.kv Sun Aug 28 16:50:56 2016 +0200 +++ b/src/cagou/plugins/plugin_wid_chat.kv Mon Aug 29 01:23:49 2016 +0200 @@ -14,6 +14,11 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . + +: + size_hint: None, None + size: dp(30), dp(30) + : spacing: self._spacing padding: self._padding @@ -25,37 +30,31 @@ : mess_label: mess_label + mess_box: mess_box size_hint: 1, None height: time_label.height + mess_label.height on_height: if root.parent: root.parent.sizeAdjust() on_width: self.sizeAdjust() - Label: - id: time_label - text_size: None, None - size_hint: 1, None - height: self.texture_size[1] - text: root.mess_data.time_text - halign: "center" + FloatLayout: + Label: + id: time_label + text_size: None, None + size_hint: 1, None + height: self.texture_size[1] + pos_hint: {'x':0, 'y':0} + text: root.mess_data.time_text + halign: "center" + Label: + size_hint: 1, 1 + text_size: self.size + pos_hint: {'x':0, 'y':0} + text: root.mess_data.nick + halign: "left" if root.mess_data.own_mess else "right" BoxLayout: + id: mess_box size_hint: None,None - size: mess_label.size + size: sum([c.width for c in self.children]), mess_label.height pos_hint: {'x': 0} if root.mess_data.own_mess else {'right': 1} - - # Label: - # id: nick_label - # text: root.mess_data.nick - # # text: unicode(self.texture_size) - # padding: 5, 5 - # bold: True - # # text_size: None, self.height - # # height: 20 - # size_hint: None, None - # size: self.texture_size - # pos_hint: {'top': 0} - # # width: self.texture_size[0] - # # height: max(self.texture_size[1], mess_label.height) - # # size_hint: None, 1 - # # valign: "top" Label: canvas.before: Color: diff -r 12fdc7d1feb1 -r 7819e9efa250 src/cagou/plugins/plugin_wid_chat.py --- a/src/cagou/plugins/plugin_wid_chat.py Sun Aug 28 16:50:56 2016 +0200 +++ b/src/cagou/plugins/plugin_wid_chat.py Mon Aug 29 01:23:49 2016 +0200 @@ -30,6 +30,7 @@ from sat_frontends.quick_frontend import quick_chat from sat_frontends.tools import jid from cagou.core import cagou_widget +from cagou.core.image import Image from cagou import G @@ -42,12 +43,27 @@ } +class MessAvatar(Image): + pass + + class MessageWidget(BoxLayout): mess_data = properties.ObjectProperty() - mess_label = properties.ObjectProperty(None) + mess_label = properties.ObjectProperty() + mess_box = properties.ObjectProperty() def __init__(self, **kwargs): BoxLayout.__init__(self, orientation='vertical', **kwargs) + avatar = MessAvatar(source=self.mess_data.avatar) + if self.mess_data.own_mess: + self.mess_box.add_widget(avatar, len(self.mess_box.children)) + else: + self.mess_box.add_widget(avatar) + + @property + def chat(self): + """return parent Chat instance""" + return self.mess_data.parent @property def message(self): @@ -57,14 +73,15 @@ def sizeAdjust(self): """this widget grows up with its children""" text_width, text_height = self.mess_label.texture_size - if text_width > self.parent.width: - self.mess_label.text_size = (self.parent.width - 10, None) + other_width = sum([c.width for c in self.mess_box.children if c != self.mess_label]) + if text_width + other_width > self.parent.width: + self.mess_label.text_size = (self.parent.width - other_width - 10, None) self.text_max = text_width - elif self.mess_label.text_size[0] is not None and text_width < self.parent.width - 10: + elif self.mess_label.text_size[0] is not None and text_width + other_width < self.parent.width - 10: if text_width > self.text_max: self.mess_label.text_size = (None, None) else: - self.mess_label.text_size = (self.parent.width - 10, None) + self.mess_label.text_size = (self.parent.width - other_width - 10, None) class MessageInputWidget(TextInput):