X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fconfig.py;h=32349674240b79d28781160911f187cb46d440f0;hb=37152347df6b2ae425a1c222a2765d07c624247f;hp=e89ed89dc3c11b1dcc59bac7200122fffa783de8;hpb=db974b15b3f30296c84628143b9724f1c025824e;p=drlaunch diff --git a/src/config.py b/src/config.py index e89ed89..3234967 100755 --- a/src/config.py +++ b/src/config.py @@ -25,7 +25,7 @@ __version__ = "$Id: 0.py 2265 2010-02-21 19:16:26Z v13 $" import os import pickle -version = "0.1" +version = "0.6" try: from glib import get_user_config_dir @@ -38,41 +38,6 @@ except: return(cfg) -size = 2 -iconsize = 64 -iconspace = 42 -apps=None - -def setSize(sz): - global size - - size=sz - -def getSize(): - global size - - return(size) - -def setApps(aps): - """ apps is a dictionary of (x,y)=>appname """ - global apps - - apps=aps - -def getApps(): - global apps - - if apps==None: - tmp={ - (0,0): 'rtcom-call-ui', - (0,1): 'rtcom-messaging-ui', - (1,0): 'browser', - (1,1): 'osso-addressbook', - } - setApps(tmp) - - return(apps) - def ensure_dir(): dir0=get_user_config_dir() dir=dir0+'/drlaunch' @@ -89,39 +54,176 @@ def get_config_fn(): return(ret) -def save(): - fn=get_config_fn() - print "save", fn +class Config: + def __init__(self, id): + self.id=id + + self.size = (2,2) + self.iconsize = 64 +# self.iconspace = 42 # For 4 icons (height) + self.iconspace = 36 # For 8 icons (width) + self.apps=None + self.indiv=False + self.longpress=True + self.animate=True + + self.maxsz=(8,4) + + def setSize(self, sz): + self.size=sz + + def getSize(self): + return(self.size) + + def getMaxSize(self): + return(self.maxsz) + + def getIconSize(self): + return(self.iconsize) + + def setIndiv(self, indiv): + self.indiv=indiv + + def getIndiv(self): + return(self.indiv) + + def setLongpress(self, lp): + self.longpress=lp + + def getLongpress(self): + return(self.longpress) + + def setAnimate(self, ar): + self.animate=ar + + def getAnimate(self): + return(self.animate) + + def setApps(self, aps): + """ apps is a dictionary of (x,y)=>appname """ + self.apps=aps + + def getApps(self): + if self.apps==None: + tmp={ + (0,0): 'rtcom-call-ui', + (0,1): 'rtcom-messaging-ui', + (1,0): 'browser', + (1,1): 'osso-addressbook', + } + self.setApps(tmp) + + return(self.apps) - dt={ - 'version': 1, - 'size': getSize(), - 'apps': getApps() - } + def save(self): + self.check_init() - print "save:", dt + dt=self.load_all() - st=pickle.dumps(dt) - f=file(fn, 'w') - f.write(st) - f.close() + if dt==None: + dt={ + 'version': 4, + 'data': {}, + } -def load(): - fn=get_config_fn() - print "load", fn + dt['data'][self.id]={ + 'size': self.getSize(), + 'apps': self.getApps(), + 'indiv': self.getIndiv(), + 'longpress': self.getLongpress(), + 'animate': self.getAnimate(), + } + + fn=get_config_fn() - try: - f=file(fn, 'r') - st=f.read() + st=pickle.dumps(dt) + f=file(fn, 'w') + f.write(st) f.close() - dt=pickle.loads(st) - except: - return - print "load:", dt + def parse_v1(self, dt0): + """ Convert a v1 config to v2 """ + ret={ + 'version': 2, + 'data': {}, + } + + ret['data'][self.id]={ + 'size': dt0['size'], + 'apps': dt0['apps'], + } + + return(ret) + + def parse_v2(self, dt): + # Perhaps copy dt? + + dt['version']=3 + + for i in dt['data']: + dt['data'][i]['indiv']=False + dt['data'][i]['size']=(dt['data'][i]['size'], dt['data'][i]['size']) + dt['data'][i]['longpress']=True + + return(dt) + + def parse_v3(self, dt): + dt['version']=4 + + for i in dt['data']: + dt['data'][i]['animate']=True + + return(dt) + + def load_all(self): + fn=get_config_fn() + + try: + f=file(fn, 'r') + st=f.read() + f.close() + ret=pickle.loads(st) + + if ret==None: + ret=None + else: + if ret['version']==1: + ret=parse_v1(ret) + + if ret['version']==2: + ret=parse_v2(ret) + + if ret['version']==3: + ret=parse_v3(ret) + except: + ret=None + + return(ret) + + def load(self): + self.check_init() + + fn=get_config_fn() + + dt0=self.load_all() + + if dt0==None or not dt0['data'].has_key(self.id): + return + + dt=dt0['data'][self.id] + + self.setSize(dt['size']) + self.setApps(dt['apps']) + self.setIndiv(dt['indiv']) + self.setLongpress(dt['longpress']) + self.setAnimate(dt['animate']) + + def check_init(self): + if self.id==None: + import sys - setSize(dt['size']) - setApps(dt['apps']) + print "config.init() not done" + sys.exit(1) # vim: set ts=8 sts=4 sw=4 noet formatoptions=r ai nocindent: