new config file management

This commit is contained in:
Yann Leboulanger 2004-02-25 00:33:06 +00:00
parent 2592032962
commit 48258e96d5
4 changed files with 75 additions and 17 deletions

View File

@ -17,7 +17,7 @@
## GNU General Public License for more details.
##
import sys
import sys, os
sys.path.append("..")
import time
@ -37,16 +37,44 @@ class GajimCore:
"""Core"""
def __init__(self):
self.connected = 0
self.init_cfg_file()
self.cfgParser = common.optparser.OptionsParser(CONFPATH)
self.hub = common.hub.GajimHub()
self.parse()
# END __init__
def init_cfg_file(self):
fname = os.path.expanduser(CONFPATH)
reps = string.split(fname, '/')
del reps[0]
path = ''
while len(reps) > 1:
path = path + '/' + reps[0]
del reps[0]
try:
os.stat(os.path.expanduser(path))
except OSError:
try:
os.mkdir(os.path.expanduser(path))
except:
print "Can't create %s" % path
sys.exit
try:
os.stat(fname)
except:
print "creating %s" % fname
fic = open(fname, "w")
fic.write("[Profile]\naccounts = \n\n[Core]\ndelauth = 1\nalwaysauth = 0\nmodules = logger gtkgui\ndelroster = 1\n")
fic.close()
# END init_cfg_file
def parse(self):
self.cfgParser.parseCfgFile()
self.accounts = {}
accts = self.cfgParser.tab['Profile']['accounts']
for a in string.split(accts, ' '):
accts = string.split(self.cfgParser.tab['Profile']['accounts'], ' ')
if accts == ['']:
accts = []
for a in accts:
self.accounts[a] = self.cfgParser.tab[a]
def vCardCB(self, con, vc):
@ -95,7 +123,10 @@ class GajimCore:
self.hub.sendPlugin('NOTIFY', (who, 'offline', 'offline', \
prs.getFrom().getResource()))
else:
self.hub.sendPlugin('SUBSCRIBE', who)
txt = prs.getStatus()
if not txt:
txt = "I would like to add you to my roster."
self.hub.sendPlugin('SUBSCRIBE', (who, 'txt'))
elif type == 'subscribed':
jid = prs.getFrom()
self.hub.sendPlugin('SUBSCRIBED', {'jid':jid.getBasic(), \
@ -193,19 +224,26 @@ class GajimCore:
self.con.disconnect()
self.hub.sendPlugin('QUIT', ())
return
#('ASK_CONFIG', (who_ask, section))
#('ASK_CONFIG', (who_ask, section, default_config))
elif ev[0] == 'ASK_CONFIG':
if ev[1][1] == 'accounts':
self.hub.sendPlugin('CONFIG', (ev[1][0], self.accounts))
else:
if self.cfgParser.tab.has_key(ev[1][1]):
self.hub.sendPlugin('CONFIG', (ev[1][0], \
self.cfgParser.__getattr__(ev[1][1])))
else:
self.cfgParser.tab[ev[1][1]] = ev[1][2]
self.cfgParser.writeCfgFile()
self.hub.sendPlugin('CONFIG', (ev[1][0], ev[1][2]))
#('CONFIG', (section, config))
elif ev[0] == 'CONFIG':
if ev[1][0] == 'accounts':
#Remove all old accounts
accts = string.split(self.cfgParser.tab\
['Profile']['accounts'], ' ')
if accts == ['']:
accts = []
for a in accts:
del self.cfgParser.tab[a]
#Write all new accounts
@ -241,7 +279,12 @@ class GajimCore:
#('SUB', (jid, txt))
elif ev[0] == 'SUB':
log.debug('subscription request for %s' % ev[1][0])
self.con.send(common.jabber.Presence(ev[1][0], 'subscribe'))
pres = common.jabber.Presence(ev[1][0], 'subscribe')
if ev[1][1]:
pres.setStatus(ev[1][1])
else:
pres.setStatus("I would like to add you to my roster.")
self.con.send(pres)
#('REQ', jid)
elif ev[0] == 'AUTH':
self.con.send(common.jabber.Presence(ev[1], 'subscribed'))

View File

@ -2673,7 +2673,7 @@ on the server.</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="padding">5</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>

View File

@ -588,7 +588,7 @@ class accountPreference_Window:
del self.accs.r.plugin.accounts[self.acc]
#if it's a new account
else:
if name in self.accs.r.accounts:
if name in self.accs.r.plugin.accounts:
warning_Window('An account already has this name')
return 0
#if we neeed to register a new account
@ -664,7 +664,7 @@ class accounts_Window:
(mod, iter) = sel.get_selected()
model = self.treeview.get_model()
account = model.get_value(iter, 0)
del self.r.plugin.accountsi[account]
del self.r.plugin.accounts[account]
self.r.queueOUT.put(('CONFIG', ('accounts', self.r.plugin.accounts)))
self.init_accounts()
@ -755,12 +755,14 @@ class authorize_Window:
self.r.queueOUT.put(('DENY', self.jid))
self.delete_event(self)
def __init__(self, roster, jid):
def __init__(self, roster, jid, txt):
xml = gtk.glade.XML(GTKGUI_GLADE, 'Sub_req')
self.window = xml.get_widget('Sub_req')
self.r = roster
self.jid = jid
xml.get_widget('label').set_text('Subscription request from ' + self.jid)
#TOTOTO
xml.get_widget("textview_sub").get_buffer().set_text(txt)
xml.signal_connect('on_button_auth_clicked', self.auth)
xml.signal_connect('on_button_deny_clicked', self.deny)
xml.signal_connect('on_button_close_clicked', self.delete_event)
@ -1199,8 +1201,11 @@ class roster_Window:
txt = w.run()
else:
txt = widget.name
if len(self.plugin.accounts) > 0:
self.queueOUT.put(('STATUS',(widget.name, txt, \
self.plugin.accounts.keys()[0])))
else:
warning_Window("You must setup an account before connecting to jabber network.")
def on_prefs(self, widget):
"""When preferences is selected :
@ -1518,7 +1523,7 @@ class plugin:
self.r.tab_messages[jid].print_conversation(ev[1][1])
elif ev[0] == 'SUBSCRIBE':
authorize_Window(self.r, ev[1])
authorize_Window(self.r, ev[1][0], ev[1][1])
elif ev[0] == 'SUBSCRIBED':
jid = ev[1]['jid']
if self.r.l_contact.has_key(jid):
@ -1586,7 +1591,16 @@ class plugin:
gtk.threads_init()
gtk.threads_enter()
self.queueIN = quIN
quOUT.put(('ASK_CONFIG', ('GtkGui', 'GtkGui')))
quOUT.put(('ASK_CONFIG', ('GtkGui', 'GtkGui', {'autopopup':1,\
'showoffline':0,\
'autoaway':0,\
'autoawaytime':10,\
'autoxa':0,\
'autoxatime':20,\
'iconstyle':'sun',\
'inmsgcolor':'#ff000',\
'outmsgcolor': '#0000ff',\
'statusmsgcolor':'#1eaa1e'})))
self.config = self.wait('CONFIG')
quOUT.put(('ASK_CONFIG', ('GtkGui', 'accounts')))
self.accounts = self.wait('CONFIG')

View File

@ -83,7 +83,8 @@ class plugin:
def __init__(self, quIN, quOUT):
self.queueIN = quIN
self.queueOUT = quOUT
quOUT.put(('ASK_CONFIG', ('Logger', 'Logger')))
quOUT.put(('ASK_CONFIG', ('Logger', 'Logger', {\
'lognotsep':1, 'lognotusr':1})))
self.config = self.wait('CONFIG')
#create ~/.gajim/logs/ if it doesn't exist
try: