X-Git-Url: https://svn.cri.ensmp.fr/git/minwii.git/blobdiff_plain/855472fc15f855881b98149078b6645309278b8a..d8f1a6a8411ce90fe864182e9077827a80d5bf08:/src/app/widgets/cursors.py diff --git a/src/app/widgets/cursors.py b/src/app/widgets/cursors.py index 6b0d6e8..863b757 100755 --- a/src/app/widgets/cursors.py +++ b/src/app/widgets/cursors.py @@ -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 MOUSEBUTTONDOWN, MOUSEBUTTONUP, USEREVENT -TIMEOUT = USEREVENT + 1 class WarpingCursor(pygame.sprite.Sprite, EventHandlerMixin): ''' @@ -28,8 +27,9 @@ 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) flashImage = images.pop(images.index('flash.png')) flashImagePath = os.path.sep.join([imagesPath, flashImage]) @@ -48,16 +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.update() + 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,21 +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() - self.update() - @event_handler(MOUSEBUTTONDOWN) + @event_handler(pygame.MOUSEBUTTONDOWN) def flashOn(self, event) : - self.blink=False + self._blinking = False self.image = self.flashImage - self.update() - @event_handler(MOUSEBUTTONUP) + @event_handler(pygame.MOUSEBUTTONUP) def flashOff(self, event) : - self.blink = True - self.loadNext(event) - - def update(self) : - surface = pygame.display.get_surface() - surface.blit(self.image, self.rect) + if self.blinkMode : + self._blinking = True + self.loadNext(event) + else : + self.image = self.images[0] + + @event_handler(pygame.MOUSEMOTION) + def move(self, event) : + self.rect.move_ip(event.rel)