import os
import pickle
-version = "0.8"
+version = "1.0"
try:
from glib import get_user_config_dir
return(ret)
-class Config:
+class Config(object):
def __init__(self, id):
self.id=id
self.size = (2,2)
self.themebgsize = 96
- self.iconsize = 64
-# self.iconspace = 42 # For 4 icons (height)
- self.iconspace = 36 # For 8 icons (width)
+ self.iconsize0 = 64
+### self.iconspace = 42 # For 4 icons (height)
+## self.iconspace = 36 # For 8 icons (width)
+
+# self.iconsize = 64
+# self.iconpadding = 12
+# self.iconmargin = 6
+
self.apps=None
self.indiv=True
self.longpress=False
self.nobg=False
self.themebg=False
- self.maxsz=(8,4)
+ self.setDefaultSizes()
+
+ #self.maxsz=(8,4)
def setSize(self, sz):
- self.size=sz
+ maxsz=self.getMaxSize()
+ sz2=(min(sz[0], maxsz[0]), min(sz[1], maxsz[1]))
+ self.size=sz2
def getSize(self):
return(self.size)
+ def setDefaultSizes(self):
+ self.iconsize=64
+ self.iconpadding=12
+ self.iconmargin=6
+
+ # Return the maximum grid size
def getMaxSize(self):
- return(self.maxsz)
+ isf=self.getIconSizeFull()
+ retx=int(800/isf)
+ rety=int((480-60)/isf)
+ maxsz=(retx, rety)
+ return(maxsz)
+
+ # Return the maxmimum icon size
+ def getIconSizeRange(self):
+ return((48,128))
+
+ def getIconPaddingRange(self):
+ return((0,32))
+
+ def getIconMarginRange(self):
+ return((0,16))
def getIconSize(self):
return(self.iconsize)
+ def setIconSize(self, sz):
+ self.iconsize=sz
+
+ def getIconSpace(self):
+ return((2*self.iconpadding) + (2*self.iconmargin))
+
+ def getIconSizeFull(self):
+ ret=self.iconsize + (2*self.iconpadding) + (2*self.iconmargin)
+ return(ret)
+
+ def getIconMargin(self):
+ return(self.iconmargin)
+
+ def setIconMargin(self, sz):
+ self.iconmargin=sz
+
+ def getIconPadding(self):
+ return(self.iconpadding)
+
+ def setIconPadding(self, sz):
+ self.iconpadding=sz
+
def setIndiv(self, indiv):
self.indiv=indiv
return(self.apps)
+ def filterDefault(self, value, default):
+ if value==default:
+ return(-1)
+ else:
+ return(value)
+
+ def provideDefault(self, value, default):
+ if value==-1:
+ return(default)
+ else:
+ return(value)
+
def save(self):
self.check_init()
if dt==None:
dt={
- 'version': 6,
+ 'version': 7,
'data': {},
}
'animate': self.getAnimate(),
'nobg': self.getNoBg(),
'themebg': self.getThemeBg(),
+ 'iconsize': self.filterDefault(self.getIconSize(), 64),
+ 'iconpadding': self.filterDefault(self.getIconPadding(), 12),
+ 'iconmargin': self.filterDefault(self.getIconMargin(), 6),
}
fn=get_config_fn()
return(dt)
+ def parse_v6(self, dt):
+ dt['version']=7
+
+ for i in dt['data']:
+ dt['data'][i]['iconsize']=-1
+ dt['data'][i]['iconpadding']=-1
+ dt['data'][i]['iconmargin']=-1
+
+ return(dt)
+
def load_all(self):
fn=get_config_fn()
ret=pickle.loads(st)
if ret==None:
+ print "failed to load config"
ret=None
else:
if ret['version']==1:
- ret=parse_v1(ret)
+ ret=self.parse_v1(ret)
if ret['version']==2:
- ret=parse_v2(ret)
+ ret=self.parse_v2(ret)
if ret['version']==3:
- ret=parse_v3(ret)
+ ret=self.parse_v3(ret)
if ret['version']==4:
- ret=parse_v4(ret)
+ ret=self.parse_v4(ret)
if ret['version']==5:
- ret=parse_v5(ret)
- except:
+ ret=self.parse_v5(ret)
+
+ if ret['version']==6:
+ ret=self.parse_v6(ret)
+ except Exception, e:
+ print "config error:", e
ret=None
return(ret)
self.setAnimate(dt['animate'])
self.setNoBg(dt['nobg'])
self.setThemeBg(dt['themebg'])
+ self.setIconSize(self.provideDefault(dt['iconsize'], 64))
+ self.setIconPadding(self.provideDefault(dt['iconpadding'], 12))
+ self.setIconMargin(self.provideDefault(dt['iconmargin'], 6))
def check_init(self):
if self.id==None:
print "config.init() not done"
sys.exit(1)
+def dump(obj):
+ attrs=[attr for attr in dir(obj) if not callable(getattr(obj,attr))]
+
+ print "obj:", obj
+ for attr in attrs:
+ if attr=='__gdoc__' or attr=='__doc__':
+ continue
+ print " ", attr, ":", getattr(obj, attr)
+
# vim: set ts=8 sts=4 sw=4 noet formatoptions=r ai nocindent: