Browsing discussion groups, first version.
This commit is contained in:
parent
75227bb835
commit
82739beea1
1 changed files with 60 additions and 0 deletions
60
src/disco.py
60
src/disco.py
|
@ -82,6 +82,7 @@ def _gen_agent_type_info():
|
||||||
('gateway', 'sip'): (False, 'sip.png'),
|
('gateway', 'sip'): (False, 'sip.png'),
|
||||||
('directory', 'user'): (None, 'jud.png'),
|
('directory', 'user'): (None, 'jud.png'),
|
||||||
('pubsub', 'generic'): (None, 'pubsub.png'),
|
('pubsub', 'generic'): (None, 'pubsub.png'),
|
||||||
|
('pubsub', 'service'): (PubSubBrowser, 'pubsub.png'),
|
||||||
('proxy', 'bytestreams'): (None, 'bytestreams.png'), # Socks5 FT proxy
|
('proxy', 'bytestreams'): (None, 'bytestreams.png'), # Socks5 FT proxy
|
||||||
|
|
||||||
# Transports
|
# Transports
|
||||||
|
@ -1659,6 +1660,65 @@ class MucBrowser(AgentBrowser):
|
||||||
# switch to alternate query mode
|
# switch to alternate query mode
|
||||||
self.cache.get_items(jid, node, self._channel_altinfo)
|
self.cache.get_items(jid, node, self._channel_altinfo)
|
||||||
|
|
||||||
|
def PubSubBrowser(account, jid, node):
|
||||||
|
''' Returns an AgentBrowser subclass that will display service discovery
|
||||||
|
for particular pubsub service. Different pubsub services may need to
|
||||||
|
present different data during browsing. '''
|
||||||
|
# for now, only discussion groups are supported...
|
||||||
|
# TODO: check if it has appropriate features to be such kind of service
|
||||||
|
return DiscussionGroupsBrowser(account, jid, node)
|
||||||
|
|
||||||
|
class DiscussionGroupsBrowser(AgentBrowser):
|
||||||
|
''' For browsing pubsub-based discussion groups service. '''
|
||||||
|
def _create_treemodel(self):
|
||||||
|
''' Create treemodel for the window. '''
|
||||||
|
# JID, node, name (with description) - pango markup, subscribed?
|
||||||
|
model = gtk.ListStore(str, str, str, bool)
|
||||||
|
model.set_sort_column_id(3, gtk.SORT_ASCENDING)
|
||||||
|
self.window.services_treeview.set_model(model)
|
||||||
|
|
||||||
|
# Name column
|
||||||
|
# Pango markup for name and description, description printed with
|
||||||
|
# <small/> font
|
||||||
|
renderer = gtk.CellRendererText()
|
||||||
|
col = gtk.TreeViewColumn(_('Name'))
|
||||||
|
col.pack_start(renderer)
|
||||||
|
col.set_attributes(renderer, markup=2)
|
||||||
|
col.set_resizable(True)
|
||||||
|
self.window.services_treeview.insert_column(col, -1)
|
||||||
|
|
||||||
|
# Subscription state
|
||||||
|
renderer = gtk.CellRendererToggle()
|
||||||
|
col = gtk.TreeViewColumn(_('Subscribed'))
|
||||||
|
col.pack_start(renderer)
|
||||||
|
col.set_attributes(renderer, active=3)
|
||||||
|
col.set_resizable(False)
|
||||||
|
self.window.services_treeview.insert_column(col, -1)
|
||||||
|
|
||||||
|
self.window.services_treeview.set_headers_visible(True)
|
||||||
|
|
||||||
|
def _add_actions(self):
|
||||||
|
self.subscribe_button = gtk.Button(label=_('_Subscribe'), use_underline=True)
|
||||||
|
self.subscribe_button.connect('clicked', self.on_subscribe_button_clicked)
|
||||||
|
self.window.action_buttonbox.add(self.subscribe_button)
|
||||||
|
self.subscribe_button.show_all()
|
||||||
|
|
||||||
|
self.unsubscribe_button = gtk.Button(label=_('_Unsubscribe'), use_underline=True)
|
||||||
|
self.unsubscribe_button.connect('clicked', self.on_unsubscribe_button_clicked)
|
||||||
|
self.window.action_buttonbox.add(self.unsubscribe_button)
|
||||||
|
self.unsubscribe_button.show_all()
|
||||||
|
|
||||||
|
def _clean_actions(self):
|
||||||
|
if self.subscribe_button is not None:
|
||||||
|
self.subscribe_button.destroy()
|
||||||
|
self.subscribe_button = None
|
||||||
|
|
||||||
|
if self.unsubscribe_button is not None:
|
||||||
|
self.unsubscribe_button.destroy()
|
||||||
|
self.unsubscribe_button = None
|
||||||
|
|
||||||
|
def on_subscribe_button_clicked(*x): pass
|
||||||
|
def on_unsubscribe_button_clicked(*x): pass
|
||||||
|
|
||||||
# Fill the global agent type info dictionary
|
# Fill the global agent type info dictionary
|
||||||
_agent_type_info = _gen_agent_type_info()
|
_agent_type_info = _gen_agent_type_info()
|
||||||
|
|
Loading…
Add table
Reference in a new issue