Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2004-01-24 23:32:51 +0300
committerYann Leboulanger <asterix@lagaule.org>2004-01-24 23:32:51 +0300
commitf913e4cd0e65a7dc916bf2294d6dd148bd60530e (patch)
tree33ed0a44b914e0f4997fb73a32ef311ad5f327b8
parentb2ec388e4bf936ad6e35ab4f9457d71d7ae6c498 (diff)
- new configuration File management
- bugfix : message from unknown personne
-rw-r--r--common/hub.py1
-rw-r--r--common/optparser.py35
-rw-r--r--common/plugin.py1
-rw-r--r--common/thread.py1
-rw-r--r--core/core.py122
-rw-r--r--plugins/gtkgui/gtkgui.glade2
-rw-r--r--plugins/gtkgui/gtkgui.py320
-rw-r--r--plugins/logger/logger.py29
-rw-r--r--runCore.py1
9 files changed, 283 insertions, 229 deletions
diff --git a/common/hub.py b/common/hub.py
index b556d89ff..6bfb47231 100644
--- a/common/hub.py
+++ b/common/hub.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
diff --git a/common/optparser.py b/common/optparser.py
index b3812938e..08f86f891 100644
--- a/common/optparser.py
+++ b/common/optparser.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
@@ -18,9 +17,7 @@
## GNU General Public License for more details.
##
-import ConfigParser
-import logging
-import os
+import ConfigParser, logging, os, string
log = logging.getLogger('common.options')
@@ -28,6 +25,7 @@ class OptionsParser(ConfigParser.ConfigParser):
def __init__(self, fname):
ConfigParser.ConfigParser.__init__(self)
self.__fname = os.path.expanduser(fname)
+ self.tab = {}
# END __init__
def parseCfgFile(self):
@@ -41,10 +39,19 @@ class OptionsParser(ConfigParser.ConfigParser):
self.__sections = self.sections()
for section in self.__sections:
+ self.tab[section] = {}
for option in self.options(section):
value = self.get(section, option, 1)
- setattr(self, str(section) + '_' + \
- str(option), value)
+ #convert to int options than can be
+ try:
+ i = string.atoi(value)
+ except ValueError:
+ self.tab[section][option] = value
+ else:
+ self.tab[section][option] = i
+
+# setattr(self, str(section) + '_' + \
+# str(option), value)
# END parseCfgFile
def __str__(self):
@@ -54,14 +61,24 @@ class OptionsParser(ConfigParser.ConfigParser):
def __getattr__(self, attr):
if attr.startswith('__') and attr in self.__dict__.keys():
return self.__dict__[attr]
+ elif self.tab.has_key(attr):
+ return self.tab[attr]
else:
- for key in self.__dict__.keys():
- if key == attr:
- return self.__dict__[attr]
+# for key in self.__dict__.keys():
+# if key == attr:
+# return self.__dict__[attr]
return None
# END __getattr__
def writeCfgFile(self):
+ #Remove all sections
+ for s in self.sections():
+ self.remove_section(s)
+ #recreate sections
+ for s in self.tab.keys():
+ self.add_section(s)
+ for o in self.tab[s].keys():
+ self.set(s, o, self.tab[s][o])
try:
self.write(open(self.__fname, 'w'))
except:
diff --git a/common/plugin.py b/common/plugin.py
index f4b4ad212..26e8bd345 100644
--- a/common/plugin.py
+++ b/common/plugin.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
diff --git a/common/thread.py b/common/thread.py
index 3e747db68..fa97b7a86 100644
--- a/common/thread.py
+++ b/common/thread.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
diff --git a/core/core.py b/core/core.py
index 2d21b4c45..dcb4afd20 100644
--- a/core/core.py
+++ b/core/core.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
@@ -40,9 +39,16 @@ class GajimCore:
self.connected = 0
self.cfgParser = common.optparser.OptionsParser(CONFPATH)
self.hub = common.hub.GajimHub()
- self.cfgParser.parseCfgFile()
+ self.parse()
# END __init__
+ def parse(self):
+ self.cfgParser.parseCfgFile()
+ self.accounts = {}
+ accts = self.cfgParser.tab['Profile']['accounts']
+ for a in string.split(accts, ' '):
+ self.accounts[a] = self.cfgParser.tab[a]
+
def messageCB(self, con, msg):
"""Called when we recieve a message"""
self.hub.sendPlugin('MSG', (msg.getFrom().getBasic(), \
@@ -60,17 +66,20 @@ class GajimCore:
show = prs.getShow()
else:
show = 'online'
- self.hub.sendPlugin('NOTIFY', \
- (prs.getFrom().getBasic(), show, prs.getStatus(), prs.getFrom().getResource()))
+ self.hub.sendPlugin('NOTIFY', (prs.getFrom().getBasic(), \
+ show, prs.getStatus(), prs.getFrom().getResource()))
elif type == 'unavailable':
self.hub.sendPlugin('NOTIFY', \
- (prs.getFrom().getBasic(), 'offline', prs.getStatus(), prs.getFrom().getResource()))
+ (prs.getFrom().getBasic(), 'offline', prs.getStatus(), \
+ prs.getFrom().getResource()))
elif type == 'subscribe':
log.debug("subscribe request from %s" % who)
- if self.cfgParser.Core_alwaysauth == 1 or string.find(who, "@") <= 0:
+ if self.cfgParser.Core['alwaysauth'] == 1 or \
+ string.find(who, "@") <= 0:
self.con.send(common.jabber.Presence(who, 'subscribed'))
if string.find(who, "@") <= 0:
- self.hub.sendPlugin('NOTIFY', (who, 'offline', 'offline', prs.getFrom().getResource()))
+ self.hub.sendPlugin('NOTIFY', (who, 'offline', 'offline', \
+ prs.getFrom().getResource()))
else:
self.hub.sendPlugin('SUBSCRIBE', who)
elif type == 'subscribed':
@@ -79,7 +88,7 @@ class GajimCore:
'nom':jid.getNode(), 'ressource':jid.getResource()})
self.hub.queueIn.put(('UPDUSER', (jid.getBasic(), \
jid.getNode(), ['general'])))
-# self.con.updateRosterItem(jid=jid.getBasic(), name=jid.getNode(), groups=['general'])
+ #BE CAREFUL : no self.con.updateRosterItem() in a callback
log.debug("we are now subscribed to %s" % who)
elif type == 'unsubscribe':
log.debug("unsubscribe request from %s" % who)
@@ -87,17 +96,17 @@ class GajimCore:
log.debug("we are now unsubscribed to %s" % who)
self.hub.sendPlugin('UNSUBSCRIBED', prs.getFrom().getBasic())
elif type == 'error':
-# print "\n\n******** ERROR *******"
-# print "From : %s" % prs.getFrom()
-# print "To : %s" % prs.getTo()
-# print "Status : %s" % prs.getStatus()
-# print "Show : %s" % prs.getShow()
-# print "X : %s" % prs.getX()
-# print "XNode : %s" % prs.getXNode()
-# print "XPayload : %s" % prs.getXPayload()
-# print "_node : %s" % prs._node.getData()
-# print "kids : %s" % prs._node.kids[0].getData()
-# print "\n\n"
+ print "\n\n******** ERROR *******"
+ #print "From : %s" % prs.getFrom()
+ #print "To : %s" % prs.getTo()
+ #print "Status : %s" % prs.getStatus()
+ #print "Show : %s" % prs.getShow()
+ #print "X : %s" % prs.getX()
+ #print "XNode : %s" % prs.getXNode()
+ #print "XPayload : %s" % prs.getXPayload()
+ #print "_node : %s" % prs._node.getData()
+ #print "kids : %s" % prs._node.kids[0].getData()
+ #print "\n\n"
errmsg = prs._node.kids[0].getData()
# END presenceCB
@@ -112,14 +121,15 @@ class GajimCore:
def connect(self, account):
"""Connect and authentificate to the Jabber server"""
- self.cfgParser.parseCfgFile()
- hostname = self.cfgParser.__getattr__("%s" % account+"_hostname")
- name = self.cfgParser.__getattr__("%s" % account+"_name")
- password = self.cfgParser.__getattr__("%s" % account+"_password")
- ressource = self.cfgParser.__getattr__("%s" % account+"_ressource")
- self.con = common.jabber.Client(host = \
- hostname, debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, connection=common.xmlstream.TCP, port=5222)
-# hostname, debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, connection=common.xmlstream.TCP_SSL, port=5223)
+ hostname = self.cfgParser.tab[account]["hostname"]
+ name = self.cfgParser.tab[account]["name"]
+ password = self.cfgParser.tab[account]["password"]
+ ressource = self.cfgParser.tab[account]["ressource"]
+ self.con = common.jabber.Client(host = hostname, \
+ debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, \
+ connection=common.xmlstream.TCP, port=5222)
+ #debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, \
+ #connection=common.xmlstream.TCP_SSL, port=5223)
try:
self.con.connect()
except IOError, e:
@@ -151,12 +161,14 @@ class GajimCore:
else:
log.debug("Couldn't authentificate to %s" % hostname)
self.hub.sendPlugin('STATUS', 'offline')
- self.hub.sendPlugin('WARNING', 'Authentification failed, check your login and password')
+ self.hub.sendPlugin('WARNING', \
+ 'Authentification failed, check your login and password')
return 0
# END connect
def mainLoop(self):
- """Main Loop : Read the incomming queue to execute commands comming from plugins and process Jabber"""
+ """Main Loop : Read the incomming queue to execute commands comming from
+ plugins and process Jabber"""
while 1:
if not self.hub.queueIn.empty():
ev = self.hub.queueIn.get()
@@ -166,6 +178,31 @@ class GajimCore:
self.con.disconnect()
self.hub.sendPlugin('QUIT', ())
return
+ #('ASK_CONFIG', section)
+ elif ev[0] == 'ASK_CONFIG':
+ if ev[1] == 'accounts':
+ self.hub.sendPlugin('CONFIG', self.accounts)
+ else:
+ self.hub.sendPlugin('CONFIG', \
+ self.cfgParser.__getattr__(ev[1]))
+ #('CONFIG', (section, config))
+ elif ev[0] == 'CONFIG':
+ if ev[1][0] == 'accounts':
+ #Remove all old accounts
+ accts = string.split(self.cfgParser.tab\
+ ['Profile']['accounts'], ' ')
+ for a in accts:
+ del self.cfgParser.tab[a]
+ #Write all new accounts
+ accts = ev[1][1].keys()
+ self.cfgParser.tab['Profile']['accounts'] = \
+ string.join(accts)
+ for a in accts:
+ self.cfgParser.tab[a] = ev[1][1][a]
+ else:
+ self.cfgParser.tab[ev[1][0]] = ev[1][1]
+ self.cfgParser.writeCfgFile()
+ #TODO: tell the changes to other plugins
#('STATUS', (status, msg, account))
elif ev[0] == 'STATUS':
if (ev[1][0] != 'offline') and (self.connected == 0):
@@ -198,17 +235,22 @@ class GajimCore:
self.con.send(common.jabber.Presence(ev[1], 'unsubscribed'))
#('UNSUB', jid)
elif ev[0] == 'UNSUB':
- delauth = self.cfgParser.Core_delauth
- if not delauth: delauth = 1
- delroster = self.cfgParser.Core_delroster
- if not delroster: delroster = 1
+ if self.cfgParser.Core.has_key('delauth'):
+ delauth = self.cfgParser.Core['delauth']
+ else:
+ delauth = 1
+ if self.cfgParser.Core.has_key('delroster'):
+ delroster = self.cfgParser.Core['delroster']
+ else:
+ delroster = 1
if delauth:
self.con.send(common.jabber.Presence(ev[1], 'unsubscribe'))
if delroster:
self.con.removeRosterItem(ev[1])
#('UPDUSER', (jid, name, groups))
elif ev[0] == 'UPDUSER':
- self.con.updateRosterItem(jid=ev[1][0], name=ev[1][1], groups=ev[1][2])
+ self.con.updateRosterItem(jid=ev[1][0], name=ev[1][1], \
+ groups=ev[1][2])
elif ev[0] == 'REQ_AGENTS':
agents = self.con.requestAgents()
self.hub.sendPlugin('AGENTS', agents)
@@ -239,7 +281,7 @@ class GajimCore:
else:
self.hub.sendPlugin('ACC_OK', ev[1])
else:
- log.debug("Unknown Command")
+ log.debug("Unknown Command %s" % ev[0])
elif self.connected == 1:
self.con.process(1)
time.sleep(0.1)
@@ -247,8 +289,9 @@ class GajimCore:
# END GajimCore
def loadPlugins(gc):
- """Load defaults plugins : 'modules' option in section Core in ConfFile and register then to the hub"""
- modStr = gc.cfgParser.Core_modules
+ """Load defaults plugins : plugins in 'modules' option of Core section
+ in ConfFile and register them to the hub"""
+ modStr = gc.cfgParser.Core['modules']
if modStr:
mods = string.split (modStr, ' ')
@@ -266,6 +309,7 @@ def loadPlugins(gc):
gc.hub.register(mod, 'AGENT_INFO')
gc.hub.register(mod, 'QUIT')
gc.hub.register(mod, 'ACC_OK')
+ gc.hub.register(mod, 'CONFIG')
modObj.load()
# END loadPLugins
@@ -273,6 +317,10 @@ def start():
"""Start the Core"""
gc = GajimCore()
loadPlugins(gc)
+################ pr des tests ###########
+ gc.hub.sendPlugin('NOTIFY', ('aste@lagaule.org', 'online', 'online', 'oleron'))
+# gc.hub.sendPlugin('MSG', ('ate@lagaule.org', 'msg'))
+#########################################
try:
gc.mainLoop()
except KeyboardInterrupt:
diff --git a/plugins/gtkgui/gtkgui.glade b/plugins/gtkgui/gtkgui.glade
index c64bb660e..cfcdca28e 100644
--- a/plugins/gtkgui/gtkgui.glade
+++ b/plugins/gtkgui/gtkgui.glade
@@ -2,7 +2,6 @@
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
-<requires lib="gnome"/>
<widget class="GtkWindow" id="Gajim">
<property name="visible">True</property>
@@ -340,7 +339,6 @@
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<signal name="destroy" handler="gtk_widget_destroy" last_modification_time="Sun, 12 Oct 2003 18:17:05 GMT"/>
- <signal name="check_resize" handler="on_check_resize" last_modification_time="Tue, 20 Jan 2004 16:57:47 GMT"/>
<child>
<widget class="GtkVBox" id="vbox2">
diff --git a/plugins/gtkgui/gtkgui.py b/plugins/gtkgui/gtkgui.py
index 7776e9708..da230438b 100644
--- a/plugins/gtkgui/gtkgui.py
+++ b/plugins/gtkgui/gtkgui.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
@@ -25,7 +24,7 @@ from gtk import TRUE, FALSE
import gtk.glade,gobject
import os,string,time,Queue
import common.optparser,common.sleepy
-CONFPATH = "~/.gajim/config"
+#CONFPATH = "~/.gajim/config"
Wbrowser = 0
Waccounts = 0
@@ -48,13 +47,6 @@ class user:
self.status = args[4]
self.sub = args[5]
self.resource = args[6]
-# elif ((len(args)) and (type (args[0]) == type (self)) and
-# (self.__class__ == args[0].__class__)):
-# self.name = args[0].name
-# self.groups = args[0].groups
-# self.show = args[0].show
-# self.status = args[0].status
-# self.sub = args[0].sub
else: raise TypeError, 'bad arguments'
class info_user:
@@ -69,6 +61,7 @@ class info_user:
def on_close(self, widget):
"""Save user's informations and update the roster on the Jabber server"""
+ #TODO: send things to server only if changes are done
#update user.name if it's not ""
newName = self.entry_name.get_text()
if newName != '':
@@ -202,64 +195,62 @@ class prefs:
colSt = '#'+(hex(self.colorIn.red)+'0')[2:4]\
+(hex(self.colorIn.green)+'0')[2:4]\
+(hex(self.colorIn.blue)+'0')[2:4]
- self.r.cfgParser.set('GtkGui', 'inmsgcolor', colSt)
+ self.r.plugin.config['inmsgcolor'] = colSt
for j in self.r.tab_messages.keys():
self.r.tab_messages[j].tagIn.set_property("foreground", colSt)
#Color for outgoing messages
colSt = '#'+(hex(self.colorOut.red)+'0')[2:4]\
+(hex(self.colorOut.green)+'0')[2:4]\
+(hex(self.colorOut.blue)+'0')[2:4]
- self.r.cfgParser.set('GtkGui', 'outmsgcolor', colSt)
+ self.r.plugin.config['outmsgcolor'] = colSt
for j in self.r.tab_messages.keys():
self.r.tab_messages[j].tagOut.set_property("foreground", colSt)
#Color for status messages
colSt = '#'+(hex(self.colorStatus.red)+'0')[2:4]\
+(hex(self.colorStatus.green)+'0')[2:4]\
+(hex(self.colorStatus.blue)+'0')[2:4]
- self.r.cfgParser.set('GtkGui', 'statusmsgcolor', colSt)
+ self.r.plugin.config['statusmsgcolor'] = colSt
for j in self.r.tab_messages.keys():
self.r.tab_messages[j].tagStatus.set_property("foreground", colSt)
#IconStyle
ist = self.combo_iconstyle.entry.get_text()
- self.r.cfgParser.set('GtkGui', 'iconstyle', ist)
+ self.r.plugin.config['iconstyle'] = ist
self.r.iconstyle = ist
self.r.mkpixbufs()
#autopopup
pp = self.chk_autopp.get_active()
if pp == True:
- self.r.cfgParser.set('GtkGui', 'autopopup', '1')
+ self.r.plugin.config['autopopup'] = 1
self.r.autopopup = 1
else:
- self.r.cfgParser.set('GtkGui', 'autopopup', '0')
+ self.r.plugin.config['autopopup'] = 0
self.r.autopopup = 0
#autoaway
aw = self.chk_autoaway.get_active()
if aw == True:
- self.r.cfgParser.set('GtkGui', 'autoaway', '1')
+ self.r.plugin.config['autoaway'] = 1
self.r.plugin.autoaway = 1
else:
- self.r.cfgParser.set('GtkGui', 'autoaway', '0')
+ self.r.plugin.config['autoaway'] = 0
self.r.plugin.autoaway = 0
aat = self.spin_autoawaytime.get_value_as_int()
self.r.plugin.autoawaytime = aat
- self.r.cfgParser.set('GtkGui', 'autoawaytime', aat)
+ self.r.plugin.config['autoawaytime'] = aat
#autoxa
xa = self.chk_autoxa.get_active()
if xa == True:
- self.r.cfgParser.set('GtkGui', 'autoxa', '1')
+ self.r.plugin.config['autoxa'] = 1
self.r.plugin.autoxa = 1
else:
- self.r.cfgParser.set('GtkGui', 'autoxa', '0')
+ self.r.plugin.config['autoxa'] = 0
self.r.plugin.autoxa = 0
axt = self.spin_autoxatime.get_value_as_int()
self.r.plugin.autoxatime = axt
- self.r.cfgParser.set('GtkGui', 'autoxatime', axt)
+ self.r.plugin.config['autoxatime'] = axt
if self.r.plugin.sleeper:
self.r.plugin.sleeper = common.sleepy.Sleepy(\
self.r.plugin.autoawaytime*60, self.r.plugin.autoxatime*60)
-
- self.r.cfgParser.writeCfgFile()
- self.r.cfgParser.parseCfgFile()
+ self.r.queueOUT.put(('CONFIG', ('GtkGui', self.r.plugin.config)))
self.r.redraw_roster()
@@ -284,7 +275,7 @@ class prefs:
self.spin_autoxatime = xml.get_widget("spin_autoxatime")
#Color for incomming messages
- colSt = self.r.cfgParser.GtkGui_inmsgcolor
+ colSt = self.r.plugin.config['inmsgcolor']
if not colSt:
colSt = '#ff0000'
cmapIn = self.da_in.get_colormap()
@@ -292,7 +283,7 @@ class prefs:
self.da_in.window.set_background(self.colorIn)
#Color for outgoing messages
- colSt = self.r.cfgParser.GtkGui_outmsgcolor
+ colSt = self.r.plugin.config['outmsgcolor']
if not colSt:
colSt = '#0000ff'
cmapOut = self.da_out.get_colormap()
@@ -300,7 +291,7 @@ class prefs:
self.da_out.window.set_background(self.colorOut)
#Color for status messages
- colSt = self.r.cfgParser.GtkGui_statusmsgcolor
+ colSt = self.r.plugin.config['statusmsgcolor']
if not colSt:
colSt = '#00ff00'
cmapStatus = self.da_status.get_colormap()
@@ -320,35 +311,35 @@ class prefs:
self.combo_iconstyle.entry.set_text(self.r.iconstyle)
#Autopopup
- st = self.r.cfgParser.GtkGui_autopopup
- if not st:
- st = '0'
- pp = string.atoi(st)
- self.chk_autopp.set_active(pp)
+ if self.r.plugin.config.has_key('autopopup'):
+ st = self.r.plugin.config['autopopup']
+ else:
+ st = 0
+ self.chk_autopp.set_active(st)
#Autoaway
- st = self.r.cfgParser.GtkGui_autoaway
- if not st:
- st = '1'
- aw = string.atoi(st)
- self.chk_autoaway.set_active(aw)
- st = self.r.cfgParser.GtkGui_autoawaytime
- if not st:
- st = '10'
- ti = string.atoi(st)
- self.spin_autoawaytime.set_value(ti)
+ if self.r.plugin.config.has_key('autoaway'):
+ st = self.r.plugin.config['autoaway']
+ else:
+ st = 1
+ self.chk_autoaway.set_active(st)
+ if self.r.plugin.config.has_key('autoawaytime'):
+ st = self.r.plugin.config['autoawaytime']
+ else:
+ st = 10
+ self.spin_autoawaytime.set_value(st)
#Autoxa
- st = self.r.cfgParser.GtkGui_autoxa
- if not st:
- st = '1'
- xa = string.atoi(st)
- self.chk_autoxa.set_active(xa)
- st = self.r.cfgParser.GtkGui_autoxatime
- if not st:
- st = '20'
- ti = string.atoi(st)
- self.spin_autoxatime.set_value(ti)
+ if self.r.plugin.config.has_key('autoxa'):
+ st = self.r.plugin.config['autoxa']
+ else:
+ st = 1
+ self.chk_autoxa.set_active(st)
+ if self.r.plugin.config.has_key('autoxatime'):
+ st = self.r.plugin.config['autoxatime']
+ else:
+ st = 20
+ self.spin_autoxatime.set_value(st)
xml.signal_connect('gtk_widget_destroy', self.delete_event)
xml.signal_connect('on_but_col_clicked', \
@@ -460,7 +451,8 @@ class account_pref:
warning('You must enter a name for this account')
return 0
if (jid == '') or (string.count(jid, '@') != 1):
- warning('You must enter a Jabber ID for this account\nFor example : login@hostname')
+ warning('You must enter a Jabber ID for this account\n\
+ For example : login@hostname')
return 0
else:
(login, hostname) = string.split(jid, '@')
@@ -468,12 +460,7 @@ class account_pref:
if self.mod:
#if we modify the name of the account
if name != self.acc:
- self.accs.r.cfgParser.remove_section(self.acc)
- self.accs.r.accounts.remove(self.acc)
- self.accs.r.cfgParser.add_section(name)
- self.accs.r.accounts.append(name)
- accountsStr = string.join(self.accs.accounts)
- self.accs.r.cfgParser.set('Profile', 'accounts', accountsStr)
+ del self.accs.r.plugin.accounts[self.acc]
#if it's a new account
else:
if name in self.accs.r.accounts:
@@ -486,16 +473,11 @@ class account_pref:
self.entryRessource.get_text())))
self.check.set_active(FALSE)
return 1
- self.accs.r.cfgParser.add_section(name)
- self.accs.r.accounts.append(name)
- accountsStr = string.join(self.accs.accounts)
- self.accs.r.cfgParser.set('Profile', 'accounts', accountsStr)
- self.accs.r.cfgParser.set(name, 'name', login)
- self.accs.r.cfgParser.set(name, 'hostname', hostname)
- self.accs.r.cfgParser.set(name, 'password', self.entryPass.get_text())
- self.accs.r.cfgParser.set(name, 'ressource', self.entryRessource.get_text())
- self.accs.r.cfgParser.writeCfgFile()
- self.accs.r.cfgParser.parseCfgFile()
+ self.accs.r.plugin.accounts[name] = {'name': login, 'hostname': hostname,\
+ 'password': self.entryPass.get_text(), 'ressource': \
+ self.entryRessource.get_text()}
+ self.accs.r.queueOUT.put(('CONFIG', ('accounts', \
+ self.accs.r.plugin.accounts)))
self.accs.init_accounts()
self.delete_event(self)
@@ -513,10 +495,9 @@ class account_pref:
self.mod = TRUE
self.acc = infos['name']
self.init_account(infos)
+ self.check.set_sensitive(FALSE)
else:
self.mod = FALSE
- if self.mod:
- self.check.set_sensitive(FALSE)
xml.signal_connect('gtk_widget_destroy', self.delete_event)
xml.signal_connect('on_save_clicked', self.on_save_clicked)
@@ -532,9 +513,10 @@ class accounts:
"""initialize listStore with existing accounts"""
model = self.treeview.get_model()
model.clear()
- for account in self.r.accounts:
+ for account in self.r.plugin.accounts.keys():
iter = model.append()
- model.set(iter, 0, account, 1, self.r.cfgParser.__getattr__("%s" % account+"_hostname"))
+ model.set(iter, 0, account, 1, \
+ self.r.plugin.accounts[account]["hostname"])
def on_row_activated(self, widget):
"""Activate delete and modify buttons when a row is selected"""
@@ -552,12 +534,8 @@ class accounts:
(mod, iter) = sel.get_selected()
model = self.treeview.get_model()
account = model.get_value(iter, 0)
- self.r.cfgParser.remove_section(account)
- self.r.accounts.remove(account)
- accountsStr = string.join(self.r.accounts)
- self.r.cfgParser.set('Profile', 'accounts', accountsStr)
- self.r.cfgParser.writeCfgFile()
- self.r.cfgParser.parseCfgFile()
+ del self.r.plugin.accountsi[account]
+ self.r.queueOUT.put(('CONFIG', ('accounts', self.r.plugin.accounts)))
self.init_accounts()
def on_modify_clicked(self, widget):
@@ -569,10 +547,10 @@ class accounts:
(mod, iter) = sel.get_selected()
account = model.get_value(iter, 0)
infos['name'] = account
- infos['jid'] = self.r.cfgParser.__getattr__("%s" % account+"_name") + \
- '@' + self.r.cfgParser.__getattr__("%s" % account+"_hostname")
- infos['password'] = self.r.cfgParser.__getattr__("%s" % account+"_password")
- infos['ressource'] = self.r.cfgParser.__getattr__("%s" % account+"_ressource")
+ infos['jid'] = self.r.plugin.accounts[account]["name"] + \
+ '@' + self.r.plugin.accounts[account]["hostname"]
+ infos['password'] = self.r.plugin.accounts[account]["password"]
+ infos['ressource'] = self.r.plugin.accounts[account]["ressource"]
account_pref(self, infos)
def __init__(self, roster):
@@ -590,7 +568,8 @@ class accounts:
self.treeview.insert_column_with_attributes(-1, 'Name', renderer, text=0)
renderer = gtk.CellRendererText()
renderer.set_data('column', 1)
- self.treeview.insert_column_with_attributes(-1, 'Server', renderer, text=1)
+ self.treeview.insert_column_with_attributes(-1, 'Server', \
+ renderer, text=1)
xml.signal_connect('gtk_widget_destroy', self.delete_event)
xml.signal_connect('on_row_activated', self.on_row_activated)
xml.signal_connect('on_new_clicked', self.on_new_clicked)
@@ -607,7 +586,8 @@ class confirm:
def req_usub(self, widget):
"""When Ok button is clicked :
- Send a message to the core to remove the user and remove it from the roster"""
+ Send a message to the core to remove the user
+ and remove it from the roster"""
model = self.r.tree.get_model()
jid = model.get_value(self.iter, 2)
self.r.queueOUT.put(('UNSUB', jid))
@@ -621,7 +601,8 @@ class confirm:
self.r = roster
self.iter = iter
jid = self.r.tree.get_model().get_value(iter, 2)
- xml.get_widget('label_confirm').set_text('Are you sure you want to remove ' + jid + ' from your roster ?')
+ xml.get_widget('label_confirm').set_text(\
+ 'Are you sure you want to remove ' + jid + ' from your roster ?')
xml.signal_connect('on_okbutton_clicked', self.req_usub)
xml.signal_connect('gtk_widget_destroy', self.delete_event)
@@ -750,7 +731,8 @@ class browser:
self.treeview.insert_column_with_attributes(-1, 'Name', renderer, text=0)
renderer = gtk.CellRendererText()
renderer.set_data('column', 1)
- self.treeview.insert_column_with_attributes(-1, 'Service', renderer, text=1)
+ self.treeview.insert_column_with_attributes(-1, 'Service', \
+ renderer, text=1)
xml.signal_connect('gtk_widget_destroy', self.delete_event)
xml.signal_connect('on_refresh_clicked', self.on_refresh)
@@ -787,7 +769,8 @@ class message:
buffer.insert_with_tags_by_name(end_iter, '<moi> ', 'outgoing')
buffer.insert(end_iter, txt+'\n')
else:
- buffer.insert_with_tags_by_name(end_iter, '<' + self.user.name + '> ', 'incoming')
+ buffer.insert_with_tags_by_name(end_iter, '<' + \
+ self.user.name + '> ', 'incoming')
buffer.insert(end_iter, txt+'\n')
#scroll to the end of the textview
self.conversation.scroll_to_mark(\
@@ -801,11 +784,13 @@ class message:
del self.r.tab_queues[self.user.jid]
for i in self.r.l_contact[self.user.jid]['iter']:
if self.r.pixbufs.has_key(self.user.show):
- self.r.tree.get_model().set_value(i, 0, self.r.pixbufs[self.user.show])
+ self.r.tree.get_model().set_value(i, 0, \
+ self.r.pixbufs[self.user.show])
def on_msg_key_press_event(self, widget, event):
"""When a key is pressed :
- if enter is pressed without the shit key, message (if not empty) is sent and printed in the conversation"""
+ if enter is pressed without the shit key, message (if not empty) is sent
+ and printed in the conversation"""
if event.keyval == gtk.keysyms.Return:
if (event.state & gtk.gdk.SHIFT_MASK):
return 0
@@ -828,11 +813,6 @@ class message:
deb, end = buffer.get_bounds()
buffer.delete(deb, end)
- def on_test(self, widget):
- print self.window.get_size()
- print self.hbox.need_resize
- print self.hbox.resize_mode
-
def __init__(self, user, roster):
self.user = user
self.r = roster
@@ -854,19 +834,18 @@ class message:
xml.signal_connect('gtk_widget_destroy', self.delete_event)
xml.signal_connect('on_clear_button_clicked', self.on_clear)
xml.signal_connect('on_msg_key_press_event', self.on_msg_key_press_event)
- xml.signal_connect('on_check_resize', self.on_test)
self.tagIn = buffer.create_tag("incoming")
- color = self.r.cfgParser.GtkGui_inmsgcolor
+ color = self.r.plugin.config['inmsgcolor']
if not color:
color = '#ff0000' #red
self.tagIn.set_property("foreground", color)
self.tagOut = buffer.create_tag("outgoing")
- color = self.r.cfgParser.GtkGui_outmsgcolor
+ color = self.r.plugin.config['outmsgcolor']
if not color:
color = '#0000ff' #blue
self.tagOut.set_property("foreground", color)
self.tagStatus = buffer.create_tag("status")
- color = self.r.cfgParser.GtkGui_statusmsgcolor
+ color = self.r.plugin.config['statusmsgcolor']
if not color:
color = '#00ff00' #green
self.tagStatus.set_property("foreground", color)
@@ -888,7 +867,8 @@ class roster:
if not self.l_group.has_key(g):
self.l_group[g] = {'iter':None, 'hide':False}
if not self.l_group[g]['iter']:
- iterG = model.append(None, (self.pixbufs['closed'], g, 'group', FALSE, self.grpbgcolor, TRUE))
+ iterG = model.append(None, (self.pixbufs['closed'], g, \
+ 'group', FALSE, self.grpbgcolor, TRUE))
self.l_group[g] = {'iter':iterG, 'hide':False}
newgrp = 1
if g == 'Agents':
@@ -946,7 +926,8 @@ class roster:
show = tab[jid]['show']
if not show:
show = 'offline'
- user1 = user(ji, name, tab[jid]['groups'], show, tab[jid]['status'], tab[jid]['sub'], '')
+ user1 = user(ji, name, tab[jid]['groups'], show, \
+ tab[jid]['status'], tab[jid]['sub'], '')
self.l_contact[ji] = {'user':user1, 'iter':[]}
for i in tab[jid]['groups'] :
if not i in self.l_group.keys():
@@ -990,7 +971,7 @@ class roster:
item.connect("activate", self.on_row_activated, path)
item = gtk.MenuItem("Rename")
self.menu_c.append(item)
-# item.connect("activate", self.on_rename, iter)
+ #item.connect("activate", self.on_rename, iter)
item = gtk.MenuItem()
self.menu_c.append(item)
item = gtk.MenuItem("Subscription")
@@ -1003,7 +984,8 @@ class roster:
item.connect("activate", self.authorize, jid)
item = gtk.MenuItem("Rerequest authorization from")
menu_sub.append(item)
- item.connect("activate", self.req_sub, jid, 'I would like to add you to my contact list, please.')
+ item.connect("activate", self.req_sub, jid, \
+ 'I would like to add you to my contact list, please.')
item = gtk.MenuItem()
self.menu_c.append(item)
@@ -1036,17 +1018,12 @@ class roster:
"""Authorize a user"""
self.queueOUT.put(('AUTH', jid))
-# def rename(self, widget, jid, name):
-# u = self.l_contact[jid]['user']
-# u.name = name
-# for i in self.l_contact[jid]['iter']:
-# self.tree.get_model().set_value(i, 1, name)
-
def req_sub(self, widget, jid, txt):
"""Request subscription to a user"""
self.queueOUT.put(('SUB', (jid, txt)))
if not self.l_contact.has_key(jid):
- user1 = user(jid, jid, ['general'], 'requested', 'requested', 'sub', '')
+ user1 = user(jid, jid, ['general'], 'requested', \
+ 'requested', 'sub', '')
self.add_user(user1)
def init_tree(self):
@@ -1061,7 +1038,8 @@ class roster:
"""popup user's group's or agent menu"""
if (event.button == 3) & (event.type == gtk.gdk.BUTTON_PRESS):
try:
- path, column, x, y = self.tree.get_path_at_pos(int(event.x), int(event.y))
+ path, column, x, y = self.tree.get_path_at_pos(int(event.x), \
+ int(event.y))
except TypeError:
return
model = self.tree.get_model()
@@ -1083,14 +1061,13 @@ class roster:
def on_status_changed(self, widget):
"""When we change our status"""
- accountsStr = self.cfgParser.Profile_accounts
- accounts = string.split(accountsStr, ' ')
if widget.name != 'online' and widget.name != 'offline':
w = away_msg()
txt = w.run()
else:
txt = widget.name
- self.queueOUT.put(('STATUS',(widget.name, txt, accounts[0])))
+ self.queueOUT.put(('STATUS',(widget.name, txt, \
+ self.plugin.accounts.keys()[0])))
def on_prefs(self, widget):
"""When preferences is selected :
@@ -1168,7 +1145,8 @@ class roster:
else:
model.set_value(iter, 1, new_text)
self.l_contact[jid]['user'].name = new_text
- self.queueOUT.put(('UPDUSER', (jid, new_text, self.l_contact[jid]['user'].groups)))
+ self.queueOUT.put(('UPDUSER', (jid, new_text, \
+ self.l_contact[jid]['user'].groups)))
def on_browse(self, widget):
"""When browse agent is selected :
@@ -1181,7 +1159,8 @@ class roster:
"""initialise pixbufs array"""
self.path = 'plugins/gtkgui/icons/' + self.iconstyle + '/'
self.pixbufs = {}
- for state in ('online', 'away', 'xa', 'dnd', 'offline', 'requested', 'message', 'opened', 'closed'):
+ for state in ('online', 'away', 'xa', 'dnd', 'offline', \
+ 'requested', 'message', 'opened', 'closed', 'not in list'):
#open an animated gif file if it exists oterelse a xpm file
if not os.path.exists(self.path + state + '.gif'):
if not os.path.exists(self.path + state + '.xpm'):
@@ -1202,18 +1181,17 @@ class roster:
def __init__(self, queueOUT, plug):
# FIXME : handle no file ...
- self.cfgParser = common.optparser.OptionsParser(CONFPATH)
- self.cfgParser.parseCfgFile()
xml = gtk.glade.XML('plugins/gtkgui/gtkgui.glade', 'Gajim')
self.window = xml.get_widget('Gajim')
self.tree = xml.get_widget('treeview')
self.plugin = plug
self.connected = 0
#(icon, name, jid, editable, background color, show_icon)
- model = gtk.TreeStore(gtk.gdk.Pixbuf, str, str, gobject.TYPE_BOOLEAN, str, gobject.TYPE_BOOLEAN)
+ model = gtk.TreeStore(gtk.gdk.Pixbuf, str, str, \
+ gobject.TYPE_BOOLEAN, str, gobject.TYPE_BOOLEAN)
self.tree.set_model(model)
self.init_tree()
- self.iconstyle = self.cfgParser.GtkGui_iconstyle
+ self.iconstyle = self.plugin.config['iconstyle']
if not self.iconstyle:
self.iconstyle = 'sun'
self.mkpixbufs()
@@ -1239,12 +1217,9 @@ class roster:
self.optionmenu.set_history(6)
self.tab_messages = {}
self.tab_queues = {}
- accountsStr = self.cfgParser.Profile_accounts
- self.accounts = string.split(accountsStr, ' ')
- showOffline = self.cfgParser.GtkGui_showoffline
- if showOffline:
- self.showOffline = string.atoi(showOffline)
+ if self.plugin.config.has_key('showoffline'):
+ self.showOffline = self.plugin.config['showoffline']
else:
self.showOffline = 0
@@ -1291,6 +1266,16 @@ class roster:
class plugin:
"""Class called by the core in a new thread"""
+ def wait(self, what):
+ """Wait for a message from Core"""
+ #TODO: timeout, save messages that don't fit
+ while 1:
+ if not self.queueIN.empty():
+ ev = self.queueIN.get()
+ if ev[0] == what:
+ return ev[1]
+ time.sleep(0.1)
+
def read_queue(self):
"""Read queue from the core and execute commands from it"""
global Wbrowser
@@ -1317,7 +1302,7 @@ class plugin:
self.r.chg_status(j, 'offline', 'Disconnected')
elif self.r.connected == 0:
self.r.connected = 1
- self.r.plugin.sleeper = common.sleepy.Sleepy(\
+ self.sleeper = common.sleepy.Sleepy(\
self.autoawaytime*60, self.autoxatime*60)
elif ev[0] == 'NOTIFY':
@@ -1339,11 +1324,13 @@ class plugin:
#Print status in chat window
if self.r.tab_messages.has_key(ji):
self.r.tab_messages[ji].print_conversation(\
- "%s is now %s (%s)" % (u.name, ev[1][1], ev[1][2]), 'status')
+ "%s is now %s (%s)" % (u.name, ev[1][1], \
+ ev[1][2]), 'status')
if string.find(jid, "@") <= 0:
#It must be an agent
if not self.r.l_contact.has_key(ji):
- user1 = user(ji, ji, ['Agents'], ev[1][1], ev[1][2], 'from', res)
+ user1 = user(ji, ji, ['Agents'], ev[1][1], \
+ ev[1][2], 'from', res)
self.r.add_user(user1)
else:
#Update existing iter
@@ -1359,11 +1346,14 @@ class plugin:
else:
jid = ev[1][0]
- autopopup = self.r.cfgParser.GtkGui_autopopup
- if autopopup:
- self.autopopup = string.atoi(autopopup)
+ if self.config.has_key('autopopup'):
+ self.autopopup = self.config['autopopup']
else:
self.autopopup = 0
+ if not self.r.l_contact.has_key(jid):
+ user1 = user(jid, jid, ['not in list'], \
+ 'not in list', 'not in list', 'none', '')
+ self.r.add_user(user1)
if self.autopopup == 0 and not self.r.tab_messages.has_key(jid):
#We save it in a queue
if not self.r.tab_queues.has_key(jid):
@@ -1374,9 +1364,9 @@ class plugin:
self.r.tab_queues[jid].put((ev[1][1], tim))
else:
if not self.r.tab_messages.has_key(jid):
- #FIXME:message from unknown
if self.r.l_contact.has_key(jid):
- self.r.tab_messages[jid] = message(self.r.l_contact[jid]['user'], self.r)
+ self.r.tab_messages[jid] = \
+ message(self.r.l_contact[jid]['user'], self.r)
if self.r.tab_messages.has_key(jid):
self.r.tab_messages[jid].print_conversation(ev[1][1])
@@ -1390,7 +1380,8 @@ class plugin:
for i in self.r.l_contact[u.jid]['iter']:
model.set_value(i, 1, u.name)
else:
- user1 = user(jid, jid, ['general'], 'online', 'online', 'to', ev[1]['ressource'])
+ user1 = user(jid, jid, ['general'], 'online', \
+ 'online', 'to', ev[1]['ressource'])
self.r.add_user(user1)
warning("You are now authorized by " + jid)
elif ev[0] == 'UNSUBSCRIBED':
@@ -1406,16 +1397,9 @@ class plugin:
Wreg = agent_reg(ev[1][0], ev[1][1], self.r)
#('ACC_OK', (hostname, login, pasword, name, ressource))
elif ev[0] == 'ACC_OK':
- self.r.cfgParser.add_section(ev[1][3])
- self.r.accounts.append(ev[1][3])
- accountsStr = string.join(self.r.accounts)
- self.r.cfgParser.set('Profile', 'accounts', accountsStr)
- self.r.cfgParser.set(ev[1][3], 'name', ev[1][1])
- self.r.cfgParser.set(ev[1][3], 'hostname', ev[1][0])
- self.r.cfgParser.set(ev[1][3], 'password', ev[1][2])
- self.r.cfgParser.set(ev[1][3], 'ressource', ev[1][4])
- self.r.cfgParser.writeCfgFile()
- self.r.cfgParser.parseCfgFile()
+ self.accounts[ev[1][3]] = {'ressource': ev[1][4], \
+ 'password': ev[1][2], 'hostname': ev[1][0], 'name': ev[1][1]}
+ self.r.queueOUT.put(('CONFIG', ('accounts', self.r.plugin.accounts)))
if (Waccounts != 0):
Waccounts.init_accounts()
elif ev[0] == 'QUIT':
@@ -1430,20 +1414,21 @@ class plugin:
self.sleeper.poll()
state = self.sleeper.getState()
if state != self.sleeper_state:
- accountsStr = self.r.cfgParser.Profile_accounts
- accounts = string.split(accountsStr, ' ')
if state == common.sleepy.STATE_AWAKE:
#we go online
self.r.optionmenu.set_history(0)
- self.r.queueOUT.put(('STATUS',('online', '', accounts[0])))
+ self.r.queueOUT.put(('STATUS',('online', '', \
+ self.accounts.keys()[0])))
if state == common.sleepy.STATE_AWAY and self.autoaway:
#we go away
self.r.optionmenu.set_history(1)
- self.r.queueOUT.put(('STATUS',('away', 'auto away (idle)', accounts[0])))
+ self.r.queueOUT.put(('STATUS',('away', \
+ 'auto away (idle)', self.accounts.keys()[0])))
if state == common.sleepy.STATE_XAWAY and self.autoxa:
#we go extanded away
self.r.optionmenu.set_history(2)
- self.r.queueOUT.put(('STATUS',('xa', 'auto away (idel)', accounts[0])))
+ self.r.queueOUT.put(('STATUS',('xa', \
+ 'auto away (idel)', self.accounts.keys[0])))
self.sleeper_state = state
return 1
@@ -1451,23 +1436,28 @@ class plugin:
gtk.threads_init()
gtk.threads_enter()
self.queueIN = quIN
+ quOUT.put(('ASK_CONFIG', 'GtkGui'))
+ self.config = self.wait('CONFIG')
+ quOUT.put(('ASK_CONFIG', 'accounts'))
+ self.accounts = self.wait('CONFIG')
+ #TODO: if no config : default config and save it
self.r = roster(quOUT, self)
- st = self.r.cfgParser.GtkGui_autoaway
- if not st:
- st = '1'
- self.autoaway = string.atoi(st)
- st = self.r.cfgParser.GtkGui_autoawaytime
- if not st:
- st = '10'
- self.autoawaytime = string.atoi(st)
- st = self.r.cfgParser.GtkGui_autoxa
- if not st:
- st = '1'
- self.autoxa = string.atoi(st)
- st = self.r.cfgParser.GtkGui_autoxatime
- if not st:
- st = '20'
- self.autoxatime = string.atoi(st)
+ if self.config.has_key('autoaway'):
+ self.autoaway = self.config['autoaway']
+ else:
+ self.autoaway = 1
+ if self.config.has_key('autoawaytime'):
+ self.autoawaytime = self.config['autoawaytime']
+ else:
+ self.autoawaytime = 10
+ if self.config.has_key('autoxa'):
+ self.autoxa = self.config['autoxa']
+ else:
+ self.autoxa = 1
+ if self.config.has_key('autoxatime'):
+ self.autoxatime = self.config['autoxatime']
+ else:
+ self.autoxatime = 20
self.time = gtk.timeout_add(200, self.read_queue)
gtk.timeout_add(1000, self.read_sleepy)
self.sleeper = None
diff --git a/plugins/logger/logger.py b/plugins/logger/logger.py
index bf0bf6cac..bce481c07 100644
--- a/plugins/logger/logger.py
+++ b/plugins/logger/logger.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##
@@ -29,17 +28,13 @@ class plugin:
def read_queue(self):
while 1:
while self.queueIN.empty() == 0:
- lognotsep = self.cfgParser.Logger_lognotsep
- if lognotsep:
- lognotsep = string.atoi(lognotsep)
+ if self.config.has_key('lognotsep'):
+ lognotsep = self.config['lognotsep']
else:
- #default
lognotsep = 1
- lognotusr = self.cfgParser.Logger_lognotusr
- if lognotusr:
- lognotusr = string.atoi(lognotusr)
+ if self.config.has_key('lognotusr'):
+ lognotusr = self.config['lognotusr']
else:
- #default
lognotusr = 1
# tim = time.strftime("%d%m%y%H%M%S")
tim = "%d" % time.time()
@@ -74,12 +69,22 @@ class plugin:
fic.close()
time.sleep(0.5)
+ def wait(self, what):
+ """Wait for a message from Core"""
+ #TODO: timeout, save messages that don't fit
+ while 1:
+ if not self.queueIN.empty():
+ ev = self.queueIN.get()
+ if ev[0] == what:
+ return ev[1]
+ time.sleep(0.1)
+
def __init__(self, quIN, quOUT):
- self.cfgParser = common.optparser.OptionsParser(CONFPATH)
- self.cfgParser.parseCfgFile()
self.queueIN = quIN
self.queueOUT = quOUT
- #create ~/.gajim/logs if it doesn't exist
+ quOUT.put(('ASK_CONFIG', 'Logger'))
+ self.config = self.wait('CONFIG')
+ #create ~/.gajim/logs/ if it doesn't exist
try:
os.stat(os.path.expanduser("~/.gajim"))
except OSError:
diff --git a/runCore.py b/runCore.py
index 9cd68b645..05673954b 100644
--- a/runCore.py
+++ b/runCore.py
@@ -4,7 +4,6 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@crans.org>
## - Vincent Hanquez <tab@tuxfamily.org>
-## - David Ferlier <david@yazzy.org>
##
## Copyright (C) 2003 Gajim Team
##