(no commit message)
[drlaunch] / src / config.py
index d208444..5c7e39e 100755 (executable)
@@ -38,10 +38,15 @@ except:
 
        return(cfg)
 
-size = 2
+size = (2,2)
 iconsize = 64
 iconspace = 42
 apps=None
+indiv=False
+id=None                # Applet ID
+longpress=True
+
+maxsz=(4,4)
 
 def setSize(sz):
     global size
@@ -53,6 +58,31 @@ def getSize():
 
     return(size)
 
+def getMaxSize():
+    global maxsz
+
+    return(maxsz)
+
+def setIndiv(_indiv):
+    global indiv
+
+    indiv=_indiv
+
+def getIndiv():
+    global indiv
+
+    return(indiv)
+
+def setLongpress(_lp):
+    global longpress
+
+    longpress=_lp
+
+def getLongpress():
+    global longpress
+
+    return(longpress)
+
 def setApps(aps):
     """ apps is a dictionary of (x,y)=>appname """
     global apps
@@ -90,32 +120,115 @@ def get_config_fn():
     return(ret)
 
 def save():
-    fn=get_config_fn()
+    global id
+
+    check_init()
 
-    dt={
-       'version':  1,
-       'size':     getSize(),
-       'apps':     getApps()
+    dt=load_all()
+
+    if dt==None:
+       dt={
+           'version':  3,
+           'data':     {},
+           }
+
+    dt['data'][id]={
+       'size':         getSize(),
+       'apps':         getApps(),
+       'indiv':        getIndiv(),
+       'longpress':    getLongpress(),
        }
 
+    fn=get_config_fn()
+
     st=pickle.dumps(dt)
     f=file(fn, 'w')
     f.write(st)
     f.close()
 
-def load():
+def parse_v1(dt0):
+    """ Convert a v1 config to v2 """
+    global id
+
+    ret={
+       'version':  2,
+       'data':     {},
+       }
+
+    ret['data'][id]={
+       'size':     dt0['size'],
+       'apps':     dt0['apps'],
+       }
+
+    return(ret)
+
+def parse_v2(dt):
+    global id
+
+    # 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 load_all():
     fn=get_config_fn()
 
     try:
        f=file(fn, 'r')
        st=f.read()
        f.close()
-       dt=pickle.loads(st)
+       ret=pickle.loads(st)
     except:
+       ret=None
+
+    return(ret)
+
+def load():
+    global id
+
+    check_init()
+
+    fn=get_config_fn()
+
+    dt0=load_all()
+    if dt0==None:
+       return
+
+    if dt0['version']==1:
+       dt0=parse_v1(dt0)
+
+    if dt0['version']==2:
+       dt0=parse_v2(dt0)
+
+    if not dt0['data'].has_key(id):
        return
 
+    dt=dt0['data'][id]
+
     setSize(dt['size'])
     setApps(dt['apps'])
+    setIndiv(dt['indiv'])
+    setLongpress(dt['longpress'])
+
+def init(_id):
+    global id
+
+    id=_id
+
+def check_init():
+    global id
+
+    if id==None:
+       import sys
+
+       print "config.init() not done"
+       sys.exit(1)
 
 # vim: set ts=8 sts=4 sw=4 noet formatoptions=r ai nocindent: