#from __future__ import unicode_literals
# -*- coding: utf-8 -*-
from __future__ import division
import os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Terrain import Terrain
from ui.ecran_editionTerrain import Ui_et_fenetre
from outilsSvg import *

class EcranEditionTerrain(QDialog):
    """interface de creation/edition de terrains"""
    def __init__(self, terrain=None, parent=None):
        """initialisation de la fenetre"""
        super (EcranEditionTerrain, self).__init__()
        self.nomImg = ""
        self.createWidgets()
        self.terrain = terrain
        if terrain == None:
            self.terrain = Terrain()
        else:
            self.accesEdition()
        self.majAffichage("")    
        
    def createWidgets(self):
        """construction de l'interface"""
        #construction de l'interface
        self.ui = Ui_et_fenetre()
        self.ui.setupUi(self)
        self.connect(self.ui.et_enregistrer, SIGNAL("clicked()"), self.enregistrer)
        self.connect(self.ui.et_annuler, SIGNAL("clicked()"), self.annuler)
        self.connect(self.ui.et_supprimer, SIGNAL("clicked()"), self.supprimer)
        self.connect(self.ui.et_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
        self.connect(self.ui.et_selectionCouleur, SIGNAL("clicked()"), self.selectionCouleur)
        self.connect(self.ui.et_selectionFichier, SIGNAL("clicked()"), self.selectionFichier)
        
    def accesEdition(self):
        """ouverture en mode edition"""
        self.ui.et_nom.setText(QString.fromUtf8(str(self.terrain.nom)))
        if os.path.exists(self.terrain.imgTexture):
            pix = QPixmap(QString.fromUtf8(str(self.terrain.imgTexture)))
            if not pix.isNull():
                self.ui.et_apercu.setText(QString(""))
                pix = QPixmap(QString.fromUtf8(str(self.terrain.imgTexture)))
                self.ui.et_apercu.setPixmap(pix)
        else:    
            if self.terrain.couleur.isValid():
                self.ui.et_apercu.setText(QString(""))
                self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(self.terrain.couleur.name()))
     
##        if self.terrain.visibilite:
##            self.ui.visibiliteTerrain.setCheckState(2)
##        else:
##            self.ui.visibiliteTerrain.setCheckState(0)
        self.ui.et_depAucun.setChecked(self.terrain.franchissable)
##        if self.terrain.franchissable:    
##            self.ui.et_depAucun.setCheckState(2)
##        else:
##            self.ui.et_depAucun.setCheckState(0)
        self.ui.et_supprimer.setEnabled(True)

    def majAffichage(self, txt):
        """verifie la validite des saisies"""
        self.ui.et_enregistrer.setEnabled(len(self.ui.et_nom.text().toUtf8()) > 0)

    def nouvelIdTerrain(self):
        """renvoie un identifiant pour un nouveau terrain"""
        dicoSvg = afficheSvg("lib\\biblio\\terrain")
        nouvelId = 1
        while str(nouvelId) in dicoSvg.keys():
            nouvelId += 1
        return str(nouvelId)

    def selectionCouleur(self):
        """selectionne la couleur dans la boite de dialogue dediee"""
        couleur = QColorDialog(self).getColor(QColor("white"), self)
        if couleur.isValid():
            nomCouleur = couleur.name()
            self.ui.et_apercu.setText(QString(""))
            self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
            self.terrain.couleur = couleur    

    def selectionFichier(self):
        """selectionne le fichier de texture dans la boite de dialogue dediee"""
        fichier = QFileDialog.getOpenFileName(self, 
                                              "Selectionnez une image", 
                                              "\\img", 
                                              "Images (*.png *.jpg)")
        pix = QPixmap(fichier)
        if not pix.isNull():
            self.nomImg = fichier
            self.ui.et_apercu.setText(QString(""))
            self.ui.et_apercu.setPixmap(pix)
        else:    
            dial = QMessageBox(self)
            dial.setText("Format non reconnu")
            dial.setWindowTitle("Erreur")
            dial.setStandardButtons(QMessageBox.Ok)
            dial.exec_()
            
           
    def enregistrer(self):
        """enregistre le terrain cree/edite"""
        if not self.terrain.id:
            self.terrain.id = self.nouvelIdTerrain()
        self.terrain.nom = str(self.ui.et_nom.text().toUtf8())
        self.terrain.imgTexture = self.nomImg
        self.terrain.franchissable = (not self.ui.et_depAucun.isChecked())
        enregistrer(self.terrain.id, self.terrain, "lib\\biblio\\terrain")
        self.terrain = None
        self.done(1)

    def supprimer(self):
        """supprimer l'enregistrement de ce terrain"""
        supprSvg("terrain", self.terrain.id)
        self.done(1)

    def annuler(self):
        """annule la creation/edition"""
        self.terrain = None
        self.done(0)
