renommage de app en minwii (ça va tout péter…).
[minwii.git] / src / minwii / widgets / home.py
diff --git a/src/minwii/widgets/home.py b/src/minwii/widgets/home.py
new file mode 100755 (executable)
index 0000000..afd84ec
--- /dev/null
@@ -0,0 +1,127 @@
+# -*- coding: utf-8 -*-
+"""
+Écran de démarrage minwii.
+
+$Id$
+$URL$
+"""
+from pgu.gui import Table
+from pgu.gui import Spacer
+from pgu.gui import Label
+from pgu.gui import Button
+from pgu.gui import Switch
+from pgu.gui import Radio
+from pgu.gui import Group
+from pgu.gui import Select
+from pgu.gui import CLICK
+from pgu.gui import QUIT
+from pgu.gui import CHANGE
+import pygame
+from globals import PLAYING_MODES
+from songfilebrowser import FileOpenDialog
+import os.path
+
+class Home(Table) :
+    """
+    Écran de démarrage de minwii
+    """
+    
+    def __init__(self,**params):
+        Table.__init__(self,**params)
+        self.songPath = params.get('songPath', '.')
+        self.nwiimotes = params.get('nwiimotes', 0)
+        self.songFile = None
+        self.spaceSize = (100,100)
+        self.font = pygame.font.Font(None,70)
+        self._fill()
+        self._initLocalListeners()
+
+
+    def _fill(self):
+        self.tr()
+        self.td(Spacer(*self.spaceSize))
+        
+        
+        # bouton pour browser de fichiers
+        self.tr()
+        self.td(self.createLabel("Chanson :"))
+        self.browseButton = Button(self.createLabel("Choisir..."))
+        self.td(self.browseButton,colspan=2)
+        self.songSwitch = Switch(False)
+        self.td(self.songSwitch)
+
+        self.tr()
+        self.td(Spacer(*self.spaceSize))
+
+        # choix du niveau
+        self.tr()
+        self.td(self.createLabel("Niveau :"))
+        self.modeSelect = Select('NORMAL')
+        for k, caption in PLAYING_MODES :
+            self.modeSelect.add(self.createLabel(caption), k)
+        self.td(self.modeSelect,colspan=3)
+
+        self.tr()
+        self.td(Spacer(*self.spaceSize))
+
+        # choix des wiimotes
+        self.tr()
+        self.td(self.createLabel("Wiimote :", self.font))
+        playerTable = Table()
+        
+        self.selectedWiimote = Group(name='selectedWiimote', value=0)
+        for i in range(self.nwiimotes):
+            r = Radio(self.selectedWiimote, i)
+            playerTable.td(r)
+            playerTable.td(self.createLabel(" %d " % (i+1)))
+        self.td(playerTable,colspan = 3)
+        
+        self.tr()
+        self.td(Spacer(*self.spaceSize))
+
+        # boutons jouer / quitter
+        self.tr()
+        self.quitButton = Button(self.createLabel("Quitter"))
+        self.td(self.quitButton)
+        self.playButton = Button(self.createLabel("Jouer"), disabled=True)
+        self.td(self.playButton,colspan=3)
+
+        self.tr()
+        self.td(Spacer(500,500))
+    
+    @property
+    def selectedWiimoteIndex(self) :
+        return self.selectedWiimote.value
+    
+    def _initLocalListeners(self) :
+        self.browseButton.connect(CLICK, self.open_file_browser)
+        self.quitButton.connect(CLICK, self._exitApp)
+        self.playButton.connect(CLICK, self._exitHome)
+    
+    def _exitApp(self, data=None) :
+        self.exitApp = True
+        self.send(QUIT)
+    
+    def _exitHome(self, data=None) :
+        self.exitApp = False
+        self.send(QUIT)
+    
+    def createLabel(self,text,font = None):
+        if font == None :
+            font = self.font
+        w,h = self.font.size(text)
+        label = Label(text,width=w,height=h,font = font)
+        return(label)
+    
+    def open_file_browser(self):
+        dlg = FileOpenDialog(self.songPath)
+        dlg.connect(CHANGE, self.handle_file_browser_closed, dlg)
+        dlg.open()
+    
+    def handle_file_browser_closed(self, dlg) :
+        if dlg.value and os.path.isfile(dlg.value):
+            self.songFile = dlg.value
+            self.playButton.disabled = False
+    
+
+    
\ No newline at end of file