| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- #from __future__ import unicode_literals
- # -*- coding: utf-8 -*-
- """Interface principale du programme DMonde
- """
- import os
- from PyQt4.QtCore import SIGNAL, Qt, QSignalMapper
- from PyQt4.QtGui import QMainWindow, QApplication, QGraphicsView
- 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.profil = Profil()
- self.partie = None
- self.createWidgets()
- self.mapper = QSignalMapper()
- 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)
-
- ### DM
- 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)
-
- ### partie
- ### plateau
- self.ui.cbt_vue.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate)
- self.ui.cp_ongletsListes.setStyleSheet("QTabBar::tab { width: 41px; }")
- self.ui.pi_ongletsListes.setStyleSheet("QTabBar::tab { width: 38px; }")
-
- self.ouverture()
- def connexionsPartie(self):
- return [
- ( self.ui.pt_enregistrer , "clicked()" ,self.partie.enregistrer , None ), \
- ( self.ui.cbt_enCours , "clicked()" ,self.partie.chargerDernierPlateau , None ), \
- ( self.ui.cbt_charger , "clicked()" ,self.partie.afficherEcranChargerPlateau , None ), \
- ( self.ui.cbt_creer , "clicked()" ,self.partie.nouveauPlateau , None ), \
- ( self.ui.cbt_sauver , "clicked()" ,self.partie.enregistrerPlateau , None ), \
- ( self.ui.cbt_fermer , "clicked()" ,self.partie.fermerPlateau , None ), \
- ( self.ui.grp_nouveauPj , "clicked()" ,self.partie.nouveauPj , None )
- ]
- def connecterPartie(self, actif = True):
- if not self.partie: return
- for w, s, f, p in self.connexionsPartie():
- if actif:
- self.connect(w, SIGNAL(s), f, Qt.UniqueConnection)
- if p != None: pass
- else:
- self.disconnect(w, SIGNAL(s))
- def connexionsPlateau(self):
- return [
- (self.ui.cbt_modeCreation , "clicked()" , self.partie.plateau.plateauModeCreation , None ), \
- (self.ui.cbt_modeCombat , "clicked()" , self.partie.plateau.plateauModeCombat , None ), \
- (self.ui.cbt_etapeSuivante , "clicked()" , self.partie.plateau.etapeSuivante , None ), \
- (self.ui.pc_listePJ , "cellClicked(int, int)" , self.partie.plateau.ajouterPj , None ), \
- (self.ui.cbt_nom , "clicked()" , self.partie.plateau.afficherEcranPlateau , None ), \
- (self.ui.cbt_afficherGestion , "clicked()" , self.partie.plateau.afficheEcranGestionCombat , None ), \
- (self.ui.pi_listeAttributs , "cellChanged(int,int)" , self.partie.plateau.listeAttributCelluleModifiee , None ), \
- (self.ui.cp_dialogueCouleurs , "clicked()" , self.partie.plateau.modePeintureCase , None ), \
- (self.ui.cp_afficherNotes , "clicked()" , self.partie.plateau.agrandirNotesMjPlateau , None ), \
- (self.ui.pi_fiche , "clicked()" , self.partie.plateau.afficherFichePion , None ), \
- (self.ui.cp_listeTerrains , "cellClicked(int,int)" , self.partie.plateau.modeMajTerrainCase , None ), \
- (self.ui.cp_listeCreatures , "cellClicked(int,int)" , self.partie.plateau.modeCreationCombattant , None ), \
- (self.ui.cp_listeDecors , "cellClicked(int,int)" , self.partie.plateau.modeCreationDecor , None ), \
- (self.ui.cp_epaisseurPinceau , "valueChanged(int)" , self.partie.plateau.majEpaisseurPinceau , None ), \
- (self.ui.cp_pipetteCouleur , "clicked()" , self.partie.plateau.modeCopieTerrain , None ), \
- (self.ui.cp_effets , "activated(int)" , self.partie.plateau.modeCaseEffet , None ), \
- (self.ui.cp_gomme , "clicked()" , self.partie.plateau.majModeSupprimerPions , None ), \
- (self.ui.cp_placerEntree , "clicked()" , self.partie.plateau.majModeDefinirEntree , None ), \
- (self.ui.cp_placerCache , "clicked()" , self.partie.plateau.majModePlacerCache , None ), \
- (self.ui.cp_placerSortie , "clicked()" , self.partie.plateau.majModeDefinirSortie , None ), \
- (self.ui.cp_defPlacement , "clicked()" , self.partie.plateau.majModeZonePlacement , None ), \
- (self.ui.pi_notes , "textChanged()" , self.partie.plateau.majNotesCombattant , None ), \
- (self.ui.cp_formeSimple , "clicked()" , self.partie.plateau.majModeForme , None ), \
- (self.ui.cp_formeLigne , "clicked()" , self.partie.plateau.majModeForme , None ), \
- (self.ui.cp_formeLigneOrientee , "clicked()" , self.partie.plateau.majModeForme , None ), \
- (self.ui.cp_formePot , "clicked()" , self.partie.plateau.majModeForme , None ), \
- (self.ui.cp_formeRectVide , "clicked()" , self.partie.plateau.majModeForme , None ), \
- (self.ui.cp_formeRectPlein , "clicked()" , self.partie.plateau.majModeForme , None ), \
- (self.ui.act_deplacement , "clicked()" , self.partie.plateau.majModeCombatDeplacement , None ), \
- (self.ui.act_attaqueCac , "clicked()" , self.partie.plateau.majModeCombatAttaqueCaC , None ), \
- (self.ui.act_attaqueDist , "clicked()" , self.partie.plateau.majModeCombatAttaqueDist , None ), \
- (self.ui.act_attaqueZone , "clicked()" , self.partie.plateau.majModeCombatZone , None )
- ]
- def connecterPlateau(self, actif = True):
- if not self.partie: return
- if not self.partie.plateau: return
-
- for w, s, f, p in self.connexionsPlateau():
- if actif:
- self.connect(w, SIGNAL(s), f, Qt.UniqueConnection)
- if p != None:
- self.mapper.setMapping( w, p )
- else:
- self.disconnect(w, SIGNAL(s))
- def ouverture(self):
- """operations menees a l'ouverture de la fenetre principale"""
- self.majAffichage()
- def rafraichir(self):
- """fonction utilisee pour forcer le repaint"""
- self.majLargeurOnglets()
- def majAffichage(self):
- actif = (self.partie != None)
- if not actif: self.ui.dm_panneauCentre.setCurrentIndex(0)
- 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; }")
- ### gestion partie
- def majPartie(self, partie):
- if partie:
- self.partie = partie
- s = sessionEnCours()
- idM = self.partie.idM() if self.partie else "defaut"
- s.majPartie(idM)
- s.enregistrer()
- self.connecterPartie()
- self.partie.afficher(self)
- self.majAffichage()
- else:
- self.partie = None
- def nouvellePartie(self):
- fen = FenetreEditionPartie()
- fen.nouvelle()
- fen.show()
- r = fen.exec_()
- if r == 1:
- self.majPartie( fen.resultat() )
- del fen
- def editerPartie(self):
- if not self.partie: return
- fen = FenetreEditionPartie()
- fen.charger(self.partie)
- fen.show()
- r = fen.exec_()
- if r == 1:
- self.majPartie( fen.resultat() )
- del fen
-
- def fermerPartie(self):
- if self.partie != None:
- self.partie.fermer()
- self.partie = None
- 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.majPartie( partie )
- ### evenements
- 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)
-
-
|