It works! :-)
[drlaunch] / icons.py
index 7846958..72812de 100755 (executable)
--- a/icons.py
+++ b/icons.py
@@ -45,9 +45,22 @@ class Icons(gobject.GObject):
     def __init__(self, isconfig):
        self.__gobject_init__()
        self.icons={}
+       self.allicons={}
        self.size=0
        self.isconfig=isconfig
 
+       # signal handlers
+       self.h={}
+
+       # setup allicons
+       maxsz=4
+       for x in xrange(maxsz):
+           for y in xrange(maxsz):
+               k=(x,y)
+               ico=Icon(self.isconfig)
+               self.allicons[k]=ico
+               self.connect_one(ico)
+
     @classmethod
     def register_signals(cls):
        signals=icon.signals
@@ -59,16 +72,24 @@ class Icons(gobject.GObject):
        return(IconIter(self.icons))
 
     def connect_one(self, which):
-       which.connect('long-press', self.signalLongpress)
-       which.connect('click', self.signalClick)
-       which.connect('tripple-click', self.signalTrippleClick)
+       self.h[which]={
+           'longpress':    which.connect('long-press', self.signalLongpress),
+           'click':        which.connect('click', self.signalClick),
+           'tripple':      which.connect('tripple-click',
+                               self.signalTrippleClick)
+           }
 
     def disconnect_one(self, which):
-       which.disconnect('long-press', self.signalLongpress)
-       which.disconnect('click', self.signalClick)
-       which.disconnect('tripple-click', self.signalTrippleClick)
+       for i in self.h[which]:
+           which.disconnect(self.h[which][i])
+       self.h.pop(which)
+#      which.disconnect(self.h[which]_longpress)
+#      which.disconnect(self.h_click)
+#      which.disconnect(self.h_tripple)
 
     def setSize(self, sz):
+#      print "sz:", sz, self.size
+
        if sz==self.size:
            return
 
@@ -78,17 +99,16 @@ class Icons(gobject.GObject):
        for x in xrange(sz):
            for y in xrange(sz):
                k=(x,y)
-               if old.has_key(k):
-                   self.icons[k]=old[k]
-                   old.pop(k)
-               else:
-                   ico=Icon(self.isconfig)
-                   self.icons[k]=ico
-                   self.connect_one(ico)
+               ico=self.allicons[k]
+               self.icons[k]=ico
+#              if old.has_key(k):
+#                  old.pop(k)  # Re-used
+#              else:
+#                  self.connect_one(ico)
 
        # Disconnect signals
-       for i in old:
-           self.disconnect_one(old[i])
+#      for i in old:
+#          self.disconnect_one(old[i])
 
        self.size=sz
 
@@ -114,21 +134,36 @@ class Icons(gobject.GObject):
        return(ret)
 
     def load(self):
-       x=0
-       y=0
-       fn=["maegirls", "wifieye", 'battery-eye', 'image-viewer',
-           'tecnoballz', 'ncalc', 'rtcom-call-ui', 'rtcom-messaging-ui',
-           'extcalllog', 'browser', 'modest', 'osso-addressbook']
-       for f in fn:
-           dt=apps.readOne(f)
-           dt['icon2']=getIcon(dt['icon'])
-           print x, y, dt
-           self.get(x,y).setApp(dt)
-           x+=1
-           if x>=config.size:
-               x=0
-               y+=1
-#          self.icons.append(p)
+#      x=0
+#      y=0
+#      fn=["maegirls", "wifieye", 'battery-eye', 'image-viewer',
+#          'tecnoballz', 'ncalc', 'rtcom-call-ui', 'rtcom-messaging-ui',
+#          'extcalllog', 'browser', 'modest', 'osso-addressbook']
+
+       wapps=config.getApps()
+       sz=config.getSize()
+
+       for k in wapps:
+           x,y=k
+           if x>=sz or y>=sz:
+               continue
+
+           appname=wapps[k]
+           if appname!=None:
+               app=apps.readOne(appname)
+               app['icon2']=getIcon(app['icon'])
+               self.get(x,y).setApp(app)
+
+#      for f in fn:
+#          dt=apps.readOne(f)
+#          dt['icon2']=getIcon(dt['icon'])
+#          print x, y, dt
+#          self.get(x,y).setApp(dt)
+#          x+=1
+#          if x>=config.getSize(getSize()):
+#              x=0
+#              y+=1
+##         self.icons.append(p)
 
        print "end of Icons init"