]> CRI, Mines Paris - PSL - minwii.git/commitdiff
Ajout de listeners sur les colonnes.
authorpin <pin@fe552daf-6dbe-4428-90eb-1537e0879342>
Tue, 23 Feb 2010 15:42:11 +0000 (15:42 +0000)
committerpin <pin@fe552daf-6dbe-4428-90eb-1537e0879342>
Tue, 23 Feb 2010 15:42:11 +0000 (15:42 +0000)
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:
src/app/eventutils.py
src/app/minwii.py
src/app/start.py
src/app/widgets/cursors.py
src/app/widgets/data/black/0.png
src/app/widgets/data/black/1.png
src/app/widgets/data/black/10.png
src/app/widgets/data/black/2.png
src/app/widgets/data/black/3.png
src/app/widgets/data/black/4.png
src/app/widgets/data/black/5.png
src/app/widgets/data/black/6.png
src/app/widgets/data/black/7.png
src/app/widgets/data/black/8.png
src/app/widgets/data/black/9.png
src/app/widgets/data/black/flash.png
src/app/widgets/playingscreen.py

index 17415797394b3bbebbcbefd7698bf00f2b411f79..a89509b806f682d4d5cfdc7d04dfe05c26ad8023 100755 (executable)
@@ -28,6 +28,7 @@ $URL$
 """
 import types
 import pygame
+from StringIO import StringIO
 
 class _EventDispatcher :
     def __init__(self) :
@@ -45,6 +46,18 @@ class _EventDispatcher :
             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()
 
@@ -64,8 +77,6 @@ class EventInitializer(type):
                 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)
index a3292f0daeaee1ca4cb91356b03886605ba6e3b9..6e29cd900bfb52c5ab300e1949d36aad542fc259 100755 (executable)
@@ -6,15 +6,13 @@ $Id$
 $URL$
 """
 
-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
 
-class MinWii(Desktop):
+class MinWii(object):
     
     def __init__(self) :
-        Desktop.__init__(self)
-        import pygame
         playingScreen = SongPlayingScreenTest()
         playingScreen.run()
index 02db7ce4608e304b6495c2cc00204b91d05f61b5..8c7a009980245b6038054520b17975805d09331e 100755 (executable)
@@ -12,8 +12,9 @@ def main() :
     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()
index 3ac9c43100b951f2c19e174204f8612bf86102c9..863b757cd32057bbfcc2b8f5e1c95f314c6c63a8 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)
index d676349a2e625ff228624850ffab8e94fa4cd5e4..526d289ccd1e2e152232033e4e583ae916323dfd 100755 (executable)
Binary files a/src/app/widgets/data/black/0.png and b/src/app/widgets/data/black/0.png differ
index 7703e899090c5ac158be19484c7a20e99e7b17c8..b8fce1abf8079b25093b2b043e4086f755bf9128 100755 (executable)
Binary files a/src/app/widgets/data/black/1.png and b/src/app/widgets/data/black/1.png differ
index 6c85004f523e522cf0724250b774f4226f310519..099c3638f8a931308c027042ae5f37fec0a533d2 100755 (executable)
Binary files a/src/app/widgets/data/black/10.png and b/src/app/widgets/data/black/10.png differ
index 9eec08e476377d22036cea935ce9e37dc8e941a6..5e58215f16f303147572d7ea0c93610538badccb 100755 (executable)
Binary files a/src/app/widgets/data/black/2.png and b/src/app/widgets/data/black/2.png differ
index ce93f45de34b97888eb7baa4e5e7e9173157ac3b..ada3be906db5c52665b72898a490afe29f8e2ccb 100755 (executable)
Binary files a/src/app/widgets/data/black/3.png and b/src/app/widgets/data/black/3.png differ
index 7c9d191a50859b8b64fce3155fca1bfff8e63553..d3642da0e4f0b1e666975c737c2533c9f3ca335d 100755 (executable)
Binary files a/src/app/widgets/data/black/4.png and b/src/app/widgets/data/black/4.png differ
index 34b149dda3f94a787d676973b72227cfff2a7c93..082164890e0537d040581819fd3cbd7470f4c40f 100755 (executable)
Binary files a/src/app/widgets/data/black/5.png and b/src/app/widgets/data/black/5.png differ
index d1186805407f98d517b07e6001158d2de5d3ac97..1349fdc5683b1cc087ff58db881f6db36e772da0 100755 (executable)
Binary files a/src/app/widgets/data/black/6.png and b/src/app/widgets/data/black/6.png differ
index 68ec2dd9f729d801359d65a30943bc171b2a58e9..6ca0d900fad091871bad8950ea54f6da750e65c8 100755 (executable)
Binary files a/src/app/widgets/data/black/7.png and b/src/app/widgets/data/black/7.png differ
index c938fe95c0bc71f01e8beb43302d1354d11119e6..59b87ce6159f2292030624781689e2546c7bf2f9 100755 (executable)
Binary files a/src/app/widgets/data/black/8.png and b/src/app/widgets/data/black/8.png differ
index e5e4f092c9e399abfecefae5f06378c2cdbbba5f..ea719da09bf02fe50020a7994a73eafb6aac2fd1 100755 (executable)
Binary files a/src/app/widgets/data/black/9.png and b/src/app/widgets/data/black/9.png differ
index 412cbcee1a0eb61bbf41bac44a82e61407c9f487..6dedec26cc0580e29d41d94ba0e386049cf089fb 100644 (file)
Binary files a/src/app/widgets/data/black/flash.png and b/src/app/widgets/data/black/flash.png differ
index 146e549b7eb913f6e1a7190d575da32eba7260cb..0c5e2a464e3c5d805069d299218d86942f2b32b6 100755 (executable)
@@ -80,7 +80,7 @@ class _PlayingScreenBase(pygame.sprite.OrderedUpdates, EventHandlerMixin) :
             self.add(c)
     
     def _initCursor(self) :
-        self.cursor = WarpingCursor()
+        self.cursor = WarpingCursor(blinkMode=True)
         self.add(self.cursor)
         
         
@@ -129,7 +129,7 @@ class SongPlayingScreenTest(_PlayingScreenBase) :
         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)
@@ -155,6 +155,15 @@ class Column(pygame.sprite.Sprite) :
         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