141 lines
2.5 KiB
Python
141 lines
2.5 KiB
Python
import os.path
|
|
__author__="bjschuma"
|
|
__date__ ="$Dec 4, 2009 4:04:24 PM$"
|
|
|
|
#import bt.message.disp
|
|
|
|
import os
|
|
import sys
|
|
import getopt
|
|
|
|
# Create a dictionary to hold the settings
|
|
global settings
|
|
settings = dict()
|
|
|
|
|
|
# Return true if settings contains key
|
|
def has(key):
|
|
return (key.upper() in settings.keys())
|
|
|
|
|
|
# Set key to value
|
|
# This must be defined before other imports so bt.message can use it
|
|
def set(key,value):
|
|
key = key.upper()
|
|
settings[key] = value
|
|
|
|
|
|
# Return the value at key
|
|
def get(key):
|
|
key = key.upper()
|
|
if has(key) == False:
|
|
return None
|
|
return settings[key]
|
|
|
|
|
|
from bt.message import write
|
|
from bt.message import error
|
|
from bt.file import fopen
|
|
from bt.file import join
|
|
from bt import xm
|
|
from bt import scripting
|
|
|
|
|
|
|
|
|
|
|
|
def delete(key):
|
|
key = key.upper()
|
|
if has(key) == True:
|
|
del settings[key]
|
|
|
|
|
|
# Read settings from file
|
|
def readfile(file):
|
|
write("Reading file: "+file,True)
|
|
file = fopen(file)
|
|
|
|
|
|
# Parse the user input
|
|
def parseInput():
|
|
write("Parsing user input",True)
|
|
input = sys.argv[1:]
|
|
write(input,True)
|
|
optc = "vp:s:"
|
|
long = ["verbose", "path=", "script="]
|
|
|
|
# Attempt to parse user input
|
|
try:
|
|
opts, args = getopt.getopt(input, optc, long)
|
|
for opt in opts:
|
|
if opt[0] == "-p":
|
|
set("plugpath",get("plugpath")+[opt[1]])
|
|
elif opt[0] == "-s":
|
|
scripting.add(opt[1])
|
|
set("ARGS", args)
|
|
except getopt.GetoptError, e:
|
|
error(e.msg)
|
|
return
|
|
|
|
|
|
def clean():
|
|
delete("appdir")
|
|
delete("appname")
|
|
delete("arch")
|
|
delete("args")
|
|
delete("plugpath")
|
|
delete("user")
|
|
delete("verbose")
|
|
|
|
|
|
def save(path):
|
|
write("Saving settings",True)
|
|
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)
|
|
|
|
|
|
def load(path):
|
|
write("Loading saved settings",True)
|
|
global settings
|
|
path = join(path,"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.child(node)
|
|
set(key,xm.value(val))
|
|
|
|
|
|
# Set default values
|
|
# Set verbose first so we can use write()
|
|
set("VERBOSE", ('-v' in sys.argv) or ("--verbose" in sys.argv) )
|
|
write("Setting default values...", True)
|
|
|
|
# Find who is running the program
|
|
user = os.path.expanduser("~")
|
|
set("USER", user)
|
|
set("PLUGPATH", ["plugins", "extra"])
|
|
|
|
# Find out what platform we are running on
|
|
set("ARCH", sys.platform)
|
|
|
|
|
|
parseInput() |