making function get_appropriate_state_images() and using this where appropriate

This commit is contained in:
Nikos Kouremenos 2005-04-23 01:37:05 +00:00
parent b62583f9e6
commit f288ede1eb
5 changed files with 71 additions and 54 deletions

View File

@ -108,7 +108,7 @@ class Preferences_window:
active = widget.get_active() active = widget.get_active()
icon_string = model[active][0] icon_string = model[active][0]
gajim.config.set('iconset', icon_string) gajim.config.set('iconset', icon_string)
self.plugin.roster.reload_pixbufs() self.plugin.roster.reload_jabber_state_images()
self.plugin.save_config() self.plugin.save_config()
def on_roster_widget_color_set(self, widget, text): def on_roster_widget_color_set(self, widget, text):

View File

@ -167,12 +167,13 @@ class Groupchat_window(chat.Chat):
def add_user_to_roster(self, room_jid, nick, show, role, jid): def add_user_to_roster(self, room_jid, nick, show, role, jid):
model = self.list_treeview[room_jid].get_model() model = self.list_treeview[room_jid].get_model()
img = self.plugin.roster.pixbufs[show] image = self.plugin.roster.jabber_state_images[show]
role_iter = self.get_role_iter(room_jid, role) role_iter = self.get_role_iter(room_jid, role)
if not role_iter: if not role_iter:
role_iter = model.append(None, (self.plugin.roster.pixbufs['closed']\ role_iter = model.append(None,
, role + 's', role, '')) (self.plugin.roster.jabber_state_images['closed'], role + 's',\
iter = model.append(role_iter, (img, nick, jid, show)) role, ''))
iter = model.append(role_iter, (image, nick, jid, show))
self.list_treeview[room_jid].expand_row((model.get_path(role_iter)), \ self.list_treeview[room_jid].expand_row((model.get_path(role_iter)), \
False) False)
return iter return iter
@ -183,7 +184,8 @@ class Groupchat_window(chat.Chat):
iter = model.get_iter(path) iter = model.get_iter(path)
return model.get_value(iter, 2) return model.get_value(iter, 2)
def update_pixbufs(self): def update_state_images(self):
roster = self.plugin.roster
for room_jid in self.list_treeview: for room_jid in self.list_treeview:
model = self.list_treeview[room_jid].get_model() model = self.list_treeview[room_jid].get_model()
role_iter = model.get_iter_root() role_iter = model.get_iter_root()
@ -195,8 +197,9 @@ class Groupchat_window(chat.Chat):
continue continue
while user_iter: while user_iter:
show = model.get_value(user_iter, 3) show = model.get_value(user_iter, 3)
img = self.plugin.roster.pixbufs[show] state_images = roster.get_appropriate_state_images(room_jid)
model.set_value(user_iter, 0, img) image = state_images[show] #FIXME: always Jabber why?
model.set_value(user_iter, 0, image)
user_iter = model.iter_next(user_iter) user_iter = model.iter_next(user_iter)
role_iter = model.iter_next(role_iter) role_iter = model.iter_next(role_iter)
@ -222,8 +225,10 @@ class Groupchat_window(chat.Chat):
self.remove_user(room_jid, nick) self.remove_user(room_jid, nick)
self.add_user_to_roster(room_jid, nick, show, role, ji) self.add_user_to_roster(room_jid, nick, show, role, ji)
else: else:
img = self.plugin.roster.pixbufs[show] roster = self.plugin.roster
model.set_value(iter, 0, img) state_images = roster.get_appropriate_state_images(jid)
image = state_images[user.show]
model.set_value(iter, 0, image)
model.set_value(iter, 3, show) model.set_value(iter, 3, show)
def set_subject(self, room_jid, subject): def set_subject(self, room_jid, subject):
@ -557,9 +562,13 @@ class Groupchat_window(chat.Chat):
def on_list_treeview_row_expanded(self, widget, iter, path): def on_list_treeview_row_expanded(self, widget, iter, path):
"""When a row is expanded: change the icon of the arrow""" """When a row is expanded: change the icon of the arrow"""
model = widget.get_model() model = widget.get_model()
model.set_value(iter, 0, self.plugin.roster.pixbufs['opened']) state_images = self.plugin.roster.get_appropriate_state_images(jid)
image = state_images['opened']
model.set_value(iter, 0, image)
def on_list_treeview_row_collapsed(self, widget, iter, path): def on_list_treeview_row_collapsed(self, widget, iter, path):
"""When a row is collapsed: change the icon of the arrow""" """When a row is collapsed: change the icon of the arrow"""
model = widget.get_model() model = widget.get_model()
model.set_value(iter, 0, self.plugin.roster.pixbufs['closed']) state_images = self.plugin.roster.get_appropriate_state_images(jid)
image = state_images['closed']
model.set_value(iter, 0, image)

View File

@ -94,7 +94,7 @@ class Roster_window:
statuss = ['offline', 'connecting', 'online', statuss = ['offline', 'connecting', 'online',
'away', 'xa', 'dnd', 'invisible'] 'away', 'xa', 'dnd', 'invisible']
status = statuss[gajim.connections[account].connected] status = statuss[gajim.connections[account].connected]
model.append(None, (self.pixbufs[status], account, model.append(None, (self.jabber_state_images[status], account,
'account', account, account, False)) 'account', account, account, False))
def remove_newly_added(self, jid, account): def remove_newly_added(self, jid, account):
@ -125,7 +125,7 @@ class Roster_window:
if not iterG: if not iterG:
IterAcct = self.get_account_iter(account) IterAcct = self.get_account_iter(account)
iterG = model.append(IterAcct, iterG = model.append(IterAcct,
(self.pixbufs['closed'], g, 'group', g, account, False)) (self.jabber_state_images['closed'], g, 'group', g, account, False))
if not self.groups[account].has_key(g): #It can probably never append if not self.groups[account].has_key(g): #It can probably never append
if account + g in self.hidden_lines: if account + g in self.hidden_lines:
ishidden = False ishidden = False
@ -140,7 +140,7 @@ class Roster_window:
if g == 'Agents': if g == 'Agents':
typestr = 'agent' typestr = 'agent'
model.append(iterG, (self.pixbufs[user.show], user.name, model.append(iterG, (self.jabber_state_images[user.show], user.name,
typestr, user.jid, account, False)) typestr, user.jid, account, False))
if self.groups[account][g]['expand']: if self.groups[account][g]['expand']:
@ -173,6 +173,23 @@ class Roster_window:
if group_empty: if group_empty:
del self.groups[account][group] del self.groups[account][group]
def get_appropriate_state_images(self, jid):
'''check jid and return the appropriate state images dict'''
if jid.find('@aim.') != -1:
state_images = self.transports_state_images['aim']
elif jid.find('@gadugadu.') != -1:
state_images = self.transports_state_images['gadugadu']
elif jid.find('@icq.') != -1:
state_images = self.transports_state_images['icq']
elif jid.find('@msn.') != -1:
state_images = self.transports_state_images['msn']
elif jid.find('@yahoo.') != -1:
state_images = self.transports_state_images['yahoo']
else: #jabber
state_images = self.jabber_state_images
return state_images
def draw_contact(self, jid, account): def draw_contact(self, jid, account):
'''draw the correct state image and name''' '''draw the correct state image and name'''
model = self.tree.get_model() model = self.tree.get_model()
@ -189,20 +206,9 @@ class Roster_window:
if u.priority > prio: if u.priority > prio:
prio = u.priority prio = u.priority
user = u user = u
jabber_state_images = self.pixbufs
for iter in iters: for iter in iters:
if jid.find('@aim.') != -1: state_images = self.get_appropriate_state_images(jid)
state_images = self.transports_state_images['aim']
elif jid.find('@gadugadu.') != -1:
state_images = self.transports_state_images['gadugadu']
elif jid.find('@icq.') != -1:
state_images = self.transports_state_images['icq']
elif jid.find('@msn.') != -1:
state_images = self.transports_state_images['msn']
elif jid.find('@yahoo.') != -1:
state_images = self.transports_state_images['yahoo']
else:
state_images = jabber_state_images
if jid.find('@') == -1: # if not '@' it's an agent if jid.find('@') == -1: # if not '@' it's an agent
if name.find('aim.') != -1: if name.find('aim.') != -1:
@ -215,8 +221,6 @@ class Roster_window:
state_images = self.transports_state_images['msn'] state_images = self.transports_state_images['msn']
elif name.find('yahoo.') != -1: elif name.find('yahoo.') != -1:
state_images = self.transports_state_images['yahoo'] state_images = self.transports_state_images['yahoo']
else:
state_images = jabber_state_images
img = state_images[user.show] img = state_images[user.show]
elif self.plugin.queues[account].has_key(jid): elif self.plugin.queues[account].has_key(jid):
@ -712,7 +716,7 @@ class Roster_window:
model = self.tree.get_model() model = self.tree.get_model()
accountIter = self.get_account_iter(account) accountIter = self.get_account_iter(account)
if accountIter: if accountIter:
model.set_value(accountIter, 0, self.pixbufs['connecting']) model.set_value(accountIter, 0, self.jabber_state_images['connecting'])
# gajim.connections[account].connected = 1 # gajim.connections[account].connected = 1
if self.plugin.systray_enabled: if self.plugin.systray_enabled:
self.plugin.systray.set_status('connecting') self.plugin.systray.set_status('connecting')
@ -726,7 +730,7 @@ class Roster_window:
passphrase, save = w.run() passphrase, save = w.run()
if passphrase == -1: if passphrase == -1:
if accountIter: if accountIter:
model.set_value(accountIter, 0, self.pixbufs['offline']) model.set_value(accountIter, 0, self.jabber_state_images['offline'])
# gajim.connections[account].connected = 0 # gajim.connections[account].connected = 0
self.plugin.systray.set_status('offline') self.plugin.systray.set_status('offline')
self.update_status_comboxbox() self.update_status_comboxbox()
@ -824,7 +828,7 @@ class Roster_window:
'xa', 'dnd', 'invisible'] 'xa', 'dnd', 'invisible']
if self.plugin.systray_enabled: if self.plugin.systray_enabled:
self.plugin.systray.set_status(statuss[maxi]) self.plugin.systray.set_status(statuss[maxi])
image = self.pixbufs[statuss[maxi]] image = self.jabber_state_images[statuss[maxi]]
if image.get_storage_type() == gtk.IMAGE_ANIMATION: if image.get_storage_type() == gtk.IMAGE_ANIMATION:
pixbuf = image.get_animation().get_static_image() pixbuf = image.get_animation().get_static_image()
self.window.set_icon(pixbuf) self.window.set_icon(pixbuf)
@ -838,7 +842,7 @@ class Roster_window:
model = self.tree.get_model() model = self.tree.get_model()
accountIter = self.get_account_iter(account) accountIter = self.get_account_iter(account)
if accountIter: if accountIter:
model.set_value(accountIter, 0, self.pixbufs[status]) model.set_value(accountIter, 0, self.jabber_state_images[status])
statuss = ['offline', 'connecting', 'online', 'chat', 'away', statuss = ['offline', 'connecting', 'online', 'chat', 'away',
'xa', 'dnd', 'invisible'] 'xa', 'dnd', 'invisible']
if status == 'offline': if status == 'offline':
@ -1077,7 +1081,7 @@ class Roster_window:
account = model.get_value(iter, 4) account = model.get_value(iter, 4)
type = model.get_value(iter, 2) type = model.get_value(iter, 2)
if type == 'group': if type == 'group':
model.set_value(iter, 0, self.pixbufs['opened']) model.set_value(iter, 0, self.jabber_state_images['opened'])
jid = model.get_value(iter, 3) jid = model.get_value(iter, 3)
self.groups[account][jid]['expand'] = True self.groups[account][jid]['expand'] = True
if account + jid in self.hidden_lines: if account + jid in self.hidden_lines:
@ -1099,7 +1103,7 @@ class Roster_window:
account = model.get_value(iter, 4) account = model.get_value(iter, 4)
type = model.get_value(iter, 2) type = model.get_value(iter, 2)
if type == 'group': if type == 'group':
model.set_value(iter, 0, self.pixbufs['closed']) model.set_value(iter, 0, self.jabber_state_images['closed'])
jid = model.get_value(iter, 3) jid = model.get_value(iter, 3)
self.groups[account][jid]['expand'] = False self.groups[account][jid]['expand'] = False
if not account + jid in self.hidden_lines: if not account + jid in self.hidden_lines:
@ -1154,13 +1158,13 @@ class Roster_window:
self.plugin.windows[account]['disco'] = \ self.plugin.windows[account]['disco'] = \
config.Service_discovery_window(self.plugin, account) config.Service_discovery_window(self.plugin, account)
def mkpixbufs(self): def make_jabber_state_images(self):
'''initialise pixbufs array''' '''initialise jabber_state_images dict'''
iconset = gajim.config.get('iconset') iconset = gajim.config.get('iconset')
if not iconset: if not iconset:
iconset = 'sun' iconset = 'sun'
self.path = '../data/iconsets/' + iconset + '/' self.path = '../data/iconsets/' + iconset + '/'
self.pixbufs = {} self.jabber_state_images = {}
for state in ('connecting', 'online', 'chat', 'away', 'xa', for state in ('connecting', 'online', 'chat', 'away', 'xa',
'dnd', 'invisible', 'offline', 'error', 'dnd', 'invisible', 'offline', 'error',
'requested', 'message', 'opened', 'closed', 'requested', 'message', 'opened', 'closed',
@ -1174,7 +1178,7 @@ class Roster_window:
files.append(self.path + state_file + '.xpm') files.append(self.path + state_file + '.xpm')
image = gtk.Image() image = gtk.Image()
image.show() image.show()
self.pixbufs[state] = image self.jabber_state_images[state] = image
for file in files: for file in files:
if os.path.exists(file): if os.path.exists(file):
image.set_from_file(file) image.set_from_file(file)
@ -1193,15 +1197,15 @@ class Roster_window:
image.show() image.show()
self.transports_state_images[name_only][state] = image self.transports_state_images[name_only][state] = image
def reload_pixbufs(self): def reload_jabber_state_images(self):
self.mkpixbufs() self.make_jabber_state_images()
# Update the roster # Update the roster
self.draw_roster() self.draw_roster()
# Update the status combobox # Update the status combobox
model = self.status_combobox.get_model() model = self.status_combobox.get_model()
iter = model.get_iter_root() iter = model.get_iter_root()
while iter: while iter:
model.set_value(iter, 1, self.pixbufs[model.get_value(iter, 2)]) model.set_value(iter, 1, self.jabber_state_images[model.get_value(iter, 2)])
iter = model.iter_next(iter) iter = model.iter_next(iter)
# Update the systray # Update the systray
if self.plugin.systray_enabled: if self.plugin.systray_enabled:
@ -1210,13 +1214,13 @@ class Roster_window:
# Update opened chat windows # Update opened chat windows
for jid in self.plugin.windows[account]['chats']: for jid in self.plugin.windows[account]['chats']:
if jid != 'tabbed': if jid != 'tabbed':
self.plugin.windows[account]['chats'][jid].set_image(jid) self.plugin.windows[account]['chats'][jid].set_state_image(jid)
# Update opened groupchat windows # Update opened groupchat windows
for jid in self.plugin.windows[account]['gc']: for jid in self.plugin.windows[account]['gc']:
if jid != 'tabbed': if jid != 'tabbed':
self.plugin.windows[account]['gc'][jid].udpate_pixbufs() self.plugin.windows[account]['gc'][jid].update_state_images(jid)
# Update windows icons # Update windows icons
image = self.pixbufs['online'] image = self.jabber_state_images['online'] # FIXME: we need an icon
if image.get_storage_type() == gtk.IMAGE_ANIMATION: if image.get_storage_type() == gtk.IMAGE_ANIMATION:
pixbuf = image.get_animation().get_static_image() pixbuf = image.get_animation().get_static_image()
elif image.get_storage_type() == gtk.IMAGE_PIXBUF: elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
@ -1417,7 +1421,7 @@ class Roster_window:
model.set_sort_func(1, self.compareIters) model.set_sort_func(1, self.compareIters)
model.set_sort_column_id(1, gtk.SORT_ASCENDING) model.set_sort_column_id(1, gtk.SORT_ASCENDING)
self.tree.set_model(model) self.tree.set_model(model)
self.mkpixbufs() self.make_jabber_state_images()
self.transports_state_images = { 'aim': {}, 'gadugadu': {}, 'icq': {}, 'msn': {}, 'yahoo': {} } self.transports_state_images = { 'aim': {}, 'gadugadu': {}, 'icq': {}, 'msn': {}, 'yahoo': {} }
path = '../data/iconsets/transports' path = '../data/iconsets/transports'
@ -1450,7 +1454,7 @@ class Roster_window:
status_better = 'Free for chat' status_better = 'Free for chat'
else: else:
status_better = status.capitalize() status_better = status.capitalize()
iter = liststore.append([status_better, self.pixbufs[status], status]) iter = liststore.append([status_better, self.jabber_state_images[status], status])
self.status_combobox.show_all() self.status_combobox.show_all()
self.status_combobox.set_model(liststore) self.status_combobox.set_model(liststore)
self.status_combobox.set_active(6) # default to offline self.status_combobox.set_active(6) # default to offline

View File

@ -38,7 +38,7 @@ class Systray:
status = 'message' status = 'message'
else: else:
status = self.status status = self.status
image = self.plugin.roster.pixbufs[status] image = self.plugin.roster.jabber_state_images[status]
if image.get_storage_type() == gtk.IMAGE_ANIMATION: if image.get_storage_type() == gtk.IMAGE_ANIMATION:
self.img_tray.set_from_animation(image.get_animation()) self.img_tray.set_from_animation(image.get_animation())
elif image.get_storage_type() == gtk.IMAGE_PIXBUF: elif image.get_storage_type() == gtk.IMAGE_PIXBUF:

View File

@ -60,7 +60,8 @@ class Tabbed_chat_window(chat.Chat):
according to the the information in the user variable""" according to the the information in the user variable"""
jid = user.jid jid = user.jid
status_image = self.xmls[jid].get_widget('status_image') status_image = self.xmls[jid].get_widget('status_image')
image = self.plugin.roster.pixbufs[user.show] state_images = self.plugin.roster.get_appropriate_state_images(jid)
image = state_images[user.show]
if image.get_storage_type() == gtk.IMAGE_ANIMATION: if image.get_storage_type() == gtk.IMAGE_ANIMATION:
status_image.set_from_animation(image.get_animation()) status_image.set_from_animation(image.get_animation())
elif image.get_storage_type() == gtk.IMAGE_PIXBUF: elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
@ -71,15 +72,18 @@ class Tabbed_chat_window(chat.Chat):
if not user.keyID: if not user.keyID:
self.xmls[jid].get_widget('gpg_togglebutton').set_sensitive(False) self.xmls[jid].get_widget('gpg_togglebutton').set_sensitive(False)
def set_image(self, jid): def set_state_image(self, jid):
prio = 0 prio = 0
list_users = self.plugin.roster.contacts[self.account][jid] list_users = self.plugin.roster.contacts[self.account][jid]
sho = list_users[0].show user = list_users[0]
show = user.show
jid = user.jid
for u in list_users: for u in list_users:
if u.priority > prio: if u.priority > prio:
prio = u.priority prio = u.priority
sho = u.show show = u.show
image = self.plugin.roster.pixbufs[sho] state_images = self.plugin.roster.get_appropriate_state_images(jid)
image = state_images[show]
if image.get_storage_type() == gtk.IMAGE_ANIMATION: if image.get_storage_type() == gtk.IMAGE_ANIMATION:
self.xmls[jid].get_widget('status_image').\ self.xmls[jid].get_widget('status_image').\
set_from_animation(image.get_animation()) set_from_animation(image.get_animation())