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