Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim-plugins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Fomin <fominde@gmail.com>2010-10-21 15:27:06 +0400
committerDenis Fomin <fominde@gmail.com>2010-10-21 15:27:06 +0400
commitf1b369203b4343e9f792d73b5dd99b72f61303e6 (patch)
tree5365e4c108fcf8d5f361d43e9272619e099c6bf3 /clients_icons
parent9c930b49f5217a46bbceb245b0aaf943565870d2 (diff)
clients_icons. 0.5 Changing the settings take effect without reconnect
Diffstat (limited to 'clients_icons')
-rw-r--r--clients_icons/clients_icons.py56
-rw-r--r--clients_icons/manifest.ini2
2 files changed, 51 insertions, 7 deletions
diff --git a/clients_icons/clients_icons.py b/clients_icons/clients_icons.py
index 87d5a30..a7623ba 100644
--- a/clients_icons/clients_icons.py
+++ b/clients_icons/clients_icons.py
@@ -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()
diff --git a/clients_icons/manifest.ini b/clients_icons/manifest.ini
index cab3541..1c9946e 100644
--- a/clients_icons/manifest.ini
+++ b/clients_icons/manifest.ini
@@ -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