diff --git a/src/base/bt/__init__.py b/src/base/bt/__init__.py index e86af2ef..e0cc12a4 100644 --- a/src/base/bt/__init__.py +++ b/src/base/bt/__init__.py @@ -1,4 +1,4 @@ # This is the base tools package # It contains various tools needed by the base layer of ocarina2 -__all__ = ["file", "proc", "message", "needle"] \ No newline at end of file +__all__ = ["file", "proc", "message", "needle", "xm"] \ No newline at end of file diff --git a/src/base/bt/xm.py b/src/base/bt/xm.py new file mode 100644 index 00000000..c342f683 --- /dev/null +++ b/src/base/bt/xm.py @@ -0,0 +1,44 @@ +#! /usr/bin/python + +# To change this template, choose Tools | Templates +# and open the template in the editor. + +__author__="bjschuma" +__date__ ="$Jan 4, 2010 3:27:05 PM$" + + +import xml.dom.minidom as xml +from bt.file import * + +global document +document = None + + +def new(): + global document + document = xml.Document() + + +def element(name): + global document + return document.createElement(name) + + +def text(name): + global document + return document.createTextNode(name) + + +def append(child,root=None): + if root==None: + global document + document.appendChild(child) + return + root.appendChild(child) + + +def write(path): + global document + out = fopen(path,'w') + out.write(document.toprettyxml(indent=" ")) + out.close() \ No newline at end of file diff --git a/src/base/manager.py b/src/base/manager.py index 2f25de80..d1c8c18b 100644 --- a/src/base/manager.py +++ b/src/base/manager.py @@ -7,6 +7,7 @@ import sys from bt.message import * from bt.file import * import loader +import settings class Manager: def __init__(self): @@ -86,6 +87,7 @@ class Manager: keys = self.enabled.keys() for plugin in keys: self.disablePlugin(plugin) + settings.save(self.findsession()) def run(self,name,args=None): @@ -107,8 +109,7 @@ class Manager: def savesession(self): - path = self.findsession() - path = join(path,"enabled") + path = join(self.findsession(),"enabled") file = fopen(path,'w') for key in self.enabled.keys(): file.write(key+"\n") diff --git a/src/base/settings.py b/src/base/settings.py index 56fd23e1..d8b5af36 100644 --- a/src/base/settings.py +++ b/src/base/settings.py @@ -8,7 +8,6 @@ import os import sys import getopt - # Create a dictionary to hold the settings global settings settings = dict() @@ -26,12 +25,14 @@ def set(key,value): from bt.message import write from bt.message import error from bt.file import fopen +from bt.file import join +from bt import xm # Return true if settings contains key def has(key): global settings - return (key in settings.keys()) + return (key.upper() in settings.keys()) @@ -98,6 +99,34 @@ def parseInput(): return +def clean(): + delete("user") + delete("arch") + delete("write") + delete("args") + delete("plugpath") + delete("verbose") + + +def save(path): + clean() + global settings + path = join(path,"settings") + xm.new() + elm = xm.element("settings") + xm.append(elm) + a = settings.keys() + for key in settings.keys(): + value = get(key) + if value == None: + continue + e = xm.element(key) + t = xm.text(str(value)) + xm.append(t,e) + xm.append(e,elm) + xm.write(path) + + # Set default values # Set verbose first so we can use write() set("VERBOSE", ('-v' in sys.argv) or ("--verbose" in sys.argv) )