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