Refection du curseur avec ombrage.
git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@55
fe552daf-6dbe-4428-90eb-
1537e0879342
17 files changed:
"""
import types
import pygame
"""
import types
import pygame
+from StringIO import StringIO
class _EventDispatcher :
def __init__(self) :
class _EventDispatcher :
def __init__(self) :
listeners = self.registry.get(event.type, [])
for listener in listeners :
listener(event)
listeners = self.registry.get(event.type, [])
for listener in listeners :
listener(event)
+
+ def __repr__(self) :
+ out = StringIO()
+ keys = self.registry.keys()
+ keys.sort()
+ for k in keys :
+ print >> out, "event", k
+ for listener in self.registry[k] :
+ print >> out, listener.__name__
+ out.seek(0)
+ return out.read()
+
EventDispatcher = _EventDispatcher()
EventDispatcher = _EventDispatcher()
if isinstance(v, types.FunctionType) and hasattr(v, '__islistener__') :
listener = getattr(self, k)
EventDispatcher.addEventListener(v.__eventtype__, listener)
if isinstance(v, types.FunctionType) and hasattr(v, '__islistener__') :
listener = getattr(self, k)
EventDispatcher.addEventListener(v.__eventtype__, listener)
- del v.__islistener__
- del v.__eventtype__
def ctor(self, *args, **kw) :
init_listeners(self)
def ctor(self, *args, **kw) :
init_listeners(self)
-from pgu.gui import Desktop
-from pgu.gui import QUIT
+#from pgu.gui import Desktop
+#from pgu.gui import QUIT
from widgets.home import Home
from widgets.playingscreen import _PlayingScreenBase, SongPlayingScreenTest
from widgets.home import Home
from widgets.playingscreen import _PlayingScreenBase, SongPlayingScreenTest
- Desktop.__init__(self)
- import pygame
playingScreen = SongPlayingScreenTest()
playingScreen.run()
playingScreen = SongPlayingScreenTest()
playingScreen.run()
from minwii import MinWii
pygame.init()
from minwii import MinWii
pygame.init()
- modeResolution = (1024,768)
- window = pygame.display.set_mode(modeResolution, pygame.FULLSCREEN)
+ #modeResolution = (1024,768)
+ modeResolution = (600,480)
+ window = pygame.display.set_mode(modeResolution)#, pygame.FULLSCREEN)
MinWii()
# from gui.PGUConfiguration import PGUConfiguration
# pygame.init()
MinWii()
# from gui.PGUConfiguration import PGUConfiguration
# pygame.init()
import pygame
import os
from eventutils import EventHandlerMixin, event_handler
import pygame
import os
from eventutils import EventHandlerMixin, event_handler
+from events import TIMEOUT
from itertools import cycle
from itertools import cycle
-from pygame.locals import USEREVENT
-TIMEOUT = USEREVENT + 1
class WarpingCursor(pygame.sprite.Sprite, EventHandlerMixin):
'''
class WarpingCursor(pygame.sprite.Sprite, EventHandlerMixin):
'''
- 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)
pygame.sprite.Sprite.__init__(self)
pygame.mouse.set_visible(False)
imagesPath, images = WarpingCursor._get_theme_images(theme)
self.duration = duration
self.image = self.images[0]
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()
- 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) :
def iterImages(self) :
for img in cycle(self.images) :
@event_handler(TIMEOUT)
def loadNext(self, event) :
@event_handler(TIMEOUT)
def loadNext(self, event) :
self.image = self.iterator.next()
@event_handler(pygame.MOUSEBUTTONDOWN)
def flashOn(self, event) :
self.image = self.iterator.next()
@event_handler(pygame.MOUSEBUTTONDOWN)
def flashOn(self, event) :
self.image = self.flashImage
@event_handler(pygame.MOUSEBUTTONUP)
def flashOff(self, event) :
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) :
@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)
self.add(c)
def _initCursor(self) :
self.add(c)
def _initCursor(self) :
- self.cursor = WarpingCursor()
+ self.cursor = WarpingCursor(blinkMode=True)
super(SongPlayingScreenTest, self).__init__([o])
super(SongPlayingScreenTest, self).__init__([o])
-class Column(pygame.sprite.Sprite) :
+class Column(pygame.sprite.Sprite, EventHandlerMixin) :
def __init__(self, hue, rect) :
pygame.sprite.Sprite.__init__(self)
def __init__(self, hue, rect) :
pygame.sprite.Sprite.__init__(self)
else :
self.image = self.stateOff
self.rect = self.rectOff
else :
self.image = self.stateOff
self.rect = self.rectOff
+
+ @event_handler(pygame.MOUSEBUTTONDOWN)
+ def onMouseDown(self, event) :
+ if self.rect.collidepoint(*event.pos) :
+ self.update(True)
+
+ @event_handler(pygame.MOUSEBUTTONUP)
+ def onMouseUp(self, event) :
+ self.update(False)
def hls_to_rgba_8bits(h, l, s) :
#convert to rgb ranging from 0 to 255
def hls_to_rgba_8bits(h, l, s) :
#convert to rgb ranging from 0 to 255