Implémentation plus propre avec une sous-classe de Sprite.
[minwii.git] / src / minwii / logapp.py
index a97e849..e03f451 100755 (executable)
@@ -6,10 +6,11 @@ $Id$
 $URL$
 """
 
+import os
+os.environ['WINWII_NO_LOG'] = '1'
 from Tkinter import *
 import tkFileDialog
 from glob import glob
-import os
 from os.path import join as pjoin
 from os.path import basename
 from os.path import getsize
@@ -173,15 +174,14 @@ class Identification(Frame) :
     def __init__(self, master=None) :
         Frame.__init__(self, master)
         self.fileName = StringVar()
+        self.hid = StringVar()
         self.patientName = StringVar()
         self.createWidgets()
     
-    #def setFileName(self, name) :
-    #    self.fileName.set(name)
-    
     def refresh(self, lfa) :
         filename = basename(lfa.logfile.name)
         self.fileName.set(filename)
+        self.hid.set(lfa.getHID())
         metadata = lfa.getMetadata()
         self.patientName.set(metadata.get('PatientName', ''))
         self.commentsText.delete(1.0, END)
@@ -194,20 +194,26 @@ class Identification(Frame) :
         fileNameLbl = Label(self, textvariable=self.fileName)
         fileNameLbl.grid(row=0, column=1, sticky=W)
         
+        hidLbl = Label(self, text='HID :')
+        hidLbl.grid(row=1, column=0, sticky=E)
+        
+        hidNameLbl = Label(self, textvariable=self.hid)
+        hidNameLbl.grid(row=1, column=1, sticky=W)
+        
         nameLbl = Label(self, text='Patient :')
-        nameLbl.grid(row=1, column=0, sticky=E)
+        nameLbl.grid(row=2, column=0, sticky=E)
         
         self.nameEntry = Entry(self, width=40, textvariable=self.patientName)
-        self.nameEntry.grid(row=1, column=1, sticky=W)
+        self.nameEntry.grid(row=2, column=1, sticky=W)
         
         commentsLbl = Label(self, text='Commentaires :')
-        commentsLbl.grid(row=2, column=0, sticky=E)
+        commentsLbl.grid(row=3, column=0, sticky=E)
         
         self.commentsText = Text(self, width=40, height=4, undo=True, wrap=WORD)
-        self.commentsText.grid(row=2, column=1, sticky=W)
+        self.commentsText.grid(row=3, column=1, sticky=W)
         
         self.saveBtn = Button(self, text='Enregistrer', command=self.saveMetadata)
-        self.saveBtn.grid(row=3, column=1, sticky=E)
+        self.saveBtn.grid(row=4, column=1, sticky=E)
     
     def saveMetadata(self):
         app = self.master.master
@@ -225,19 +231,42 @@ class ResultsFrame(Frame) :
     def layResults(self, lfa) :
         results = lfa.analyse()
         if results :
-            for i, kv in enumerate(results) :
-                k, v = kv
+            for i, kvt in enumerate(results) :
+                k, v, timeBased = kvt
                 kl = Label(self, text='%s :' % k)
                 kl.grid(row=i, column=0, sticky=E)
-            
-                vl = Label(self, text=v)
-                vl.grid(row=i, column=1, sticky=W)
+
+                if not timeBased :
+                    vl = Label(self, text=v)
+                    vl.grid(row=i, column=1, sticky=W)
+                else :
+                    maxv = max(v)
+                    if maxv :
+                        cw, ch = 200, 100
+                        c = Canvas(self, background='#fff', width=cw, height=ch)
+                        rectW = int(float(cw) / len(v))
+                        unitRectH = float(ch) / maxv
+                        for j, fv in enumerate(v) :
+                            if not fv : continue
+                            x0 = j * rectW
+                            y0 = ch - int(unitRectH * fv)
+                            x1 = (j + 1) * rectW
+                            y1 = ch
+                            c.create_rectangle(x0, y0, x1, y1, fill="#9085ba")
+                        c.grid(row=i, column=1, sticky=W)
+                            
+                    else :
+                        vl = Label(self, text='—')
+                        vl.grid(row=i, column=1, sticky=W)
         else :
             msg = Label(self, text="Pas de données exploitables.")
             msg.grid()
             
         
+def main() :
+    app = Application()
+    app.master.title("Analyseur des sessions MINDs")
+    app.mainloop()
 
-app = Application()
-app.master.title("Analyseur des sessions MINWii")
-app.mainloop()
+if __name__ == '__main__' :
+    main()
\ No newline at end of file