Ajout d'un itérateur à rebrousse-poil dans les lignes du fichier de log.
authorpin <pin@fe552daf-6dbe-4428-90eb-1537e0879342>
Wed, 7 Jul 2010 16:18:51 +0000 (16:18 +0000)
committerpin <pin@fe552daf-6dbe-4428-90eb-1537e0879342>
Wed, 7 Jul 2010 16:18:51 +0000 (16:18 +0000)
git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@277 fe552daf-6dbe-4428-90eb-1537e0879342

src/minwii/logfilereader.py

index 44c3611..648cdee 100755 (executable)
@@ -12,6 +12,7 @@ from events import eventCodes
 from synth import Synth
 from musicxml import musicXml2Song
 import pygame
 from synth import Synth
 from musicxml import musicXml2Song
 import pygame
+from backwardsfilereader import BackwardsReader
 
 SUPPORTED_FILE_HEADER = 'ENV winwii log format version : 1.0'
 
 
 SUPPORTED_FILE_HEADER = 'ENV winwii log format version : 1.0'
 
@@ -106,6 +107,16 @@ class LogFileReader(object) :
         firstTicks = int(l.split(None, 2)[1])
         return firstTicks
     
         firstTicks = int(l.split(None, 2)[1])
         return firstTicks
     
+    @inplaceread
+    def getLastEventTicks(self) :
+        "retourne le timecode du dernier événement (entier)"
+        for l in self.getBackwardLineIterator() :
+            if l.startswith('EVT ') :
+                break
+        
+        lastTicks = int(l.split(None, 2)[1])
+        return lastTicks
+    
     def __del__(self) :
         self.logfile.close()
     
     def __del__(self) :
         self.logfile.close()
     
@@ -139,6 +150,14 @@ class LogFileReader(object) :
                 ticks, eventName = l.split(None, 3)[1:]
                 ticks = int(ticks)
                 yield ticks, eventName, ''
                 ticks, eventName = l.split(None, 3)[1:]
                 ticks = int(ticks)
                 yield ticks, eventName, ''
+    
+    def getBackwardLineIterator(self) :
+        br = BackwardsReader(self.logfile, BLKSIZE=128)
+        line = br.readline()
+        while line :
+            yield line.strip()
+            line = br.readline()
+        
                 
 
 class LogFilePlayer(PlayingScreenBase) :
                 
 
 class LogFilePlayer(PlayingScreenBase) :