EcranCreationPlateau.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from __future__ import division
  4. from time import time, sleep, strftime, localtime
  5. from PyQt4.QtCore import *
  6. from PyQt4.QtGui import *
  7. from ui.ecran_creationPlateau import Ui_creationPlateau
  8. from outilsSvg import *
  9. class EcranCreationPlateau(QDialog):
  10. """interface de creation/chargement de plateau"""
  11. def __init__(self, fenetrePrincipale, terrain=None, parent=None):
  12. """initialisation de la fenetre"""
  13. super (EcranCreationPlateau, self).__init__()
  14. self.fenetre = fenetrePrincipale
  15. self.couleur = QColor(0, 255, 0, 80)
  16. self.idSvgPlusRecent = None #id de la sauvegarde du plateau le plus recent
  17. self.createWidgets()
  18. self.majAffichage()
  19. self.focusBoutonChargerEC()
  20. def createWidgets(self):
  21. """construction de l'interface"""
  22. #construction de l'interface
  23. self.ui = Ui_creationPlateau()
  24. self.ui.setupUi(self)
  25. self.connect(self.ui.listeMenus, SIGNAL("cellClicked(int,int)"), self.menuChange, Qt.UniqueConnection)
  26. self.ui.listeMenus.setCurrentCell(0,0)
  27. self.ui.menus.setCurrentIndex(0)
  28. self.ui.couleurCasesPlateau.setStyleSheet("QLabel {backGround:%s}" %(self.couleur))
  29. self.majListeChargement()
  30. self.connect(self.ui.creerPlateau, SIGNAL("clicked()"), self.creerPlateau)
  31. self.connect(self.ui.nomPlateau, SIGNAL("textEdited(QString)"), self.focusBoutonCreer)
  32. self.connect(self.ui.nomPlateau, SIGNAL("textEdited(QString)"), self.majAffichage)
  33. self.connect(self.ui.listPlateau, SIGNAL("cellPressed(int, int)"), self.majAffichage)
  34. self.connect(self.ui.listPlateau, SIGNAL("cellPressed(int, int)"), self.focusBoutonCharger)
  35. self.connect(self.ui.selectionCouleur, SIGNAL("clicked()"), self.selectionCouleur)
  36. self.connect(self.ui.supprimerPlateau, SIGNAL("clicked()"), self.supprimerPlateau)
  37. self.connect(self.ui.chargerPlateau, SIGNAL("clicked()"), self.chargerPlateau)
  38. self.connect(self.ui.chargerPlateauEC, SIGNAL("clicked()"), self.chargerPlateauEC)
  39. self.connect(self.ui.chapitreChargementPlateau, SIGNAL("valueChanged(int)"), self.majListeChargement)
  40. self.connect(self.ui.toutAfficherPlateau, SIGNAL("stateChanged(int)"), self.majListeChargement)
  41. def menuChange(self, ligne, col):
  42. """le menu a ete change dans la QTableWidget"""
  43. self.ui.menus.setCurrentIndex(ligne)
  44. def creerPlateau(self):
  45. nom = self.ui.nomPlateau.text().toUtf8()
  46. largeur = self.ui.largeurPlateau.value()
  47. hauteur = self.ui.hauteurPlateau.value()
  48. chapitre = str(self.ui.chapitrePlateau.value())
  49. if self.ui.formeCase_hexagone.isChecked():
  50. formeCases = "H"
  51. else:
  52. formeCases = "C"
  53. ok = True
  54. if (largeur * hauteur) > 10000:
  55. reponse = QMessageBox.question(self, 'Message',
  56. "Attention ! \nLe nombre élevé de cases peut entrainer des ralentissements " \
  57. "importants...\nVoulez vous continuer?", QMessageBox.Yes |
  58. QMessageBox.No, QMessageBox.No)
  59. if reponse == QMessageBox.No:
  60. ok = False
  61. if ok == True:
  62. self.fenetre.creerPlateau(nom, chapitre, formeCases, largeur, hauteur, self.couleur)
  63. self.close()
  64. def chargerPlateau(self):
  65. """charge le plateau selectionne"""
  66. index = str(self.ui.listPlateau.item(self.ui.listPlateau.currentRow(), 0).text().toUtf8())
  67. self.fenetre.chargerPlateau(index)
  68. self.close()
  69. def chargerPlateauEC(self):
  70. """charge le plateau le pus recent"""
  71. if self.idSvgPlusRecent != None:
  72. self.fenetre.chargerPlateau(self.idSvgPlusRecent)
  73. self.close()
  74. def supprimerPlateau(self):
  75. """supprime le plateau selectionne"""
  76. reponse = QMessageBox.question(self, 'Message',
  77. "Etes vous sûr de vouloir supprimer ce plateau?", QMessageBox.Yes |
  78. QMessageBox.No, QMessageBox.No)
  79. if reponse == QMessageBox.Yes:
  80. index = str(self.ui.listPlateau.item(self.ui.listPlateau.currentRow(), 0).text().toUtf8())
  81. os.remove("parties\\{}\\svg\\{}.p".format(self.fenetre.partie, index))
  82. supprSvg("parties\\{}\\svg\\infos_sauvegarde".format(self.fenetre.partie), index)
  83. self.majListeChargement()
  84. def majListeChargement(self):
  85. """remplit ou maj la liste des plateaux sauvegardes"""
  86. #on met a jour la largeur des colonnes
  87. self.ui.listPlateau.setColumnWidth(0, 0) #colonne de l'index (invisible)
  88. self.ui.listPlateau.setColumnWidth(1, 55)
  89. self.ui.listPlateau.setColumnWidth(2, 110)
  90. self.ui.listPlateau.setColumnWidth(3, 60)
  91. self.ui.listPlateau.setColumnWidth(4, 80)
  92. self.ui.listPlateau.setColumnWidth(5, 50)
  93. self.ui.listPlateau.setColumnWidth(6, 50)
  94. ## self.ui.listPlateau.setColumnHidden(6, True)
  95. #on vide la liste si necessaire
  96. while self.ui.listPlateau.rowCount() > 0:
  97. self.ui.listPlateau.removeRow(0)
  98. infosSvg = afficheSvg("parties\\{}\\svg\\infos_sauvegarde".format(self.fenetre.partie))
  99. ligne = 0
  100. for id_svg in infosSvg:
  101. if self.idSvgPlusRecent == None or infosSvg[id_svg]["dateSvg"] > infosSvg[self.idSvgPlusRecent]["dateSvg"]: self.idSvgPlusRecent = id_svg
  102. if infosSvg[id_svg]["chapitre"] == str(self.ui.chapitreChargementPlateau.value()) or bool(self.ui.toutAfficherPlateau.checkState()) == True:
  103. self.ui.listPlateau.insertRow(ligne)
  104. self.ui.listPlateau.setItem(ligne, 0, QTableWidgetItem(QString.fromUtf8(str(id_svg))))
  105. self.ui.listPlateau.setItem(ligne, 1, QTableWidgetItem(QString.fromUtf8(" "+infosSvg[id_svg]["chapitre"])))
  106. self.ui.listPlateau.setItem(ligne, 2, QTableWidgetItem(QString.fromUtf8(infosSvg[id_svg]["nom"])))
  107. self.ui.listPlateau.setItem(ligne, 3, QTableWidgetItem(QString.fromUtf8(strftime('%d/%m/%y %H:%M',localtime(infosSvg[id_svg]["dateCreation"])))))
  108. self.ui.listPlateau.setItem(ligne, 4, QTableWidgetItem(QString.fromUtf8(strftime('%d/%m/%y %H:%M',localtime(infosSvg[id_svg]["dateSvg"])))))
  109. if infosSvg[id_svg]["public"] == True:
  110. txt = "Oui"
  111. else:
  112. txt = "Non"
  113. self.ui.listPlateau.setItem(ligne, 5, QTableWidgetItem(QString.fromUtf8(txt)))
  114. self.ui.listPlateau.setItem(ligne, 6, QTableWidgetItem(QString.fromUtf8(str(infosSvg[id_svg]["dateSvg"]))))
  115. ligne += 1
  116. for i in range(1,5):
  117. self.ui.listPlateau.sizeHintForColumn(i)
  118. #on trie par date
  119. ## trierTable(self.ui.listPlateau, 6, 1)
  120. def majAffichage(self):
  121. self.ui.creerPlateau.setEnabled(len(self.ui.nomPlateau.text().toUtf8()) > 0)
  122. self.ui.chargerPlateau.setEnabled(self.ui.listPlateau.currentRow()>=0)
  123. self.ui.supprimerPlateau.setEnabled(self.ui.listPlateau.currentRow()>=0)
  124. self.ui.chargerPlateauEC.setEnabled(self.ui.listPlateau.rowCount() > 0)
  125. def selectionCouleur(self):
  126. """selectionne la couleur dans la boite de dialogue dediee"""
  127. couleur = QColorDialog(self).getColor(QColor("white"), self)
  128. if couleur.isValid():
  129. nomCouleur = couleur.name()
  130. self.ui.couleurCasesPlateau.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
  131. self.couleur = couleur
  132. def focusBoutonChargerEC(self):
  133. self.ui.chargerPlateauEC.setFocus()
  134. def focusBoutonCharger(self):
  135. self.ui.chargerPlateau.setFocus()
  136. def focusBoutonCreer(self):
  137. self.ui.creerPlateau.setFocus()