[dkirov] show transport status icon in tooltip

This commit is contained in:
Nikos Kouremenos 2005-07-15 18:13:54 +00:00
parent a743fd2669
commit abe9c7708d
2 changed files with 45 additions and 36 deletions

View file

@ -550,8 +550,8 @@ class RosterTooltip(gtk.Window):
self, 'tooltip', size[0] - 1, 0, 1, -1)
return True
def show_tooltip(self, contact, img, pointer_position, win_size):
self.populate(contact, img)
def show_tooltip(self, contact, pointer_position, win_size):
self.populate(contact)
new_x = win_size[0] + pointer_position[0]
new_y = win_size[1] + pointer_position[1] + 35
self.prefered_position = [new_x, new_y]
@ -565,7 +565,7 @@ class RosterTooltip(gtk.Window):
self.hide()
self.path = None
def populate(self, contacts, path):
def populate(self, contacts):
if not contacts or len(contacts) == 0:
return
# default resource of the contact
@ -576,9 +576,19 @@ class RosterTooltip(gtk.Window):
# try to find the image for the contact status
state_file = prim_contact.show.replace(' ', '_')
transport = self.plugin.roster.get_transport_name_by_jid(prim_contact.jid)
if transport:
file_path = os.path.join(gajim.DATA_DIR, 'iconsets', 'transports', transport , '16x16')
else:
iconset = gajim.config.get('iconset')
if not iconset:
iconset = 'sun'
file_path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16')
files = []
files.append(path + state_file + '.gif')
files.append(path + state_file + '.png')
files.append(os.path.join(file_path, state_file + '.png'))
files.append(os.path.join(file_path, state_file + '.gif'))
self.image.set_from_pixbuf(None)
for file in files:
if os.path.exists(file):
self.image.set_from_file(file)

View file

@ -188,36 +188,35 @@ class RosterWindow:
break
if group_empty:
del self.groups[account][group]
def get_transport_name_by_jid(self,jid):
if not jid or not gajim.config.get('use_transports_iconsets'):
return None
host = jid.split('@')[-1]
if host.startswith('aim'):
return 'aim'
elif host.startswith('gadugadu'):
return 'gadugadu'
elif host.startswith('gg'):
return 'gadugadu'
elif host.startswith('irc'):
return 'irc'
elif host.startswith('icq'): # abc@icqsucks.org will match as ICQ, but what to do..
return 'icq'
elif host.startswith('msn'):
return 'msn'
elif host.startswith('sms'):
return 'sms'
elif host.startswith('tlen'):
return 'tlen'
elif host.startswith('yahoo'):
return 'yahoo'
return None
def get_appropriate_state_images(self, jid):
'''check jid and return the appropriate state images dict'''
if not jid or not gajim.config.get('use_transports_iconsets'):
return self.jabber_state_images
host = jid.split('@')[-1]
if host.startswith('aim'):
state_images = self.transports_state_images['aim']
elif host.startswith('gadugadu'):
state_images = self.transports_state_images['gadugadu']
elif host.startswith('gg'):
state_images = self.transports_state_images['gadugadu']
elif host.startswith('irc'):
state_images = self.transports_state_images['irc']
elif host.startswith('icq'): # abc@icqsucks.org will match as ICQ, but what to do..
state_images = self.transports_state_images['icq']
elif host.startswith('msn'):
state_images = self.transports_state_images['msn']
elif host.startswith('sms'):
state_images = self.transports_state_images['sms']
elif host.startswith('tlen'):
state_images = self.transports_state_images['tlen']
elif host.startswith('yahoo'):
state_images = self.transports_state_images['yahoo']
else:
state_images = self.jabber_state_images
return state_images
transport = self.get_transport_name_by_jid(jid)
if transport:
return self.transports_state_images[transport]
return self.jabber_state_images
def draw_contact(self, jid, account):
'''draw the correct state image and name'''
@ -542,13 +541,13 @@ class RosterWindow:
info[user.jid] = dialogs.VcardWindow(user, self.plugin,
account)
def show_tooltip(self, contact, img):
def show_tooltip(self, contact):
pointer = self.tree.get_pointer()
props = self.tree.get_path_at_pos(pointer[0], pointer[1])
if props and self.tooltip.path == props[0]:
# check if the current pointer is at the same path
# as it was before setting the timeout
self.tooltip.show_tooltip(contact, img, self.window.get_pointer(),
self.tooltip.show_tooltip(contact, self.window.get_pointer(),
self.window.get_position())
else:
self.tooltip.hide_tooltip()
@ -576,7 +575,7 @@ class RosterWindow:
if self.tooltip.timeout == 0 or self.tooltip.path != props[0]:
self.tooltip.path = row
self.tooltip.timeout = gobject.timeout_add(500,
self.show_tooltip, self.contacts[account][jid], self.path)
self.show_tooltip, self.contacts[account][jid])
def on_agent_logging(self, widget, jid, state, account):
'''When an agent is requested to log in or off'''