Multiple instance support.
[drlaunch] / src / icongrid.py
index 5184d09..670c80f 100755 (executable)
@@ -32,20 +32,19 @@ import cairo
 import time
 
 from portrait import FremantleRotation
-from xdg.IconTheme import getIconPath
+#from xdg.IconTheme import getIconPath
 
-import config
+#import config
 import apps
 import icon
 from icon import Icon
 from icons import Icons
 
-def getIcon(name):
-    ico=getIconPath(name, config.iconsize)
-    ret=gtk.gdk.pixbuf_new_from_file_at_size(ico, config.iconsize,
-       config.iconsize)
-
-    return(ret)
+#def getIcon(name, iconsize):
+#    ico=getIconPath(name, iconsize)
+#    ret=gtk.gdk.pixbuf_new_from_file_at_size(ico, iconsize, iconsize)
+#
+#    return(ret)
 
 #class IconGrid(gtk.Widget, FremantleRotation):
 class IconGrid(object):        #(gobject.GObject):
@@ -56,20 +55,15 @@ class IconGrid(object):     #(gobject.GObject):
 
        self.isconfig=isconfig
 
-       self.icons=Icons(isconfig)
-
-       self.setMode('l')
+       self.icons=None
+       self.lasticon=None  # The last icon that got selected
 
-       # Maybe fix those:
-#      w=(config.getSize() * config.iconsize) + \
-#          (config.getSize()) * config.iconspace
-       #self.set_size_request(w, w)
+    def do_realize(self, config):
+       self.config=config
 
-#      self.setSize(config.getSize())
+       self.icons=Icons(self.isconfig, self.config)
+       self.setMode('l')
        self.setSize((4,4))
-
-       self.lasticon=None  # The last icon that got selected
-
        self.reloadIcons()
 
     def connect(self, what, *args):
@@ -94,9 +88,9 @@ class IconGrid(object):       #(gobject.GObject):
     def iconAt(self, x, y):
        """ Get icon at coordinates x,y. X and Y are in pixels """
 
-       w=config.iconsize + config.iconspace
+       w=self.config.iconsize + self.config.iconspace
 
-       if self.mode=='l' or config.getIndiv():
+       if self.mode=='l' or self.config.getIndiv():
            x2=int(x / w)
            y2=int(y / w)
        else:
@@ -113,14 +107,15 @@ class IconGrid(object):   #(gobject.GObject):
        return(ret)
 
     def _draw(self, cr, event):
-       w=config.iconsize + config.iconspace
+       w=self.config.iconsize + self.config.iconspace
        for x,y in self.icons:
-           if self.mode=='l' or config.getIndiv():
-               x2=x * (config.iconsize + config.iconspace)
-               y2=y * (config.iconsize + config.iconspace)
+           if self.mode=='l' or self.config.getIndiv():
+               x2=x * (self.config.iconsize + self.config.iconspace)
+               y2=y * (self.config.iconsize + self.config.iconspace)
            else:
-               x2=y * (config.iconsize + config.iconspace)
-               y2=(self.size[1]-x-1) * (config.iconsize + config.iconspace)
+               x2=y * (self.config.iconsize + self.config.iconspace)
+               y2=(self.size[1]-x-1) * \
+                       (self.config.iconsize + self.config.iconspace)
 
            # Only repaint the needed icons
            rect=gdk.Rectangle(x2, y2, w, w)
@@ -217,17 +212,21 @@ class IconGrid(object):   #(gobject.GObject):
 #      self.setMode(o)
 
 class IconGridWidget(IconGrid, gtk.Widget):
-    def __init__(self, isconfig):
+    def __init__(self, isconfig, config):
        IconGrid.__init__(self, isconfig)
        gtk.Widget.__init__(self)
 
+       self.config=config
+
+       IconGrid.do_realize(self, self.config)
+
        if isconfig:
-           maxsz=config.getMaxSize()
-           w=maxsz[0] * (config.iconsize + config.iconspace)
-           h=maxsz[1] * (config.iconsize + config.iconspace)
+           maxsz=self.config.getMaxSize()
+           w=maxsz[0] * (self.config.iconsize + self.config.iconspace)
+           h=maxsz[1] * (self.config.iconsize + self.config.iconspace)
        else:
-           w=self.size[0] * (config.iconsize + config.iconspace)
-           h=self.size[1] * (config.iconsize + config.iconspace)
+           w=self.size[0] * (self.config.iconsize + self.config.iconspace)
+           h=self.size[1] * (self.config.iconsize + self.config.iconspace)
 
        self.set_size_request(w, h)