#! /usr/bin/python # To change this template, choose Tools | Templates # and open the template in the editor. __author__="bjschuma" __date__ ="$Feb 17, 2010 9:32:56 PM$" from sys import argv,platform import os from bt.message import write from bt.file import join from bt import xm from bt import dict import session class Settings(dict.Dict): def __init__(self): dict.Dict.__init__(self) session.events.invite("scion-plugins-loaded",self.load,2) session.events.invite("scion-end",self.save) def setdefaults(self): write("Setting default values",1) self['user'] = os.path.expanduser("~") self['plugpath'] += ["plugins", "extra"] self['arch'] = platform self['appname'] = "scion" write(self,3) def clean(self): del self['appdir'] del self['appname'] del self['arch'] del self['plugpath'] del self['user'] del self['verbose'] def init(self,key,value): if self.has(key)==False: self[key] = value def __setitem__(self,key,value): key = key.lower() dict.Dict.__setitem__(self,key,value) def __getitem__(self,key): key = key.lower() if self.has(key)==True: return dict.Dict.__getitem__(self,key) return None def __delitem__(self,key): dict.Dict.__delitem__(self,key.lower()) def load(self): write("Loading saved settings",1) path = join(self["session"],"settings") xm.load(path) elm = xm.child() if elm == None: return for node in xm.children(elm): if xm.isElm(node) == False: continue key = xm.name(node) val = xm.value( xm.child(node) ) write(" ( "+key + ", " + str(val) + " )",2) self[key] = val def save(self): write("Saving settings",1) path = join(self["session"],"settings") xm.new() elm = xm.element("settings") xm.append(elm) self.clean() for key in self.keys(): value = self[key] if value == None: continue e = xm.element(key) t = xm.text( value ) xm.append(t,e) xm.append(e,elm) xm.write(path)