Added support for saving/loading 'animate' option.
[drlaunch] / src / win_config.py
index 016de49..43db90d 100755 (executable)
@@ -31,26 +31,30 @@ from hildon import StackableWindow
 #from portrait import FremantleRotation
 #from xdg.IconTheme import getIconPath
 
-import config
+#import config
 import apps
 from icon import Icon, getIcon
 from icongrid import IconGridWidget
 
 class WinConfig(StackableWindow):
-    def __init__(self, *args):
+    def __init__(self, config, *args):
        StackableWindow.__init__(self)
 
+       self.config=config
+
        self.setupUi()
 
     def setupUi(self):
-       self.igw=IconGridWidget(True)
+       self.igw=IconGridWidget(True, self.config)
+#      self.igw.do_realize()
 #      self.igw.setSize(config.getSize())
 
-       hbox=gtk.HBox()
-       self.add(hbox)
+       self.pa=hildon.PannableArea()
+       self.add(self.pa)
+       self.pa.set_property('mov-mode', hildon.MOVEMENT_MODE_HORIZ)
 
-       # Add the icongrid
-       hbox.add(self.igw)
+       hbox=gtk.HBox()
+       self.pa.add_with_viewport(hbox)
 
        # Now go for the right side
        al=gtk.Alignment(yscale=0)
@@ -60,7 +64,7 @@ class WinConfig(StackableWindow):
 #      hbox.add(vbox)
        al.add(vbox)
 
-       maxsz=config.getMaxSize()
+       maxsz=self.config.getMaxSize()
 
        # ----------------------------------------------
        vbox.add(gtk.Label('Width:'))
@@ -109,14 +113,27 @@ class WinConfig(StackableWindow):
        self.buttonRequireLongpress=but
        vbox.add(but)
 
-       #self.igw.connect('long-press', self.slotLongpress)
+       but=hildon.CheckButton(
+               gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
+       but.set_label("Animate rotation")
+       self.buttonAnimateRotation=but
+       vbox.add(but)
+
+       # Add the icongrid
+       al=gtk.Alignment(xalign=0, xscale=0)
+       al.add(self.igw)
+       al.set_padding(0, 0, 20, 0)
+       hbox.add(al)
+
+       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())
+       self.setSize(self.config.getSize())
+       self.setIndiv(self.config.getIndiv())
+       self.setLongpress(self.config.getLongpress())
+       self.setAnimate(self.config.getAnimate())
 
     def slotLongpress(self, sender, icon):
        self.doConfig(icon)
@@ -149,7 +166,7 @@ class WinConfig(StackableWindow):
 
        self.ignore_toggle=True
 
-       maxsz=config.getMaxSize()
+       maxsz=self.config.getMaxSize()
 
        id=sz[0]-1
 
@@ -181,9 +198,19 @@ class WinConfig(StackableWindow):
        if indiv:
            for i in self.butsSizeY:
                i.set_sensitive(True)
+           for i in self.butsSizeX:
+               i.set_sensitive(True)
+
        else:
            for i in self.butsSizeY:
                i.set_sensitive(False)
+
+           cnt=0
+           for i in self.butsSizeX:
+               cnt+=1
+               if cnt>4:
+                   i.set_sensitive(False)
+
            sz=self.getSize()
            szx=sz[0]
            if szx>4:
@@ -195,6 +222,9 @@ class WinConfig(StackableWindow):
     def setLongpress(self, lp):
        self.buttonRequireLongpress.set_active(lp)
 
+    def setAnimate(self, ar):
+       self.buttonAnimateRotation.set_active(ar)
+
     def doConfig(self, icon):
        aps=apps.scan()
 
@@ -234,16 +264,17 @@ class WinConfig(StackableWindow):
        r=dialog.run()
 
        if r==gtk.RESPONSE_OK:
-           cur=selector.get_current_text()
-           if cur=='None':
+           idx2=selector.get_active(0)
+           if idx2<1:
                app=None
            else:
+               cur=lst[idx2-1]
                for i in aps:
                    if aps[i]['name']==cur:
                        app=aps[i]
                        break
            if app!=None:
-               app['icon2']=getIcon(app['icon'])
+               app['icon2']=getIcon(app['icon'], self.config.getIconSize())
            else:
                app={
                    'id':       None,
@@ -281,12 +312,14 @@ class WinConfig(StackableWindow):
 
        indiv=self.buttonRotateIndividually.get_active()
        lp=self.buttonRequireLongpress.get_active()
+       ar=self.buttonAnimateRotation.get_active()
 
        ret={
            'size':         sz,
            'apps':         wapps,
            'indiv':        indiv,
            'longpress':    lp,
+           'animate':      ar,
            }
 
        return(ret)