import os
import pickle
-version = "0.1"
+version = "0.7"
try:
from glib import get_user_config_dir
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'
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: