projects
/
minwii.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ça s'affiche déjà un peu plus joliment.
[minwii.git]
/
src
/
minwii
/
logfilereader.py
diff --git
a/src/minwii/logfilereader.py
b/src/minwii/logfilereader.py
index
a08855a
..
648cdee
100755
(executable)
--- a/
src/minwii/logfilereader.py
+++ b/
src/minwii/logfilereader.py
@@
-12,14
+12,16
@@
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'
def inplaceread(m) :
def readinplace(self, *args, **kw) :
SUPPORTED_FILE_HEADER = 'ENV winwii log format version : 1.0'
def inplaceread(m) :
def readinplace(self, *args, **kw) :
- self.savePos()
+ pos = self.logfile.tell()
+ self.logfile.seek(0)
ret = m(self, *args, **kw)
ret = m(self, *args, **kw)
- self.
recallPos(
)
+ self.
logfile.seek(pos
)
return ret
return readinplace
return ret
return readinplace
@@
-37,18
+39,10
@@
class LogFileReader(object) :
else :
self.logfile = logfile
else :
self.logfile = logfile
- self.__pos = 0
-
firstline = self.next()
assert firstline == SUPPORTED_FILE_HEADER
firstline = self.next()
assert firstline == SUPPORTED_FILE_HEADER
- def savePos(self) :
- self.__pos = self.logfile.tell()
- self.logfile.seek(0)
-
- def recallPos(self) :
- self.logfile.seek(self.__pos)
-
+
@inplaceread
def getSongFile(self) :
"retourne le chemin d'accès au fichier musicxml de la chanson"
@inplaceread
def getSongFile(self) :
"retourne le chemin d'accès au fichier musicxml de la chanson"
@@
-113,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()
@@
-146,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) :