configuration is now in common/config
currently gajim cannot be accessed from every where, even with global gajim :(
This commit is contained in:
parent
aaf349f140
commit
aa861b907a
47
src/chat.py
47
src/chat.py
|
@ -33,7 +33,7 @@ APP = i18n.APP
|
||||||
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
||||||
gtk.glade.textdomain(APP)
|
gtk.glade.textdomain(APP)
|
||||||
|
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
|
|
||||||
class Chat:
|
class Chat:
|
||||||
"""Class for chat/groupchat windows"""
|
"""Class for chat/groupchat windows"""
|
||||||
|
@ -58,15 +58,15 @@ class Chat:
|
||||||
|
|
||||||
def update_tags(self):
|
def update_tags(self):
|
||||||
for jid in self.tagIn:
|
for jid in self.tagIn:
|
||||||
self.tagIn[jid].set_property("foreground", \
|
self.tagIn[jid].set_property('foreground', \
|
||||||
self.plugin.config['inmsgcolor'])
|
gajim.config.get('inmsgcolor'))
|
||||||
self.tagOut[jid].set_property("foreground", \
|
self.tagOut[jid].set_property('foreground', \
|
||||||
self.plugin.config['outmsgcolor'])
|
gajim.config.get('outmsgcolor'))
|
||||||
self.tagStatus[jid].set_property("foreground", \
|
self.tagStatus[jid].set_property('foreground', \
|
||||||
self.plugin.config['statusmsgcolor'])
|
gajim.config.get('statusmsgcolor'))
|
||||||
|
|
||||||
def update_print_time(self):
|
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()
|
list_jid = self.print_time_timeout_id.keys()
|
||||||
for jid in list_jid:
|
for jid in list_jid:
|
||||||
gobject.source_remove(self.print_time_timeout_id[jid])
|
gobject.source_remove(self.print_time_timeout_id[jid])
|
||||||
|
@ -85,9 +85,9 @@ class Chat:
|
||||||
unread += self.nb_unread[jid]
|
unread += self.nb_unread[jid]
|
||||||
start = ""
|
start = ""
|
||||||
if unread > 1:
|
if unread > 1:
|
||||||
start = "[" + str(unread) + "] "
|
start = '[' + str(unread) + '] '
|
||||||
elif unread == 1:
|
elif unread == 1:
|
||||||
start = "* "
|
start = '* '
|
||||||
chat = self.names[jid]
|
chat = self.names[jid]
|
||||||
if len(self.xmls) > 1: # if more than one tabs in the same window
|
if len(self.xmls) > 1: # if more than one tabs in the same window
|
||||||
if self.widget_name == 'tabbed_chat_window':
|
if self.widget_name == 'tabbed_chat_window':
|
||||||
|
@ -105,9 +105,9 @@ class Chat:
|
||||||
"""redraw the label of the tab"""
|
"""redraw the label of the tab"""
|
||||||
start = ''
|
start = ''
|
||||||
if self.nb_unread[jid] > 1:
|
if self.nb_unread[jid] > 1:
|
||||||
start = "[" + str(self.nb_unread[jid]) + "] "
|
start = '[' + str(self.nb_unread[jid]) + '] '
|
||||||
elif self.nb_unread[jid] == 1:
|
elif self.nb_unread[jid] == 1:
|
||||||
start = "* "
|
start = '* '
|
||||||
child = self.childs[jid]
|
child = self.childs[jid]
|
||||||
tab_label = self.notebook.get_tab_label(child).get_children()[0]
|
tab_label = self.notebook.get_tab_label(child).get_children()[0]
|
||||||
tab_label.set_text(start + self.names[jid])
|
tab_label.set_text(start + self.names[jid])
|
||||||
|
@ -134,8 +134,7 @@ class Chat:
|
||||||
return active_jid
|
return active_jid
|
||||||
|
|
||||||
def on_close_button_clicked(self, button, jid):
|
def on_close_button_clicked(self, button, jid):
|
||||||
"""When close button is pressed :
|
"""When close button is pressed : close a tab"""
|
||||||
close a tab"""
|
|
||||||
self.remove_tab(jid)
|
self.remove_tab(jid)
|
||||||
|
|
||||||
def on_chat_window_focus_in_event(self, widget, event):
|
def on_chat_window_focus_in_event(self, widget, event):
|
||||||
|
@ -219,13 +218,13 @@ class Chat:
|
||||||
conversation_buffer.create_mark('end', end_iter, False)
|
conversation_buffer.create_mark('end', end_iter, False)
|
||||||
|
|
||||||
self.tagIn[jid] = conversation_buffer.create_tag('incoming')
|
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.tagIn[jid].set_property('foreground', color)
|
||||||
self.tagOut[jid] = conversation_buffer.create_tag('outgoing')
|
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.tagOut[jid].set_property('foreground', color)
|
||||||
self.tagStatus[jid] = conversation_buffer.create_tag('status')
|
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)
|
self.tagStatus[jid].set_property('foreground', color)
|
||||||
|
|
||||||
tag = conversation_buffer.create_tag('time_sometimes')
|
tag = conversation_buffer.create_tag('time_sometimes')
|
||||||
|
@ -405,7 +404,7 @@ class Chat:
|
||||||
def print_time_timeout(self, jid):
|
def print_time_timeout(self, jid):
|
||||||
if not jid in self.xmls.keys():
|
if not jid in self.xmls.keys():
|
||||||
return 0
|
return 0
|
||||||
if self.plugin.config['print_time'] == 'sometimes':
|
if gajim.config.get('print_time') == 'sometimes':
|
||||||
conversation_textview = self.xmls[jid].\
|
conversation_textview = self.xmls[jid].\
|
||||||
get_widget('conversation_textview')
|
get_widget('conversation_textview')
|
||||||
conversation_buffer = conversation_textview.get_buffer()
|
conversation_buffer = conversation_textview.get_buffer()
|
||||||
|
@ -487,7 +486,7 @@ class Chat:
|
||||||
index = 0
|
index = 0
|
||||||
|
|
||||||
# basic: links + mail + formatting is always checked (we like that)
|
# 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)
|
iterator = self.plugin.emot_and_basic_re.finditer(otext)
|
||||||
else: # search for just urls + mail + formatting
|
else: # search for just urls + mail + formatting
|
||||||
iterator = self.plugin.basic_pattern_re.finditer(otext)
|
iterator = self.plugin.basic_pattern_re.finditer(otext)
|
||||||
|
@ -593,11 +592,11 @@ class Chat:
|
||||||
text = ''
|
text = ''
|
||||||
if conversation_buffer.get_char_count() > 0:
|
if conversation_buffer.get_char_count() > 0:
|
||||||
conversation_buffer.insert(end_iter, '\n')
|
conversation_buffer.insert(end_iter, '\n')
|
||||||
if self.plugin.config['print_time'] == 'always':
|
if gajim.config.get('print_time') == 'always':
|
||||||
if not tim:
|
if not tim:
|
||||||
tim = time.localtime()
|
tim = time.localtime()
|
||||||
self.before_time_symbols = self.plugin.config['before_time']
|
self.before_time_symbols = gajim.config.get('before_time')
|
||||||
self.after_time_symbols = self.plugin.config['after_time']
|
self.after_time_symbols = gajim.config.get('after_time')
|
||||||
format = self.before_time_symbols + '%H:%M:%S' + self.after_time_symbols
|
format = self.before_time_symbols + '%H:%M:%S' + self.after_time_symbols
|
||||||
tim_format = time.strftime(format, tim)
|
tim_format = time.strftime(format, tim)
|
||||||
conversation_buffer.insert(end_iter, tim_format + ' ')
|
conversation_buffer.insert(end_iter, tim_format + ' ')
|
||||||
|
@ -614,8 +613,8 @@ class Chat:
|
||||||
tags = other_tags_for_name[:] #create a new list
|
tags = other_tags_for_name[:] #create a new list
|
||||||
tags.append(kind)
|
tags.append(kind)
|
||||||
if name and not print_all_special:
|
if name and not print_all_special:
|
||||||
self.before_nickname_symbols = self.plugin.config['before_nickname']
|
self.before_nickname_symbols = gajim.config.get('before_nickname')
|
||||||
self.after_nickname_symbols = self.plugin.config['after_nickname']
|
self.after_nickname_symbols = gajim.config.get('after_nickname')
|
||||||
format = self.before_nickname_symbols + name\
|
format = self.before_nickname_symbols + name\
|
||||||
+ self.after_nickname_symbols + ' '
|
+ self.after_nickname_symbols + ' '
|
||||||
self.print_with_tag_list(conversation_buffer, format, end_iter, tags)
|
self.print_with_tag_list(conversation_buffer, format, end_iter, tags)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
## Core/connection.py
|
## common/connection.py
|
||||||
##
|
##
|
||||||
## Gajim Team:
|
## Gajim Team:
|
||||||
## - Yann Le Boulanger <asterix@lagaule.org>
|
## - Yann Le Boulanger <asterix@lagaule.org>
|
||||||
|
@ -86,13 +86,12 @@ class connection:
|
||||||
def __init__(self, name = None):
|
def __init__(self, name = None):
|
||||||
# dict of function to be calledfor each event
|
# dict of function to be calledfor each event
|
||||||
self.handlers = {'ROSTER': [], 'WARNING': [], 'ERROR': [], 'STATUS': [], \
|
self.handlers = {'ROSTER': [], 'WARNING': [], 'ERROR': [], 'STATUS': [], \
|
||||||
'NOTIFY': [], 'MSG': [], 'MSGERROR': [], 'SUBSCRIBED': [], \
|
'NOTIFY': [], 'MSG': [], 'MSGERROR': [], 'MSGSENT': [] , \
|
||||||
'UNSUBSCRIBED': [], 'SUBSCRIBE': [], 'AGENTS': [], 'AGENT_INFO': [], \
|
'SUBSCRIBED': [], 'UNSUBSCRIBED': [], 'SUBSCRIBE': [], \
|
||||||
'AGENT_INFO_ITEMS': [], 'AGENT_INFO_INFO': [], 'REG_AGENT_INFO': [], \
|
'AGENT_INFO': [], 'AGENT_INFO_ITEMS': [], 'AGENT_INFO_INFO': [], \
|
||||||
'QUIT': [], 'ACC_OK': [], 'CONFIG': [], 'MYVCARD': [], 'OS_INFO': [], \
|
'QUIT': [], 'ACC_OK': [], 'MYVCARD': [], 'OS_INFO': [], 'VCARD': [], \
|
||||||
'VCARD': [], 'LOG_NB_LINE': [], 'LOG_LINE': [], 'VISUAL': [], \
|
|
||||||
'GC_MSG': [], 'GC_SUBJECT': [], 'BAD_PASSPHRASE': [], \
|
'GC_MSG': [], 'GC_SUBJECT': [], 'BAD_PASSPHRASE': [], \
|
||||||
'GPG_SECRETE_KEYS': [], 'ROSTER_INFO': [], 'MSGSENT': []}
|
'ROSTER_INFO': []}
|
||||||
self.name = name
|
self.name = name
|
||||||
self.connected = 0 # offline
|
self.connected = 0 # offline
|
||||||
self.connection = None # Jabber.py instance
|
self.connection = None # Jabber.py instance
|
||||||
|
|
|
@ -31,7 +31,7 @@ gtk.glade.textdomain (APP)
|
||||||
from dialogs import *
|
from dialogs import *
|
||||||
import gtkgui
|
import gtkgui
|
||||||
|
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
|
|
||||||
|
|
||||||
class Preferences_window:
|
class Preferences_window:
|
||||||
|
@ -1213,9 +1213,13 @@ class Account_modification_window:
|
||||||
self.plugin.send('ASK_VCARD', self.account, jid)
|
self.plugin.send('ASK_VCARD', self.account, jid)
|
||||||
|
|
||||||
def on_gpg_choose_button_clicked(self, widget, data=None):
|
def on_gpg_choose_button_clicked(self, widget, data=None):
|
||||||
w = choose_gpg_key_dialog()
|
#FIXME:
|
||||||
self.plugin.windows['gpg_keys'] = w
|
secret_keys = connection.ask_gpg_secrete_keys()
|
||||||
self.plugin.send('GPG_SECRETE_KEYS', None, ())
|
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()
|
keyID = w.run()
|
||||||
if keyID == -1:
|
if keyID == -1:
|
||||||
return
|
return
|
||||||
|
@ -1796,7 +1800,12 @@ class Service_discovery_window:
|
||||||
if not iter :
|
if not iter :
|
||||||
return
|
return
|
||||||
service = model.get_value(iter, 1)
|
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()
|
self.window.destroy()
|
||||||
|
|
||||||
def on_services_treeview_cursor_changed(self, widget):
|
def on_services_treeview_cursor_changed(self, widget):
|
||||||
|
|
|
@ -27,9 +27,8 @@ gtk.glade.bindtextdomain (APP, i18n.DIR)
|
||||||
gtk.glade.textdomain (APP)
|
gtk.glade.textdomain (APP)
|
||||||
|
|
||||||
import gtkgui
|
import gtkgui
|
||||||
import version
|
|
||||||
|
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
|
|
||||||
class Vcard_information_window:
|
class Vcard_information_window:
|
||||||
"""Class for user's information window"""
|
"""Class for user's information window"""
|
||||||
|
@ -363,7 +362,7 @@ class choose_gpg_key_dialog:
|
||||||
for keyID in list.keys():
|
for keyID in list.keys():
|
||||||
model.append((keyID, list[keyID]))
|
model.append((keyID, list[keyID]))
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, secret_keys):
|
||||||
#list : {keyID: userName, ...}
|
#list : {keyID: userName, ...}
|
||||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'choose_gpg_key_dialog', APP)
|
xml = gtk.glade.XML(GTKGUI_GLADE, 'choose_gpg_key_dialog', APP)
|
||||||
self.window = xml.get_widget('choose_gpg_key_dialog')
|
self.window = xml.get_widget('choose_gpg_key_dialog')
|
||||||
|
@ -377,6 +376,7 @@ class choose_gpg_key_dialog:
|
||||||
renderer = gtk.CellRendererText()
|
renderer = gtk.CellRendererText()
|
||||||
self.keys_treeview.insert_column_with_attributes(-1, _('User name'), \
|
self.keys_treeview.insert_column_with_attributes(-1, _('User name'), \
|
||||||
renderer, text=1)
|
renderer, text=1)
|
||||||
|
self.fill_tree(secret_keys)
|
||||||
|
|
||||||
self.window.show_all()
|
self.window.show_all()
|
||||||
|
|
||||||
|
@ -389,12 +389,12 @@ class Change_status_message_dialog:
|
||||||
self.autoconnect = autoconnect
|
self.autoconnect = autoconnect
|
||||||
message_textview = self.xml.get_widget('message_textview')
|
message_textview = self.xml.get_widget('message_textview')
|
||||||
self.message_buffer = message_textview.get_buffer()
|
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 = {'':''}
|
self.values = {'':''}
|
||||||
i = 0
|
i = 0
|
||||||
while self.plugin.config.has_key('msg%s_name' % i):
|
while gajim.config.exist('msg%s_name' % i):
|
||||||
self.values[self.plugin.config['msg%s_name' % i]] = \
|
self.values[gajim.config.get('msg%s_name' % i)] = \
|
||||||
self.plugin.config['msg%s' % i]
|
gajim.config.get('msg%s' % i)
|
||||||
i += 1
|
i += 1
|
||||||
liststore = gtk.ListStore(str, str)
|
liststore = gtk.ListStore(str, str)
|
||||||
message_comboboxentry = self.xml.get_widget('message_comboboxentry')
|
message_comboboxentry = self.xml.get_widget('message_comboboxentry')
|
||||||
|
@ -413,7 +413,7 @@ class Change_status_message_dialog:
|
||||||
if rep == gtk.RESPONSE_OK:
|
if rep == gtk.RESPONSE_OK:
|
||||||
beg, end = self.message_buffer.get_bounds()
|
beg, end = self.message_buffer.get_bounds()
|
||||||
message = self.message_buffer.get_text(beg, end, 0)
|
message = self.message_buffer.get_text(beg, end, 0)
|
||||||
self.plugin.config['last_msg'] = message
|
gajim.config.set('last_msg', message)
|
||||||
else:
|
else:
|
||||||
message = -1
|
message = -1
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
@ -565,7 +565,7 @@ class About_dialog:
|
||||||
|
|
||||||
dlg = gtk.AboutDialog()
|
dlg = gtk.AboutDialog()
|
||||||
dlg.set_name('Gajim')
|
dlg.set_name('Gajim')
|
||||||
dlg.set_version(version.version)
|
dlg.set_version(gajim.version.version)
|
||||||
s = u'Copyright \xa9 2003-2005 Gajim Team'
|
s = u'Copyright \xa9 2003-2005 Gajim Team'
|
||||||
dlg.set_copyright(s)
|
dlg.set_copyright(s)
|
||||||
text = open('COPYING').read()
|
text = open('COPYING').read()
|
||||||
|
@ -683,7 +683,7 @@ class Join_groupchat_window:
|
||||||
cell = gtk.CellRendererText()
|
cell = gtk.CellRendererText()
|
||||||
self.recently_combobox.pack_start(cell, True)
|
self.recently_combobox.pack_start(cell, True)
|
||||||
self.recently_combobox.add_attribute(cell, 'text', 0)
|
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:
|
for g in self.recently_groupchat:
|
||||||
self.recently_combobox.append_text(g)
|
self.recently_combobox.append_text(g)
|
||||||
|
|
||||||
|
@ -720,8 +720,7 @@ class Join_groupchat_window:
|
||||||
self.recently_groupchat.insert(0, jid)
|
self.recently_groupchat.insert(0, jid)
|
||||||
if len(self.recently_groupchat) > 10:
|
if len(self.recently_groupchat) > 10:
|
||||||
self.recently_groupchat = self.recently_groupchat[0:10]
|
self.recently_groupchat = self.recently_groupchat[0:10]
|
||||||
self.plugin.config['recently_groupchat'] = \
|
gajim.config.set('recently_groupchat', ' '.join(self.recently_groupchat))
|
||||||
' '.join(self.recently_groupchat)
|
|
||||||
self.plugin.roster.new_group(jid, nickname, self.account)
|
self.plugin.roster.new_group(jid, nickname, self.account)
|
||||||
self.plugin.send('GC_JOIN', self.account, (nickname, room, server, \
|
self.plugin.send('GC_JOIN', self.account, (nickname, room, server, \
|
||||||
password))
|
password))
|
||||||
|
|
|
@ -34,7 +34,7 @@ APP = i18n.APP
|
||||||
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
||||||
gtk.glade.textdomain(APP)
|
gtk.glade.textdomain(APP)
|
||||||
|
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
|
|
||||||
class Groupchat_window(Chat):
|
class Groupchat_window(Chat):
|
||||||
"""Class for Groupchat window"""
|
"""Class for Groupchat window"""
|
||||||
|
|
368
src/gtkgui.py
368
src/gtkgui.py
|
@ -1,4 +1,4 @@
|
||||||
## plugins/gtkgui.py
|
## gtkgui.py
|
||||||
##
|
##
|
||||||
## Gajim Team:
|
## Gajim Team:
|
||||||
## - Yann Le Boulanger <asterix@lagaule.org>
|
## - Yann Le Boulanger <asterix@lagaule.org>
|
||||||
|
@ -17,40 +17,6 @@
|
||||||
## GNU General Public License for more details.
|
## 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
|
import pygtk
|
||||||
pygtk.require('2.0')
|
pygtk.require('2.0')
|
||||||
import gtk
|
import gtk
|
||||||
|
@ -58,10 +24,9 @@ import gtk.glade
|
||||||
import pango
|
import pango
|
||||||
import gobject
|
import gobject
|
||||||
import os
|
import os
|
||||||
import time
|
|
||||||
import sys
|
|
||||||
import Queue
|
|
||||||
import sre
|
import sre
|
||||||
|
global gajim
|
||||||
|
import common.gajim as gajim
|
||||||
import common.sleepy
|
import common.sleepy
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -72,8 +37,8 @@ except ImportError:
|
||||||
class CellRendererImage(gtk.GenericCellRenderer):
|
class CellRendererImage(gtk.GenericCellRenderer):
|
||||||
|
|
||||||
__gproperties__ = {
|
__gproperties__ = {
|
||||||
"image": (gobject.TYPE_OBJECT, "Image",
|
'image': (gobject.TYPE_OBJECT, 'Image',
|
||||||
"Image", gobject.PARAM_READWRITE),
|
'Image', gobject.PARAM_READWRITE),
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -115,8 +80,8 @@ class CellRendererImage(gtk.GenericCellRenderer):
|
||||||
|
|
||||||
pix_rect.x += cell_area.x
|
pix_rect.x += cell_area.x
|
||||||
pix_rect.y += cell_area.y
|
pix_rect.y += cell_area.y
|
||||||
pix_rect.width -= 2 * self.get_property("xpad")
|
pix_rect.width -= 2 * self.get_property('xpad')
|
||||||
pix_rect.height -= 2 * self.get_property("ypad")
|
pix_rect.height -= 2 * self.get_property('ypad')
|
||||||
|
|
||||||
draw_rect = cell_area.intersect(pix_rect)
|
draw_rect = cell_area.intersect(pix_rect)
|
||||||
draw_rect = expose_area.intersect(draw_rect)
|
draw_rect = expose_area.intersect(draw_rect)
|
||||||
|
@ -150,15 +115,15 @@ class CellRendererImage(gtk.GenericCellRenderer):
|
||||||
return 0, 0, 0, 0
|
return 0, 0, 0, 0
|
||||||
pixbuf_width = pix.get_width()
|
pixbuf_width = pix.get_width()
|
||||||
pixbuf_height = pix.get_height()
|
pixbuf_height = pix.get_height()
|
||||||
calc_width = self.get_property("xpad") * 2 + pixbuf_width
|
calc_width = self.get_property('xpad') * 2 + pixbuf_width
|
||||||
calc_height = self.get_property("ypad") * 2 + pixbuf_height
|
calc_height = self.get_property('ypad') * 2 + pixbuf_height
|
||||||
x_offset = 0
|
x_offset = 0
|
||||||
y_offset = 0
|
y_offset = 0
|
||||||
if cell_area and pixbuf_width > 0 and pixbuf_height > 0:
|
if cell_area and pixbuf_width > 0 and pixbuf_height > 0:
|
||||||
x_offset = self.get_property("xalign") * (cell_area.width - \
|
x_offset = self.get_property('xalign') * (cell_area.width - \
|
||||||
calc_width - self.get_property("xpad"))
|
calc_width - self.get_property('xpad'))
|
||||||
y_offset = self.get_property("yalign") * (cell_area.height - \
|
y_offset = self.get_property('yalign') * (cell_area.height - \
|
||||||
calc_height - self.get_property("ypad"))
|
calc_height - self.get_property('ypad'))
|
||||||
return x_offset, y_offset, calc_width, calc_height
|
return x_offset, y_offset, calc_width, calc_height
|
||||||
|
|
||||||
gobject.type_register(CellRendererImage)
|
gobject.type_register(CellRendererImage)
|
||||||
|
@ -205,63 +170,24 @@ APP = i18n.APP
|
||||||
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
||||||
gtk.glade.textdomain(APP)
|
gtk.glade.textdomain(APP)
|
||||||
|
|
||||||
def usage():
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
#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='plugins/gtkgui/gtkgui.glade'
|
class interface:
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
def launch_browser_mailer(self, kind, url):
|
def launch_browser_mailer(self, kind, url):
|
||||||
#kind = 'url' or 'mail'
|
#kind = 'url' or 'mail'
|
||||||
if self.config['openwith'] == 'gnome-open':
|
if gajim.config.get('openwith') == 'gnome-open':
|
||||||
app = 'gnome-open'
|
app = 'gnome-open'
|
||||||
args = ['gnome-open']
|
args = ['gnome-open']
|
||||||
args.append(url)
|
args.append(url)
|
||||||
elif self.config['openwith'] == 'kfmclient exec':
|
elif gajim.config.get('openwith') == 'kfmclient exec':
|
||||||
app = 'kfmclient'
|
app = 'kfmclient'
|
||||||
args = ['kfmclient', 'exec']
|
args = ['kfmclient', 'exec']
|
||||||
elif self.config['openwith'] == 'custom':
|
elif gajim.config.get('openwith') == 'custom':
|
||||||
if kind == 'url':
|
if kind == 'url':
|
||||||
conf = self.config['custombrowser']
|
conf = gajim.config.get('custombrowser')
|
||||||
if kind == 'mail':
|
if kind == 'mail':
|
||||||
conf = self.config['custommailapp']
|
conf = gajim.config.get('custommailapp')
|
||||||
if conf == '': # if no app is configured
|
if conf == '': # if no app is configured
|
||||||
return
|
return
|
||||||
args = conf.split()
|
args = conf.split()
|
||||||
|
@ -280,44 +206,24 @@ class plugin:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def play_sound(self, event):
|
def play_sound(self, event):
|
||||||
if not self.config['sounds_on']:
|
if not gajim.config.get('sounds_on'):
|
||||||
return
|
return
|
||||||
path_to_soundfile = self.config[event + '_file']
|
path_to_soundfile = gajim.config.get(event + '_file')
|
||||||
if not os.path.exists(path_to_soundfile):
|
if not os.path.exists(path_to_soundfile):
|
||||||
return
|
return
|
||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
winsound.PlaySound(path_to_soundfile, \
|
winsound.PlaySound(path_to_soundfile, \
|
||||||
winsound.SND_FILENAME|winsound.SND_ASYNC)
|
winsound.SND_FILENAME|winsound.SND_ASYNC)
|
||||||
elif os.name == 'posix':
|
elif os.name == 'posix':
|
||||||
if self.config['soundplayer'] == '':
|
if gajim.config.get('soundplayer') == '':
|
||||||
return
|
return
|
||||||
argv = self.config['soundplayer'].split()
|
argv = gajim.config.get('soundplayer').split()
|
||||||
argv.append(path_to_soundfile)
|
argv.append(path_to_soundfile)
|
||||||
pid = os.spawnvp(os.P_NOWAIT, argv[0], argv)
|
pid = os.spawnvp(os.P_NOWAIT, argv[0], argv)
|
||||||
pidp, r = os.waitpid(pid, os.WNOHANG)
|
pidp, r = os.waitpid(pid, os.WNOHANG)
|
||||||
if pidp == 0:
|
if pidp == 0:
|
||||||
gobject.timeout_add(10000, self.play_timeout, pid)
|
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):
|
def handle_event_roster(self, account, data):
|
||||||
#('ROSTER', account, (state, array))
|
#('ROSTER', account, (state, array))
|
||||||
statuss = ['offline', 'online', 'away', 'xa', 'dnd', 'invisible']
|
statuss = ['offline', 'online', 'away', 'xa', 'dnd', 'invisible']
|
||||||
|
@ -500,11 +406,6 @@ class plugin:
|
||||||
def handle_event_unsubscribed(self, account, jid):
|
def handle_event_unsubscribed(self, account, jid):
|
||||||
Information_dialog(_("You are now unsubscribed by %s") % 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):
|
def handle_event_agent_info(self, account, array):
|
||||||
#('AGENT_INFO', account, (agent, identities, features, items))
|
#('AGENT_INFO', account, (agent, identities, features, items))
|
||||||
if self.windows[account].has_key('disco'):
|
if self.windows[account].has_key('disco'):
|
||||||
|
@ -522,13 +423,6 @@ class plugin:
|
||||||
self.windows[account]['disco'].agent_info_info(array[0], array[1], \
|
self.windows[account]['disco'].agent_info_info(array[0], array[1], \
|
||||||
array[2])
|
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):
|
def handle_event_acc_ok(self, account, array):
|
||||||
#('ACC_OK', account, (hostname, login, pasword, name, resource, prio,
|
#('ACC_OK', account, (hostname, login, pasword, name, resource, prio,
|
||||||
#use_proxy, proxyhost, proxyport))
|
#use_proxy, proxyhost, proxyport))
|
||||||
|
@ -559,11 +453,6 @@ class plugin:
|
||||||
def handle_event_quit(self, p1, p2):
|
def handle_event_quit(self, p1, p2):
|
||||||
self.roster.on_quit() # SUCH FUNCTION DOES NOT EXIST!!
|
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):
|
def handle_event_myvcard(self, account, array):
|
||||||
nick = ''
|
nick = ''
|
||||||
if array.has_key('NICKNAME'):
|
if array.has_key('NICKNAME'):
|
||||||
|
@ -581,22 +470,6 @@ class plugin:
|
||||||
self.windows[account]['infos'][array[0]].set_os_info(array[1], \
|
self.windows[account]['infos'][array[0]].set_os_info(array[1], \
|
||||||
array[2])
|
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):
|
def handle_event_gc_msg(self, account, array):
|
||||||
#('GC_MSG', account, (jid, msg, time))
|
#('GC_MSG', account, (jid, msg, time))
|
||||||
jids = array[0].split('/')
|
jids = array[0].split('/')
|
||||||
|
@ -626,11 +499,6 @@ class plugin:
|
||||||
def handle_event_bad_passphrase(self, account, array):
|
def handle_event_bad_passphrase(self, account, array):
|
||||||
Warning_dialog(_("Your GPG passphrase is wrong, so you are connected without your GPG key."))
|
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):
|
def handle_event_roster_info(self, account, array):
|
||||||
#('ROSTER_INFO', account, (jid, name, sub, ask, groups))
|
#('ROSTER_INFO', account, (jid, name, sub, ask, groups))
|
||||||
jid = array[0]
|
jid = array[0]
|
||||||
|
@ -652,68 +520,6 @@ class plugin:
|
||||||
user.groups = array[4]
|
user.groups = array[4]
|
||||||
self.roster.redraw_jid(jid, account)
|
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):
|
def read_sleepy(self):
|
||||||
"""Check if we are idle"""
|
"""Check if we are idle"""
|
||||||
if not self.sleeper.poll():
|
if not self.sleeper.poll():
|
||||||
|
@ -847,117 +653,25 @@ class plugin:
|
||||||
# update regular expressions
|
# update regular expressions
|
||||||
self.make_regexps()
|
self.make_regexps()
|
||||||
|
|
||||||
def __init__(self, quIN, quOUT):
|
def __init__(self):
|
||||||
gtk.gdk.threads_init()
|
|
||||||
if gtk.pygtk_version >= (2, 6, 0):
|
if gtk.pygtk_version >= (2, 6, 0):
|
||||||
gtk.about_dialog_set_email_hook(self.on_launch_browser_mailer, 'mail')
|
gtk.about_dialog_set_email_hook(self.on_launch_browser_mailer, 'mail')
|
||||||
gtk.about_dialog_set_url_hook(self.on_launch_browser_mailer, 'url')
|
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.windows = {'logs':{}}
|
||||||
self.queues = {}
|
self.queues = {}
|
||||||
self.connected = {}
|
|
||||||
self.nicks = {}
|
self.nicks = {}
|
||||||
self.sleeper_state = {} #whether we pass auto away / xa or not
|
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.windows[a] = {'infos': {}, 'chats': {}, 'gc': {}}
|
||||||
self.queues[a] = {}
|
self.queues[a] = {}
|
||||||
self.connected[a] = 0 #0->offline 1->connecting 2->online 3->away
|
self.nicks[a] = gajim.config.get_per('accounts', a, 'name')
|
||||||
#4->xa 5->dnd 6->invisible
|
|
||||||
self.nicks[a] = self.accounts[a]['name']
|
|
||||||
self.sleeper_state[a] = 0 #0:don't use sleeper for this account
|
self.sleeper_state[a] = 0 #0:don't use sleeper for this account
|
||||||
#1:online and use sleeper
|
#1:online and use sleeper
|
||||||
#2:autoaway and use sleeper
|
#2:autoaway and use sleeper
|
||||||
#3:autoxa and use sleeper
|
#3:autoxa and use sleeper
|
||||||
self.send('ASK_ROSTER', a, self.queueIN)
|
|
||||||
|
|
||||||
iconset = self.config['iconset']
|
iconset = gajim.config.get('iconset')
|
||||||
if not iconset:
|
path = 'data/iconsets/' + iconset + '/'
|
||||||
iconset = 'sun'
|
|
||||||
path = 'plugins/gtkgui/iconsets/' + iconset + '/'
|
|
||||||
files = [path + 'online.gif', path + 'online.png', path + 'online.xpm']
|
files = [path + 'online.gif', path + 'online.png', path + 'online.xpm']
|
||||||
pix = None
|
pix = None
|
||||||
for fname in files:
|
for fname in files:
|
||||||
|
@ -967,11 +681,10 @@ class plugin:
|
||||||
if pix:
|
if pix:
|
||||||
gtk.window_set_default_icon(pix)
|
gtk.window_set_default_icon(pix)
|
||||||
self.roster = Roster_window(self)
|
self.roster = Roster_window(self)
|
||||||
gobject.timeout_add(100, self.read_queue)
|
|
||||||
gobject.timeout_add(100, self.read_sleepy)
|
gobject.timeout_add(100, self.read_sleepy)
|
||||||
self.sleeper = common.sleepy.Sleepy( \
|
self.sleeper = common.sleepy.Sleepy( \
|
||||||
self.config['autoawaytime']*60, \
|
gajim.config.get('autoawaytime')*60, \
|
||||||
self.config['autoxatime']*60)
|
gajim.config.get('autoxatime')*60)
|
||||||
self.systray_enabled = False
|
self.systray_enabled = False
|
||||||
try:
|
try:
|
||||||
import egg.trayicon as trayicon # use gnomepythonextras trayicon
|
import egg.trayicon as trayicon # use gnomepythonextras trayicon
|
||||||
|
@ -979,8 +692,6 @@ class plugin:
|
||||||
try:
|
try:
|
||||||
import trayicon # use yann's
|
import trayicon # use yann's
|
||||||
except: # user doesn't have trayicon capabilities
|
except: # user doesn't have trayicon capabilities
|
||||||
self.config['trayicon'] = 0
|
|
||||||
self.send('CONFIG', None, ('GtkGui', self.config, 'GtkGui'))
|
|
||||||
self.systray_capabilities = False
|
self.systray_capabilities = False
|
||||||
else:
|
else:
|
||||||
self.systray_capabilities = True
|
self.systray_capabilities = True
|
||||||
|
@ -988,7 +699,7 @@ class plugin:
|
||||||
else:
|
else:
|
||||||
self.systray_capabilities = True
|
self.systray_capabilities = True
|
||||||
self.systray = Systray(self)
|
self.systray = Systray(self)
|
||||||
if self.config['trayicon']:
|
if self.systray_capabilities:
|
||||||
self.show_systray()
|
self.show_systray()
|
||||||
|
|
||||||
self.init_regexp()
|
self.init_regexp()
|
||||||
|
@ -996,12 +707,17 @@ class plugin:
|
||||||
# get instances for windows/dialogs that will show_all()/hide()
|
# get instances for windows/dialogs that will show_all()/hide()
|
||||||
self.windows['preferences'] = Preferences_window(self)
|
self.windows['preferences'] = Preferences_window(self)
|
||||||
self.windows['add_remove_emoticons_window'] = \
|
self.windows['add_remove_emoticons_window'] = \
|
||||||
Add_remove_emoticons_window(self)
|
Add_remove_emoticons_window(self)
|
||||||
self.windows['roster'] = self.roster
|
self.windows['roster'] = self.roster
|
||||||
|
|
||||||
gtk.gdk.threads_enter()
|
|
||||||
gobject.timeout_add(100, self.autoconnect)
|
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()
|
||||||
|
|
|
@ -28,7 +28,7 @@ APP = i18n.APP
|
||||||
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
||||||
gtk.glade.textdomain(APP)
|
gtk.glade.textdomain(APP)
|
||||||
|
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
|
|
||||||
class history_window:
|
class history_window:
|
||||||
"""Class for bowser agent window:
|
"""Class for bowser agent window:
|
||||||
|
@ -148,13 +148,13 @@ class history_window:
|
||||||
self.latest_button = xml.get_widget('latest_button')
|
self.latest_button = xml.get_widget('latest_button')
|
||||||
xml.signal_autoconnect(self)
|
xml.signal_autoconnect(self)
|
||||||
tagIn = self.history_buffer.create_tag('incoming')
|
tagIn = self.history_buffer.create_tag('incoming')
|
||||||
color = self.plugin.config['inmsgcolor']
|
color = gajim.config.get('inmsgcolor')
|
||||||
tagIn.set_property('foreground', color)
|
tagIn.set_property('foreground', color)
|
||||||
tagOut = self.history_buffer.create_tag('outgoing')
|
tagOut = self.history_buffer.create_tag('outgoing')
|
||||||
color = self.plugin.config['outmsgcolor']
|
color = gajim.config.get('outmsgcolor')
|
||||||
tagOut.set_property('foreground', color)
|
tagOut.set_property('foreground', color)
|
||||||
tagStatus = self.history_buffer.create_tag('status')
|
tagStatus = self.history_buffer.create_tag('status')
|
||||||
color = self.plugin.config['statusmsgcolor']
|
color = gajim.config.get('statusmsgcolor')
|
||||||
tagStatus.set_property('foreground', color)
|
tagStatus.set_property('foreground', color)
|
||||||
self.window.show_all()
|
self.window.show_all()
|
||||||
self.plugin.send('LOG_NB_LINE', None, jid)
|
self.plugin.send('LOG_NB_LINE', None, jid)
|
||||||
|
|
|
@ -39,7 +39,7 @@ APP = i18n.APP
|
||||||
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
||||||
gtk.glade.textdomain(APP)
|
gtk.glade.textdomain(APP)
|
||||||
|
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
|
|
||||||
class Roster_window:
|
class Roster_window:
|
||||||
"""Class for main window of gtkgui plugin"""
|
"""Class for main window of gtkgui plugin"""
|
||||||
|
@ -120,7 +120,7 @@ class Roster_window:
|
||||||
|
|
||||||
def add_user_to_roster(self, jid, account):
|
def add_user_to_roster(self, jid, account):
|
||||||
"""Add a user to the roster and add groups if they aren't in roster"""
|
"""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):
|
if not self.contacts[account].has_key(jid):
|
||||||
return
|
return
|
||||||
users = self.contacts[account][jid]
|
users = self.contacts[account][jid]
|
||||||
|
@ -148,7 +148,8 @@ class Roster_window:
|
||||||
self.groups[account][g] = {'expand': False}
|
self.groups[account][g] = {'expand': False}
|
||||||
else:
|
else:
|
||||||
self.groups[account][g] = {'expand': True}
|
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)
|
self.tree.expand_row((model.get_path(iterG)[0]), False)
|
||||||
|
|
||||||
typestr = 'user'
|
typestr = 'user'
|
||||||
|
@ -365,7 +366,7 @@ class Roster_window:
|
||||||
|
|
||||||
def chg_user_status(self, user, show, status, account):
|
def chg_user_status(self, user, show, status, account):
|
||||||
"""When a user change his status"""
|
"""When a user change his status"""
|
||||||
showOffline = self.plugin.config['showoffline']
|
showOffline = gajim.config.get('showoffline')
|
||||||
model = self.tree.get_model()
|
model = self.tree.get_model()
|
||||||
luser = self.contacts[account][user.jid]
|
luser = self.contacts[account][user.jid]
|
||||||
user.show = show
|
user.show = show
|
||||||
|
@ -721,7 +722,7 @@ class Roster_window:
|
||||||
if self.plugin.accounts[account].has_key('keyid'):
|
if self.plugin.accounts[account].has_key('keyid'):
|
||||||
keyid = self.plugin.accounts[account]['keyid']
|
keyid = self.plugin.accounts[account]['keyid']
|
||||||
if keyid and self.plugin.connected[account] < 2 and \
|
if keyid and self.plugin.connected[account] < 2 and \
|
||||||
self.plugin.config['usegpg']:
|
gajim.config.get('usegpg'):
|
||||||
if save_gpg_pass:
|
if save_gpg_pass:
|
||||||
passphrase = self.plugin.accounts[account]['gpgpassword']
|
passphrase = self.plugin.accounts[account]['gpgpassword']
|
||||||
else:
|
else:
|
||||||
|
@ -749,9 +750,8 @@ class Roster_window:
|
||||||
self.plugin.sleeper_state[account] = 0
|
self.plugin.sleeper_state[account] = 0
|
||||||
|
|
||||||
def get_status_message(self, status, autoconnect = 0):
|
def get_status_message(self, status, autoconnect = 0):
|
||||||
if (status == 'online' and not self.plugin.config['ask_online_status']) \
|
if (status == 'online' and not gajim.config.get('ask_online_status')) or \
|
||||||
or (status == 'offline' and not \
|
(status == 'offline' and not gajim.config.get('ask_offline_status')):
|
||||||
self.plugin.config['ask_offline_status']):
|
|
||||||
return status
|
return status
|
||||||
dlg = Change_status_message_dialog(self.plugin, status, autoconnect)
|
dlg = Change_status_message_dialog(self.plugin, status, autoconnect)
|
||||||
message = dlg.run()
|
message = dlg.run()
|
||||||
|
@ -829,7 +829,7 @@ class Roster_window:
|
||||||
self.update_status_comboxbox()
|
self.update_status_comboxbox()
|
||||||
|
|
||||||
def new_chat(self, user, account):
|
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'):
|
if not self.plugin.windows[account]['chats'].has_key('tabbed'):
|
||||||
self.plugin.windows[account]['chats']['tabbed'] = \
|
self.plugin.windows[account]['chats']['tabbed'] = \
|
||||||
Tabbed_chat_window(user, self.plugin, account)
|
Tabbed_chat_window(user, self.plugin, account)
|
||||||
|
@ -845,7 +845,7 @@ class Roster_window:
|
||||||
Tabbed_chat_window(user, self.plugin, account)
|
Tabbed_chat_window(user, self.plugin, account)
|
||||||
|
|
||||||
def new_group(self, jid, nick, 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'):
|
if not self.plugin.windows[account]['gc'].has_key('tabbed'):
|
||||||
self.plugin.windows[account]['gc']['tabbed'] = \
|
self.plugin.windows[account]['gc']['tabbed'] = \
|
||||||
Groupchat_window(jid, nick, self.plugin, account)
|
Groupchat_window(jid, nick, self.plugin, account)
|
||||||
|
@ -871,8 +871,8 @@ class Roster_window:
|
||||||
path = self.tree.get_model().get_path(iters[0])
|
path = self.tree.get_model().get_path(iters[0])
|
||||||
else:
|
else:
|
||||||
path = None
|
path = None
|
||||||
autopopup = self.plugin.config['autopopup']
|
autopopup = gajim.config.get('autopopup')
|
||||||
autopopupaway = self.plugin.config['autopopupaway']
|
autopopupaway = gajim.config.get('autopopupaway')
|
||||||
if (autopopup == 0 or ( not autopopupaway and \
|
if (autopopup == 0 or ( not autopopupaway and \
|
||||||
self.plugin.connected[account] > 2)) and not \
|
self.plugin.connected[account] > 2)) and not \
|
||||||
self.plugin.windows[account]['chats'].has_key(jid):
|
self.plugin.windows[account]['chats'].has_key(jid):
|
||||||
|
@ -964,16 +964,17 @@ class Roster_window:
|
||||||
def quit_gtkgui_plugin(self):
|
def quit_gtkgui_plugin(self):
|
||||||
"""When we quit the gtk plugin :
|
"""When we quit the gtk plugin :
|
||||||
tell that to the core and exit gtk"""
|
tell that to the core and exit gtk"""
|
||||||
if self.plugin.config.has_key('saveposition'):
|
if gajim.config.exist('saveposition'):
|
||||||
if self.plugin.config['saveposition']:
|
if gajim.config.get('saveposition'):
|
||||||
self.plugin.config['x-position'], self.plugin.config['y-position']=\
|
x, y = self.window.get_position()
|
||||||
self.window.get_position()
|
gajim.config.set('x-position', x)
|
||||||
self.plugin.config['width'], self.plugin.config['height'] = \
|
gajim.config.set('y-position', y)
|
||||||
self.window.get_size()
|
width, height = self.window.get_size()
|
||||||
|
gajim.config.set('width', width)
|
||||||
|
gajim.config.set('height', height)
|
||||||
|
|
||||||
self.plugin.save_config()
|
self.plugin.save_config()
|
||||||
self.plugin.send('QUIT', None, ('gtkgui', 1))
|
self.plugin.send('QUIT', None, ('gtkgui', 1))
|
||||||
print _("plugin gtkgui stopped")
|
|
||||||
self.close_all(self.plugin.windows)
|
self.close_all(self.plugin.windows)
|
||||||
if self.plugin.systray_enabled:
|
if self.plugin.systray_enabled:
|
||||||
self.plugin.hide_systray()
|
self.plugin.hide_systray()
|
||||||
|
@ -1010,7 +1011,7 @@ class Roster_window:
|
||||||
self.tree.expand_row(path, False)
|
self.tree.expand_row(path, False)
|
||||||
else:
|
else:
|
||||||
if self.plugin.windows[account]['chats'].has_key(jid):
|
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].active_tab(jid)
|
||||||
self.plugin.windows[account]['chats'][jid].window.present()
|
self.plugin.windows[account]['chats'][jid].window.present()
|
||||||
elif self.contacts[account].has_key(jid):
|
elif self.contacts[account].has_key(jid):
|
||||||
|
@ -1103,7 +1104,7 @@ class Roster_window:
|
||||||
|
|
||||||
def mkpixbufs(self):
|
def mkpixbufs(self):
|
||||||
"""initialise pixbufs array"""
|
"""initialise pixbufs array"""
|
||||||
iconset = self.plugin.config['iconset']
|
iconset = gajim.config.get('iconset')
|
||||||
if not iconset:
|
if not iconset:
|
||||||
iconset = 'sun'
|
iconset = 'sun'
|
||||||
self.path = 'plugins/gtkgui/iconsets/' + iconset + '/'
|
self.path = 'plugins/gtkgui/iconsets/' + iconset + '/'
|
||||||
|
@ -1161,19 +1162,18 @@ class Roster_window:
|
||||||
def on_show_offline_contacts_menuitem_activate(self, widget):
|
def on_show_offline_contacts_menuitem_activate(self, widget):
|
||||||
"""when show offline option is changed:
|
"""when show offline option is changed:
|
||||||
redraw the treeview"""
|
redraw the treeview"""
|
||||||
self.plugin.config['showoffline'] = 1 - self.plugin.config['showoffline']
|
gajim.config.set('showoffline', 1 - gajim.config.get('showoffline'))
|
||||||
self.plugin.send('CONFIG', None, ('GtkGui', self.plugin.config, 'GtkGui'))
|
|
||||||
self.draw_roster()
|
self.draw_roster()
|
||||||
|
|
||||||
def iconCellDataFunc(self, column, renderer, model, iter, data=None):
|
def iconCellDataFunc(self, column, renderer, model, iter, data=None):
|
||||||
"""When a row is added, set properties for icon renderer"""
|
"""When a row is added, set properties for icon renderer"""
|
||||||
if model.get_value(iter, 2) == 'account':
|
if model.get_value(iter, 2) == 'account':
|
||||||
renderer.set_property('cell-background', \
|
renderer.set_property('cell-background', \
|
||||||
self.plugin.config['accountbgcolor'])
|
gajim.config.get('accountbgcolor'))
|
||||||
renderer.set_property('xalign', 0)
|
renderer.set_property('xalign', 0)
|
||||||
elif model.get_value(iter, 2) == 'group':
|
elif model.get_value(iter, 2) == 'group':
|
||||||
renderer.set_property('cell-background', \
|
renderer.set_property('cell-background', \
|
||||||
self.plugin.config['groupbgcolor'])
|
gajim.config.get('groupbgcolor'))
|
||||||
renderer.set_property('xalign', 0.5)
|
renderer.set_property('xalign', 0.5)
|
||||||
else:
|
else:
|
||||||
jid = model.get_value(iter, 3)
|
jid = model.get_value(iter, 3)
|
||||||
|
@ -1184,7 +1184,7 @@ class Roster_window:
|
||||||
renderer.set_property('cell-background', '#ab6161')
|
renderer.set_property('cell-background', '#ab6161')
|
||||||
else:
|
else:
|
||||||
renderer.set_property('cell-background', \
|
renderer.set_property('cell-background', \
|
||||||
self.plugin.config['userbgcolor'])
|
gajim.config.get('userbgcolor'))
|
||||||
renderer.set_property('xalign', 1)
|
renderer.set_property('xalign', 1)
|
||||||
renderer.set_property('width', 20)
|
renderer.set_property('width', 20)
|
||||||
|
|
||||||
|
@ -1192,31 +1192,31 @@ class Roster_window:
|
||||||
"""When a row is added, set properties for name renderer"""
|
"""When a row is added, set properties for name renderer"""
|
||||||
if model.get_value(iter, 2) == 'account':
|
if model.get_value(iter, 2) == 'account':
|
||||||
renderer.set_property('foreground', \
|
renderer.set_property('foreground', \
|
||||||
self.plugin.config['accounttextcolor'])
|
gajim.config.get('accounttextcolor'))
|
||||||
renderer.set_property('cell-background', \
|
renderer.set_property('cell-background', \
|
||||||
self.plugin.config['accountbgcolor'])
|
gajim.config.get('accountbgcolor'))
|
||||||
renderer.set_property('font', self.plugin.config['accountfont'])
|
renderer.set_property('font', gajim.config.get('accountfont'))
|
||||||
renderer.set_property('xpad', 0)
|
renderer.set_property('xpad', 0)
|
||||||
elif model.get_value(iter, 2) == 'group':
|
elif model.get_value(iter, 2) == 'group':
|
||||||
renderer.set_property('foreground', \
|
renderer.set_property('foreground', \
|
||||||
self.plugin.config['grouptextcolor'])
|
gajim.config.get('grouptextcolor'))
|
||||||
renderer.set_property('cell-background', \
|
renderer.set_property('cell-background', \
|
||||||
self.plugin.config['groupbgcolor'])
|
gajim.config.get('groupbgcolor'))
|
||||||
renderer.set_property('font', self.plugin.config['groupfont'])
|
renderer.set_property('font', gajim.config.get('groupfont'))
|
||||||
renderer.set_property('xpad', 4)
|
renderer.set_property('xpad', 4)
|
||||||
else:
|
else:
|
||||||
jid = model.get_value(iter, 3)
|
jid = model.get_value(iter, 3)
|
||||||
account = model.get_value(iter, 4)
|
account = model.get_value(iter, 4)
|
||||||
renderer.set_property('foreground', \
|
renderer.set_property('foreground', \
|
||||||
self.plugin.config['usertextcolor'])
|
gajim.config.get('usertextcolor'))
|
||||||
if jid in self.newly_added[account]:
|
if jid in self.newly_added[account]:
|
||||||
renderer.set_property('cell-background', '#adc3c6')
|
renderer.set_property('cell-background', '#adc3c6')
|
||||||
elif jid in self.to_be_removed[account]:
|
elif jid in self.to_be_removed[account]:
|
||||||
renderer.set_property('cell-background', '#ab6161')
|
renderer.set_property('cell-background', '#ab6161')
|
||||||
else:
|
else:
|
||||||
renderer.set_property('cell-background', \
|
renderer.set_property('cell-background', \
|
||||||
self.plugin.config['userbgcolor'])
|
gajim.config.get('userbgcolor'))
|
||||||
renderer.set_property('font', self.plugin.config['userfont'])
|
renderer.set_property('font', gajim.config.get('userfont'))
|
||||||
renderer.set_property('xpad', 8)
|
renderer.set_property('xpad', 8)
|
||||||
|
|
||||||
def compareIters(self, model, iter1, iter2, data = None):
|
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,
|
def drag_data_received_data(self, treeview, context, x, y, selection, info,
|
||||||
etime):
|
etime):
|
||||||
merge = 0
|
merge = 0
|
||||||
if self.plugin.config['mergeaccounts']:
|
if gajim.config.get('mergeaccounts'):
|
||||||
merge = 1
|
merge = 1
|
||||||
model = treeview.get_model()
|
model = treeview.get_model()
|
||||||
data = selection.data
|
data = selection.data
|
||||||
|
@ -1325,18 +1325,12 @@ class Roster_window:
|
||||||
self.join_gc_handler_id = False
|
self.join_gc_handler_id = False
|
||||||
self.new_message_menuitem_handler_id = False
|
self.new_message_menuitem_handler_id = False
|
||||||
self.regroup = 0
|
self.regroup = 0
|
||||||
if self.plugin.config.has_key('mergeaccounts'):
|
self.regroup = gajim.config.get('mergeaccounts')
|
||||||
self.regroup = self.plugin.config['mergeaccounts']
|
if gajim.config.get('saveposition'):
|
||||||
if self.plugin.config.has_key('saveposition'):
|
self.window.move(gajim.config.get('x-position'), \
|
||||||
if self.plugin.config['saveposition']:
|
gajim.config.get('y-position'))
|
||||||
if self.plugin.config.has_key('x-position') and \
|
self.window.resize(gajim.config.get('width'), \
|
||||||
self.plugin.config.has_key('y-position'):
|
gajim.config.get('height'))
|
||||||
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.window.show_all()
|
self.window.show_all()
|
||||||
self.groups = {}
|
self.groups = {}
|
||||||
self.contacts = {}
|
self.contacts = {}
|
||||||
|
@ -1380,7 +1374,7 @@ class Roster_window:
|
||||||
self.status_combobox.set_model(liststore)
|
self.status_combobox.set_model(liststore)
|
||||||
self.status_combobox.set_active(5)
|
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)
|
self.xml.get_widget('show_offline_contacts_menuitem').set_active(showOffline)
|
||||||
|
|
||||||
#columns
|
#columns
|
||||||
|
@ -1420,7 +1414,7 @@ class Roster_window:
|
||||||
self.id_signal_cb = self.status_combobox.connect('changed',\
|
self.id_signal_cb = self.status_combobox.connect('changed',\
|
||||||
self.on_status_combobox_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()
|
self.draw_roster()
|
||||||
if len(self.plugin.accounts) == 0: # if no account
|
if len(self.plugin.accounts) == 0: # if no account
|
||||||
self.plugin.windows['account_modification'] = \
|
self.plugin.windows['account_modification'] = \
|
||||||
|
|
|
@ -28,7 +28,7 @@ APP = i18n.APP
|
||||||
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
||||||
gtk.glade.textdomain(APP)
|
gtk.glade.textdomain(APP)
|
||||||
|
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
|
|
||||||
class Systray:
|
class Systray:
|
||||||
"""Class for icon in the systray"""
|
"""Class for icon in the systray"""
|
||||||
|
|
|
@ -34,7 +34,7 @@ APP = i18n.APP
|
||||||
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
gtk.glade.bindtextdomain(APP, i18n.DIR)
|
||||||
gtk.glade.textdomain(APP)
|
gtk.glade.textdomain(APP)
|
||||||
|
|
||||||
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
|
GTKGUI_GLADE='gtkgui.glade'
|
||||||
|
|
||||||
class Tabbed_chat_window(Chat):
|
class Tabbed_chat_window(Chat):
|
||||||
"""Class for tabbed chat window"""
|
"""Class for tabbed chat window"""
|
||||||
|
@ -144,7 +144,7 @@ class Tabbed_chat_window(Chat):
|
||||||
if self.plugin.queues[self.account].has_key(user.jid):
|
if self.plugin.queues[self.account].has_key(user.jid):
|
||||||
self.read_queue(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(user.jid)
|
||||||
self.print_time_timeout_id[user.jid] = gobject.timeout_add(300000, \
|
self.print_time_timeout_id[user.jid] = gobject.timeout_add(300000, \
|
||||||
self.print_time_timeout, user.jid)
|
self.print_time_timeout, user.jid)
|
||||||
|
@ -211,7 +211,7 @@ class Tabbed_chat_window(Chat):
|
||||||
self.plugin.roster.redraw_jid(jid, self.account)
|
self.plugin.roster.redraw_jid(jid, self.account)
|
||||||
if self.plugin.systray_enabled:
|
if self.plugin.systray_enabled:
|
||||||
self.plugin.systray.remove_jid(jid, self.account)
|
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 \
|
if (user.show == 'offline' or user.show == 'error') and \
|
||||||
not showOffline:
|
not showOffline:
|
||||||
if len(self.plugin.roster.contacts[self.account][jid]) == 1:
|
if len(self.plugin.roster.contacts[self.account][jid]) == 1:
|
||||||
|
|
Loading…
Reference in New Issue