X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/8835f31006dd12de37f0b4bb48f999e32c8848c9..0509328e5d3a7760b00b99cd2176d9089279f458:/src/logging.disabled/LogPGUPlayer.py diff --git a/src/logging.disabled/LogPGUPlayer.py b/src/logging.disabled/LogPGUPlayer.py new file mode 100644 index 0000000..cf1a670 --- /dev/null +++ b/src/logging.disabled/LogPGUPlayer.py @@ -0,0 +1,237 @@ +''' +Created on 25 janv. 2010 + +@author: Samuel Benveniste +''' + +import pygame +import pickle + +from pgu import gui as pguGui + +from gui import constants + +from instruments.Instrument import Instrument +from songs.Song import Song +from cursor.WarpingCursor import * +from gui.StaticFamiliarizer import StaticFamiliarizer +from gui.SongFamiliarizer import SongFamiliarizer +from gui.SongPlayingScreen import SongPlayingScreen +from gui.DummyInstrumentChoice import DummyInstrumentChoice +from controllers.Wiimote import Wiimote + +class LogPGUPlayer(pguGui.Desktop): + ''' + classdocs + ''' + + + def __init__(self,rate): + ''' + Constructor + ''' + self.firstStepDurations = [] + self.firstStepClicks = [] + self.firstStepClicksIn = [] + + self.secondStepDurations = [] + self.secondStepClicks = [] + self.secondStepClicksIn = [] + + self.thirdStepDurations = [] + self.thirdStepClicks = [] + self.thirdStepClicksIn = [] + + self.songDurations = [] + self.songClicks = [] + self.songClicksIn = [] + self.songClicksPerMinute = [] + self.songClicksInPerMinute = [] + self.songTotalDurations = [] + + self.meanTimeBetweenNotes = [] + + pguGui.Desktop.__init__(self) + + self.replayRate = rate + #pguGui.theme.load('../data/themes/default') + + self.connect(pguGui.QUIT,self.quit,None) + + main = pguGui.Container(width=500, height=400) #, background=(220, 220, 220) ) + + + main.add(pguGui.Label("File Dialog Example", cls="h1"), 20, 20) + + + td_style = {'padding_right': 10} + t = pguGui.Table() + t.tr() + t.td( pguGui.Label('File Name:') , style=td_style ) + self.input_file = pguGui.Input() + t.td( self.input_file, style=td_style ) + self.browseButton = pguGui.Button("Browse...") + t.td( self.browseButton, style=td_style ) + self.browseButton.connect(pguGui.CLICK, self.open_file_browser, None) + + self.goButton = pguGui.Button("Go") + + self.goButton.connect(pguGui.CLICK, self.goButtonClicked,None) + + self.quitButton = pguGui.Button("Fin") + self.quitButton.connect(pguGui.CLICK,self.quit,None) + + t.td( self.browseButton, style=td_style ) + t.td( self.goButton, style=td_style ) + t.td( self.quitButton, style=td_style ) + + main.add(t, 20, 100) + + self.run(main) + #import profile + #profile.run('app.run(main)') + + def open_file_browser(self,data=None): + d = pguGui.FileDialog(path = "../../../saves") + d.connect(pguGui.CHANGE, self.handle_file_browser_closed, d) + d.open() + + + def handle_file_browser_closed(self,dlg): + if dlg.value: self.input_file.value = dlg.value + + def goButtonClicked(self,data=None): + if self.input_file.value.endswith(".fmwi"): + f = file(self.input_file.value, 'r') + unpickler = pickle.Unpickler(f) + log = unpickler.load() + f.close() + + log.eventLog.setReplayRate(self.replayRate) + + pygame.midi.init() + instruments = [Instrument(log.scale, i + 1, "".join(["../instruments/instrumentImages/", constants.instrumentImagePathList[i], ".jpg"]), constants.octaves[i]) for i in range(9)] + + joys = [[id,pygame.joystick.Joystick(id).get_name()] for id in range(pygame.joystick.get_count())] + for joy in joys: + if joy[1] in constants.joyNames: + pygame.joystick.Joystick(joy[0]).init() + + ports = [pygame.midi.get_device_info(id)[1] for id in range(pygame.midi.get_count())] + portOffset = ports.index(constants.portNames[0]) + print(portOffset) + + screen = pygame.display.get_surface() + clock = pygame.time.Clock() + cursorImages=[['../cursor/cursorImages/black/10.png'],['../cursor/cursorImages/red/10.png'],['../cursor/cursorImages/blue/10.png'],['../cursor/cursorImages/green/10.png']] + durations = [75 for i in range(len(cursorImages))] + + extsc = True + casc = False + easyMode = True + + song = Song(constants.scaleDict["majorScale"],[3,9,6,4,1,8,5,7,2,10],True) + + wiimoteCount = 4 + + cursors = [WarpingCursor(None, cursorImages[i], durations, (300 * i, 300 * i),'../cursor/cursorImages/black/flash.png') for i in range(wiimoteCount)] + wiimotes = [Wiimote(i, i + portOffset, None, instruments[0], cursors[i]) for i in range(wiimoteCount)] + dummyInstrumentChoice = DummyInstrumentChoice(wiimotes, window, screen, clock, joys, portOffset, log.activeWiimotes) + if log.level < 2 : + familiarize = StaticFamiliarizer(wiimotes, window, screen, clock, joys, portOffset,log.activeWiimotes,level = log.level,eventLog = log.eventLog,replay = True) + self.fillStaticFamiliarizerStats(familiarize) + elif log.level == 2 : + familiarize = SongFamiliarizer(wiimotes, window, screen, clock, joys, portOffset,song,log.activeWiimotes,casc,extsc,easyMode,eventLog = log.eventLog,replay = True) + self.fillSongFamiliarizerStats(familiarize) + else : + familiarize = SongPlayingScreen(dummyInstrumentChoice,constants.songDict["clairdelalune"],easyMode = True,eventLog = log.eventLog,replay = True) + self.fillSongStats(familiarize) + + while familiarize.nextLevel != None : + if familiarize.nextLevel < 2 : + familiarize = StaticFamiliarizer(wiimotes, window, screen, clock, joys, portOffset,log.activeWiimotes,level = familiarize.nextLevel,eventLog = familiarize.eventLog,replay = True) + self.fillStaticFamiliarizerStats(familiarize) + elif familiarize.nextLevel == 2 : + familiarize = SongFamiliarizer(wiimotes, window, screen, clock, joys, portOffset,song,log.activeWiimotes,casc,extsc,easyMode,eventLog = familiarize.eventLog,replay = True) + self.fillSongFamiliarizerStats(familiarize) + else : + familiarize = SongPlayingScreen(dummyInstrumentChoice,constants.songDict["clairdelalune"],easyMode = True,eventLog = familiarize.eventLog,replay = True) + self.fillSongStats(familiarize) + + for wiimote in wiimotes: + del wiimote.port + + pygame.midi.quit() + self.printStatsToFile() + + def fillStaticFamiliarizerStats(self,familiarizer): + if familiarizer.level == 0 : + self.firstStepClicks.append(familiarizer.clicks) + self.firstStepClicksIn.append(familiarizer.clicksIn) + self.firstStepDurations.append(familiarizer.duration) + + if familiarizer.level == 1 : + self.secondStepClicks.append(familiarizer.clicks) + self.secondStepClicksIn.append(familiarizer.clicksIn) + self.secondStepDurations.append(familiarizer.duration) + + def fillSongFamiliarizerStats(self,familiarizer): + self.thirdStepClicks.append(familiarizer.clicks) + self.thirdStepClicksIn.append(familiarizer.clicksIn) + self.thirdStepDurations.append(familiarizer.duration) + + def fillSongStats(self,familiarizer): + self.songClicks.append(familiarizer.clicks) + self.songClicksIn.append(familiarizer.clicksIn) + self.songClicksPerMinute.append(familiarizer.clicksPerMinute) + self.songClicksInPerMinute.append(familiarizer.clicksInPerMinute) + self.songDurations.append(familiarizer.songDurations) + self.songTotalDurations.append(familiarizer.totalDuration) + + def statsToFormattedString(self): + return("First step durations :\n"+"\n"+ + str(self.firstStepDurations)+"\n"+"\n"+ + "First step clicks :\n"+"\n"+ + str(self.firstStepClicks)+"\n"+"\n"+ + "First step clicksIn :\n"+"\n"+ + str(self.firstStepClicksIn)+"\n"+"\n"+ + "Second step durations :\n"+"\n"+ + str(self.secondStepDurations)+"\n"+"\n"+ + "Second step clicks :\n"+"\n"+ + str(self.secondStepClicks)+"\n"+"\n"+ + "Second step clicksIn :\n"+"\n"+ + str(self.secondStepClicksIn)+"\n"+"\n"+ + "Third step durations :\n"+"\n"+ + str(self.thirdStepDurations)+"\n"+"\n"+ + "Third step clicks :\n"+"\n"+ + str(self.thirdStepClicks)+"\n"+"\n"+ + "Third step clicksIn :\n"+"\n"+ + str(self.thirdStepClicksIn)+"\n"+"\n"+ + "song durations :\n"+"\n"+ + str(self.songDurations)+"\n"+"\n"+ + "song clicks :\n"+"\n"+ + str(self.songClicks)+"\n"+"\n"+ + "song clicksIn :\n"+"\n"+ + str(self.songClicksIn)+"\n"+"\n"+ + "song clicks per minute:\n"+"\n"+ + str(self.songClicksPerMinute)+"\n"+"\n"+ + "song clicksIn per minute :\n"+"\n"+ + str(self.songClicksInPerMinute)+"\n"+"\n"+ + "song total durations :\n"+"\n"+ + str(self.songTotalDurations)+"\n"+"\n") + + def printStatsToFile(self,path=None): + if path == None : + path = self.input_file.value.replace(".fmwi",".txt") + file = open(path,"w") + file.write("Log ID : "+self.input_file.value+"\n"+"\n") + file.write(self.statsToFormattedString()) + file.close() + +if __name__ == "__main__": + pygame.init() + modeResolution = (1024,768) + window = pygame.display.set_mode(modeResolution,pygame.FULLSCREEN) + logConfig = LogPGUPlayer(10000) + pygame.quit() + \ No newline at end of file