X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Ficongrid.py;h=0278dde45ebc419c0bab474fea9a1eaa1e78a62e;hb=97ecd4b9fdb91f797b6a6ddbac335e52326845e0;hp=ffe098d5ec1a2d6c52f02c7d21b9ddb13c3c4260;hpb=b5fa97bf63a4160f20eb6e946f7132236ee63b72;p=drlaunch diff --git a/src/icongrid.py b/src/icongrid.py index ffe098d..0278dde 100755 --- a/src/icongrid.py +++ b/src/icongrid.py @@ -51,6 +51,8 @@ class IconGrid(object): #(gobject.GObject): def __init__(self, isconfig=False): # self.__gobject_init__() + self.init_done=False + self.size=(0,0) self.isconfig=isconfig @@ -60,6 +62,8 @@ class IconGrid(object): #(gobject.GObject): self.draw_pending=False + self.mode=None + def do_realize(self, config): self.config=config @@ -83,18 +87,60 @@ class IconGrid(object): #(gobject.GObject): return(ret) def setMode(self, mode): + if self.mode==mode: + print "same mode" + return + self.mode=mode if not isinstance(self, gtk.Widget): return + do_draw=False + try: v=self.get_property('is-on-current-desktop') if v: - self.queue_draw() + do_draw=True else: self.draw_pending=True except TypeError: - self.queue_draw() + do_draw=True + + if do_draw: + #self.queue_draw() + self.angle_timer_start=time.time() + gobject.timeout_add(20, self.timerAngle) + + def timerAngle(self): + self.queue_draw() + + if self.angle_timer_start==0: + self.angle_timer_start=time.time() + + dt=time.time()-self.angle_timer_start + + da=90.0*dt/0.5 + + if self.mode=='l': + angle=90-da + else: + angle=da + + if angle>=90: + angle=90 + ret=False + elif angle<0: + angle=0 + ret=False + else: + ret=True + + self.setAngle(angle) + + if ret==False: + self.angle_timer_start=0 + + return(ret) def iconAt(self, x, y): """ Get icon at coordinates x,y. X and Y are in pixels """ @@ -137,7 +183,12 @@ class IconGrid(object): #(gobject.GObject): continue ico=self.icons.get(x,y) - ico.draw(cr, x2, y2, self.mode) + ico.draw(cr, x2, y2) + + def setAngle(self, angle): + for x,y in self.icons: + ic=self.icons.get(x,y) + ic.setAngle(angle) def do_expose_event(self, event): cr=self.window.cairo_create() @@ -147,6 +198,10 @@ class IconGrid(object): #(gobject.GObject): cr.clip() + if not self.init_done: + self.icons.setWindow(self.window) + self.init_done=True + self._draw(cr, event) def setLastIcon(self, icon):