#from __future__ import unicode_literals # -*- coding: utf-8 -*- """Interface principale du programme DMonde """ import os from PyQt4.QtCore import SIGNAL from PyQt4.QtGui import QMainWindow, QApplication from lib.EcranChargerPartie import EcranChargerPartie from lib.FenetreEditionPartie import FenetreEditionPartie from lib.Partie import Partie from lib.Profil import Profil from lib.commun import Session, sessionEnCours, rep from lib.mat import chargerMat from lib.ui.ecran_principal import Ui_principal class DMonde(QMainWindow): """interface principale de DMonde""" def __init__(self, parent=None): """initialisation de la fenetre""" super (DMonde, self).__init__() # self.plateau = None # self.util = "Joueur" self.profil = Profil() self.partie = None # self.regles = "" # self.idPlateauEnCours = "" # self.plateauConnecte = False # self.pjs = [] #liste des idM des personnages du groupe self.createWidgets() def createWidgets(self): """construction de l'interface""" self.ui = Ui_principal() self.ui.setupUi(self) self.connect(self.ui.dm_panneauCentre, SIGNAL("currentChanged(int)"), self.rafraichir) self.connect(self.ui.pt_nouvelle, SIGNAL("clicked()"), self.nouvellePartie) self.connect(self.ui.pt_editer, SIGNAL("clicked()"), self.editerPartie) self.connect(self.ui.pt_fermer, SIGNAL("clicked()"), self.fermerPartie) self.connect(self.ui.pt_charger, SIGNAL("clicked()"), self.afficherEcranChargerPartie) self.ouverture() def ouverture(self): """operations menees a l'ouverture de la fenetre principale""" # self.majLargeurOnglets() self.majAffichage() # self.chargerPartie("") def rafraichir(self): """fonction utilisee pour forcer le repaint""" self.majLargeurOnglets() def estMj(self): return True def majAffichage(self): actif = (self.partie != None) self.ui.dm_panneauCentre.setTabEnabled(1, actif) self.ui.dm_panneauCentre.setTabEnabled(2, actif) self.ui.dm_panneauCentre.setTabEnabled(3, actif) self.ui.pt_page.setCurrentIndex( (1 if actif else 0) ) def majLargeurOnglets(self): val = (self.ui.dm_panneauCentre.width() - 20) / 4 self.ui.dm_panneauCentre.setStyleSheet("QTabBar::tab { height: 25; width: "+str(val)+"px; }") def nouvellePartie(self): fen = FenetreEditionPartie() fen.nouvelle() fen.show() r = fen.exec_() if r == 1: partie = fen.resultat() self.partie = partie self.partie.afficher(self) self.majPartieEnCours() self.majAffichage() del fen def editerPartie(self): if not self.partie: return fen = FenetreEditionPartie() fen.charger(self.partie) fen.show() r = fen.exec_() if r == 1: partie = fen.resultat() self.partie = partie self.partie.majAffichage() del fen def fermerPartie(self): if self.partie: self.partie.fermer() self.majAffichage() def afficherEcranChargerPartie(self): fen = EcranChargerPartie(self) fen.show() r = fen.exec_() if r == 1: idM = fen.resultat() self.chargerPartie(idM) del fen def chargerPartie(self, idPartie): """charge la partie""" repParties = os.path.join( rep("app"), "parties\\" ) chemin = os.path.join( os.path.join( repParties, "{}\\".format(idPartie) ), "{}.dm".format(idPartie) ) partie = chargerMat( chemin ) if partie: self.partie = partie self.partie.afficher(self) self.majPartieEnCours() self.majAffichage() def majPartieEnCours(self): s = sessionEnCours() idM = self.partie.idM() if self.partie else "defaut" s.majPartie(idM) s.enregistrer() def resizeEvent(self, event): self.majLargeurOnglets() if __name__ == "__main__": s = Session() arg = ["DMonde", s.idS()] app = QApplication(arg) #settrace(trace_calls) dm = DMonde() dm.show() dm.rafraichir() r = app.exec_() s.fin() exit(r)