Multiple instance support.
[drlaunch] / src / config.py
index f58b2ec..fad6826 100755 (executable)
@@ -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.3"
 
 try:
     from glib import get_user_config_dir
@@ -38,71 +38,6 @@ except:
 
        return(cfg)
 
-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
-
-    size=sz
-
-def getSize():
-    global size
-
-    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
-
-    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'
@@ -119,117 +54,155 @@ def get_config_fn():
 
     return(ret)
 
-def save():
-    global id
+class Config:
+    def __init__(self, id):
+       self.id=id
 
-    check_init()
+       self.size = (2,2)
+       self.iconsize = 64
+       self.iconspace = 42
+       self.apps=None
+       self.indiv=False
+       self.longpress=True
 
-    dt=load_all()
+       self.maxsz=(4,4)
 
-    if dt==None:
-       dt={
-           'version':  3,
-           'data':     {},
-           }
+    def setSize(self, sz):
+       self.size=sz
 
-    dt['data'][id]={
-       'size':         getSize(),
-       'apps':         getApps(),
-       'indiv':        getIndiv(),
-       'longpress':    getLongpress(),
-       }
+    def getSize(self):
+       return(self.size)
 
-    fn=get_config_fn()
+    def getMaxSize(self):
+       return(self.maxsz)
 
-    st=pickle.dumps(dt)
-    f=file(fn, 'w')
-    f.write(st)
-    f.close()
+    def getIconSize(self):
+       return(self.iconsize)
 
-def parse_v1(dt0):
-    """ Convert a v1 config to v2 """
-    global id
+    def setIndiv(self, indiv):
+       self.indiv=indiv
 
-    ret={
-       'version':  2,
-       'data':     {},
-       }
+    def getIndiv(self):
+       return(self.indiv)
 
-    ret['data'][id]={
-       'size':     dt0['size'],
-       'apps':     dt0['apps'],
-       }
+    def setLongpress(self, lp):
+       self.longpress=lp
 
-    return(ret)
+    def getLongpress(self):
+       return(self.longpress)
 
-def parse_v2(dt):
-    global id
+    def setApps(self, aps):
+       """ apps is a dictionary of (x,y)=>appname """
+       self.apps=aps
 
-    # Perhaps copy dt?
+    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)
 
-    dt['version']=3
+       return(self.apps)
 
-    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
+    def save(self):
+       self.check_init()
 
-    return(dt)
+       dt=self.load_all()
 
-def load_all():
-    fn=get_config_fn()
+       if dt==None:
+           dt={
+               'version':  3,
+               'data': {},
+               }
 
-    try:
-       f=file(fn, 'r')
-       st=f.read()
+       dt['data'][self.id]={
+           'size':         self.getSize(),
+           'apps':         self.getApps(),
+           'indiv':        self.getIndiv(),
+           'longpress':    self.getLongpress(),
+           }
+
+       fn=get_config_fn()
+
+       st=pickle.dumps(dt)
+       f=file(fn, 'w')
+       f.write(st)
        f.close()
-       ret=pickle.loads(st)
 
-       if ret==None:
-           ret=None
-       else:
-           if ret['version']==1:
-               ret=parse_v1(ret)
+    def parse_v1(self, dt0):
+       """ Convert a v1 config to v2 """
+       ret={
+           'version':      2,
+           'data':         {},
+           }
 
-           if ret['version']==2:
-               ret=parse_v2(ret)
-    except:
-       ret=None
+       ret['data'][self.id]={
+           'size':         dt0['size'],
+           'apps':         dt0['apps'],
+           }
 
-    return(ret)
+       return(ret)
+
+    def parse_v2(self, dt):
+       # Perhaps copy dt?
+
+       dt['version']=3
 
-def load():
-    global id
+       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
 
-    check_init()
+       return(dt)
 
-    fn=get_config_fn()
+    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)
+       except:
+           ret=None
 
-    dt0=load_all()
+       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 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'])
 
-    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: