# -*- 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 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.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('EASY')
        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("Joueurs :", self.font))
        playerTable = Table()
        self.activeWiimoteSwitches = []
        for i in range(4):
            s = Switch(False)
            playerTable.td(s)
            playerTable.td(self.createLabel(" %d " % (i+1)))
            self.activeWiimoteSwitches.append(s)
        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))
    
    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.returnValue = False
        self.send(QUIT)
    
    def _exitHome(self, data=None) :
        self.returnValue = True
        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
    

    