From a118658819ceda7fe3a6a3fae60440446850e0b5 Mon Sep 17 00:00:00 2001 From: Denis Fomin <fominde@gmail.com> Date: Mon, 12 Nov 2012 12:15:56 +0400 Subject: [PATCH] ClientsIconsPlugin. Refactoring --- clients_icons/clients_icons.py | 82 +++++++++++++++------------------- 1 file changed, 35 insertions(+), 47 deletions(-) diff --git a/clients_icons/clients_icons.py b/clients_icons/clients_icons.py index 50dbcc1c..dfe0e5bf 100644 --- a/clients_icons/clients_icons.py +++ b/clients_icons/clients_icons.py @@ -197,7 +197,7 @@ class ClientsIconsPlugin(GajimPlugin): vertical_fill = gtk.FILL if vcard_table.get_property('n-columns') == 4: vertical_fill |= gtk.EXPAND - vcard_current_row = vcard_table.get_property('n-rows') + # put contacts in dict, where key is priority num_resources = 0 contacts_dict = {} @@ -208,55 +208,41 @@ class ClientsIconsPlugin(GajimPlugin): contacts_dict[contact.priority].append(contact) else: contacts_dict[contact.priority] = [contact] - + # set label label = gtk.Label() label.set_alignment(0, 0) - self.table = gtk.Table(4, 1) - self.table.set_property('column-spacing', 2) - if num_resources > 1: label.set_markup(_('Clients:')) - first_place = vcard_current_row = vcard_table.get_property('n-rows') - vcard_table.attach(label, 1, 2, vcard_current_row, - vcard_current_row + 1, gtk.FILL, gtk.FILL | gtk.EXPAND, 0, 0) - contact_keys = sorted(contacts_dict.keys()) - contact_keys.reverse() - vcard_current_row = 0 - for priority in contact_keys: - for acontact in contacts_dict[priority]: - caps = acontact.client_caps._node - caps_image , client_name = self.get_icon(caps) - caps_image.set_alignment(0, 0) - self.table.attach(caps_image, 1, 2, vcard_current_row, - vcard_current_row + 1, gtk.FILL, - gtk.FILL, 0, 0) - label = gtk.Label() - label.set_alignment(0, 0) - label.set_markup(client_name) - self.table.attach(label, 2, 3, vcard_current_row, - vcard_current_row + 1, gtk.FILL | gtk.EXPAND, 0, 0, 0) - vcard_current_row = vcard_table.get_property('n-rows') - vcard_table.attach(self.table, 2, 3, first_place, - first_place + 1, gtk.FILL, vertical_fill, 0, 0) else: if contact.show == 'offline': return label.set_markup(_('Client:')) - caps = contact.client_caps._node - vcard_current_row = vcard_table.get_property('n-rows') - vcard_table.attach(label, 1, 2, vcard_current_row, - vcard_current_row + 1, gtk.FILL, gtk.FILL | gtk.EXPAND, 0, 0) - caps_image ,client_name = self.get_icon(caps) - caps_image.set_alignment(0, 0) - self.table.attach(caps_image, 1, 2, vcard_current_row, - vcard_current_row + 1, gtk.FILL, gtk.FILL, 0, 0) - label = gtk.Label() - label.set_alignment(0, 0) - label.set_markup(client_name) - self.table.attach(label, 2, 3, vcard_current_row, - vcard_current_row + 1, gtk.FILL | gtk.EXPAND, 0, 0, 0) - vcard_table.attach(self.table, 2, 3, vcard_current_row, - vcard_current_row + 1, gtk.FILL, vertical_fill, 0, 0) + #fill clients table + self.table = gtk.Table(4, 1) + self.table.set_property('column-spacing', 2) + first_place = vcard_current_row = vcard_table.get_property('n-rows') + vcard_table.attach(label, 1, 2, vcard_current_row, + vcard_current_row + 1, gtk.FILL, gtk.FILL | gtk.EXPAND, 0, 0) + contact_keys = sorted(contacts_dict.keys()) + contact_keys.reverse() + vcard_current_row = 0 + for priority in contact_keys: + for acontact in contacts_dict[priority]: + caps = acontact.client_caps._node + caps_image , client_name = self.get_icon(caps) + caps_image.set_alignment(0, 0) + self.table.attach(caps_image, 1, 2, vcard_current_row, + vcard_current_row + 1, gtk.FILL, + gtk.FILL, 0, 0) + label = gtk.Label() + label.set_alignment(0, 0) + label.set_markup(client_name) + self.table.attach(label, 2, 3, vcard_current_row, + vcard_current_row + 1, gtk.FILL | gtk.EXPAND, 0, 0, 0) + vcard_current_row += 1 + #set clients table to tooltip + vcard_table.attach(self.table, 2, 3, first_place, first_place + 1, + gtk.FILL, vertical_fill, 0, 0) # rewrite avatar if vcard_table.get_property('n-columns') == 4: @@ -295,6 +281,7 @@ class ClientsIconsPlugin(GajimPlugin): def disconnect_from_roster_tooltip_populate(self, tooltip, contacts, vcard_table): pass + @log_calls('ClientsIconsPlugin') def connect_with_roster_draw_contact(self, roster, jid, account, contact): if not self.active: @@ -470,11 +457,12 @@ class ClientsIconsPlugin(GajimPlugin): tag = iq_obj.stanza.getTags('c') if tag: caps = tag[0].getAttr('node') - if 'pidgin.im' in caps: - caps = 'libpurple' - for client in libpurple_clients: - if client in contact.resource.lower(): - caps = libpurple_clients[client] + if caps: + if 'pidgin.im' in caps: + caps = 'libpurple' + for client in libpurple_clients: + if client in contact.resource.lower(): + caps = libpurple_clients[client] if 'facebook.com' in iq_obj.jid and self.config['show_facebook']: caps = 'facebook.com' if not caps: -- GitLab