core: configuration file

SàT's main options can now be put in a configuration file which can be in different locations
Bridge: new getConfig option
This commit is contained in:
Goffi 2011-06-18 16:22:50 +02:00
commit 1da78d1301
2 changed files with 84 additions and 5 deletions

View file

@ -0,0 +1,33 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
SAT: a jabber client
Copyright (C) 2009, 2010, 2011 Jérôme Poisson (goffi@goffi.org)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
CONST = {
'client_name' : u'SàT (Salut à toi)',
'client_version' : u'0.2.0D', #Please add 'D' at the end for dev versions
'local_dir' : '~/.sat'
}
### Defaut configuration values ###
default_config = {
'local_dir': '~/.sat',
'media_dir': '/usr/share/sat/media',
}

View file

@ -97,20 +97,22 @@ class SAT(service.Service):
def __init__(self):
#TODO: standardize callback system
local_dir = os.path.expanduser(self.get_const('local_dir'))
if not os.path.exists(local_dir):
os.makedirs(local_dir)
self.__waiting_conf = {} #callback called when a confirmation is received
self.__progress_cb_map = {} #callback called when a progress is requested (key = progress id)
self.__general_cb_map = {} #callback called for general reasons (key = name)
self.__private_data = {} #used for internal callbacks (key = id)
self.trigger = TriggerManager() #trigger are used to change SàT behaviour
self.profiles = {}
self.plugins = {}
self.menus = {} #used to know which new menus are wanted by plugins
self.memory=Memory(self)
local_dir = os.path.expanduser(self.get_const('local_dir'))
if not os.path.exists(local_dir):
os.makedirs(local_dir)
self.trigger = TriggerManager() #trigger are used to change SàT behaviour
self.bridge=DBusBridge()
self.bridge.register("getVersion", lambda: self.get_const('client_version'))
@ -126,6 +128,7 @@ class SAT(service.Service):
self.bridge.register("getPresenceStatus", self.memory.getPresenceStatus)
self.bridge.register("getWaitingSub", self.memory.getWaitingSub)
self.bridge.register("sendMessage", self.sendMessage)
self.bridge.register("getConfig", self.memory.getConfig)
self.bridge.register("setParam", self.setParam)
self.bridge.register("getParamA", self.memory.getParamA)
self.bridge.register("getParamsUI", self.memory.getParamsUI)