#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)