ClientsIconsPlugin. Refactoring

This commit is contained in:
Denis Fomin
2012-11-12 12:15:56 +04:00
parent a601a14820
commit a118658819

View File

@@ -197,7 +197,7 @@ class ClientsIconsPlugin(GajimPlugin):
vertical_fill = gtk.FILL vertical_fill = gtk.FILL
if vcard_table.get_property('n-columns') == 4: if vcard_table.get_property('n-columns') == 4:
vertical_fill |= gtk.EXPAND vertical_fill |= gtk.EXPAND
vcard_current_row = vcard_table.get_property('n-rows')
# put contacts in dict, where key is priority # put contacts in dict, where key is priority
num_resources = 0 num_resources = 0
contacts_dict = {} contacts_dict = {}
@@ -208,55 +208,41 @@ class ClientsIconsPlugin(GajimPlugin):
contacts_dict[contact.priority].append(contact) contacts_dict[contact.priority].append(contact)
else: else:
contacts_dict[contact.priority] = [contact] contacts_dict[contact.priority] = [contact]
# set label
label = gtk.Label() label = gtk.Label()
label.set_alignment(0, 0) label.set_alignment(0, 0)
self.table = gtk.Table(4, 1)
self.table.set_property('column-spacing', 2)
if num_resources > 1: if num_resources > 1:
label.set_markup(_('Clients:')) 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: else:
if contact.show == 'offline': if contact.show == 'offline':
return return
label.set_markup(_('Client:')) label.set_markup(_('Client:'))
caps = contact.client_caps._node #fill clients table
vcard_current_row = vcard_table.get_property('n-rows') self.table = gtk.Table(4, 1)
vcard_table.attach(label, 1, 2, vcard_current_row, self.table.set_property('column-spacing', 2)
vcard_current_row + 1, gtk.FILL, gtk.FILL | gtk.EXPAND, 0, 0) first_place = vcard_current_row = vcard_table.get_property('n-rows')
caps_image ,client_name = self.get_icon(caps) vcard_table.attach(label, 1, 2, vcard_current_row,
caps_image.set_alignment(0, 0) vcard_current_row + 1, gtk.FILL, gtk.FILL | gtk.EXPAND, 0, 0)
self.table.attach(caps_image, 1, 2, vcard_current_row, contact_keys = sorted(contacts_dict.keys())
vcard_current_row + 1, gtk.FILL, gtk.FILL, 0, 0) contact_keys.reverse()
label = gtk.Label() vcard_current_row = 0
label.set_alignment(0, 0) for priority in contact_keys:
label.set_markup(client_name) for acontact in contacts_dict[priority]:
self.table.attach(label, 2, 3, vcard_current_row, caps = acontact.client_caps._node
vcard_current_row + 1, gtk.FILL | gtk.EXPAND, 0, 0, 0) caps_image , client_name = self.get_icon(caps)
vcard_table.attach(self.table, 2, 3, vcard_current_row, caps_image.set_alignment(0, 0)
vcard_current_row + 1, gtk.FILL, vertical_fill, 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 # rewrite avatar
if vcard_table.get_property('n-columns') == 4: if vcard_table.get_property('n-columns') == 4:
@@ -295,6 +281,7 @@ class ClientsIconsPlugin(GajimPlugin):
def disconnect_from_roster_tooltip_populate(self, tooltip, contacts, def disconnect_from_roster_tooltip_populate(self, tooltip, contacts,
vcard_table): vcard_table):
pass pass
@log_calls('ClientsIconsPlugin') @log_calls('ClientsIconsPlugin')
def connect_with_roster_draw_contact(self, roster, jid, account, contact): def connect_with_roster_draw_contact(self, roster, jid, account, contact):
if not self.active: if not self.active:
@@ -470,11 +457,12 @@ class ClientsIconsPlugin(GajimPlugin):
tag = iq_obj.stanza.getTags('c') tag = iq_obj.stanza.getTags('c')
if tag: if tag:
caps = tag[0].getAttr('node') caps = tag[0].getAttr('node')
if 'pidgin.im' in caps: if caps:
caps = 'libpurple' if 'pidgin.im' in caps:
for client in libpurple_clients: caps = 'libpurple'
if client in contact.resource.lower(): for client in libpurple_clients:
caps = libpurple_clients[client] if client in contact.resource.lower():
caps = libpurple_clients[client]
if 'facebook.com' in iq_obj.jid and self.config['show_facebook']: if 'facebook.com' in iq_obj.jid and self.config['show_facebook']:
caps = 'facebook.com' caps = 'facebook.com'
if not caps: if not caps: