X-Git-Url: https://scm.cri.minesparis.psl.eu/git/minwii.git/blobdiff_plain/e7854ed82aa375273bfbf772493739f875817061..46f3ffd7fdde386f41020171b5733e55a8e64a85:/src/minwii/widgets/home.py diff --git a/src/minwii/widgets/home.py b/src/minwii/widgets/home.py new file mode 100755 index 0000000..afd84ec --- /dev/null +++ b/src/minwii/widgets/home.py @@ -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