From 4797dc3b6299d933f7c5a88321294aedee71e189 Mon Sep 17 00:00:00 2001 From: Stefanos Harhalakis Date: Tue, 3 Aug 2010 20:59:37 +0000 Subject: [PATCH 1/1] Added support for 8x4 grid by reducing spacing to 36 from 42. Changed configuration layout to use pannablearea in order to support grids larger than 8x4. Added "icon animation" option. --- src/config.py | 13 +++++++++++-- src/icongrid.py | 21 ++++++++++++--------- src/widget.py | 1 + src/win_config.py | 37 +++++++++++++++++++++++++++++++++---- 4 files changed, 57 insertions(+), 15 deletions(-) diff --git a/src/config.py b/src/config.py index d1c9b67..0ed4157 100755 --- a/src/config.py +++ b/src/config.py @@ -60,12 +60,14 @@ class Config: self.size = (2,2) self.iconsize = 64 - self.iconspace = 42 +# self.iconspace = 42 # For 4 icons (height) + self.iconspace = 36 # For 8 icons (width) self.apps=None self.indiv=False self.longpress=True + self.animate=True - self.maxsz=(4,4) + self.maxsz=(8,4) def setSize(self, sz): self.size=sz @@ -91,6 +93,12 @@ class Config: def getLongpress(self): return(self.longpress) + def setAnimate(self, ar): + self.animate=ar + + def getAnimate(self): + return(self.animate) + def setApps(self, aps): """ apps is a dictionary of (x,y)=>appname """ self.apps=aps @@ -123,6 +131,7 @@ class Config: 'apps': self.getApps(), 'indiv': self.getIndiv(), 'longpress': self.getLongpress(), + 'animate': self.getAnimate(), } fn=get_config_fn() diff --git a/src/icongrid.py b/src/icongrid.py index 3571736..b13f7df 100755 --- a/src/icongrid.py +++ b/src/icongrid.py @@ -69,7 +69,7 @@ class IconGrid(object): #(gobject.GObject): self.icons=Icons(self.isconfig, self.config) self.setMode('l') - self.setSize((4,4)) + self.setSize((8,4)) self.reloadIcons() def connect(self, what, *args): @@ -106,7 +106,7 @@ class IconGrid(object): #(gobject.GObject): except TypeError: do_draw=True - if do_draw: + if do_draw and self.config.getAnimate(): #self.queue_draw() self.angle_timer_start=time.time() gobject.timeout_add(20, self.timerAngle) @@ -115,6 +115,9 @@ class IconGrid(object): #(gobject.GObject): self.setAngle(0) else: self.setAngle(90) + + if do_draw: + self.queue_draw() def timerAngle(self): if self.angle_timer_start==0: @@ -300,13 +303,13 @@ class IconGridWidget(IconGrid, gtk.Widget): IconGrid.do_realize(self, self.config) - if isconfig: - 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] * (self.config.iconsize + self.config.iconspace) - h=self.size[1] * (self.config.iconsize + self.config.iconspace) + self.setSize(self.size) + + def setSize(self, size): + IconGrid.setSize(self, size) + + 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) diff --git a/src/widget.py b/src/widget.py index c49b2e0..15f99d5 100755 --- a/src/widget.py +++ b/src/widget.py @@ -159,6 +159,7 @@ class DrlaunchPlugin(IconGrid, HomePluginItem, FremantleRotation): config.setApps(dt['apps']) config.setIndiv(dt['indiv']) config.setLongpress(dt['longpress']) + config.setAnimate(dt['animate']) config.save() # Resize widget diff --git a/src/win_config.py b/src/win_config.py index fbcd05c..43db90d 100755 --- a/src/win_config.py +++ b/src/win_config.py @@ -49,11 +49,12 @@ class WinConfig(StackableWindow): # 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) @@ -112,6 +113,18 @@ class WinConfig(StackableWindow): self.buttonRequireLongpress=but vbox.add(but) + 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) @@ -120,6 +133,7 @@ class WinConfig(StackableWindow): 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) @@ -184,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: @@ -198,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() @@ -285,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) -- 1.7.9.5