#from __future__ import unicode_literals
# -*- coding: utf-8 -*-
from __future__ import division
import os, sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Objet import Objet
from ui.ecran_editionObjet import Ui_eo_fenetre
from ui.ecran_editionQuantiteObjet import Ui_eoq_fenetre
import regles

class EcranEditionObjet(QDialog):
    """interface de creation/edition de terrains"""
    def __init__(self, objet=None, typeObjet = 4, parent=None):
        """initialisation de la fenetre"""
        super (EcranEditionObjet, self).__init__(parent)
        self._resultat = objet
        self.createWidgets()
        self.ouverture(objet, typeObjet)
          
    def createWidgets(self):
        """construction de l'interface"""
        #construction de l'interface
        self.ui = Ui_eo_fenetre()
        self.ui.setupUi(self)
        self.setModal(True)

        self.connect(self.ui.eo_enregistrer, SIGNAL("clicked()"), self.enregistrer)
        self.connect(self.ui.eo_annuler, SIGNAL("clicked()"), self.annuler)
        self.connect(self.ui.eo_supprimer, SIGNAL("clicked()"), self.supprimer)
        self.connect(self.ui.eo_ajouter, SIGNAL("clicked()"), self.ajouter)
        self.connect(self.ui.eo_retirer, SIGNAL("clicked()"), self.retirer)
        self.connect(self.ui.eo_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
        
    def ouverture(self, objet, typeObjet):
        """ouverture en mode edition"""
        if objet:
            self.ui.eo_nom.majTexte(objet.nom)
            self.ui.eo_quantite.setValue(objet.quantite)
            self.ui.eo_poids.setValue(objet.poids)
            self.ui.eo_valeur.setValue(objet.valeur)
            self.ui.eo_monnaie.majTexte(regles.nomMonnaie())
            self.ui.eo_type.setCurrentIndex(objet.typeObjet)
            self.ui.eo_consommable.setChecked(objet.estConsommable)
        else:
            self.ui.eo_type.setCurrentIndex(typeObjet)
            self.ui.eo_ajouter.setVisible(False)
            self.ui.eo_retirer.setVisible(False)
            self.ui.eo_supprimer.setVisible(False)
        self.majAffichage()

    def objet(self):
        objet = Objet()
        objet.nom = self.ui.eo_nom.texte()
        objet.quantite = self.ui.eo_quantite.value()
        objet.typeObjet = self.ui.eo_type.currentIndex()
        objet.estConsommable = self.ui.eo_consommable.isChecked()
        objet.poids = self.ui.eo_poids.value()
        objet.valeur = self.ui.eo_valeur.value()
        return objet

    def resultat(self):
        return self._resultat

    def enregistrer(self):
        """enregistre le terrain cree/edite"""
        self._resultat = self.objet()
        self.done(1)

    def supprimer(self):
        """supprimer l'enregistrement de ce terrain"""
        self._resultat = None
        self.done(1)

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

    def majAffichage(self):
        """verifie la validite des saisies"""
        self.ui.eo_enregistrer.setEnabled(len(self.ui.eo_nom.texte()) > 0)

    def ajouter(self):
        self.editerQuantite("+")
    
    def retirer(self):
        self.editerQuantite("-")

    def editerQuantite(self, mode):
        self.ecran = EcranEditionQuantiteObjet(mode)
        self.ecran.show()
        self.ecran.exec_()
        resultat = self.ecran.resultat
        self.ecran = None

        val = self.ui.eo_quantite.value()
        val += resultat
        if val < 0: val = 0
        self.ui.eo_quantite.setValue(val)

class EcranEditionQuantiteObjet(QDialog):
    """interface permettant l'ajout/retrait rapide de nombres a une quantites d'objets"""
    def __init__(self, mode = "+", parent=None):
        super (EcranEditionQuantiteObjet, self).__init__(parent)
        self.mode = mode
        self.resultat = 0
        self.createWidgets()

    def createWidgets(self):
        """construction de l'interface"""
        #construction de l'interface
        self.ui = Ui_eoq_fenetre()
        self.ui.setupUi(self)
        self.setModal(True)
        self.connect(self.ui.eoq_ok, SIGNAL("clicked()"), self.ok)
        if self.mode == "+": self.ui.eoq_titre.majTexte("Ajouter :")
        if self.mode == "-": self.ui.eoq_titre.majTexte("Retirer :")
        self.ui.eoq_valeur.setFocus()
        self.ui.eoq_valeur.selectAll()
        
    def ok(self):
        k = 1
        if self.mode == "-": k = -1
        self.resultat = (k * self.ui.eoq_valeur.value())
        self.done(1)
    


if __name__ == "__main__":
   app = QApplication(sys.argv)
   ecran = EcranEditionObjet()
   ecran.show()
   r = app.exec_()
   exit(r)  


 
