(no commit message)
[drlaunch] / src / win_config.py
index 47b7436..016de49 100755 (executable)
@@ -60,49 +60,107 @@ class WinConfig(StackableWindow):
 #      hbox.add(vbox)
        al.add(vbox)
 
-       vbox.add(gtk.Label('Grid size:'))
+       maxsz=config.getMaxSize()
 
-       self.butsSize=[]
-       for i in xrange(4):
-           but=gtk.ToggleButton("%sx%s" % (i+1,i+1))
-           but.set_size_request(160, 90)
-           self.butsSize.append(but)
-           but.connect('toggled', self.slotButtonSize, i)
+       # ----------------------------------------------
+       vbox.add(gtk.Label('Width:'))
 
        hbox2=gtk.HBox()
        vbox.add(hbox2)
-       hbox2.add(self.butsSize[0])
-       hbox2.add(self.butsSize[1])
+
+       self.butsSizeX=[]
+       self.butsSize=self.butsSizeX # For now
+       for i in xrange(maxsz[0]):
+           but=hildon.GtkToggleButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
+           but.set_label("%s" % (i+1,))
+           but.connect('toggled', self.slotButtonSizeX, i)
+
+           self.butsSizeX.append(but)
+
+           hbox2.add(but)
+
+       # ----------------------------------------------
+       vbox.add(gtk.Label('Height:'))
+
        hbox2=gtk.HBox()
        vbox.add(hbox2)
-       hbox2.add(self.butsSize[2])
-       hbox2.add(self.butsSize[3])
 
-       self.igw.connect('long-press', self.slotLongpress)
+       self.butsSizeY=[]
+       for i in xrange(maxsz[1]):
+           but=hildon.GtkToggleButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
+           but.set_label("%s" % (i+1,))
+           but.connect('toggled', self.slotButtonSizeY, i)
+
+           self.butsSizeY.append(but)
+
+           hbox2.add(but)
+
+       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.buttonRotateIndividually=but
+       vbox.add(but)
+
+       but=hildon.CheckButton(
+               gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
+       but.set_label("Require long press")
+#      but.connect('toggled', self.slotButtonLongpress)
+       self.buttonRequireLongpress=but
+       vbox.add(but)
+
+       #self.igw.connect('long-press', self.slotLongpress)
+       self.igw.connect('click', self.slotLongpress)
 
        self.ignore_toggle=False
 
        self.setSize(config.getSize())
+       self.setIndiv(config.getIndiv())
+       self.setLongpress(config.getLongpress())
 
     def slotLongpress(self, sender, icon):
-       print "slp", icon
        self.doConfig(icon)
 
-    def slotButtonSize(self, sender, id):
-       print "size:", id
+    def slotButtonSizeX(self, sender, id):
+       if self.getIndiv():
+           old=self.getSize()
+           sz=(id+1, old[1])
+       else:
+           sz=(id+1, id+1)
 
-       self.setSize(id+1)
+       self.setSize(sz)
+       
+    def slotButtonSizeY(self, sender, id):
+       old=self.getSize()
+       sz=(old[0], id+1)
+       self.setSize(sz)
        
+    def slotButtonRotateIndividually(self, sender):
+       but=self.buttonRotateIndividually
+       self.setIndiv(but.get_active())
+
+#    def slotButtonLongpress(self, sender):
+#      but=self.buttonRequireLongpress
+#      self.set
+
     def setSize(self, sz):
        if self.ignore_toggle:
            return
 
        self.ignore_toggle=True
 
-       id=sz-1
+       maxsz=config.getMaxSize()
+
+       id=sz[0]-1
 
-       for i in xrange(4):
-           but=self.butsSize[i]
+       for i in xrange(maxsz[0]):
+           but=self.butsSizeX[i]
+           but.set_active(i==id)
+
+       id=sz[1]-1
+
+       for i in xrange(maxsz[1]):
+           but=self.butsSizeY[i]
            but.set_active(i==id)
 
        self.ignore_toggle=False
@@ -111,6 +169,31 @@ class WinConfig(StackableWindow):
 
        self.igw.queue_draw()
 
+    def getSize(self):
+       return(self.igw.getSize())
+
+    def getIndiv(self):
+       ret=self.buttonRotateIndividually.get_active()
+
+       return(ret)
+
+    def setIndiv(self, indiv):
+       if indiv:
+           for i in self.butsSizeY:
+               i.set_sensitive(True)
+       else:
+           for i in self.butsSizeY:
+               i.set_sensitive(False)
+           sz=self.getSize()
+           szx=sz[0]
+           if szx>4:
+               szx=4
+           self.setSize((szx, szx))
+
+       self.buttonRotateIndividually.set_active(indiv)
+
+    def setLongpress(self, lp):
+       self.buttonRequireLongpress.set_active(lp)
 
     def doConfig(self, icon):
        aps=apps.scan()
@@ -171,29 +254,41 @@ class WinConfig(StackableWindow):
        dialog.destroy()
 
     def getData(self):
-       sz=0
-       for but in self.butsSize:
-           sz+=1
+       szx=0
+       szy=0
+       for but in self.butsSizeX:
+           szx+=1
            if but.get_active()==True:
                break
 
-       print "conf: sz=", sz
+       for but in self.butsSizeY:
+           szy+=1
+           if but.get_active()==True:
+               break
+
+       if self.getIndiv():
+           sz=(szx, szy)
+       else:
+           sz=(szx, szx)
 
        wapps={}
 
-       for x in xrange(sz):
-           for y in xrange(sz):
+       for x in xrange(sz[0]):
+           for y in xrange(sz[1]):
                ico=self.igw.get(x,y)
                k=(x,y)
                wapps[k]=ico.name
 
+       indiv=self.buttonRotateIndividually.get_active()
+       lp=self.buttonRequireLongpress.get_active()
+
        ret={
-           'size':     sz,
-           'apps':     wapps
+           'size':         sz,
+           'apps':         wapps,
+           'indiv':        indiv,
+           'longpress':    lp,
            }
 
-       print "ret:", ret
-
        return(ret)
 
 if __name__=="__main__":