Création d'une classe Tone dont hérite Note.
[minwii.git] / src / app / widgets / cursors.py
index 3ac9c43..863b757 100755 (executable)
@@ -9,9 +9,8 @@ $URL$
 import pygame
 import os
 from eventutils import EventHandlerMixin, event_handler
+from events import TIMEOUT
 from itertools import cycle
-from pygame.locals import USEREVENT
-TIMEOUT = USEREVENT + 1
 
 class WarpingCursor(pygame.sprite.Sprite, EventHandlerMixin):
     '''
@@ -28,7 +27,7 @@ class WarpingCursor(pygame.sprite.Sprite, EventHandlerMixin):
         return basePath, images
 
     
-    def __init__(self, theme='black', duration=75, blink=True):
+    def __init__(self, theme='black', duration=50, blinkMode=True):
         pygame.sprite.Sprite.__init__(self)
         pygame.mouse.set_visible(False)
         imagesPath, images = WarpingCursor._get_theme_images(theme)
@@ -49,15 +48,16 @@ class WarpingCursor(pygame.sprite.Sprite, EventHandlerMixin):
         self.duration = duration
         
         self.image = self.images[0]
-        self.rect = pygame.Rect((0,0), (self.width, self.height))
+        self.rect = pygame.Rect((-self.width/2,-self.height/2), (self.width, self.height))
         
-        self.blink = blink
-        if blink :
-            self._startBlink()
+        self.blinkMode = blinkMode
+        self._startBlink()
             
     def _startBlink(self) :
-        pygame.time.set_timer(TIMEOUT, self.duration)
-        self.iterator = self.iterImages()
+        if self.blinkMode :
+            self._blinking = True
+            pygame.time.set_timer(TIMEOUT, self.duration)
+            self.iterator = self.iterImages()
     
     def iterImages(self) :
         for img in cycle(self.images) :
@@ -65,22 +65,22 @@ class WarpingCursor(pygame.sprite.Sprite, EventHandlerMixin):
     
     @event_handler(TIMEOUT)
     def loadNext(self, event) :
-        if self.blink :
+        if self._blinking :
             self.image = self.iterator.next()
     
     @event_handler(pygame.MOUSEBUTTONDOWN)
     def flashOn(self, event) :
-        self.blink=False
+        self._blinking = False
         self.image = self.flashImage
 
     @event_handler(pygame.MOUSEBUTTONUP)
     def flashOff(self, event) :
-        self.blink = True
-        self.loadNext(event)
+        if self.blinkMode :
+            self._blinking = True
+            self.loadNext(event)
+        else :
+            self.image = self.images[0]
     
     @event_handler(pygame.MOUSEMOTION)
     def move(self, event) :
-        x, y = event.rel
-        self.rect.centerx += x
-        self.rect.centery += y
-        #self.rect.move_ip(*rel)
+        self.rect.move_ip(event.rel)