Author: asterix Date: 2007-06-25 00:33:00 +0200 (Mon, 25 Jun 2007) New Revision: 8306
Modified: trunk/src/common/atom.py trunk/src/common/connection_handlers.py trunk/src/disco.py Log: improve pubsub support. fixes #3103
Modified: trunk/src/common/atom.py =================================================================== --- trunk/src/common/atom.py 2007-06-24 21:19:41 UTC (rev 8305) +++ trunk/src/common/atom.py 2007-06-24 22:33:00 UTC (rev 8306) @@ -63,10 +63,11 @@ else: main_feed = None
- if self.getTag('source-feed') is not None: - source_feed = self.getTag('source-feed').getTagData('title') + if self.getTag('feed') is not None: + source_feed = self.getTag('feed').getTagData('title') else: source_feed = None +
if main_feed is not None and source_feed is not None: return u'%s: %s' % (main_feed, source_feed) @@ -78,14 +79,13 @@ return u''
feed_title = property(get_feed_title, None, None, - ''' Title of feed. It is built from entry's original feed title and title of feed + ''' Title of feed. It is built from entry''s original feed title and title of feed which delivered this entry. ''')
def get_feed_link(self): - ''' Get a link to main page of feed (in pubsub.com: second link of rel='alternate', - first contains raw xml data). ''' + ''' Get source link ''' try: - return self.getTag('source-feed').getTags('link', {'rel':'alternate'})[1].getData() + return self.getTag('feed').getTags('link',{'rel':'alternate'})[1].getData() except: return None
Modified: trunk/src/common/connection_handlers.py =================================================================== --- trunk/src/common/connection_handlers.py 2007-06-24 21:19:41 UTC (rev 8305) +++ trunk/src/common/connection_handlers.py 2007-06-24 22:33:00 UTC (rev 8306) @@ -1557,20 +1557,13 @@ if items is None: return
for item in items.getTags('item'): - # check for event type (for now only one type supported: pubsub.com events) - child = item.getTag('pubsub-message') - if child is not None: - # we have pubsub.com notification - child = child.getTag('feed') - if child is None: continue - - for entry in child.getTags('entry'): - # for each entry in feed (there shouldn't be more than one, - # but to be sure... - self.dispatch('ATOM_ENTRY', (atom.OldEntry(node=entry),)) + entry = item.getTag('entry') + if entry is not None: + # for each entry in feed (there shouldn't be more than one, + # but to be sure... + self.dispatch('ATOM_ENTRY', (atom.OldEntry(node=entry),)) continue # unknown type... probably user has another client who understands that event - raise common.xmpp.NodeProcessed
def _presenceCB(self, con, prs):
Modified: trunk/src/disco.py =================================================================== --- trunk/src/disco.py 2007-06-24 21:19:41 UTC (rev 8305) +++ trunk/src/disco.py 2007-06-24 22:33:00 UTC (rev 8306) @@ -76,7 +76,7 @@ ('_jid', 'weather'): (False, 'weather.png'), ('gateway', 'sip'): (False, 'sip.png'), ('directory', 'user'): (None, 'jud.png'), - ('pubsub', 'generic'): (None, 'pubsub.png'), + ('pubsub', 'generic'): (PubSubBrowser, 'pubsub.png'), ('pubsub', 'service'): (PubSubBrowser, 'pubsub.png'), ('proxy', 'bytestreams'): (None, 'bytestreams.png'), # Socks5 FT proxy
@@ -1792,7 +1792,8 @@ ''' Create treemodel for the window. ''' # JID, node, name (with description) - pango markup, dont have info?, subscribed? self.model = gtk.ListStore(str, str, str, bool, bool) - self.model.set_sort_column_id(3, gtk.SORT_ASCENDING) + # sort by name + self.model.set_sort_column_id(2, gtk.SORT_ASCENDING) self.window.services_treeview.set_model(self.model)
# Name column @@ -1803,7 +1804,8 @@ col.pack_start(renderer) col.set_attributes(renderer, markup=2) col.set_resizable(True) - self.window.services_treeview.insert_column(col, -1) + self.window.services_treeview.insert_column(col, -1) + self.window.services_treeview.set_headers_visible(True)
# Subscription state renderer = gtk.CellRendererToggle() @@ -1813,7 +1815,13 @@ col.set_resizable(False) self.window.services_treeview.insert_column(col, -1)
- self.window.services_treeview.set_headers_visible(True) + # Node Column + renderer = gtk.CellRendererText() + col = gtk.TreeViewColumn(_('Node')) + col.pack_start(renderer) + col.set_attributes(renderer, markup=1) + col.set_resizable(True) + self.window.services_treeview.insert_column(col, -1)
def _add_item(self, jid, node, item, force): ''' Called when we got basic information about new node from query. @@ -1829,7 +1837,7 @@
name = gobject.markup_escape_text(name) name = '<b>%s</b>' % name - + self.model.append((jid, node, name, dunno, subscribed))
def _add_actions(self):