# HG changeset patch # User Goffi # Date 1363819373 -3600 # Node ID 39311c7dad77cfeb459cd87dcda2f1766dd0f11f # Parent ab239b3b67b333edb6a34fd9c9e41fad1f0fd31e browser side: it is now possible to select a microblog panel or an entry inside it diff -r ab239b3b67b3 -r 39311c7dad77 browser_side/panels.py --- a/browser_side/panels.py Thu Mar 07 01:16:13 2013 +0100 +++ b/browser_side/panels.py Wed Mar 20 23:42:53 2013 +0100 @@ -208,10 +208,11 @@ self.author = data['author'] self.timestamp = float(data.get('timestamp',0)) #XXX: int doesn't work here -class MicroblogEntry(SimplePanel): +class MicroblogEntry(SimplePanel, ClickHandler): - def __init__(self, host, mblog_entry): + def __init__(self, blog_panel, mblog_entry): SimplePanel.__init__(self) + self._blog_panel = blog_panel self.author = mblog_entry.author self.timestamp = mblog_entry.timestamp @@ -227,15 +228,21 @@ "timestamp": _datetime, "body": html_sanitize(mblog_entry.content) }) - self.avatar = Image(host.getAvatar(self.author)) + self.avatar = Image(blog_panel.host.getAvatar(self.author)) self.panel.add(self.avatar, "id_avatar") self.panel.setStyleName('mb_entry') self.add(self.panel) + ClickHandler.__init__(self) + self.addClickListener(self) def updateAvatar(self, new_avatar): """Change the avatar of the entry @param new_avatar: path to the new image""" self.avatar.setUrl(new_avatar) + + def onClick(self, sender): + print "microblog entry selected (author=%s)" % self.author + self._blog_panel.setSelectedEntry(self) class MicroblogPanel(base_widget.LiberviaWidget): @@ -244,11 +251,12 @@ """Panel used to show microblog @param accepted_groups: groups displayed in this panel, if empty, show all microblogs from all contacts """ - base_widget.LiberviaWidget.__init__(self, host, ", ".join(accepted_groups)) + base_widget.LiberviaWidget.__init__(self, host, ", ".join(accepted_groups), selectable = True) #base_widget.ScrollPanelWrapper.__init__(self) #DropCell.__init__(self) self.accepted_groups = accepted_groups self.entries = {} + self.selected_entry = None self.vpanel = VerticalPanel() self.vpanel.setStyleName('microblogPanel') self.setWidget(self.vpanel) @@ -300,7 +308,7 @@ """ if mblog_entry.id in self.entries: return - _entry = MicroblogEntry(self.host, mblog_entry) + _entry = MicroblogEntry(self, mblog_entry) self.entries[mblog_entry.id] = _entry # we look for the right index to insert our entry: @@ -315,6 +323,16 @@ idx+=1 self.vpanel.insert(_entry,idx) + def setSelectedEntry(self, entry): + if self.selected_entry == entry: + entry = None + if self.selected_entry: + self.selected_entry.removeStyleName('selected_entry') + if entry: + entry.addStyleName('selected_entry') + self.selected_entry = entry + + def updateValue(self, type, jid, value): """Update a jid value in entries @param type: one of 'avatar', 'nick' diff -r ab239b3b67b3 -r 39311c7dad77 public/libervia.css --- a/public/libervia.css Thu Mar 07 01:16:13 2013 +0100 +++ b/public/libervia.css Wed Mar 20 23:42:53 2013 +0100 @@ -726,6 +726,11 @@ background: #AFAFAF; } +.selected_widget .selected_entry .mb_entry_header +{ + background: #cf2828; +} + .mb_entry_author { font-weight: bold; }