From 5dd0d4fce89bd8d6f664d2b600af0e849271a6cb Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Thu, 17 Apr 2008 14:17:14 +0000 Subject: [PATCH] move functions that build icons to gtkgui_helpers instead of roster_window. Fixes #3873 --- src/chat_control.py | 2 +- src/config.py | 4 +- src/conversation_textview.py | 2 +- src/dialogs.py | 10 +- src/gajim.py | 16 +-- src/groupchat_control.py | 14 +-- src/gtkgui_helpers.py | 101 ++++++++++++++++++- src/history_window.py | 4 +- src/roster_window.py | 189 +++++++++-------------------------- src/statusicon.py | 2 +- src/systray.py | 4 +- 11 files changed, 179 insertions(+), 169 deletions(-) diff --git a/src/chat_control.py b/src/chat_control.py index 1f70bbc39..1985db73c 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -1681,7 +1681,7 @@ class ChatControl(ChatControlBase): send_file_menuitem = xml.get_widget('send_file_menuitem') information_menuitem = xml.get_widget('information_menuitem') convert_to_gc_menuitem = xml.get_widget('convert_to_groupchat') - muc_icon = gajim.interface.roster.load_icon('muc_active') + muc_icon = gtkgui_helpers.load_icon('muc_active') if muc_icon: convert_to_gc_menuitem.set_image(muc_icon) diff --git a/src/config.py b/src/config.py index f11a59248..438688136 100644 --- a/src/config.py +++ b/src/config.py @@ -710,12 +710,12 @@ class PreferencesWindow: active = widget.get_active() icon_string = model[active][1].decode('utf-8') gajim.config.set('iconset', icon_string) - gajim.interface.roster.reload_jabber_state_images() + gajim.interface.reload_jabber_state_images() gajim.interface.save_config() def on_transports_iconsets_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'use_transports_iconsets') - gajim.interface.roster.reload_jabber_state_images() + gajim.interface.reload_jabber_state_images() def on_outgoing_chat_states_combobox_changed(self, widget): active = widget.get_active() diff --git a/src/conversation_textview.py b/src/conversation_textview.py index 4901bd227..cfa8553c4 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -702,7 +702,7 @@ class ConversationTextview: else: # It's a mail or a JID # load muc icon join_group_chat_menuitem = xml.get_widget('join_group_chat_menuitem') - muc_icon = gajim.interface.roster.load_icon('muc_active') + muc_icon = gtkgui_helpers.load_icon('muc_active') if muc_icon: join_group_chat_menuitem.set_image(muc_icon) diff --git a/src/dialogs.py b/src/dialogs.py index 60e3012fa..7b1233b15 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -728,7 +728,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou uf_type = {'jabber': 'Jabber', 'aim': 'AIM', 'gadu-gadu': 'Gadu Gadu', 'icq': 'ICQ', 'msn': 'MSN', 'yahoo': 'Yahoo'} # Jabber as first - img = gajim.interface.roster.jabber_state_images['16']['online'] + img = gajim.interface.jabber_state_images['16']['online'] liststore.append(['Jabber', img.get_pixbuf(), 'jabber']) for type_ in self.agents: if type_ == 'jabber': @@ -1904,7 +1904,7 @@ class NewChatDialog(InputDialog): keys.sort() for jid in keys: contact = self.completion_dict[jid] - img = gajim.interface.roster.jabber_state_images['16'][contact.show] + img = gajim.interface.jabber_state_images['16'][contact.show] liststore.append((img.get_pixbuf(), jid)) self.ok_handler = self.new_chat_response @@ -2172,8 +2172,7 @@ class SingleMessageWindow: keys.sort() for jid in keys: contact = self.completion_dict[jid] - img = gajim.interface.roster.jabber_state_images['16'][ - contact.show] + img = gajim.interface.jabber_state_images['16'][contact.show] liststore.append((img.get_pixbuf(), jid)) else: self.completion_dict = {} @@ -3693,8 +3692,7 @@ class TransformChatToMUC: # Add contact if it can be invited if invitable(contact, contact_transport) and \ contact.show not in ('offline', 'error'): - img = gajim.interface.roster.jabber_state_images['16'][ - contact.show] + img = gajim.interface.jabber_state_images['16'][contact.show] name = contact.name if name == '': name = jid.split('@')[0] diff --git a/src/gajim.py b/src/gajim.py index 3ef0832c6..3c9f67544 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -4,11 +4,11 @@ ## ## Copyright (C) 2003-2007 Yann Leboulanger ## Copyright (C) 2005-2006 Nikos Kouremenos -## Dimitur Kirov +## Dimitur Kirov ## Copyright (C) 2005 Travis Shirk ## Copyright (C) 2007 Lukas Petrovicky -## Julien Pivotto -## Stephan Erb +## Julien Pivotto +## Stephan Erb ## ## This file is part of Gajim. ## @@ -2435,7 +2435,7 @@ class Interface: # + means 1 or more times # ? means 0 or 1 time # | means or - # [^*] anything but '*' (inside [] you don't have to escape metachars) + # [^*] anything but '*' (inside [] you don't have to escape metachars) # [^\s*] anything but whitespaces and '*' # (? ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Travis Shirk +## Norman Rasmussen ## Copyright (C) 2007 Stephan Erb ## ## This file is part of Gajim. @@ -862,3 +862,100 @@ def create_combobox(value_list, selected_value = None): combobox.set_active(i) combobox.show_all() return combobox + +def load_iconset(path, pixbuf2 = None, transport = False): + '''load full iconset from the given path, and add + pixbuf2 on top left of each static images''' + path += '/' + if transport: + list = ('online', 'chat', 'away', 'xa', 'dnd', 'offline', + 'not in roster') + else: + list = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd', + 'invisible', 'offline', 'error', 'requested', 'event', 'opened', + 'closed', 'not in roster', 'muc_active', 'muc_inactive') + if pixbuf2: + list = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd', + 'offline', 'error', 'requested', 'event', 'not in roster') + return _load_icon_list(list, path, pixbuf2) + +def load_icon(icon_name): + '''load an icon from the iconset in 16x16''' + iconset = gajim.config.get('iconset') + path = os.path.join(helpers.get_iconset_path(iconset), '16x16' + '/') + icon_list = _load_icon_list([icon_name], path) + return icon_list[icon_name] + +def load_icons_meta(): + '''load and return - AND + small icons to put on top left of an icon + for meta contacts.''' + iconset = gajim.config.get('iconset') + path = os.path.join(helpers.get_iconset_path(iconset), '16x16') + # try to find opened_meta.png file, else opened.png else nopixbuf merge + path_opened = os.path.join(path, 'opened_meta.png') + if not os.path.isfile(path_opened): + path_opened = os.path.join(path, 'opened.png') + if os.path.isfile(path_opened): + pixo = gtk.gdk.pixbuf_new_from_file(path_opened) + else: + pixo = None + # Same thing for closed + path_closed = os.path.join(path, 'opened_meta.png') + if not os.path.isfile(path_closed): + path_closed = os.path.join(path, 'closed.png') + if os.path.isfile(path_closed): + pixc = gtk.gdk.pixbuf_new_from_file(path_closed) + else: + pixc = None + return pixo, pixc + +def _load_icon_list(icons_list, path, pixbuf2 = None): + '''load icons in icons_list from the given path, + and add pixbuf2 on top left of each static images''' + imgs = {} + for icon in icons_list: + # try to open a pixfile with the correct method + icon_file = icon.replace(' ', '_') + files = [] + files.append(path + icon_file + '.gif') + files.append(path + icon_file + '.png') + image = gtk.Image() + image.show() + imgs[icon] = image + for file in files: # loop seeking for either gif or png + if os.path.exists(file): + image.set_from_file(file) + if pixbuf2 and image.get_storage_type() == gtk.IMAGE_PIXBUF: + # add pixbuf2 on top-left corner of image + pixbuf1 = image.get_pixbuf() + pixbuf2.composite(pixbuf1, 0, 0, + pixbuf2.get_property('width'), + pixbuf2.get_property('height'), 0, 0, 1.0, 1.0, + gtk.gdk.INTERP_NEAREST, 255) + image.set_from_pixbuf(pixbuf1) + break + return imgs + +def make_jabber_state_images(): + '''initialise jabber_state_images dict''' + iconset = gajim.config.get('iconset') + if iconset: + path = os.path.join(helpers.get_iconset_path(iconset), '16x16') + if not os.path.exists(path): + iconset = gajim.config.DEFAULT_ICONSET + else: + iconset = gajim.config.DEFAULT_ICONSET + + path = os.path.join(helpers.get_iconset_path(iconset), '32x32') + gajim.interface.jabber_state_images['32'] = load_iconset(path) + + path = os.path.join(helpers.get_iconset_path(iconset), '16x16') + gajim.interface.jabber_state_images['16'] = load_iconset(path) + + pixo, pixc = load_icons_meta() + gajim.interface.jabber_state_images['opened'] = load_iconset(path, pixo) + gajim.interface.jabber_state_images['closed'] = load_iconset(path, pixc) + +def reload_jabber_state_images(): + make_jabber_state_images() + gajim.interface.roster.update_jabber_state_images() diff --git a/src/history_window.py b/src/history_window.py index 6263a98a1..50e352fed 100644 --- a/src/history_window.py +++ b/src/history_window.py @@ -165,7 +165,7 @@ class HistoryWindow: if gajim.logger.jid_is_room_jid(completed) or\ gajim.logger.jid_is_from_pm(completed): - img = gajim.interface.roster.load_icon('muc_active') + img = gtkgui_helpers.load_icon('muc_active') if gajim.logger.jid_is_from_pm(completed): # It's PM. Make it easier to find room, nick = gajim.get_room_and_nick_from_fjid(completed) @@ -173,7 +173,7 @@ class HistoryWindow: completed = info_completion info_name = nick else: - img = gajim.interface.roster.jabber_state_images['16']['online'] + img = gajim.interface.jabber_state_images['16']['online'] liststore.append((img.get_pixbuf(), completed)) self.completion_dict[key] = (info_jid, info_acc, info_name, diff --git a/src/roster_window.py b/src/roster_window.py index 6783e4da7..40fbabd14 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -190,7 +190,7 @@ class RosterWindow: # if we merge accounts... if self.regroup: show = helpers.get_global_show() - model.append(None, [self.jabber_state_images['16'][show], + model.append(None, [gajim.interface.jabber_state_images['16'][show], _('Merged accounts'), 'account', '', 'all', None, None]) self.draw_account(account) return @@ -204,7 +204,7 @@ class RosterWindow: our_jid = gajim.get_jid_from_account(account) - model.append(None, [self.jabber_state_images['16'][show], + model.append(None, [gajim.interface.jabber_state_images['16'][show], gobject.markup_escape_text(account), 'account', our_jid, account, None, tls_pixbuf]) @@ -364,7 +364,7 @@ class RosterWindow: if not iterG: IterAcct = self.get_account_iter(account) iterG = model.append(IterAcct, [ - self.jabber_state_images['16']['closed'], + gajim.interface.jabber_state_images['16']['closed'], gobject.markup_escape_text(group), 'group', group, account, None, None]) self.draw_group(group, account) @@ -607,7 +607,7 @@ class RosterWindow: if self.transports_state_images[size].has_key(transport) and \ icon_name in self.transports_state_images[size][transport]: return self.transports_state_images[size][transport] - return self.jabber_state_images[size] + return gajim.interface.jabber_state_images[size] def draw_contact(self, jid, account, selected = False, focus = False): '''draw the correct state image, name BUT not avatar''' @@ -935,7 +935,7 @@ class RosterWindow: new_chat_menuitem = self.xml.get_widget('new_chat_menuitem') single_message_menuitem = self.xml.get_widget('send_single_message_menuitem') join_gc_menuitem = self.xml.get_widget('join_gc_menuitem') - muc_icon = self.load_icon('muc_active') + muc_icon = gtkgui_helpers.load_icon('muc_active') if muc_icon: join_gc_menuitem.set_image(muc_icon) add_new_contact_menuitem = self.xml.get_widget('add_new_contact_menuitem') @@ -2023,7 +2023,7 @@ class RosterWindow: path = os.path.join(helpers.get_iconset_path(iconset), '16x16') for c in contacts: # icon MUST be different instance for every item - state_images = self.load_iconset(path) + state_images = gtkgui_helpers.load_iconset(path) item = gtk.ImageMenuItem('%s (%s)' % (c.resource, str(c.priority))) icon_name = helpers.get_icon_name_to_show(c, account) icon = state_images[icon_name] @@ -2158,7 +2158,7 @@ class RosterWindow: path = os.path.join(helpers.get_iconset_path(iconset), '16x16') for c in contacts: # icon MUST be different instance for every item - state_images = self.load_iconset(path) + state_images = gtkgui_helpers.load_iconset(path) item = gtk.ImageMenuItem('%s (%s)' % (c.resource, str(c.priority))) icon_name = helpers.get_icon_name_to_show(c, account) @@ -2269,12 +2269,14 @@ class RosterWindow: blocked = True break if blocked: - send_custom_status_menuitem.set_image(self.load_icon('offline')) + send_custom_status_menuitem.set_image(gtkgui_helpers.load_icon( + 'offline')) send_custom_status_menuitem.set_sensitive(False) elif gajim.interface.status_sent_to_users.has_key(account) and \ jid in gajim.interface.status_sent_to_users[account]: send_custom_status_menuitem.set_image( - self.load_icon(gajim.interface.status_sent_to_users[account][jid])) + gtkgui_helpers.load_icon(gajim.interface.status_sent_to_users[ + account][jid])) else: icon = gtk.image_new_from_stock(gtk.STOCK_NETWORK, gtk.ICON_SIZE_MENU) send_custom_status_menuitem.set_image(icon) @@ -2287,7 +2289,7 @@ class RosterWindow: img.set_from_file(path_to_kbd_input_img) rename_menuitem.set_image(img) - muc_icon = self.load_icon('muc_active') + muc_icon = gtkgui_helpers.load_icon('muc_active') if muc_icon: invite_menuitem.set_image(muc_icon) @@ -2313,7 +2315,7 @@ class RosterWindow: path = os.path.join(helpers.get_iconset_path(iconset), '16x16') for s in ['online', 'chat', 'away', 'xa', 'dnd', 'offline']: # icon MUST be different instance for every item - state_images = self.load_iconset(path) + state_images = gtkgui_helpers.load_iconset(path) status_menuitem = gtk.ImageMenuItem(helpers.get_uf_show(s)) status_menuitem.connect('activate', self.on_send_custom_status, [(contact, account)], s) @@ -2513,7 +2515,7 @@ class RosterWindow: # Invite to Groupchat invite_item = gtk.ImageMenuItem(_('In_vite to')) - muc_icon = self.load_icon('muc_active') + muc_icon = gtkgui_helpers.load_icon('muc_active') if muc_icon: invite_item.set_image(muc_icon) @@ -2700,7 +2702,7 @@ class RosterWindow: # Invite to invite_menuitem = gtk.ImageMenuItem(_('In_vite to')) - muc_icon = self.load_icon('muc_active') + muc_icon = gtkgui_helpers.load_icon('muc_active') if muc_icon: invite_menuitem.set_image(muc_icon) @@ -2711,7 +2713,8 @@ class RosterWindow: send_custom_status_menuitem = gtk.ImageMenuItem(_('Send Cus_tom Status')) # add a special img for this menuitem if group in gajim.connections[account].blocked_groups: - send_custom_status_menuitem.set_image(self.load_icon('offline')) + send_custom_status_menuitem.set_image(gtkgui_helpers.load_icon( + 'offline')) send_custom_status_menuitem.set_sensitive(False) else: icon = gtk.image_new_from_stock(gtk.STOCK_NETWORK, @@ -2723,7 +2726,7 @@ class RosterWindow: path = os.path.join(helpers.get_iconset_path(iconset), '16x16') for s in ['online', 'chat', 'away', 'xa', 'dnd', 'offline']: # icon MUST be different instance for every item - state_images = self.load_iconset(path) + state_images = gtkgui_helpers.load_iconset(path) status_menuitem = gtk.ImageMenuItem(helpers.get_uf_show(s)) status_menuitem.connect('activate', self.on_send_custom_status, list_, s, group) @@ -2827,12 +2830,13 @@ class RosterWindow: send_custom_status_menuitem = gtk.ImageMenuItem(_('Send Cus_tom Status')) # add a special img for this menuitem if blocked: - send_custom_status_menuitem.set_image(self.load_icon('offline')) + send_custom_status_menuitem.set_image(gtkgui_helpers.load_icon( + 'offline')) send_custom_status_menuitem.set_sensitive(False) else: if gajim.interface.status_sent_to_users.has_key(account) and \ jid in gajim.interface.status_sent_to_users[account]: - send_custom_status_menuitem.set_image(self.load_icon( + send_custom_status_menuitem.set_image(gtkgui_helpers.load_icon( gajim.interface.status_sent_to_users[account][jid])) else: icon = gtk.image_new_from_stock(gtk.STOCK_NETWORK, @@ -2844,7 +2848,7 @@ class RosterWindow: path = os.path.join(helpers.get_iconset_path(iconset), '16x16') for s in ['online', 'chat', 'away', 'xa', 'dnd', 'offline']: # icon MUST be different instance for every item - state_images = self.load_iconset(path) + state_images = gtkgui_helpers.load_iconset(path) status_menuitem = gtk.ImageMenuItem(helpers.get_uf_show(s)) status_menuitem.connect('activate', self.on_send_custom_status, [(contact, account)], s) @@ -2977,7 +2981,7 @@ class RosterWindow: # using self.jabber_status_images is poopoo iconset = gajim.config.get('iconset') path = os.path.join(helpers.get_iconset_path(iconset), '16x16') - state_images = self.load_iconset(path) + state_images = gtkgui_helpers.load_iconset(path) if not gajim.config.get_per('accounts', account, 'is_zeroconf'): xml = gtkgui_helpers.get_glade('account_context_menu.glade') @@ -2986,7 +2990,7 @@ class RosterWindow: status_menuitem = xml.get_widget('status_menuitem') start_chat_menuitem = xml.get_widget('start_chat_menuitem') join_group_chat_menuitem = xml.get_widget('join_group_chat_menuitem') - muc_icon = self.load_icon('muc_active') + muc_icon = gtkgui_helpers.load_icon('muc_active') if muc_icon: join_group_chat_menuitem.set_image(muc_icon) open_gmail_inbox_menuitem = xml.get_widget('open_gmail_inbox_menuitem') @@ -3166,7 +3170,7 @@ class RosterWindow: accounts.append(account) accounts.sort() for account in accounts: - state_images = self.load_iconset(path) + state_images = gtkgui_helpers.load_iconset(path) item = gtk.ImageMenuItem(account) show = gajim.SHOW_LIST[gajim.connections[account].connected] icon = state_images[show] @@ -3487,7 +3491,8 @@ class RosterWindow: model = self.tree.get_model() accountIter = self.get_account_iter(account) if accountIter: - model[accountIter][0] = self.jabber_state_images['16']['connecting'] + model[accountIter][0] = gajim.interface.jabber_state_images['16'][ + 'connecting'] if gajim.interface.systray_enabled: gajim.interface.systray.change_status('connecting') @@ -3510,8 +3515,8 @@ class RosterWindow: passphrase, save = w.run() if passphrase == -1: if accountIter: - model[accountIter][0] = self.jabber_state_images['16']\ - ['offline'] + model[accountIter][0] = gajim.interface.\ + jabber_state_images['16']['offline'] if gajim.interface.systray_enabled: gajim.interface.systray.change_status('offline') self.update_status_combobox() @@ -3827,7 +3832,7 @@ class RosterWindow: liststore = self.status_combobox.get_model() liststore.prepend(['SEPARATOR', None, '', True]) liststore.prepend([uf_show + ' ' + "(desync'ed)", - self.jabber_state_images['16'][show], show, False]) + gajim.interface.jabber_state_images['16'][show], show, False]) self.status_combobox.set_active(0) self._change_awn_icon_status(show) self.combobox_callback_active = True @@ -3844,7 +3849,8 @@ class RosterWindow: show = gajim.SHOW_LIST[status] else: # accounts merged show = helpers.get_global_show() - model[accountIter][C_IMG] = self.jabber_state_images['16'][show] + model[accountIter][C_IMG] = gajim.interface.jabber_state_images['16'][ + show] def on_status_changed(self, account, status): '''the core tells us that our status has changed''' @@ -4420,7 +4426,8 @@ class RosterWindow: accounts = [model[iter][C_ACCOUNT].decode('utf-8')] type_ = model[iter][C_TYPE] if type_ == 'group': - model.set_value(iter, 0, self.jabber_state_images['16']['opened']) + model.set_value(iter, 0, gajim.interface.jabber_state_images['16'][ + 'opened']) jid = model[iter][C_JID].decode('utf-8') for account in accounts: if gajim.groups[account].has_key(jid): # This account has this group @@ -4452,7 +4459,8 @@ class RosterWindow: accounts = [model[iter][C_ACCOUNT].decode('utf-8')] type_ = model[iter][C_TYPE] if type_ == 'group': - model.set_value(iter, 0, self.jabber_state_images['16']['closed']) + model.set_value(iter, 0, gajim.interface.jabber_state_images['16'][ + 'closed']) jid = model[iter][C_JID].decode('utf-8') for account in accounts: if gajim.groups[account].has_key(jid): # This account has this group @@ -4481,118 +4489,24 @@ class RosterWindow: except GajimGeneralException: pass - def load_iconset(self, path, pixbuf2 = None, transport = False): - '''load full iconset from the given path, and add - pixbuf2 on top left of each static images''' - path += '/' - if transport: - list = ('online', 'chat', 'away', 'xa', 'dnd', 'offline', - 'not in roster') - else: - list = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd', - 'invisible', 'offline', 'error', 'requested', 'event', 'opened', - 'closed', 'not in roster', 'muc_active', 'muc_inactive') - if pixbuf2: - list = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd', - 'offline', 'error', 'requested', 'event', 'not in roster') - return self._load_icon_list(list, path, pixbuf2) - - def load_icon(self, icon_name): - '''load an icon from the iconset in 16x16''' - iconset = gajim.config.get('iconset') - path = os.path.join(helpers.get_iconset_path(iconset), '16x16'+ '/') - icon_list = self._load_icon_list([icon_name], path) - return icon_list[icon_name] - - def load_icons_meta(self): - '''load and return - AND + small icons to put on top left of an icon - for meta contacts.''' - iconset = gajim.config.get('iconset') - path = os.path.join(helpers.get_iconset_path(iconset), '16x16') - # try to find opened_meta.png file, else opened.png else nopixbuf merge - path_opened = os.path.join(path, 'opened_meta.png') - if not os.path.isfile(path_opened): - path_opened = os.path.join(path, 'opened.png') - if os.path.isfile(path_opened): - pixo = gtk.gdk.pixbuf_new_from_file(path_opened) - else: - pixo = None - # Same thing for closed - path_closed = os.path.join(path, 'opened_meta.png') - if not os.path.isfile(path_closed): - path_closed = os.path.join(path, 'closed.png') - if os.path.isfile(path_closed): - pixc = gtk.gdk.pixbuf_new_from_file(path_closed) - else: - pixc = None - return pixo, pixc - - def _load_icon_list(self, icons_list, path, pixbuf2 = None): - '''load icons in icons_list from the given path, - and add pixbuf2 on top left of each static images''' - imgs = {} - for icon in icons_list: - # try to open a pixfile with the correct method - icon_file = icon.replace(' ', '_') - files = [] - files.append(path + icon_file + '.gif') - files.append(path + icon_file + '.png') - image = gtk.Image() - image.show() - imgs[icon] = image - for file in files: # loop seeking for either gif or png - if os.path.exists(file): - image.set_from_file(file) - if pixbuf2 and image.get_storage_type() == gtk.IMAGE_PIXBUF: - # add pixbuf2 on top-left corner of image - pixbuf1 = image.get_pixbuf() - pixbuf2.composite(pixbuf1, 0, 0, - pixbuf2.get_property('width'), - pixbuf2.get_property('height'), 0, 0, 1.0, 1.0, - gtk.gdk.INTERP_NEAREST, 255) - image.set_from_pixbuf(pixbuf1) - break - return imgs - - def make_jabber_state_images(self): - '''initialise jabber_state_images dict''' - iconset = gajim.config.get('iconset') - if iconset: - path = os.path.join(helpers.get_iconset_path(iconset), '16x16') - if not os.path.exists(path): - iconset = gajim.config.DEFAULT_ICONSET - else: - iconset = gajim.config.DEFAULT_ICONSET - - path = os.path.join(helpers.get_iconset_path(iconset), '32x32') - self.jabber_state_images['32'] = self.load_iconset(path) - - path = os.path.join(helpers.get_iconset_path(iconset), '16x16') - self.jabber_state_images['16'] = self.load_iconset(path) - - pixo, pixc = self.load_icons_meta() - self.jabber_state_images['opened'] = self.load_iconset(path, pixo) - self.jabber_state_images['closed'] = self.load_iconset(path, pixc) - def make_transport_state_images(self, transport): '''initialise opened and closed 'transport' iconset dict''' if gajim.config.get('use_transports_iconsets'): folder = os.path.join(helpers.get_transport_path(transport), '16x16') - pixo, pixc = self.load_icons_meta() + pixo, pixc = gtkgui_helpers.load_icons_meta() self.transports_state_images['opened'][transport] = \ - self.load_iconset(folder, pixo, transport = True) + gtkgui_helpers.load_iconset(folder, pixo, transport = True) self.transports_state_images['closed'][transport] = \ - self.load_iconset(folder, pixc, transport = True) + gtkgui_helpers.load_iconset(folder, pixc, transport = True) folder = os.path.join(helpers.get_transport_path(transport), '32x32') - self.transports_state_images['32'][transport] = self.load_iconset( - folder, transport = True) + self.transports_state_images['32'][transport] = \ + gtkgui_helpers.load_iconset(folder, transport = True) folder = os.path.join(helpers.get_transport_path(transport), '16x16') - self.transports_state_images['16'][transport] = self.load_iconset( - folder, transport = True) + self.transports_state_images['16'][transport] = \ + gtkgui_helpers.load_iconset(folder, transport = True) - def reload_jabber_state_images(self): - self.make_jabber_state_images() + def update_jabber_state_images(self): # Update the roster self.draw_roster() # Update the status combobox @@ -4602,7 +4516,8 @@ class RosterWindow: if model[iter][2] != '': # If it's not change status message iter # eg. if it has show parameter not '' - model[iter][1] = self.jabber_state_images['16'][model[iter][2]] + model[iter][1] = gajim.interface.jabber_state_images['16'][model[ + iter][2]] iter = model.iter_next(iter) # Update the systray if gajim.interface.systray_enabled: @@ -5367,8 +5282,6 @@ class RosterWindow: self._on_treeview_selection_changed) self._last_selected_contact = [] # holds a list of (jid, account) tupples - self.jabber_state_images = {'16': {}, '32': {}, 'opened': {}, - 'closed': {}} self.transports_state_images = {'16': {}, '32': {}, 'opened': {}, 'closed': {}} @@ -5412,8 +5325,6 @@ class RosterWindow: # quitting self.quit_on_next_offline = -1 - self.make_jabber_state_images() - # uf_show, img, show, sensitive liststore = gtk.ListStore(str, gtk.Image, str, bool) self.status_combobox = self.xml.get_widget('status_combobox') @@ -5440,8 +5351,8 @@ class RosterWindow: for show in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'): uf_show = helpers.get_uf_show(show) - liststore.append([uf_show, self.jabber_state_images['16'][show], show, - True]) + liststore.append([uf_show, gajim.interface.jabber_state_images['16'][ + show], show, True]) # Add a Separator (self.iter_is_separator() checks on string SEPARATOR) liststore.append(['SEPARATOR', None, '', True]) @@ -5455,8 +5366,8 @@ class RosterWindow: liststore.append(['SEPARATOR', None, '', True]) uf_show = helpers.get_uf_show('offline') - liststore.append([uf_show, self.jabber_state_images['16']['offline'], - 'offline', True]) + liststore.append([uf_show, gajim.interface.jabber_state_images['16'][ + 'offline'], 'offline', True]) status_combobox_items = ['online', 'chat', 'away', 'xa', 'dnd', 'invisible', 'separator1', 'change_status_msg', 'separator2', diff --git a/src/statusicon.py b/src/statusicon.py index 4a49f8669..8dfe843e3 100644 --- a/src/statusicon.py +++ b/src/statusicon.py @@ -77,7 +77,7 @@ class StatusIcon(systray.Systray): self.status_icon.set_blinking(False) #FIXME: do not always use 16x16 (ask actually used size and use that) - image = gajim.interface.roster.jabber_state_images['16'][state] + image = gajim.interface.jabber_state_images['16'][state] if image.get_storage_type() == gtk.IMAGE_PIXBUF: self.status_icon.set_from_pixbuf(image.get_pixbuf()) #FIXME: oops they forgot to support GIF animation? diff --git a/src/systray.py b/src/systray.py index 5133cc510..48d9830b1 100644 --- a/src/systray.py +++ b/src/systray.py @@ -91,7 +91,7 @@ class Systray: state = 'event' else: state = self.status - image = gajim.interface.roster.jabber_state_images['16'][state] + image = gajim.interface.jabber_state_images['16'][state] if image.get_storage_type() == gtk.IMAGE_ANIMATION: self.img_tray.set_from_animation(image.get_animation()) elif image.get_storage_type() == gtk.IMAGE_PIXBUF: @@ -151,7 +151,7 @@ class Systray: # We need our own set of status icons, let's make 'em! iconset = gajim.config.get('iconset') path = os.path.join(helpers.get_iconset_path(iconset), '16x16') - state_images = gajim.interface.roster.load_iconset(path) + state_images = gajim.interface.load_iconset(path) if state_images.has_key('muc_active'): join_gc_menuitem.set_image(state_images['muc_active'])