DMonde.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. """Interface principale du programme DMonde
  4. """
  5. import os
  6. from PyQt4.QtCore import SIGNAL
  7. from PyQt4.QtGui import QMainWindow, QApplication
  8. from lib.EcranChargerPartie import EcranChargerPartie
  9. from lib.FenetreEditionPartie import FenetreEditionPartie
  10. from lib.Partie import Partie
  11. from lib.Profil import Profil
  12. from lib.commun import Session, sessionEnCours, rep
  13. from lib.mat import chargerMat
  14. from lib.ui.ecran_principal import Ui_principal
  15. class DMonde(QMainWindow):
  16. """interface principale de DMonde"""
  17. def __init__(self, parent=None):
  18. """initialisation de la fenetre"""
  19. super (DMonde, self).__init__()
  20. # self.plateau = None
  21. # self.util = "Joueur"
  22. self.profil = Profil()
  23. self.partie = None
  24. # self.regles = ""
  25. # self.idPlateauEnCours = ""
  26. # self.plateauConnecte = False
  27. # self.pjs = [] #liste des idM des personnages du groupe
  28. self.createWidgets()
  29. def createWidgets(self):
  30. """construction de l'interface"""
  31. self.ui = Ui_principal()
  32. self.ui.setupUi(self)
  33. self.connect(self.ui.dm_panneauCentre, SIGNAL("currentChanged(int)"), self.rafraichir)
  34. self.connect(self.ui.pt_nouvelle, SIGNAL("clicked()"), self.nouvellePartie)
  35. self.connect(self.ui.pt_editer, SIGNAL("clicked()"), self.editerPartie)
  36. self.connect(self.ui.pt_fermer, SIGNAL("clicked()"), self.fermerPartie)
  37. self.connect(self.ui.pt_charger, SIGNAL("clicked()"), self.afficherEcranChargerPartie)
  38. self.ouverture()
  39. def ouverture(self):
  40. """operations menees a l'ouverture de la fenetre principale"""
  41. # self.majLargeurOnglets()
  42. self.majAffichage()
  43. # self.chargerPartie("")
  44. def rafraichir(self):
  45. """fonction utilisee pour forcer le repaint"""
  46. self.majLargeurOnglets()
  47. def estMj(self):
  48. return True
  49. def majAffichage(self):
  50. actif = (self.partie != None)
  51. self.ui.dm_panneauCentre.setTabEnabled(1, actif)
  52. self.ui.dm_panneauCentre.setTabEnabled(2, actif)
  53. self.ui.dm_panneauCentre.setTabEnabled(3, actif)
  54. self.ui.pt_page.setCurrentIndex( (1 if actif else 0) )
  55. def majLargeurOnglets(self):
  56. val = (self.ui.dm_panneauCentre.width() - 20) / 4
  57. self.ui.dm_panneauCentre.setStyleSheet("QTabBar::tab { height: 25; width: "+str(val)+"px; }")
  58. def nouvellePartie(self):
  59. fen = FenetreEditionPartie()
  60. fen.nouvelle()
  61. fen.show()
  62. r = fen.exec_()
  63. if r == 1:
  64. partie = fen.resultat()
  65. self.partie = partie
  66. self.partie.afficher(self)
  67. self.majPartieEnCours()
  68. self.majAffichage()
  69. del fen
  70. def editerPartie(self):
  71. if not self.partie: return
  72. fen = FenetreEditionPartie()
  73. fen.charger(self.partie)
  74. fen.show()
  75. r = fen.exec_()
  76. if r == 1:
  77. partie = fen.resultat()
  78. self.partie = partie
  79. self.partie.majAffichage()
  80. del fen
  81. def fermerPartie(self):
  82. if self.partie:
  83. self.partie.fermer()
  84. self.majAffichage()
  85. def afficherEcranChargerPartie(self):
  86. fen = EcranChargerPartie(self)
  87. fen.show()
  88. r = fen.exec_()
  89. if r == 1:
  90. idM = fen.resultat()
  91. self.chargerPartie(idM)
  92. del fen
  93. def chargerPartie(self, idPartie):
  94. """charge la partie"""
  95. repParties = os.path.join( rep("app"), "parties\\" )
  96. chemin = os.path.join( os.path.join( repParties, "{}\\".format(idPartie) ), "{}.dm".format(idPartie) )
  97. partie = chargerMat( chemin )
  98. if partie:
  99. self.partie = partie
  100. self.partie.afficher(self)
  101. self.majPartieEnCours()
  102. self.majAffichage()
  103. def majPartieEnCours(self):
  104. s = sessionEnCours()
  105. idM = self.partie.idM() if self.partie else "defaut"
  106. s.majPartie(idM)
  107. s.enregistrer()
  108. def resizeEvent(self, event):
  109. self.majLargeurOnglets()
  110. if __name__ == "__main__":
  111. s = Session()
  112. arg = ["DMonde", s.idS()]
  113. app = QApplication(arg)
  114. #settrace(trace_calls)
  115. dm = DMonde()
  116. dm.show()
  117. dm.rafraichir()
  118. r = app.exec_()
  119. s.fin()
  120. exit(r)