Mercurial > pidgin
changeset 18714:121d1560346c
A few updates to the rss reader.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sun, 29 Jul 2007 10:37:10 +0000 |
parents | 8000beb73585 |
children | 64a7b13d3b8d |
files | finch/libgnt/pygnt/example/rss/gntrss-ui.py finch/libgnt/pygnt/example/rss/gntrss.py |
diffstat | 2 files changed, 21 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/finch/libgnt/pygnt/example/rss/gntrss-ui.py Sun Jul 29 07:59:10 2007 +0000 +++ b/finch/libgnt/pygnt/example/rss/gntrss-ui.py Sun Jul 29 10:37:10 2007 +0000 @@ -71,12 +71,15 @@ if property.name == 'unread': if feeds.active != item.parent: return + flag = 0 + if item == items.active: + flag = gnt.TEXT_FLAG_UNDERLINE if item.unread: item.parent.unread = item.parent.unread + 1 - items.set_row_flags(item, gnt.TEXT_FLAG_BOLD) + items.set_row_flags(item, flag | gnt.TEXT_FLAG_BOLD) else: item.parent.unread = item.parent.unread - 1 - items.set_row_flags(item, gnt.TEXT_FLAG_NORMAL) + items.set_row_flags(item, flag | gnt.TEXT_FLAG_NORMAL) item.parent.notify('unread') def add_feed_item(item): @@ -158,6 +161,8 @@ details.scroll(0) if item.unread: item.set_property('unread', False) + if old and old.unread: + old.set_property('unread', True) # # Look for action keys in the feed-item list. @@ -170,9 +175,13 @@ elif text == 'm': # Mark the current item 'read' if current.unread: current.set_property('unread', False) + tree.perform_action_key('j') elif text == 'U': # Mark the current item 'unread' if not current.unread: current.set_property('unread', True) + elif text == 'd': + current.remove() + tree.perform_action_key('j') else: return False return True
--- a/finch/libgnt/pygnt/example/rss/gntrss.py Sun Jul 29 07:59:10 2007 +0000 +++ b/finch/libgnt/pygnt/example/rss/gntrss.py Sun Jul 29 10:37:10 2007 +0000 @@ -36,6 +36,8 @@ def remove(self): self.emit('delete', self.parent) + if self.unread: + self.parent.set_property('unread', self.parent.unread - 1) def do_set_property(self, property, value): if property.name == 'unread': @@ -100,17 +102,20 @@ #result = self.thread.result #self.thread = None result = feedparser.parse(self.url) + # XXX Look at result['bozo'] first, and emit some signal that the UI can use + # to indicate (dim the row?) that the feed has invalid XML format or something + channel = result['channel'] self.set_property('link', channel['link']) self.set_property('desc', channel['description']) self.set_property('title', channel['title']) - self.set_property('unread', len(result['items'])) self.timer = 0 items = result['items'] tmp = {} for item in self.items: tmp[hash(item)] = item + unread = self.unread for item in items: try: exist = self.hash[item_hash(item)] @@ -120,9 +125,13 @@ self.items.append(itm) self.emit('added', itm) self.hash[item_hash(item)] = itm + unread = unread + 1 + for hv in tmp: tmp[hv].remove() + if unread != self.unread: + self.set_property('unread', unread) return False def refresh(self):