#from __future__ import unicode_literals
# -*- coding: utf-8 -*-
from __future__ import division
from time import time, sleep, strftime, localtime

from PyQt4.QtCore import *
from PyQt4.QtGui import *

from ui.ecran_chargerPlateau import Ui_chp_fenetre

from outilsSvg import *

class EcranChargerPlateau(QDialog):
    """interface de creation/chargement de plateau"""
    def __init__(self, fenetrePrincipale, terrain=None, parent=None):
        """initialisation de la fenetre"""
        super (EcranChargerPlateau, self).__init__()
        self.fenetre = fenetrePrincipale
        self.createWidgets()
        self.majAffichage()
        
    def createWidgets(self):
        """construction de l'interface"""
        #construction de l'interface
        self.ui = Ui_chp_fenetre()
        self.ui.setupUi(self)
        self.majListeChargement()
        self.connect(self.ui.chp_supprimer, SIGNAL("clicked()"), self.supprimerPlateau)
        self.connect(self.ui.chp_ok, SIGNAL("clicked()"), self.charger)
        self.connect(self.ui.chp_chapitre, SIGNAL("valueChanged(int)"), self.majListeChargement)
        self.connect(self.ui.chp_toutAfficher, SIGNAL("stateChanged(int)"), self.majListeChargement)
        
        self.connect(self.ui.chp_liste, SIGNAL("cellClicked(int,int)"), self.focusBoutonCharger)
        self.connect(self.ui.chp_liste, SIGNAL("cellClicked(int,int)"), self.majAffichage)
        self.connect(self.ui.chp_liste, SIGNAL("cellDoubleClicked(int,int)"), self.charger)

    def charger(self):
        """charge le plateau selectionne"""
        index = self.ui.chp_liste.texte(self.ui.chp_liste.currentRow(), 0)
        self.fenetre.chargerPlateau(index)
        self.done(1)
            
    def supprimerPlateau(self):
        """supprime le plateau selectionne"""
        reponse = QMessageBox.question(self, 'Avertissement',
                                           QString().fromUtf8("Etes-vous sûr de vouloir supprimer ce plateau?"), QMessageBox.Yes | 
                                           QMessageBox.No, QMessageBox.No)
        if reponse == QMessageBox.Yes:       
            index = self.ui.chp_liste.texte(self.ui.chp_liste.currentRow(), 0)
            os.remove("parties\\{}\\svg\\{}.p".format(self.fenetre.partie, index))
            supprSvg("parties\\{}\\svg\\infos_sauvegarde".format(self.fenetre.partie), index)
            self.majListeChargement()

    def majAffichage(self):
        self.ui.chp_ok.setEnabled(self.ui.chp_liste.currentRow()>=0)
        self.ui.chp_supprimer.setEnabled(self.ui.chp_liste.currentRow()>=0)

    def focusBoutonCharger(self):
        self.ui.chp_ok.setFocus()

    def majListeChargement(self):
        """remplit ou maj la liste des plateaux sauvegardes"""
        #on met a jour la largeur des colonnes
        largeurs = [0, 30, 30, 310, 100, 0]
        for col in self.ui.chp_liste.colonnes():
            self.ui.chp_liste.setColumnWidth(col, largeurs[col]);

        self.ui.chp_liste.setSortingEnabled(False)

        self.ui.chp_liste.vider()
        
        infosSvg = afficheSvg("parties\\{}\\svg\\infos_sauvegarde".format(self.fenetre.partie))
        
        for id_svg in infosSvg:
            if infosSvg[id_svg]["chapitre"] == str(self.ui.chp_chapitre.value()) or bool(self.ui.chp_toutAfficher.checkState()) == True:
                ligne = self.ui.chp_liste.nouvelleLigneFin()
                self.ui.chp_liste.majTexte(ligne, 0, str(id_svg))
                if infosSvg[id_svg]["public"] == True:
                    icone = QIcon(":/interface/32/ressource/oeil_32.png")
                else:
                    icone = QIcon(":/interface/32/ressource/oeilBarre2_32.png")
                item = QTableWidgetItem(icone, QString(""))
                
                self.ui.chp_liste.setItem(ligne, 1, item)
                self.ui.chp_liste.majTexte(ligne, 2, (str(infosSvg[id_svg]["chapitre"])))
                self.ui.chp_liste.majTexte(ligne, 3, infosSvg[id_svg]["nom"])
                self.ui.chp_liste.majTexte(ligne, 4, strftime('%d/%m/%y %H:%M',localtime(infosSvg[id_svg]["dateSvg"])))
                self.ui.chp_liste.majData(ligne, 5, infosSvg[id_svg]["dateSvg"])
                
        for col in self.ui.chp_liste.colonnes():
            self.ui.chp_liste.sizeHintForColumn(col)
            
        #on trie par date
        self.ui.chp_liste.setSortingEnabled(True)
        self.ui.chp_liste.sortItems(5, 1)
        self.majAffichage()
        





        
