EcranEditionObjet.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from __future__ import division
  4. import os, sys
  5. from PyQt4.QtCore import *
  6. from PyQt4.QtGui import *
  7. from Objet import Objet
  8. from ui.ecran_editionObjet import Ui_eo_fenetre
  9. from ui.ecran_editionQuantiteObjet import Ui_eoq_fenetre
  10. import regles
  11. class EcranEditionObjet(QDialog):
  12. """interface de creation/edition de terrains"""
  13. def __init__(self, objet=None, typeObjet = 4, parent=None):
  14. """initialisation de la fenetre"""
  15. super (EcranEditionObjet, self).__init__(parent)
  16. self._resultat = objet
  17. self.createWidgets()
  18. self.ouverture(objet, typeObjet)
  19. def createWidgets(self):
  20. """construction de l'interface"""
  21. #construction de l'interface
  22. self.ui = Ui_eo_fenetre()
  23. self.ui.setupUi(self)
  24. self.setModal(True)
  25. self.connect(self.ui.eo_enregistrer, SIGNAL("clicked()"), self.enregistrer)
  26. self.connect(self.ui.eo_annuler, SIGNAL("clicked()"), self.annuler)
  27. self.connect(self.ui.eo_supprimer, SIGNAL("clicked()"), self.supprimer)
  28. self.connect(self.ui.eo_ajouter, SIGNAL("clicked()"), self.ajouter)
  29. self.connect(self.ui.eo_retirer, SIGNAL("clicked()"), self.retirer)
  30. self.connect(self.ui.eo_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
  31. def ouverture(self, objet, typeObjet):
  32. """ouverture en mode edition"""
  33. if objet:
  34. self.ui.eo_nom.majTexte(objet.nom)
  35. self.ui.eo_quantite.setValue(objet.quantite)
  36. self.ui.eo_poids.setValue(objet.poids)
  37. self.ui.eo_valeur.setValue(objet.valeur)
  38. self.ui.eo_monnaie.majTexte(regles.nomMonnaie())
  39. self.ui.eo_type.setCurrentIndex(objet.typeObjet)
  40. self.ui.eo_consommable.setChecked(objet.estConsommable)
  41. else:
  42. self.ui.eo_type.setCurrentIndex(typeObjet)
  43. self.ui.eo_ajouter.setVisible(False)
  44. self.ui.eo_retirer.setVisible(False)
  45. self.ui.eo_supprimer.setVisible(False)
  46. self.majAffichage()
  47. def objet(self):
  48. objet = Objet()
  49. objet.nom = self.ui.eo_nom.texte()
  50. objet.quantite = self.ui.eo_quantite.value()
  51. objet.typeObjet = self.ui.eo_type.currentIndex()
  52. objet.estConsommable = self.ui.eo_consommable.isChecked()
  53. objet.poids = self.ui.eo_poids.value()
  54. objet.valeur = self.ui.eo_valeur.value()
  55. return objet
  56. def resultat(self):
  57. return self._resultat
  58. def enregistrer(self):
  59. """enregistre le terrain cree/edite"""
  60. self._resultat = self.objet()
  61. self.done(1)
  62. def supprimer(self):
  63. """supprimer l'enregistrement de ce terrain"""
  64. self._resultat = None
  65. self.done(1)
  66. def annuler(self):
  67. """annule la creation/edition"""
  68. self.done(0)
  69. def majAffichage(self):
  70. """verifie la validite des saisies"""
  71. self.ui.eo_enregistrer.setEnabled(len(self.ui.eo_nom.texte()) > 0)
  72. def ajouter(self):
  73. self.editerQuantite("+")
  74. def retirer(self):
  75. self.editerQuantite("-")
  76. def editerQuantite(self, mode):
  77. self.ecran = EcranEditionQuantiteObjet(mode)
  78. self.ecran.show()
  79. self.ecran.exec_()
  80. resultat = self.ecran.resultat
  81. self.ecran = None
  82. val = self.ui.eo_quantite.value()
  83. val += resultat
  84. if val < 0: val = 0
  85. self.ui.eo_quantite.setValue(val)
  86. class EcranEditionQuantiteObjet(QDialog):
  87. """interface permettant l'ajout/retrait rapide de nombres a une quantites d'objets"""
  88. def __init__(self, mode = "+", parent=None):
  89. super (EcranEditionQuantiteObjet, self).__init__(parent)
  90. self.mode = mode
  91. self.resultat = 0
  92. self.createWidgets()
  93. def createWidgets(self):
  94. """construction de l'interface"""
  95. #construction de l'interface
  96. self.ui = Ui_eoq_fenetre()
  97. self.ui.setupUi(self)
  98. self.setModal(True)
  99. self.connect(self.ui.eoq_ok, SIGNAL("clicked()"), self.ok)
  100. if self.mode == "+": self.ui.eoq_titre.majTexte("Ajouter :")
  101. if self.mode == "-": self.ui.eoq_titre.majTexte("Retirer :")
  102. self.ui.eoq_valeur.setFocus()
  103. self.ui.eoq_valeur.selectAll()
  104. def ok(self):
  105. k = 1
  106. if self.mode == "-": k = -1
  107. self.resultat = (k * self.ui.eoq_valeur.value())
  108. self.done(1)
  109. if __name__ == "__main__":
  110. app = QApplication(sys.argv)
  111. ecran = EcranEditionObjet()
  112. ecran.show()
  113. r = app.exec_()
  114. exit(r)