It works!
[drlaunch] / src / win_config.py
index 472885e..4639e2b 100755 (executable)
@@ -35,9 +35,11 @@ from hildon import StackableWindow
 import config
 import apps
 from icon import Icon, getIcon
+from iconw import IconWidget
 from icongrid import IconGridWidget
 from about import DlgAbout
 from portrait import FremantleRotation
+from sig import Disconnector
 
 class DialogIconSize(gtk.Dialog):
     def __init__(self, config):
@@ -50,6 +52,14 @@ class DialogIconSize(gtk.Dialog):
 
        vbox=self.vbox
 
+       self.pa=hildon.PannableArea()
+       vbox.add(self.pa)
+       self.pa.set_property('mov-mode', hildon.MOVEMENT_MODE_VERT)
+
+       vbox=gtk.VBox()
+       self.pa.add_with_viewport(vbox)
+       self.pa.set_size_request(-1, 1000)
+
        self.labelDim=gtk.Label("koko")
        vbox.add(self.labelDim)
 
@@ -57,7 +67,7 @@ class DialogIconSize(gtk.Dialog):
        scale=gtk.HScale()
        scale.set_digits(0)
        scale.set_value_pos(gtk.POS_RIGHT)
-       scale.set_range(48,128)
+       scale.set_range(*self.config.getIconSizeRange())
        scale.set_increments(8, 16)
        self.scaleIconSize=scale
        vbox.add(scale)
@@ -70,7 +80,7 @@ class DialogIconSize(gtk.Dialog):
        scale=gtk.HScale()
        scale.set_digits(0)
        scale.set_value_pos(gtk.POS_RIGHT)
-       scale.set_range(2,16)
+       scale.set_range(*self.config.getIconPaddingRange())
        scale.set_increments(2,2)
        self.scaleIconPadding=scale
        vbox2.add(scale)
@@ -81,12 +91,16 @@ class DialogIconSize(gtk.Dialog):
        scale=gtk.HScale()
        scale.set_digits(0)
        scale.set_value_pos(gtk.POS_RIGHT)
-       scale.set_range(2,16)
+       scale.set_range(*self.config.getIconMarginRange())
        scale.set_increments(2,2)
        self.scaleIconMargin=scale
        vbox2.add(scale)
        hbox.add(vbox2)
 
+       self.icon=IconWidget(False, self.config)
+       self.icon.setApp('osso-addressbook')
+       vbox.add(self.icon)
+
        self.scaleIconSize.set_value(self.config.getIconSize())
        self.scaleIconPadding.set_value(self.config.getIconPadding())
        self.scaleIconMargin.set_value(self.config.getIconMargin())
@@ -138,6 +152,7 @@ class DialogIconSize(gtk.Dialog):
     def recalc(self):
        maxsz=self.config.getMaxSize()
        self.setWH(maxsz[0], maxsz[1])
+       self.icon.refresh()
 
     def getIconSize(self):
        return(self.scaleIconSize.get_value())
@@ -197,9 +212,10 @@ class DialogIconSize(gtk.Dialog):
        return(ret)
 
 
-class WinConfig(StackableWindow): #, FremantleRotation):
+class WinConfig(StackableWindow, Disconnector): #, FremantleRotation):
     def __init__(self, config, *args):
        StackableWindow.__init__(self)
+       Disconnector.__init__(self)
 #      FremantleRotation.__init__(self, "DrlaunchPlugin",
 #          mode=FremantleRotation.AUTOMATIC)
 
@@ -207,6 +223,13 @@ class WinConfig(StackableWindow): #, FremantleRotation):
 
        self.setupUi()
 
+#      h=self.c(self, 'delete-event', self.slotDeleteEvent)
+
+# This is a nice test. If it is displayed then the window is actually
+# destroyed and there is no memory leak
+#    def __del__(self):
+#      print "wc-del"
+
     def setupUi(self):
        """
        self.pa         Main Pannable Area
@@ -220,6 +243,8 @@ class WinConfig(StackableWindow): #, FremantleRotation):
 #      self.add(self.pa)
        self.pa.set_property('mov-mode', hildon.MOVEMENT_MODE_HORIZ)
 
+       self.add(self.pa)
+
 #1     hbox=gtk.HBox()
 #1     self.pa.add_with_viewport(hbox)
 
@@ -242,11 +267,10 @@ class WinConfig(StackableWindow): #, FremantleRotation):
        vbox.add(hbox2)
 
        self.butsSizeX=[]
-       self.butsSize=self.butsSizeX # For now
        for i in xrange(self.maxmaxsz[0]):
            but=hildon.GtkToggleButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
            but.set_label("%s" % (i+1,))
-           but.connect('toggled', self.slotButtonSizeX, i)
+           self.c(but, 'toggled', self.slotButtonSizeX, i)
 
            self.butsSizeX.append(but)
 
@@ -262,7 +286,7 @@ class WinConfig(StackableWindow): #, FremantleRotation):
        for i in xrange(self.maxmaxsz[1]):
            but=hildon.GtkToggleButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
            but.set_label("%s" % (i+1,))
-           but.connect('toggled', self.slotButtonSizeY, i)
+           self.c(but, 'toggled', self.slotButtonSizeY, i)
 
            self.butsSizeY.append(but)
 
@@ -280,7 +304,7 @@ class WinConfig(StackableWindow): #, FremantleRotation):
        but=hildon.CheckButton(
                gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
        but.set_label("Rotate icons individually")
-       but.connect('toggled', self.slotButtonRotateIndividually)
+       self.c(but, 'toggled', self.slotButtonRotateIndividually)
        self.buttonRotateIndividually=but
        vbox.add(but)
 
@@ -308,14 +332,14 @@ class WinConfig(StackableWindow): #, FremantleRotation):
        but=hildon.CheckButton(
                gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
        but.set_label("Theme background")
-       #but.connect('toggled', self.slotButtonNoBackground)
+       but.connect('toggled', self.slotButtonThemeBackground)
        self.buttonThemeBackground=but
        vbox.add(but)
 
        but=hildon.CheckButton(
                gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
        but.set_label("No background")
-       but.connect('toggled', self.slotButtonNoBackground)
+       self.c(but, 'toggled', self.slotButtonNoBackground)
        self.buttonNoBackground=but
        vbox.add(but)
 
@@ -323,7 +347,7 @@ class WinConfig(StackableWindow): #, FremantleRotation):
                gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT,
                hildon.BUTTON_ARRANGEMENT_VERTICAL)
        but.set_label("Adjust icon size")
-       but.connect('clicked', self.slotButtonIconSize)
+       self.c(but, 'clicked', self.slotButtonIconSize)
        self.buttonIconSize=but
        vbox.add(but)
 
@@ -332,7 +356,7 @@ class WinConfig(StackableWindow): #, FremantleRotation):
                gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT,
                hildon.BUTTON_ARRANGEMENT_VERTICAL)
        but.set_title("About")
-       but.connect("clicked", self.slotButtonAbout)
+       self.c(but, "clicked", self.slotButtonAbout)
        vbox.add(but)
        self.buttonAbout=but
 
@@ -368,8 +392,6 @@ class WinConfig(StackableWindow): #, FremantleRotation):
        hbox.add(self.w_igw)
        self.pa.add_with_viewport(hbox)
 
-       self.add(self.pa)
-
        self.adjustMaxSize()
 
 #    def setupUi(self, orientation):
@@ -466,6 +488,10 @@ class WinConfig(StackableWindow): #, FremantleRotation):
        else:
            self.setLayoutLandscape()
 
+#    def slotDeleteEvent(self, sender, event):
+#      print "wc-del-event"
+#      return(False)
+
     def slotLongpress(self, sender, icon):
        self.doConfig(icon)
 
@@ -491,6 +517,10 @@ class WinConfig(StackableWindow): #, FremantleRotation):
        nobg=self.getNoBg()
        self.setNoBg(nobg)
 
+    def slotButtonThemeBackground(self, sender):
+       themebg=self.getThemeBg()
+       self.setThemeBg(themebg)
+
     def slotButtonAbout(self, sender):
        DlgAbout.present2(self)
 
@@ -512,17 +542,18 @@ class WinConfig(StackableWindow): #, FremantleRotation):
 
     def show_all(self):
        StackableWindow.show_all(self)
+#      return
        self.adjustMaxSize()
        self.queue_draw()
 
-    def slotScaleIconSzChange(self, sender):
-       return
-       self.config.setIconSize(self.getIconSize())
-       self.config.setIconMargin(self.getIconMargin())
-       self.config.setIconPadding(self.getIconPadding())
-       self.igw.reconfig()
-       self.adjustMaxSize()
-       self.queue_draw()
+#    def slotScaleIconSzChange(self, sender):
+#      return
+#      self.config.setIconSize(self.getIconSize())
+#      self.config.setIconMargin(self.getIconMargin())
+#      self.config.setIconPadding(self.getIconPadding())
+#      self.igw.reconfig()
+#      self.adjustMaxSize()
+#      self.queue_draw()
 
 #    def slotButtonLongpress(self, sender):
 #      but=self.buttonRequireLongpress
@@ -601,16 +632,23 @@ class WinConfig(StackableWindow): #, FremantleRotation):
 
     def getNoBg(self):
        ret=self.buttonNoBackground.get_active()
-
        return(ret)
 
     def setNoBg(self, nobg):
        self.buttonNoBackground.set_active(nobg)
 
        self.buttonThemeBackground.set_sensitive(not nobg)
+       self.config.setNoBg(nobg)
+       self.igw.reconfig()
+
+    def getThemeBg(self):
+       ret=self.buttonThemeBackground.get_active()
+       return(ret)
 
     def setThemeBg(self, themebg):
        self.buttonThemeBackground.set_active(themebg)
+       self.config.setThemeBg(themebg)
+       self.igw.reconfig()
 
     def doConfig(self, icon):
        aps=apps.scan()
@@ -638,7 +676,7 @@ class WinConfig(StackableWindow): #, FremantleRotation):
            if app==None:
                continue
            selector.append_text(app)
-           if icon.name!=None and aps[icon.name]['name']==app:
+           if icon.appname!=None and aps[icon.appname]['name']==app:
                idx=cnt
            cnt+=1
 
@@ -671,6 +709,12 @@ class WinConfig(StackableWindow): #, FremantleRotation):
 
        dialog.destroy()
 
+#    def finish(self):
+#      print "wc-finish"
+#      self.igw=None
+#
+#      self.dis_finish()
+
     def getData(self):
        szx=0
        szy=0
@@ -695,7 +739,7 @@ class WinConfig(StackableWindow): #, FremantleRotation):
            for y in xrange(sz[1]):
                ico=self.igw.get(x,y)
                k=(x,y)
-               wapps[k]=ico.name
+               wapps[k]=ico.appname
 
        indiv=self.buttonRotateIndividually.get_active()
        lp=self.buttonRequireLongpress.get_active()