EcranChargerPartie.py 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. import os
  4. from time import strftime, localtime
  5. from PyQt4.QtCore import SIGNAL, QString
  6. from PyQt4.QtGui import QDialog, QMessageBox, QIcon, QTableWidgetItem
  7. from lib.commun import rep
  8. from lib.mat import chargerMat
  9. from lib.outilsSvg import supprSvg, afficheSvg
  10. from mat import supprimerMat
  11. from ui.ecran_chargerPartie import Ui_chpt_fenetre
  12. class EcranChargerPartie(QDialog):
  13. """interface de creation/chargement de plateau"""
  14. def __init__(self, fenetre, parent=None):
  15. """initialisation de la fenetre"""
  16. super (EcranChargerPartie, self).__init__()
  17. self.fenetre = fenetre
  18. self._resultat = None
  19. self.createWidgets()
  20. self.majAffichage()
  21. def createWidgets(self):
  22. """construction de l'interface"""
  23. #construction de l'interface
  24. self.ui = Ui_chpt_fenetre()
  25. self.ui.setupUi(self)
  26. self.majListeChargement()
  27. self.connect(self.ui.chpt_supprimer, SIGNAL("clicked()"), self.supprimerPlateau)
  28. self.connect(self.ui.chpt_ok, SIGNAL("clicked()"), self.ok)
  29. self.connect(self.ui.chpt_liste, SIGNAL("cellClicked(int,int)"), self.majAffichage)
  30. self.connect(self.ui.chpt_liste, SIGNAL("cellDoubleClicked(int,int)"), self.ok)
  31. def ok(self):
  32. """renvoie l'identifiant de la partie selectionnee"""
  33. self._resultat = self.ui.chpt_liste.texte(self.ui.chpt_liste.currentRow(), 0)
  34. self.done(1)
  35. def resultat(self):
  36. return self._resultat
  37. def supprimerPlateau(self):
  38. """supprime le plateau selectionne"""
  39. reponse = QMessageBox.question(self, 'Avertissement',
  40. QString().fromUtf8("Etes-vous sûr de vouloir supprimer cette partie,\net tous les plateaux et personnages qu'elle contient?"), QMessageBox.Yes |
  41. QMessageBox.No, QMessageBox.No)
  42. if reponse == QMessageBox.Yes:
  43. idM = self.ui.chpt_liste.texte(self.ui.chpt_liste.currentRow(), 0)
  44. rep = os.path.join(rep("app"), "{}\\".format(idM))
  45. os.remove(rep)
  46. self.majListeChargement()
  47. def majAffichage(self):
  48. self.ui.chpt_ok.setEnabled(self.ui.chpt_liste.currentRow()>=0)
  49. self.ui.chpt_supprimer.setEnabled(self.ui.chpt_liste.currentRow()>=0)
  50. def majListeChargement(self):
  51. """remplit ou maj la liste des plateaux sauvegardes"""
  52. #on met a jour la largeur des colonnes
  53. largeurs = [0, 370, 100, 0]
  54. for col in self.ui.chpt_liste.colonnes():
  55. self.ui.chpt_liste.setColumnWidth(col, largeurs[col]);
  56. self.ui.chpt_liste.setSortingEnabled(False)
  57. self.ui.chpt_liste.vider()
  58. repParties = os.path.join( rep("app"), "parties\\" )
  59. for repertoires in os.walk( repParties ):
  60. lstRep = repertoires[1]
  61. break
  62. for idPartie in lstRep:
  63. chemin = os.path.join( os.path.join( repParties, "{}\\".format(idPartie) ), "{}.dm".format(idPartie) )
  64. partie = chargerMat( chemin )
  65. if partie:
  66. ligne = self.ui.chpt_liste.nouvelleLigneFin()
  67. self.ui.chpt_liste.majTexte(ligne, 0, partie.idM())
  68. self.ui.chpt_liste.majTexte(ligne, 1, partie.nom() )
  69. self.ui.chpt_liste.majTexte(ligne, 2, strftime('%d/%m/%y %H:%M',localtime(partie.dateMaj)) )
  70. self.ui.chpt_liste.majData(ligne, 3, partie.dateMaj )
  71. for col in self.ui.chpt_liste.colonnes():
  72. self.ui.chpt_liste.sizeHintForColumn(col)
  73. #on trie par date
  74. self.ui.chpt_liste.setSortingEnabled(True)
  75. self.ui.chpt_liste.sortItems(5, 1)
  76. self.majAffichage()