clients_icons. 0.5 Changing the settings take effect without reconnect

This commit is contained in:
Denis Fomin
2010-10-21 15:27:06 +04:00
parent 9c930b49f5
commit f1b369203b
2 changed files with 51 additions and 7 deletions

View File

@@ -152,10 +152,41 @@ class ClientsIconsPlugin(GajimPlugin):
store.set_sort_func(1, chat_control.tree_compare_iters)
store.set_sort_column_id(1, gtk.SORT_ASCENDING)
chat_control.list_treeview.set_model(store)
# draw roster
for nick in gajim.contacts.get_nick_list(chat_control.account,
chat_control.room_jid):
gc_contact = gajim.contacts.get_gc_contact(chat_control.account,
chat_control.room_jid, nick)
iter_ = chat_control.add_contact_to_roster(nick, gc_contact.show,
gc_contact.role, gc_contact.affiliation, gc_contact.status,
gc_contact.jid)
if not self.config['show_in_groupchats']:
continue
caps = gc_contact.client_caps._node
self.set_icon(store, iter_, self.muc_renderer_num, caps)
chat_control.draw_all_roles()
# Recalculate column width for ellipsizin
chat_control.list_treeview.columns_autosize()
@log_calls('ClientsIconsPlugin')
def disconnect_from_groupchat_control(self, chat_control):
pass
def disconnect_from_groupchat_control(self, gc_control):
gc_control.nb_ext_renderers -= 1
col = gc_control.list_treeview.get_column(0)
gc_control.list_treeview.remove_column(col)
col = gtk.TreeViewColumn()
for renderer in gc_control.renderers_list:
if renderer[0] == 'client_icon':
gc_control.renderers_list.remove(renderer)
break
gc_control.fill_column(col)
gc_control.list_treeview.insert_column(col, 0)
gc_control.columns = gc_control.columns[:self.muc_renderer_num] + \
gc_control.columns[self.muc_renderer_num+1:]
store = gtk.TreeStore(*gc_control.columns)
store.set_sort_func(1, gc_control.tree_compare_iters)
store.set_sort_column_id(1, gtk.SORT_ASCENDING)
gc_control.list_treeview.set_model(store)
gc_control.draw_roster()
@log_calls('ClientsIconsPlugin')
def disconnect_from_roster_draw_contact(self, roster, jid, account,
@@ -270,7 +301,8 @@ class ClientsIconsPlugin(GajimPlugin):
if not model.iter_parent(iter_):
renderer.set_property('visible', False)
return
renderer.set_property('visible', True)
elif model[iter_][self.muc_renderer_num]:
renderer.set_property('visible', True)
contact = gajim.contacts.get_gc_contact(control.account,
control.room_jid, model[iter_][1].decode('utf-8'))
@@ -294,8 +326,6 @@ class ClientsIconsPluginConfigDialog(GajimPluginConfigDialog):
['vbox1'])
vbox = self.xml.get_object('vbox1')
self.child.pack_start(vbox)
self.xml.connect_signals(self)
self.connect('hide', self.on_hide)
self.combo = self.xml.get_object('combobox1')
self.liststore = gtk.ListStore(str)
self.combo.set_model(self.liststore)
@@ -307,9 +337,15 @@ class ClientsIconsPluginConfigDialog(GajimPluginConfigDialog):
self.liststore.append((item,))
self.combo.set_active(self.plugin.config['pos_in_list'])
def on_hide(self, widget):
self.xml.connect_signals(self)
def redraw_all(self):
self.plugin.deactivate()
self.plugin.activate()
for gc_control in gajim.interface.msg_win_mgr.get_controls('gc'):
self.plugin.disconnect_from_groupchat_control(gc_control)
for gc_control in gajim.interface.msg_win_mgr.get_controls('gc'):
self.plugin.connect_with_groupchat_control(gc_control)
def on_run(self):
self.xml.get_object('show_in_roster').set_active(
@@ -321,12 +357,20 @@ class ClientsIconsPluginConfigDialog(GajimPluginConfigDialog):
def on_show_in_roster_toggled(self, widget):
self.plugin.config['show_in_roster'] = widget.get_active()
self.plugin.deactivate()
self.plugin.activate()
def on_show_in_groupchats_toggled(self, widget):
self.plugin.config['show_in_groupchats'] = widget.get_active()
for gc_control in gajim.interface.msg_win_mgr.get_controls('gc'):
self.plugin.disconnect_from_groupchat_control(gc_control)
for gc_control in gajim.interface.msg_win_mgr.get_controls('gc'):
self.plugin.connect_with_groupchat_control(gc_control)
def on_show_unknown_icon_toggled(self, widget):
self.plugin.config['show_unknown_icon'] = widget.get_active()
self.redraw_all()
def on_combobox1_changed(self, widget):
self.plugin.config['pos_in_list'] = widget.get_active()
self.redraw_all()

View File

@@ -1,7 +1,7 @@
[info]
name: Clients icons
short_name: clients_icons
version: 0.4
version: 0.5
description: Shows the client icons in the roster
and in groupchats.
Depends: Gajim > r12506