diff --git a/src/chat.py b/src/chat.py index 823a5ee4d..9632810f8 100644 --- a/src/chat.py +++ b/src/chat.py @@ -33,7 +33,7 @@ APP = i18n.APP gtk.glade.bindtextdomain(APP, i18n.DIR) gtk.glade.textdomain(APP) -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' +GTKGUI_GLADE='gtkgui.glade' class Chat: """Class for chat/groupchat windows""" @@ -58,15 +58,15 @@ class Chat: def update_tags(self): for jid in self.tagIn: - self.tagIn[jid].set_property("foreground", \ - self.plugin.config['inmsgcolor']) - self.tagOut[jid].set_property("foreground", \ - self.plugin.config['outmsgcolor']) - self.tagStatus[jid].set_property("foreground", \ - self.plugin.config['statusmsgcolor']) + self.tagIn[jid].set_property('foreground', \ + gajim.config.get('inmsgcolor')) + self.tagOut[jid].set_property('foreground', \ + gajim.config.get('outmsgcolor')) + self.tagStatus[jid].set_property('foreground', \ + gajim.config.get('statusmsgcolor')) def update_print_time(self): - if self.plugin.config['print_time'] != 'sometimes': + if gajim.config.get('print_time') != 'sometimes': list_jid = self.print_time_timeout_id.keys() for jid in list_jid: gobject.source_remove(self.print_time_timeout_id[jid]) @@ -85,9 +85,9 @@ class Chat: unread += self.nb_unread[jid] start = "" if unread > 1: - start = "[" + str(unread) + "] " + start = '[' + str(unread) + '] ' elif unread == 1: - start = "* " + start = '* ' chat = self.names[jid] if len(self.xmls) > 1: # if more than one tabs in the same window if self.widget_name == 'tabbed_chat_window': @@ -105,9 +105,9 @@ class Chat: """redraw the label of the tab""" start = '' if self.nb_unread[jid] > 1: - start = "[" + str(self.nb_unread[jid]) + "] " + start = '[' + str(self.nb_unread[jid]) + '] ' elif self.nb_unread[jid] == 1: - start = "* " + start = '* ' child = self.childs[jid] tab_label = self.notebook.get_tab_label(child).get_children()[0] tab_label.set_text(start + self.names[jid]) @@ -134,8 +134,7 @@ class Chat: return active_jid def on_close_button_clicked(self, button, jid): - """When close button is pressed : - close a tab""" + """When close button is pressed : close a tab""" self.remove_tab(jid) def on_chat_window_focus_in_event(self, widget, event): @@ -219,13 +218,13 @@ class Chat: conversation_buffer.create_mark('end', end_iter, False) self.tagIn[jid] = conversation_buffer.create_tag('incoming') - color = self.plugin.config['inmsgcolor'] + color = gajim.config.get('inmsgcolor') self.tagIn[jid].set_property('foreground', color) self.tagOut[jid] = conversation_buffer.create_tag('outgoing') - color = self.plugin.config['outmsgcolor'] + color = gajim.config.get('outmsgcolor') self.tagOut[jid].set_property('foreground', color) self.tagStatus[jid] = conversation_buffer.create_tag('status') - color = self.plugin.config['statusmsgcolor'] + color = gajim.config.get('statusmsgcolor') self.tagStatus[jid].set_property('foreground', color) tag = conversation_buffer.create_tag('time_sometimes') @@ -405,7 +404,7 @@ class Chat: def print_time_timeout(self, jid): if not jid in self.xmls.keys(): return 0 - if self.plugin.config['print_time'] == 'sometimes': + if gajim.config.get('print_time') == 'sometimes': conversation_textview = self.xmls[jid].\ get_widget('conversation_textview') conversation_buffer = conversation_textview.get_buffer() @@ -487,7 +486,7 @@ class Chat: index = 0 # basic: links + mail + formatting is always checked (we like that) - if self.plugin.config['useemoticons']: # search for emoticons & urls + if gajim.config.get('useemoticons'): # search for emoticons & urls iterator = self.plugin.emot_and_basic_re.finditer(otext) else: # search for just urls + mail + formatting iterator = self.plugin.basic_pattern_re.finditer(otext) @@ -593,11 +592,11 @@ class Chat: text = '' if conversation_buffer.get_char_count() > 0: conversation_buffer.insert(end_iter, '\n') - if self.plugin.config['print_time'] == 'always': + if gajim.config.get('print_time') == 'always': if not tim: tim = time.localtime() - self.before_time_symbols = self.plugin.config['before_time'] - self.after_time_symbols = self.plugin.config['after_time'] + self.before_time_symbols = gajim.config.get('before_time') + self.after_time_symbols = gajim.config.get('after_time') format = self.before_time_symbols + '%H:%M:%S' + self.after_time_symbols tim_format = time.strftime(format, tim) conversation_buffer.insert(end_iter, tim_format + ' ') @@ -614,8 +613,8 @@ class Chat: tags = other_tags_for_name[:] #create a new list tags.append(kind) if name and not print_all_special: - self.before_nickname_symbols = self.plugin.config['before_nickname'] - self.after_nickname_symbols = self.plugin.config['after_nickname'] + self.before_nickname_symbols = gajim.config.get('before_nickname') + self.after_nickname_symbols = gajim.config.get('after_nickname') format = self.before_nickname_symbols + name\ + self.after_nickname_symbols + ' ' self.print_with_tag_list(conversation_buffer, format, end_iter, tags) diff --git a/src/common/__init__.py b/src/common/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/common/connection.py b/src/common/connection.py index f1b85f80a..a24af9b1c 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -1,4 +1,4 @@ -## Core/connection.py +## common/connection.py ## ## Gajim Team: ## - Yann Le Boulanger @@ -86,13 +86,12 @@ class connection: def __init__(self, name = None): # dict of function to be calledfor each event self.handlers = {'ROSTER': [], 'WARNING': [], 'ERROR': [], 'STATUS': [], \ - 'NOTIFY': [], 'MSG': [], 'MSGERROR': [], 'SUBSCRIBED': [], \ - 'UNSUBSCRIBED': [], 'SUBSCRIBE': [], 'AGENTS': [], 'AGENT_INFO': [], \ - 'AGENT_INFO_ITEMS': [], 'AGENT_INFO_INFO': [], 'REG_AGENT_INFO': [], \ - 'QUIT': [], 'ACC_OK': [], 'CONFIG': [], 'MYVCARD': [], 'OS_INFO': [], \ - 'VCARD': [], 'LOG_NB_LINE': [], 'LOG_LINE': [], 'VISUAL': [], \ + 'NOTIFY': [], 'MSG': [], 'MSGERROR': [], 'MSGSENT': [] , \ + 'SUBSCRIBED': [], 'UNSUBSCRIBED': [], 'SUBSCRIBE': [], \ + 'AGENT_INFO': [], 'AGENT_INFO_ITEMS': [], 'AGENT_INFO_INFO': [], \ + 'QUIT': [], 'ACC_OK': [], 'MYVCARD': [], 'OS_INFO': [], 'VCARD': [], \ 'GC_MSG': [], 'GC_SUBJECT': [], 'BAD_PASSPHRASE': [], \ - 'GPG_SECRETE_KEYS': [], 'ROSTER_INFO': [], 'MSGSENT': []} + 'ROSTER_INFO': []} self.name = name self.connected = 0 # offline self.connection = None # Jabber.py instance diff --git a/src/config.py b/src/config.py index 47e7db9f5..8080e8d0e 100644 --- a/src/config.py +++ b/src/config.py @@ -31,7 +31,7 @@ gtk.glade.textdomain (APP) from dialogs import * import gtkgui -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' +GTKGUI_GLADE='gtkgui.glade' class Preferences_window: @@ -1213,9 +1213,13 @@ class Account_modification_window: self.plugin.send('ASK_VCARD', self.account, jid) def on_gpg_choose_button_clicked(self, widget, data=None): - w = choose_gpg_key_dialog() - self.plugin.windows['gpg_keys'] = w - self.plugin.send('GPG_SECRETE_KEYS', None, ()) + #FIXME: + secret_keys = connection.ask_gpg_secrete_keys() + if not secret_keys: + Error_dialog(_('error contacting %s') % service) + return + secret_keys['None'] = 'None' + w = choose_gpg_key_dialog(secret_keys) keyID = w.run() if keyID == -1: return @@ -1796,7 +1800,12 @@ class Service_discovery_window: if not iter : return service = model.get_value(iter, 1) - self.plugin.send('REG_AGENT_INFO', self.account, service) + #FIXME: + infos = connection.ask_register_agent_info(service) + if not infos.has_key('instructions'): + Error_dialog(_('error contacting %s') % service) + else: + Service_registration_window(service, infos, self.plugin, self.account) self.window.destroy() def on_services_treeview_cursor_changed(self, widget): diff --git a/src/dialogs.py b/src/dialogs.py index 8dfd11b72..1bebaec24 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -27,9 +27,8 @@ gtk.glade.bindtextdomain (APP, i18n.DIR) gtk.glade.textdomain (APP) import gtkgui -import version -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' +GTKGUI_GLADE='gtkgui.glade' class Vcard_information_window: """Class for user's information window""" @@ -363,7 +362,7 @@ class choose_gpg_key_dialog: for keyID in list.keys(): model.append((keyID, list[keyID])) - def __init__(self): + def __init__(self, secret_keys): #list : {keyID: userName, ...} xml = gtk.glade.XML(GTKGUI_GLADE, 'choose_gpg_key_dialog', APP) self.window = xml.get_widget('choose_gpg_key_dialog') @@ -377,6 +376,7 @@ class choose_gpg_key_dialog: renderer = gtk.CellRendererText() self.keys_treeview.insert_column_with_attributes(-1, _('User name'), \ renderer, text=1) + self.fill_tree(secret_keys) self.window.show_all() @@ -389,12 +389,12 @@ class Change_status_message_dialog: self.autoconnect = autoconnect message_textview = self.xml.get_widget('message_textview') self.message_buffer = message_textview.get_buffer() - self.message_buffer.set_text(self.plugin.config['last_msg']) + self.message_buffer.set_text(gajim.config.get('last_msg')) self.values = {'':''} i = 0 - while self.plugin.config.has_key('msg%s_name' % i): - self.values[self.plugin.config['msg%s_name' % i]] = \ - self.plugin.config['msg%s' % i] + while gajim.config.exist('msg%s_name' % i): + self.values[gajim.config.get('msg%s_name' % i)] = \ + gajim.config.get('msg%s' % i) i += 1 liststore = gtk.ListStore(str, str) message_comboboxentry = self.xml.get_widget('message_comboboxentry') @@ -413,7 +413,7 @@ class Change_status_message_dialog: if rep == gtk.RESPONSE_OK: beg, end = self.message_buffer.get_bounds() message = self.message_buffer.get_text(beg, end, 0) - self.plugin.config['last_msg'] = message + gajim.config.set('last_msg', message) else: message = -1 self.window.destroy() @@ -565,7 +565,7 @@ class About_dialog: dlg = gtk.AboutDialog() dlg.set_name('Gajim') - dlg.set_version(version.version) + dlg.set_version(gajim.version.version) s = u'Copyright \xa9 2003-2005 Gajim Team' dlg.set_copyright(s) text = open('COPYING').read() @@ -683,7 +683,7 @@ class Join_groupchat_window: cell = gtk.CellRendererText() self.recently_combobox.pack_start(cell, True) self.recently_combobox.add_attribute(cell, 'text', 0) - self.recently_groupchat = self.plugin.config['recently_groupchat'].split() + self.recently_groupchat = gajim.config.get('recently_groupchat').split() for g in self.recently_groupchat: self.recently_combobox.append_text(g) @@ -720,8 +720,7 @@ class Join_groupchat_window: self.recently_groupchat.insert(0, jid) if len(self.recently_groupchat) > 10: self.recently_groupchat = self.recently_groupchat[0:10] - self.plugin.config['recently_groupchat'] = \ - ' '.join(self.recently_groupchat) + gajim.config.set('recently_groupchat', ' '.join(self.recently_groupchat)) self.plugin.roster.new_group(jid, nickname, self.account) self.plugin.send('GC_JOIN', self.account, (nickname, room, server, \ password)) diff --git a/src/groupchat_window.py b/src/groupchat_window.py index 61a43b4ab..f971155de 100644 --- a/src/groupchat_window.py +++ b/src/groupchat_window.py @@ -34,7 +34,7 @@ APP = i18n.APP gtk.glade.bindtextdomain(APP, i18n.DIR) gtk.glade.textdomain(APP) -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' +GTKGUI_GLADE='gtkgui.glade' class Groupchat_window(Chat): """Class for Groupchat window""" diff --git a/src/gtkgui.py b/src/gtkgui.py index 4042bc4f3..0be4a186f 100644 --- a/src/gtkgui.py +++ b/src/gtkgui.py @@ -1,4 +1,4 @@ -## plugins/gtkgui.py +## gtkgui.py ## ## Gajim Team: ## - Yann Le Boulanger @@ -16,41 +16,7 @@ ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## - -if __name__ == "__main__": - import getopt, pickle, sys, socket - - try: # Import Psyco if available - import psyco - psyco.full() - except ImportError: - pass - try: - opts, args = getopt.getopt(sys.argv[1:], "p:h", ["help"]) - except getopt.GetoptError: - # print help information and exit: - usage() - sys.exit(2) - port = 8255 - for o, a in opts: - if o == '-p': - port = a - if o in ("-h", "--help"): - usage() - sys.exit() - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - try: - sock.connect(('', 8255)) - except: - #TODO: use i18n - print "unable to connect to localhost on port ", port - else: - evp = pickle.dumps(('EXEC_PLUGIN', '', 'gtkgui')) - sock.send('<'+evp+'>') - sock.close() - sys.exit() - import pygtk pygtk.require('2.0') import gtk @@ -58,10 +24,9 @@ import gtk.glade import pango import gobject import os -import time -import sys -import Queue import sre +global gajim +import common.gajim as gajim import common.sleepy try: @@ -72,8 +37,8 @@ except ImportError: class CellRendererImage(gtk.GenericCellRenderer): __gproperties__ = { - "image": (gobject.TYPE_OBJECT, "Image", - "Image", gobject.PARAM_READWRITE), + 'image': (gobject.TYPE_OBJECT, 'Image', + 'Image', gobject.PARAM_READWRITE), } def __init__(self): @@ -115,8 +80,8 @@ class CellRendererImage(gtk.GenericCellRenderer): pix_rect.x += cell_area.x pix_rect.y += cell_area.y - pix_rect.width -= 2 * self.get_property("xpad") - pix_rect.height -= 2 * self.get_property("ypad") + pix_rect.width -= 2 * self.get_property('xpad') + pix_rect.height -= 2 * self.get_property('ypad') draw_rect = cell_area.intersect(pix_rect) draw_rect = expose_area.intersect(draw_rect) @@ -150,15 +115,15 @@ class CellRendererImage(gtk.GenericCellRenderer): return 0, 0, 0, 0 pixbuf_width = pix.get_width() pixbuf_height = pix.get_height() - calc_width = self.get_property("xpad") * 2 + pixbuf_width - calc_height = self.get_property("ypad") * 2 + pixbuf_height + calc_width = self.get_property('xpad') * 2 + pixbuf_width + calc_height = self.get_property('ypad') * 2 + pixbuf_height x_offset = 0 y_offset = 0 if cell_area and pixbuf_width > 0 and pixbuf_height > 0: - x_offset = self.get_property("xalign") * (cell_area.width - \ - calc_width - self.get_property("xpad")) - y_offset = self.get_property("yalign") * (cell_area.height - \ - calc_height - self.get_property("ypad")) + x_offset = self.get_property('xalign') * (cell_area.width - \ + calc_width - self.get_property('xpad')) + y_offset = self.get_property('yalign') * (cell_area.height - \ + calc_height - self.get_property('ypad')) return x_offset, y_offset, calc_width, calc_height gobject.type_register(CellRendererImage) @@ -205,63 +170,24 @@ APP = i18n.APP gtk.glade.bindtextdomain(APP, i18n.DIR) gtk.glade.textdomain(APP) -def usage(): - #TODO: use i18n - print 'usage :', sys.argv[0], ' [OPTION]' - print ' -p\tport on which the sock plugin listen' - print ' -h, --help\tdisplay this help and exit' +GTKGUI_GLADE='gtkgui.glade' -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' - - -class plugin: - """Class called by the core in a new thread""" - - class accounts: - """Class where are stored the accounts and users in them""" - def __init__(self): - self.__accounts = {} - - def add_account(self, account, users=()): - #users must be like (user1, user2) - self.__accounts[account] = users - - def add_user_to_account(self, account, user): - if self.__accounts.has_key(account): - self.__accounts[account].append(user) - else : - return 1 - - def get_accounts(self): - return self.__accounts.keys(); - - def get_users(self, account): - if self.__accounts.has_key(account): - return self.__accounts[account] - else : - return None - - def which_account(self, user): - for a in self.__accounts.keys(): - if user in self.__accounts[a]: - return a - return None - +class interface: def launch_browser_mailer(self, kind, url): #kind = 'url' or 'mail' - if self.config['openwith'] == 'gnome-open': + if gajim.config.get('openwith') == 'gnome-open': app = 'gnome-open' args = ['gnome-open'] args.append(url) - elif self.config['openwith'] == 'kfmclient exec': + elif gajim.config.get('openwith') == 'kfmclient exec': app = 'kfmclient' args = ['kfmclient', 'exec'] - elif self.config['openwith'] == 'custom': + elif gajim.config.get('openwith') == 'custom': if kind == 'url': - conf = self.config['custombrowser'] + conf = gajim.config.get('custombrowser') if kind == 'mail': - conf = self.config['custommailapp'] + conf = gajim.config.get('custommailapp') if conf == '': # if no app is configured return args = conf.split() @@ -280,44 +206,24 @@ class plugin: return 0 def play_sound(self, event): - if not self.config['sounds_on']: + if not gajim.config.get('sounds_on'): return - path_to_soundfile = self.config[event + '_file'] + path_to_soundfile = gajim.config.get(event + '_file') if not os.path.exists(path_to_soundfile): return if os.name == 'nt': winsound.PlaySound(path_to_soundfile, \ winsound.SND_FILENAME|winsound.SND_ASYNC) elif os.name == 'posix': - if self.config['soundplayer'] == '': + if gajim.config.get('soundplayer') == '': return - argv = self.config['soundplayer'].split() + argv = gajim.config.get('soundplayer').split() argv.append(path_to_soundfile) pid = os.spawnvp(os.P_NOWAIT, argv[0], argv) pidp, r = os.waitpid(pid, os.WNOHANG) if pidp == 0: gobject.timeout_add(10000, self.play_timeout, pid) - def send(self, event, account, data): - self.queueOUT.put((event, account, data)) - - def wait(self, what): - """Wait for a message from Core""" - #TODO: timeout - temp_q = Queue.Queue(50) - while 1: - if not self.queueIN.empty(): - ev = self.queueIN.get() - if ev[0] == what and ev[2][0] == 'GtkGui': - #Restore messages - while not temp_q.empty(): - ev2 = temp_q.get() - self.queueIN.put(ev2) - return ev[2][1] - else: - #Save messages - temp_q.put(ev) - def handle_event_roster(self, account, data): #('ROSTER', account, (state, array)) statuss = ['offline', 'online', 'away', 'xa', 'dnd', 'invisible'] @@ -500,11 +406,6 @@ class plugin: def handle_event_unsubscribed(self, account, jid): Information_dialog(_("You are now unsubscribed by %s") % jid) - def handle_event_agents(self, account, agents): - #('AGENTS', account, agents) - if self.windows[account].has_key('disco'): - self.windows[account]['disco'].agents(agents) - def handle_event_agent_info(self, account, array): #('AGENT_INFO', account, (agent, identities, features, items)) if self.windows[account].has_key('disco'): @@ -522,13 +423,6 @@ class plugin: self.windows[account]['disco'].agent_info_info(array[0], array[1], \ array[2]) - def handle_event_reg_agent_info(self, account, array): - #('REG_AGENTS_INFO', account, (agent, infos)) - if not array[1].has_key('instructions'): - Error_dialog(_("error contacting %s") % array[0]) - else: - Service_registration_window(array[0], array[1], self, account) - def handle_event_acc_ok(self, account, array): #('ACC_OK', account, (hostname, login, pasword, name, resource, prio, #use_proxy, proxyhost, proxyport)) @@ -559,11 +453,6 @@ class plugin: def handle_event_quit(self, p1, p2): self.roster.on_quit() # SUCH FUNCTION DOES NOT EXIST!! - def save_config(self): - hidden_lines = self.config['hiddenlines'].split('\t') - self.config['hiddenlines'] = '\t'.join(hidden_lines) - self.send('CONFIG', None, ('GtkGui', self.config, 'GtkGui')) - def handle_event_myvcard(self, account, array): nick = '' if array.has_key('NICKNAME'): @@ -581,22 +470,6 @@ class plugin: self.windows[account]['infos'][array[0]].set_os_info(array[1], \ array[2]) - def handle_event_log_nb_line(self, account, array): - #('LOG_NB_LINE', account, (jid, nb_line)) - if self.windows['logs'].has_key(array[0]): - self.windows['logs'][array[0]].set_nb_line(array[1]) - begin = 0 - if array[1] > 50: - begin = array[1] - 50 - self.send('LOG_GET_RANGE', None, (array[0], begin, array[1])) - - def handle_event_log_line(self, account, array): - #('LOG_LINE', account, (jid, num_line, date, type, data)) - # if type = 'recv' or 'sent' data = [msg] - # else type = jid and data = [status, away_msg] - if self.windows['logs'].has_key(array[0]): - self.windows['logs'][array[0]].new_line(array[1:]) - def handle_event_gc_msg(self, account, array): #('GC_MSG', account, (jid, msg, time)) jids = array[0].split('/') @@ -626,11 +499,6 @@ class plugin: def handle_event_bad_passphrase(self, account, array): Warning_dialog(_("Your GPG passphrase is wrong, so you are connected without your GPG key.")) - def handle_event_gpg_secrete_keys(self, account, keys): - keys['None'] = 'None' - if self.windows.has_key('gpg_keys'): - self.windows['gpg_keys'].fill_tree(keys) - def handle_event_roster_info(self, account, array): #('ROSTER_INFO', account, (jid, name, sub, ask, groups)) jid = array[0] @@ -652,68 +520,6 @@ class plugin: user.groups = array[4] self.roster.redraw_jid(jid, account) - def read_queue(self): - """Read queue from the core and execute commands from it""" - while self.queueIN.empty() == 0: - ev = self.queueIN.get() - if ev[0] == 'ROSTER': - self.handle_event_roster(ev[1], ev[2]) - elif ev[0] == 'WARNING': - self.handle_event_warning(ev[1], ev[2]) - elif ev[0] == 'ERROR': - self.handle_event_error(ev[1], ev[2]) - elif ev[0] == 'STATUS': - self.handle_event_status(ev[1], ev[2]) - elif ev[0] == 'NOTIFY': - self.handle_event_notify(ev[1], ev[2]) - elif ev[0] == 'MSG': - self.handle_event_msg(ev[1], ev[2]) - elif ev[0] == 'MSGERROR': - self.handle_event_msgerror(ev[1], ev[2]) - elif ev[0] == 'MSGSENT': - self.handle_event_msgsent(ev[1], ev[2]) - elif ev[0] == 'SUBSCRIBE': - self.handle_event_subscribe(ev[1], ev[2]) - elif ev[0] == 'SUBSCRIBED': - self.handle_event_subscribed(ev[1], ev[2]) - elif ev[0] == 'UNSUBSCRIBED': - self.handle_event_unsubscribed(ev[1], ev[2]) - elif ev[0] == 'AGENTS': - self.handle_event_agents(ev[1], ev[2]) - elif ev[0] == 'AGENT_INFO': - self.handle_event_agent_info(ev[1], ev[2]) - elif ev[0] == 'AGENT_INFO_ITEMS': - self.handle_event_agent_info_items(ev[1], ev[2]) - elif ev[0] == 'AGENT_INFO_INFO': - self.handle_event_agent_info_info(ev[1], ev[2]) - elif ev[0] == 'REG_AGENT_INFO': - self.handle_event_reg_agent_info(ev[1], ev[2]) - elif ev[0] == 'ACC_OK': - self.handle_event_acc_ok(ev[1], ev[2]) - elif ev[0] == 'QUIT': - self.handle_event_quit(ev[1], ev[2]) - elif ev[0] == 'MYVCARD': - self.handle_event_myvcard(ev[1], ev[2]) - elif ev[0] == 'OS_INFO': - self.handle_event_os_info(ev[1], ev[2]) - elif ev[0] == 'VCARD': - self.handle_event_vcard(ev[1], ev[2]) - elif ev[0] == 'LOG_NB_LINE': - self.handle_event_log_nb_line(ev[1], ev[2]) - elif ev[0] == 'LOG_LINE': - self.handle_event_log_line(ev[1], ev[2]) - elif ev[0] == 'GC_MSG': - self.handle_event_gc_msg(ev[1], ev[2]) - elif ev[0] == 'GC_SUBJECT': - self.handle_event_gc_subject(ev[1], ev[2]) - elif ev[0] == 'BAD_PASSPHRASE': - self.handle_event_bad_passphrase(ev[1], ev[2]) - elif ev[0] == 'GPG_SECRETE_KEYS': - self.handle_event_gpg_secrete_keys(ev[1], ev[2]) - elif ev[0] == 'ROSTER_INFO': - self.handle_event_roster_info(ev[1], ev[2]) - return 1 - def read_sleepy(self): """Check if we are idle""" if not self.sleeper.poll(): @@ -847,117 +653,25 @@ class plugin: # update regular expressions self.make_regexps() - def __init__(self, quIN, quOUT): - gtk.gdk.threads_init() + def __init__(self): if gtk.pygtk_version >= (2, 6, 0): gtk.about_dialog_set_email_hook(self.on_launch_browser_mailer, 'mail') gtk.about_dialog_set_url_hook(self.on_launch_browser_mailer, 'url') - self.queueIN = quIN - self.queueOUT = quOUT - self.send('REG_MESSAGE', 'gtkgui', ['ROSTER', 'WARNING', 'ERROR', \ - 'STATUS', 'NOTIFY', 'MSG', 'MSGERROR', 'SUBSCRIBED', 'UNSUBSCRIBED', \ - 'SUBSCRIBE', 'AGENTS', 'AGENT_INFO', 'AGENT_INFO_ITEMS', \ - 'AGENT_INFO_INFO', 'REG_AGENT_INFO', 'QUIT', 'ACC_OK', 'CONFIG', \ - 'MYVCARD', 'OS_INFO', 'VCARD', 'LOG_NB_LINE', 'LOG_LINE', 'VISUAL', \ - 'GC_MSG', 'GC_SUBJECT', 'BAD_PASSPHRASE', 'GPG_SECRETE_KEYS', \ - 'ROSTER_INFO', 'MSGSENT']) - self.default_config = {'autopopup':0,\ - 'autopopupaway':0,\ - 'ignore_unknown_contacts':0,\ - 'showoffline':0,\ - 'autoaway':1,\ - 'autoawaytime':10,\ - 'autoxa':1,\ - 'autoxatime':20,\ - 'ask_online_status':0,\ - 'ask_offline_status':0,\ - 'last_msg':'',\ - 'msg0_name':'Nap',\ - 'msg0':'I\'m taking a nap.',\ - 'msg1_name':'Brb',\ - 'msg1':'Back in some minutes.',\ - 'msg2_name':'Eating',\ - 'msg2':'I\'m eating, so leave me a message.',\ - 'msg3_name':'Movie',\ - 'msg3':'I\'m watching a movie.',\ - 'msg4_name':'Working',\ - 'msg4':'I\'m working.',\ - 'trayicon':1,\ - 'iconset':'sun',\ - 'inmsgcolor':'#ff0000',\ - 'outmsgcolor': '#0000ff',\ - 'statusmsgcolor':'#1eaa1e',\ - 'hiddenlines':'',\ - 'accounttextcolor': '#ffffff',\ - #ff0000 - 'accountbgcolor': '#94aa8c',\ - #9fdfff - 'accountfont': 'Sans Bold 10',\ - 'grouptextcolor': '#0000ff',\ - 'groupbgcolor': '#eff3e7',\ - #ffffff - 'groupfont': 'Sans Italic 10',\ - 'usertextcolor': '#000000',\ - 'userbgcolor': '#ffffff',\ - 'userfont': 'Sans 10',\ - 'saveposition': 1,\ - 'mergeaccounts': 0,\ - 'usetabbedchat': 1,\ - 'print_time': 'always',\ - 'useemoticons': 1,\ - 'emoticons': ':-)\tplugins/gtkgui/emoticons/smile.png\t(@)\tplugins/gtkgui/emoticons/pussy.png\t8)\tplugins/gtkgui/emoticons/coolglasses.png\t:(\tplugins/gtkgui/emoticons/unhappy.png\t:)\tplugins/gtkgui/emoticons/smile.png\t(})\tplugins/gtkgui/emoticons/hugleft.png\t:$\tplugins/gtkgui/emoticons/blush.png\t(Y)\tplugins/gtkgui/emoticons/yes.png\t:-@\tplugins/gtkgui/emoticons/angry.png\t:-D\tplugins/gtkgui/emoticons/biggrin.png\t(U)\tplugins/gtkgui/emoticons/brheart.png\t(F)\tplugins/gtkgui/emoticons/flower.png\t:-[\tplugins/gtkgui/emoticons/bat.png\t:>\tplugins/gtkgui/emoticons/biggrin.png\t(T)\tplugins/gtkgui/emoticons/phone.png\t:-S\tplugins/gtkgui/emoticons/frowing.png\t:-P\tplugins/gtkgui/emoticons/tongue.png\t(H)\tplugins/gtkgui/emoticons/coolglasses.png\t(D)\tplugins/gtkgui/emoticons/drink.png\t:-O\tplugins/gtkgui/emoticons/oh.png\t(C)\tplugins/gtkgui/emoticons/coffee.png\t({)\tplugins/gtkgui/emoticons/hugright.png\t(*)\tplugins/gtkgui/emoticons/star.png\tB-)\tplugins/gtkgui/emoticons/coolglasses.png\t(Z)\tplugins/gtkgui/emoticons/boy.png\t(E)\tplugins/gtkgui/emoticons/mail.png\t(N)\tplugins/gtkgui/emoticons/no.png\t(P)\tplugins/gtkgui/emoticons/photo.png\t(K)\tplugins/gtkgui/emoticons/kiss.png\t(R)\tplugins/gtkgui/emoticons/rainbow.png\t:-|\tplugins/gtkgui/emoticons/stare.png\t;-)\tplugins/gtkgui/emoticons/wink.png\t;-(\tplugins/gtkgui/emoticons/cry.png\t(6)\tplugins/gtkgui/emoticons/devil.png\t(L)\tplugins/gtkgui/emoticons/heart.png\t(W)\tplugins/gtkgui/emoticons/brflower.png\t:|\tplugins/gtkgui/emoticons/stare.png\t:O\tplugins/gtkgui/emoticons/oh.png\t;)\tplugins/gtkgui/emoticons/wink.png\t;(\tplugins/gtkgui/emoticons/cry.png\t:S\tplugins/gtkgui/emoticons/frowing.png\t;\'-(\tplugins/gtkgui/emoticons/cry.png\t:-(\tplugins/gtkgui/emoticons/unhappy.png\t8-)\tplugins/gtkgui/emoticons/coolglasses.png\t(B)\tplugins/gtkgui/emoticons/beer.png\t:D\tplugins/gtkgui/emoticons/biggrin.png\t(8)\tplugins/gtkgui/emoticons/music.png\t:@\tplugins/gtkgui/emoticons/angry.png\tB)\tplugins/gtkgui/emoticons/coolglasses.png\t:-$\tplugins/gtkgui/emoticons/blush.png\t:\'(\tplugins/gtkgui/emoticons/cry.png\t:->\tplugins/gtkgui/emoticons/biggrin.png\t:[\tplugins/gtkgui/emoticons/bat.png\t(I)\tplugins/gtkgui/emoticons/lamp.png\t:P\tplugins/gtkgui/emoticons/tongue.png\t(%)\tplugins/gtkgui/emoticons/cuffs.png\t(S)\tplugins/gtkgui/emoticons/moon.png',\ - 'sounds_on': 1,\ - 'soundplayer': 'play',\ - 'sound_first_message_received': 1,\ - 'sound_first_message_received_file': 'sounds/message1.wav',\ - 'sound_next_message_received': 0,\ - 'sound_next_message_received_file': 'sounds/message2.wav',\ - 'sound_contact_connected': 1,\ - 'sound_contact_connected_file': 'sounds/connected.wav',\ - 'sound_contact_disconnected': 1,\ - 'sound_contact_disconnected_file': 'sounds/disconnected.wav',\ - 'sound_message_sent': 1,\ - 'sound_message_sent_file': 'sounds/sent.wav',\ - 'openwith': 'gnome-open',\ - 'custombrowser' : 'firefox',\ - 'custommailapp' : 'mozilla-thunderbird -compose',\ - 'x-position': 0,\ - 'y-position': 0,\ - 'width': 150,\ - 'height': 400,\ - 'latest_disco_addresses': '',\ - 'recently_groupchat': '',\ - 'before_time': '[',\ - 'after_time': ']',\ - 'before_nickname': '<',\ - 'after_nickname': '>',\ - 'do_not_send_os_info': 0,\ - } - self.send('ASK_CONFIG', None, ('GtkGui', 'GtkGui', self.default_config)) - self.config = self.wait('CONFIG') - self.send('ASK_CONFIG', None, ('GtkGui', 'accounts')) - self.accounts = self.wait('CONFIG') self.windows = {'logs':{}} self.queues = {} - self.connected = {} self.nicks = {} self.sleeper_state = {} #whether we pass auto away / xa or not - for a in self.accounts.keys(): + for a in gajim.connections: self.windows[a] = {'infos': {}, 'chats': {}, 'gc': {}} self.queues[a] = {} - self.connected[a] = 0 #0->offline 1->connecting 2->online 3->away - #4->xa 5->dnd 6->invisible - self.nicks[a] = self.accounts[a]['name'] + self.nicks[a] = gajim.config.get_per('accounts', a, 'name') self.sleeper_state[a] = 0 #0:don't use sleeper for this account #1:online and use sleeper #2:autoaway and use sleeper #3:autoxa and use sleeper - self.send('ASK_ROSTER', a, self.queueIN) - iconset = self.config['iconset'] - if not iconset: - iconset = 'sun' - path = 'plugins/gtkgui/iconsets/' + iconset + '/' + iconset = gajim.config.get('iconset') + path = 'data/iconsets/' + iconset + '/' files = [path + 'online.gif', path + 'online.png', path + 'online.xpm'] pix = None for fname in files: @@ -967,11 +681,10 @@ class plugin: if pix: gtk.window_set_default_icon(pix) self.roster = Roster_window(self) - gobject.timeout_add(100, self.read_queue) gobject.timeout_add(100, self.read_sleepy) self.sleeper = common.sleepy.Sleepy( \ - self.config['autoawaytime']*60, \ - self.config['autoxatime']*60) + gajim.config.get('autoawaytime')*60, \ + gajim.config.get('autoxatime')*60) self.systray_enabled = False try: import egg.trayicon as trayicon # use gnomepythonextras trayicon @@ -979,8 +692,6 @@ class plugin: try: import trayicon # use yann's except: # user doesn't have trayicon capabilities - self.config['trayicon'] = 0 - self.send('CONFIG', None, ('GtkGui', self.config, 'GtkGui')) self.systray_capabilities = False else: self.systray_capabilities = True @@ -988,20 +699,25 @@ class plugin: else: self.systray_capabilities = True self.systray = Systray(self) - if self.config['trayicon']: + if self.systray_capabilities: self.show_systray() - + self.init_regexp() # get instances for windows/dialogs that will show_all()/hide() self.windows['preferences'] = Preferences_window(self) self.windows['add_remove_emoticons_window'] = \ - Add_remove_emoticons_window(self) + Add_remove_emoticons_window(self) self.windows['roster'] = self.roster - gtk.gdk.threads_enter() gobject.timeout_add(100, self.autoconnect) - gtk.main() - gtk.gdk.threads_leave() -print _('plugin gtkgui loaded') +if __name__ == '__main__': + try: # Import Psyco if available + import psyco + psyco.full() + except ImportError: + pass + + interface() + gtk.main() diff --git a/src/history_window.py b/src/history_window.py index 5d08c7c28..839be845d 100644 --- a/src/history_window.py +++ b/src/history_window.py @@ -28,7 +28,7 @@ APP = i18n.APP gtk.glade.bindtextdomain(APP, i18n.DIR) gtk.glade.textdomain(APP) -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' +GTKGUI_GLADE='gtkgui.glade' class history_window: """Class for bowser agent window: @@ -148,13 +148,13 @@ class history_window: self.latest_button = xml.get_widget('latest_button') xml.signal_autoconnect(self) tagIn = self.history_buffer.create_tag('incoming') - color = self.plugin.config['inmsgcolor'] + color = gajim.config.get('inmsgcolor') tagIn.set_property('foreground', color) tagOut = self.history_buffer.create_tag('outgoing') - color = self.plugin.config['outmsgcolor'] + color = gajim.config.get('outmsgcolor') tagOut.set_property('foreground', color) tagStatus = self.history_buffer.create_tag('status') - color = self.plugin.config['statusmsgcolor'] + color = gajim.config.get('statusmsgcolor') tagStatus.set_property('foreground', color) self.window.show_all() self.plugin.send('LOG_NB_LINE', None, jid) diff --git a/src/roster_window.py b/src/roster_window.py index 1a587e8e2..8fef4d0e3 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -39,7 +39,7 @@ APP = i18n.APP gtk.glade.bindtextdomain(APP, i18n.DIR) gtk.glade.textdomain(APP) -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' +GTKGUI_GLADE='gtkgui.glade' class Roster_window: """Class for main window of gtkgui plugin""" @@ -120,7 +120,7 @@ class Roster_window: def add_user_to_roster(self, jid, account): """Add a user to the roster and add groups if they aren't in roster""" - showOffline = self.plugin.config['showoffline'] + showOffline = gajim.config.get('showoffline') if not self.contacts[account].has_key(jid): return users = self.contacts[account][jid] @@ -148,7 +148,8 @@ class Roster_window: self.groups[account][g] = {'expand': False} else: self.groups[account][g] = {'expand': True} - if not account in self.hidden_lines and not self.plugin.config['mergeaccounts']: + if not account in self.hidden_lines and not gajim.config.get(\ + 'mergeaccounts'): self.tree.expand_row((model.get_path(iterG)[0]), False) typestr = 'user' @@ -365,7 +366,7 @@ class Roster_window: def chg_user_status(self, user, show, status, account): """When a user change his status""" - showOffline = self.plugin.config['showoffline'] + showOffline = gajim.config.get('showoffline') model = self.tree.get_model() luser = self.contacts[account][user.jid] user.show = show @@ -721,7 +722,7 @@ class Roster_window: if self.plugin.accounts[account].has_key('keyid'): keyid = self.plugin.accounts[account]['keyid'] if keyid and self.plugin.connected[account] < 2 and \ - self.plugin.config['usegpg']: + gajim.config.get('usegpg'): if save_gpg_pass: passphrase = self.plugin.accounts[account]['gpgpassword'] else: @@ -749,9 +750,8 @@ class Roster_window: self.plugin.sleeper_state[account] = 0 def get_status_message(self, status, autoconnect = 0): - if (status == 'online' and not self.plugin.config['ask_online_status']) \ - or (status == 'offline' and not \ - self.plugin.config['ask_offline_status']): + if (status == 'online' and not gajim.config.get('ask_online_status')) or \ + (status == 'offline' and not gajim.config.get('ask_offline_status')): return status dlg = Change_status_message_dialog(self.plugin, status, autoconnect) message = dlg.run() @@ -829,7 +829,7 @@ class Roster_window: self.update_status_comboxbox() def new_chat(self, user, account): - if self.plugin.config['usetabbedchat']: + if gajim.config.get('usetabbedchat'): if not self.plugin.windows[account]['chats'].has_key('tabbed'): self.plugin.windows[account]['chats']['tabbed'] = \ Tabbed_chat_window(user, self.plugin, account) @@ -845,7 +845,7 @@ class Roster_window: Tabbed_chat_window(user, self.plugin, account) def new_group(self, jid, nick, account): - if self.plugin.config['usetabbedchat']: + if gajim.config.get('usetabbedchat'): if not self.plugin.windows[account]['gc'].has_key('tabbed'): self.plugin.windows[account]['gc']['tabbed'] = \ Groupchat_window(jid, nick, self.plugin, account) @@ -871,8 +871,8 @@ class Roster_window: path = self.tree.get_model().get_path(iters[0]) else: path = None - autopopup = self.plugin.config['autopopup'] - autopopupaway = self.plugin.config['autopopupaway'] + autopopup = gajim.config.get('autopopup') + autopopupaway = gajim.config.get('autopopupaway') if (autopopup == 0 or ( not autopopupaway and \ self.plugin.connected[account] > 2)) and not \ self.plugin.windows[account]['chats'].has_key(jid): @@ -964,16 +964,17 @@ class Roster_window: def quit_gtkgui_plugin(self): """When we quit the gtk plugin : tell that to the core and exit gtk""" - if self.plugin.config.has_key('saveposition'): - if self.plugin.config['saveposition']: - self.plugin.config['x-position'], self.plugin.config['y-position']=\ - self.window.get_position() - self.plugin.config['width'], self.plugin.config['height'] = \ - self.window.get_size() + if gajim.config.exist('saveposition'): + if gajim.config.get('saveposition'): + x, y = self.window.get_position() + gajim.config.set('x-position', x) + gajim.config.set('y-position', y) + width, height = self.window.get_size() + gajim.config.set('width', width) + gajim.config.set('height', height) self.plugin.save_config() self.plugin.send('QUIT', None, ('gtkgui', 1)) - print _("plugin gtkgui stopped") self.close_all(self.plugin.windows) if self.plugin.systray_enabled: self.plugin.hide_systray() @@ -1010,7 +1011,7 @@ class Roster_window: self.tree.expand_row(path, False) else: if self.plugin.windows[account]['chats'].has_key(jid): - if self.plugin.config['usetabbedchat']: + if gajim.config.get('usetabbedchat'): self.plugin.windows[account]['chats'][jid].active_tab(jid) self.plugin.windows[account]['chats'][jid].window.present() elif self.contacts[account].has_key(jid): @@ -1103,7 +1104,7 @@ class Roster_window: def mkpixbufs(self): """initialise pixbufs array""" - iconset = self.plugin.config['iconset'] + iconset = gajim.config.get('iconset') if not iconset: iconset = 'sun' self.path = 'plugins/gtkgui/iconsets/' + iconset + '/' @@ -1161,19 +1162,18 @@ class Roster_window: def on_show_offline_contacts_menuitem_activate(self, widget): """when show offline option is changed: redraw the treeview""" - self.plugin.config['showoffline'] = 1 - self.plugin.config['showoffline'] - self.plugin.send('CONFIG', None, ('GtkGui', self.plugin.config, 'GtkGui')) + gajim.config.set('showoffline', 1 - gajim.config.get('showoffline')) self.draw_roster() def iconCellDataFunc(self, column, renderer, model, iter, data=None): """When a row is added, set properties for icon renderer""" if model.get_value(iter, 2) == 'account': renderer.set_property('cell-background', \ - self.plugin.config['accountbgcolor']) + gajim.config.get('accountbgcolor')) renderer.set_property('xalign', 0) elif model.get_value(iter, 2) == 'group': renderer.set_property('cell-background', \ - self.plugin.config['groupbgcolor']) + gajim.config.get('groupbgcolor')) renderer.set_property('xalign', 0.5) else: jid = model.get_value(iter, 3) @@ -1184,7 +1184,7 @@ class Roster_window: renderer.set_property('cell-background', '#ab6161') else: renderer.set_property('cell-background', \ - self.plugin.config['userbgcolor']) + gajim.config.get('userbgcolor')) renderer.set_property('xalign', 1) renderer.set_property('width', 20) @@ -1192,31 +1192,31 @@ class Roster_window: """When a row is added, set properties for name renderer""" if model.get_value(iter, 2) == 'account': renderer.set_property('foreground', \ - self.plugin.config['accounttextcolor']) + gajim.config.get('accounttextcolor')) renderer.set_property('cell-background', \ - self.plugin.config['accountbgcolor']) - renderer.set_property('font', self.plugin.config['accountfont']) + gajim.config.get('accountbgcolor')) + renderer.set_property('font', gajim.config.get('accountfont')) renderer.set_property('xpad', 0) elif model.get_value(iter, 2) == 'group': renderer.set_property('foreground', \ - self.plugin.config['grouptextcolor']) + gajim.config.get('grouptextcolor')) renderer.set_property('cell-background', \ - self.plugin.config['groupbgcolor']) - renderer.set_property('font', self.plugin.config['groupfont']) + gajim.config.get('groupbgcolor')) + renderer.set_property('font', gajim.config.get('groupfont')) renderer.set_property('xpad', 4) else: jid = model.get_value(iter, 3) account = model.get_value(iter, 4) renderer.set_property('foreground', \ - self.plugin.config['usertextcolor']) + gajim.config.get('usertextcolor')) if jid in self.newly_added[account]: renderer.set_property('cell-background', '#adc3c6') elif jid in self.to_be_removed[account]: renderer.set_property('cell-background', '#ab6161') else: renderer.set_property('cell-background', \ - self.plugin.config['userbgcolor']) - renderer.set_property('font', self.plugin.config['userfont']) + gajim.config.get('userbgcolor')) + renderer.set_property('font', gajim.config.get('userfont')) renderer.set_property('xpad', 8) def compareIters(self, model, iter1, iter2, data = None): @@ -1249,7 +1249,7 @@ class Roster_window: def drag_data_received_data(self, treeview, context, x, y, selection, info, etime): merge = 0 - if self.plugin.config['mergeaccounts']: + if gajim.config.get('mergeaccounts'): merge = 1 model = treeview.get_model() data = selection.data @@ -1325,18 +1325,12 @@ class Roster_window: self.join_gc_handler_id = False self.new_message_menuitem_handler_id = False self.regroup = 0 - if self.plugin.config.has_key('mergeaccounts'): - self.regroup = self.plugin.config['mergeaccounts'] - if self.plugin.config.has_key('saveposition'): - if self.plugin.config['saveposition']: - if self.plugin.config.has_key('x-position') and \ - self.plugin.config.has_key('y-position'): - self.window.move(self.plugin.config['x-position'], \ - self.plugin.config['y-position']) - if self.plugin.config.has_key('width') and \ - self.plugin.config.has_key('height'): - self.window.resize(self.plugin.config['width'], \ - self.plugin.config['height']) + self.regroup = gajim.config.get('mergeaccounts') + if gajim.config.get('saveposition'): + self.window.move(gajim.config.get('x-position'), \ + gajim.config.get('y-position')) + self.window.resize(gajim.config.get('width'), \ + gajim.config.get('height')) self.window.show_all() self.groups = {} self.contacts = {} @@ -1380,7 +1374,7 @@ class Roster_window: self.status_combobox.set_model(liststore) self.status_combobox.set_active(5) - showOffline = self.plugin.config['showoffline'] + showOffline = gajim.config.get('showoffline') self.xml.get_widget('show_offline_contacts_menuitem').set_active(showOffline) #columns @@ -1420,7 +1414,7 @@ class Roster_window: self.id_signal_cb = self.status_combobox.connect('changed',\ self.on_status_combobox_changed) - self.hidden_lines = self.plugin.config['hiddenlines'].split('\t') + self.hidden_lines = gajim.config.get('hiddenlines').split('\t') self.draw_roster() if len(self.plugin.accounts) == 0: # if no account self.plugin.windows['account_modification'] = \ diff --git a/src/systray.py b/src/systray.py index 5982f4dc8..43d178b84 100644 --- a/src/systray.py +++ b/src/systray.py @@ -28,7 +28,7 @@ APP = i18n.APP gtk.glade.bindtextdomain(APP, i18n.DIR) gtk.glade.textdomain(APP) -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' +GTKGUI_GLADE='gtkgui.glade' class Systray: """Class for icon in the systray""" diff --git a/src/tabbed_chat_window.py b/src/tabbed_chat_window.py index 32571930c..2e0753d82 100644 --- a/src/tabbed_chat_window.py +++ b/src/tabbed_chat_window.py @@ -34,7 +34,7 @@ APP = i18n.APP gtk.glade.bindtextdomain(APP, i18n.DIR) gtk.glade.textdomain(APP) -GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' +GTKGUI_GLADE='gtkgui.glade' class Tabbed_chat_window(Chat): """Class for tabbed chat window""" @@ -144,7 +144,7 @@ class Tabbed_chat_window(Chat): if self.plugin.queues[self.account].has_key(user.jid): self.read_queue(user.jid) - if self.plugin.config['print_time'] == 'sometimes': + if gajim.config.get('print_time') == 'sometimes': self.print_time_timeout(user.jid) self.print_time_timeout_id[user.jid] = gobject.timeout_add(300000, \ self.print_time_timeout, user.jid) @@ -211,7 +211,7 @@ class Tabbed_chat_window(Chat): self.plugin.roster.redraw_jid(jid, self.account) if self.plugin.systray_enabled: self.plugin.systray.remove_jid(jid, self.account) - showOffline = self.plugin.config['showoffline'] + showOffline = gajim.config.get('showoffline') if (user.show == 'offline' or user.show == 'error') and \ not showOffline: if len(self.plugin.roster.contacts[self.account][jid]) == 1: