$URL$
"""
+from types import StringTypes
from widgets.playingscreen import PlayingScreenBase
from eventutils import EventDispatcher
from events import eventCodes
from synth import Synth
from musicxml import musicXml2Song
import pygame
+from backwardsfilereader import BackwardsReader
SUPPORTED_FILE_HEADER = 'ENV winwii log format version : 1.0'
""" logfile : chemin d'accès au fichier de log MinWii.
le format supporté est actuellement la version 1.0 uniquement.
"""
- if isinstance(logfile, str) :
+ if isinstance(logfile, StringTypes) :
self.logfile = open(logfile, 'r')
else :
self.logfile = logfile
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
+ else :
+ return None
+
+ lastTicks = int(l.split(None, 2)[1])
+ return lastTicks
+
def __del__(self) :
self.logfile.close()
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) :