X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fconfig.py;h=ff8cf1a862dc362e10c21958a3f9758c221db034;hb=6ffc68fd975169aa7dda7387a28118cbfd49701a;hp=67e111b681fac2c27dad8ca54f0a2a3b6a1ddaa6;hpb=fd7428c2ec6946a7d9741c044c7b16194ae19262;p=drlaunch diff --git a/src/config.py b/src/config.py index 67e111b..ff8cf1a 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.2" +version = "0.7" try: from glib import get_user_config_dir @@ -38,197 +38,192 @@ except: return(cfg) -size = (2,2) -iconsize = 64 -iconspace = 42 -apps=None -indiv=False -id=None # Applet ID -longpress=True +def ensure_dir(): + dir0=get_user_config_dir() + dir=dir0+'/drlaunch' + if not os.path.exists(dir): + os.mkdir(dir) + if not os.path.isdir(dir): + raise Exception('Failed to ensure directory' + dir) -maxsz=(4,4) + return(dir) -def setSize(sz): - global size +def get_config_fn(): + dir=ensure_dir() + ret=dir + '/config' - size=sz + return(ret) -def getSize(): - global size +class Config: + def __init__(self, id): + self.id=id - return(size) + 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 -def getMaxSize(): - global maxsz + self.maxsz=(8,4) - return(maxsz) + def setSize(self, sz): + self.size=sz -def setIndiv(_indiv): - global indiv + def getSize(self): + return(self.size) - indiv=_indiv + def getMaxSize(self): + return(self.maxsz) -def getIndiv(): - global indiv + def getIconSize(self): + return(self.iconsize) - return(indiv) + def setIndiv(self, indiv): + self.indiv=indiv -def setLongpress(_lp): - global longpress + def getIndiv(self): + return(self.indiv) - longpress=_lp + def setLongpress(self, lp): + self.longpress=lp -def getLongpress(): - global longpress + def getLongpress(self): + return(self.longpress) - return(longpress) + def setAnimate(self, ar): + self.animate=ar -def setApps(aps): - """ apps is a dictionary of (x,y)=>appname """ - global apps + def getAnimate(self): + return(self.animate) - apps=aps + def setApps(self, aps): + """ apps is a dictionary of (x,y)=>appname """ + self.apps=aps -def getApps(): - global apps + 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) - if apps==None: - tmp={ - (0,0): 'rtcom-call-ui', - (0,1): 'rtcom-messaging-ui', - (1,0): 'browser', - (1,1): 'osso-addressbook', - } - setApps(tmp) + return(self.apps) - return(apps) + def save(self): + self.check_init() -def ensure_dir(): - dir0=get_user_config_dir() - dir=dir0+'/drlaunch' - if not os.path.exists(dir): - os.mkdir(dir) - if not os.path.isdir(dir): - raise Exception('Failed to ensure directory' + dir) + dt=self.load_all() - return(dir) - -def get_config_fn(): - dir=ensure_dir() - ret=dir + '/config' - - return(ret) - -def save(): - global id - - check_init() - - dt=load_all() + if dt==None: + dt={ + 'version': 4, + 'data': {}, + } - if dt==None: - dt={ - 'version': 3, - 'data': {}, + dt['data'][self.id]={ + 'size': self.getSize(), + 'apps': self.getApps(), + 'indiv': self.getIndiv(), + 'longpress': self.getLongpress(), + 'animate': self.getAnimate(), } - dt['data'][id]={ - 'size': getSize(), - 'apps': getApps(), - 'indiv': getIndiv(), - 'longpress': getLongpress(), - } + fn=get_config_fn() - fn=get_config_fn() - - st=pickle.dumps(dt) - f=file(fn, 'w') - f.write(st) - f.close() - -def parse_v1(dt0): - """ Convert a v1 config to v2 """ - global id - - ret={ - 'version': 2, - 'data': {}, - } + st=pickle.dumps(dt) + f=file(fn, 'w') + f.write(st) + f.close() - ret['data'][id]={ - 'size': dt0['size'], - 'apps': dt0['apps'], - } + def parse_v1(self, dt0): + """ Convert a v1 config to v2 """ + ret={ + 'version': 2, + 'data': {}, + } - return(ret) + ret['data'][self.id]={ + 'size': dt0['size'], + 'apps': dt0['apps'], + } -def parse_v2(dt): - global id + return(ret) - # Perhaps copy dt? + def parse_v2(self, dt): + # Perhaps copy dt? - dt['version']=3 + 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 + 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) + return(dt) -def load_all(): - fn=get_config_fn() + def parse_v3(self, dt): + dt['version']=4 - try: - f=file(fn, 'r') - st=f.read() - f.close() - ret=pickle.loads(st) - except: - ret=None + for i in dt['data']: + dt['data'][i]['animate']=True - return(ret) + return(dt) -def load(): - global id + def load_all(self): + fn=get_config_fn() - check_init() + try: + f=file(fn, 'r') + st=f.read() + f.close() + ret=pickle.loads(st) - fn=get_config_fn() + if ret==None: + ret=None + else: + if ret['version']==1: + ret=parse_v1(ret) - dt0=load_all() - if dt0==None: - return + if ret['version']==2: + ret=parse_v2(ret) - if dt0['version']==1: - dt0=parse_v1(dt0) + if ret['version']==3: + ret=parse_v3(ret) + except: + ret=None - if dt0['version']==2: - dt0=parse_v2(dt0) + return(ret) - if not dt0['data'].has_key(id): - return + def load(self): + self.check_init() - dt=dt0['data'][id] + fn=get_config_fn() - setSize(dt['size']) - setApps(dt['apps']) - setIndiv(dt['indiv']) - setLongpress(dt['longpress']) + dt0=self.load_all() -def init(_id): - global id + if dt0==None or not dt0['data'].has_key(self.id): + return - id=_id + dt=dt0['data'][self.id] -def check_init(): - global id + self.setSize(dt['size']) + self.setApps(dt['apps']) + self.setIndiv(dt['indiv']) + self.setLongpress(dt['longpress']) + self.setAnimate(dt['animate']) - if id==None: - import sys + def check_init(self): + if self.id==None: + import sys - print "config.init() not done" - sys.exit(1) + print "config.init() not done" + sys.exit(1) # vim: set ts=8 sts=4 sw=4 noet formatoptions=r ai nocindent: