|
@@ -1,603 +1,601 @@
|
|
|
-#from __future__ import unicode_literals
|
|
|
|
|
-# -*- coding: utf-8 -*-
|
|
|
|
|
-from __future__ import division
|
|
|
|
|
-
|
|
|
|
|
-import sys
|
|
|
|
|
-
|
|
|
|
|
-from PyQt4.QtCore import SIGNAL, Qt, QString, QSize, QVariant
|
|
|
|
|
-from PyQt4.QtGui import QDialog, QColorDialog, QColor, QHBoxLayout, QFrame, \
|
|
|
|
|
- QApplication, QCheckBox
|
|
|
|
|
-
|
|
|
|
|
-import Actions
|
|
|
|
|
-from Combattant import Combattant
|
|
|
|
|
-from EcranEditionObjet import EcranEditionObjet
|
|
|
|
|
-from Objet import Objet
|
|
|
|
|
-from VueEditionForme import VueEditionForme
|
|
|
|
|
-from dialogues import dmMessage
|
|
|
|
|
-from frameAttaque import FrameAttaque
|
|
|
|
|
-from lib.Decor import Decor
|
|
|
|
|
-from lib.commun import lstLibEtats
|
|
|
|
|
-import regles
|
|
|
|
|
-from rsc import selectionImage, RImage
|
|
|
|
|
-import ui.dm as dm
|
|
|
|
|
-from ui.ecran_editionMateriel import Ui_edm_fenetre
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def nouveauCombattant():
|
|
|
|
|
- return Combattant()
|
|
|
|
|
-
|
|
|
|
|
-def nouveauDecor():
|
|
|
|
|
- return Decor()
|
|
|
|
|
-
|
|
|
|
|
-class EcranEditionMateriel(QDialog):
|
|
|
|
|
- """interface de creation/edition de terrains"""
|
|
|
|
|
- def __init__(self, mat, parent=None):
|
|
|
|
|
- """initialisation de la fenetre"""
|
|
|
|
|
- super (EcranEditionMateriel, self).__init__()
|
|
|
|
|
- self._mat = mat
|
|
|
|
|
- self._mode = "creation" if mat.position == (-1,-1) else "combat"
|
|
|
|
|
- self._sections = []
|
|
|
|
|
-
|
|
|
|
|
- def mat(self):
|
|
|
|
|
- """retourne le materiel de la fenetre"""
|
|
|
|
|
- return self._mat
|
|
|
|
|
-
|
|
|
|
|
- def mode(self):
|
|
|
|
|
- return self._mode
|
|
|
|
|
-
|
|
|
|
|
- def createWidgets(self):
|
|
|
|
|
- """construction de l'interface"""
|
|
|
|
|
- #construction de l'interface
|
|
|
|
|
- self.ui = Ui_edm_fenetre()
|
|
|
|
|
- self.ui.setupUi(self)
|
|
|
|
|
- self.connect(self.ui.edm_enregistrer, SIGNAL("clicked()"), self.valider)
|
|
|
|
|
- self.connect(self.ui.edm_annuler, SIGNAL("clicked()"), self.annuler)
|
|
|
|
|
-
|
|
|
|
|
- def toutesLesSections(self):
|
|
|
|
|
- return [EdEnTete, EdPageCreation, EdPageCombat, EdPageDeplacement, EdPageProprietes, \
|
|
|
|
|
- EdPageAttributs, EdPageAttaques, EdPageInventaire, EdPageNotes]
|
|
|
|
|
-
|
|
|
|
|
- def section(self, nom):
|
|
|
|
|
- for section in self._sections:
|
|
|
|
|
- if section.__class__.__name__ == nom: return section
|
|
|
|
|
- return None
|
|
|
|
|
-
|
|
|
|
|
- def afficher(self, pageInitiale = 0, formeCases = "H"):
|
|
|
|
|
- """affiche la fenetre"""
|
|
|
|
|
- self.createWidgets()
|
|
|
|
|
-
|
|
|
|
|
- #on instancie et on construit les sections necessaires
|
|
|
|
|
- for section in self.toutesLesSections():
|
|
|
|
|
- instance = section(self)
|
|
|
|
|
- if self.mat().typ() in instance.filtre() \
|
|
|
|
|
- and self._mode in instance.modes():
|
|
|
|
|
- self._sections.append(instance)
|
|
|
|
|
- instance.construire()
|
|
|
|
|
- if section == EdPageCreation:
|
|
|
|
|
- if formeCases == "C": self.ui.edm_casesCarrees.setChecked(True)
|
|
|
|
|
- instance.charger()
|
|
|
|
|
- else:
|
|
|
|
|
- self.ui.edm_menu.setRowHidden((self.toutesLesSections().index(section) - 1), True)
|
|
|
|
|
-
|
|
|
|
|
- self.allerAPage(pageInitiale)
|
|
|
|
|
- self.majAffichage()
|
|
|
|
|
- self.show()
|
|
|
|
|
-
|
|
|
|
|
- def allerAPage(self, index, sens = "+"):
|
|
|
|
|
- while self.ui.edm_menu.isRowHidden(index):
|
|
|
|
|
- index += 1 if sens == "+" else -1
|
|
|
|
|
- if index > self.ui.edm_menu.rowCount(): return
|
|
|
|
|
- self.ui.edm_menu.setCurrentCell(index, 0)
|
|
|
|
|
- self.ui.edm_menu.setCurrentCell(index, 1)
|
|
|
|
|
- self.ui.edm_pages.setCurrentIndex(index)
|
|
|
|
|
-
|
|
|
|
|
- def pageSuivante(self):
|
|
|
|
|
- index = self.ui.edm_menu.currentRow() + 1
|
|
|
|
|
- if index > (self.ui.edm_menu.rowCount() - 1): index = 0
|
|
|
|
|
- print index
|
|
|
|
|
- self.allerAPage(index)
|
|
|
|
|
-
|
|
|
|
|
- def pagePrecedente(self):
|
|
|
|
|
- index = self.ui.edm_menu.currentRow() - 1
|
|
|
|
|
- if index < 0: index = self.ui.edm_menu.rowCount() - 1
|
|
|
|
|
- print index
|
|
|
|
|
- self.allerAPage(index, "-")
|
|
|
|
|
-
|
|
|
|
|
- def nomModifie(self):
|
|
|
|
|
- """le nom du pion a ete modifie"""
|
|
|
|
|
- self.majAffichage()
|
|
|
|
|
- sectionForme = self.section("EdPageCreation")
|
|
|
|
|
- if sectionForme: sectionForme.majEtiquetteVueForme()
|
|
|
|
|
-
|
|
|
|
|
- def logoModifie(self):
|
|
|
|
|
- """le logo du pion a ete modifie"""
|
|
|
|
|
- sectionForme = self.section("EdPageCreation")
|
|
|
|
|
- if sectionForme: sectionForme.logoModifie()
|
|
|
|
|
-
|
|
|
|
|
- #### barre d'outils
|
|
|
|
|
- def majAffichage(self):
|
|
|
|
|
- """verifie la validite des saisies"""
|
|
|
|
|
- self.ui.edm_enregistrer.setEnabled(len(self.ui.edm_nom.texte()) > 0)
|
|
|
|
|
-
|
|
|
|
|
- def valider(self):
|
|
|
|
|
- """enregistre le materiel cree/edite"""
|
|
|
|
|
- for section in self._sections:
|
|
|
|
|
- section.enregistrer()
|
|
|
|
|
- self.done(1)
|
|
|
|
|
-
|
|
|
|
|
- def annuler(self):
|
|
|
|
|
- """annule la creation/edition"""
|
|
|
|
|
- self._mat = None
|
|
|
|
|
- self.done(0)
|
|
|
|
|
-
|
|
|
|
|
- def wheelEvent(self, event):
|
|
|
|
|
- if event.delta() < 0:
|
|
|
|
|
- self.pageSuivante()
|
|
|
|
|
- return
|
|
|
|
|
- elif event.delta() > 0:
|
|
|
|
|
- self.pagePrecedente()
|
|
|
|
|
- return
|
|
|
|
|
- return QDialog.wheelEvent(self, event)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-class EdSectionBase(object):
|
|
|
|
|
- """classe de base pour les differentes sections de l'ecran d'edition des pions"""
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- self.ecran = ecran
|
|
|
|
|
- self._filtre = []
|
|
|
|
|
- self._modes = ["creation", "combat"]
|
|
|
|
|
-
|
|
|
|
|
- def filtre(self):
|
|
|
|
|
- """liste des classes de materiel concernees par cette section"""
|
|
|
|
|
- return self._filtre
|
|
|
|
|
-
|
|
|
|
|
- def modes(self):
|
|
|
|
|
- return self._modes
|
|
|
|
|
-
|
|
|
|
|
- def ui(self):
|
|
|
|
|
- return self.ecran.ui
|
|
|
|
|
-
|
|
|
|
|
- def mat(self):
|
|
|
|
|
- return self.ecran.mat()
|
|
|
|
|
-
|
|
|
|
|
- def construire(self):
|
|
|
|
|
- """construit et met en forme"""
|
|
|
|
|
- pass
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- """charge les donnees du materiel dans la section"""
|
|
|
|
|
- pass
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- """met a jour le materiel en fonction des donnees saisies"""
|
|
|
|
|
- pass
|
|
|
|
|
-
|
|
|
|
|
-class EdEnTete(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdEnTete, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["cb", "dc"]
|
|
|
|
|
-
|
|
|
|
|
- def construire(self):
|
|
|
|
|
- if self.ecran.mode() == "creation":
|
|
|
|
|
- self.ecran.connect(self.ui().edm_logo, SIGNAL("clicked()"), self.selectionnerLogo)
|
|
|
|
|
- self.ecran.connect(self.ui().edm_nom, SIGNAL("textEdited(QString)"), self.ecran.nomModifie)
|
|
|
|
|
- else:
|
|
|
|
|
- self.ui().edm_nom.setEnabled(False)
|
|
|
|
|
- self.majLibelleMode()
|
|
|
|
|
-
|
|
|
|
|
- def majLibelleMode(self):
|
|
|
|
|
- if self.mat().typ() == "cb":
|
|
|
|
|
- txt1 = "Fiche de personnage"
|
|
|
|
|
- else:
|
|
|
|
|
- txt1 = "Fiche du decor"
|
|
|
|
|
- txt2 = " Creation" if self.ecran.mode() == "creation" else "Combat"
|
|
|
|
|
- self.ui().edm_mode.majTexte((txt1 + " : " + txt2).upper())
|
|
|
|
|
- couleur = "rgb(180,60,50)" if self.ecran.mode() == "combat" else "rgb(20,20,150)"
|
|
|
|
|
- self.ui().edm_enTete.setStyleSheet(QString("#edm_mode {color: "+couleur+";}"))
|
|
|
|
|
-
|
|
|
|
|
- def selectionnerLogo(self):
|
|
|
|
|
- img = selectionImage()
|
|
|
|
|
- if img:
|
|
|
|
|
- self.ui().edm_logo.chargerImage(img)
|
|
|
|
|
- self.ecran.logoModifie()
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- self.ui().edm_nom.majTexte(self.mat().nom())
|
|
|
|
|
- if self.mat().logo.estValide():
|
|
|
|
|
- self.ui().edm_logo.chargerImage(self.mat().logo)
|
|
|
|
|
- else:
|
|
|
|
|
- self.ui().edm_logo.majTexte("Choisissez \nun fichier\nimage")
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- self.mat().majNom(self.ui().edm_nom.texte())
|
|
|
|
|
- self.mat().logo = self.ui().edm_logo.image() if self.ui().edm_logo.image() else RImage()
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-class EdPageCreation(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdPageCreation, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["cb", "dc"]
|
|
|
|
|
- self._modes = ["creation"]
|
|
|
|
|
-
|
|
|
|
|
- def construire(self):
|
|
|
|
|
- self.vueForme = VueEditionForme(self.ui().edm_vueForme)
|
|
|
|
|
- self.ecran.connect(self.ui().edm_aideForme, SIGNAL("clicked()"), self.afficherAideForme)
|
|
|
|
|
- self.ecran.connect(self.ui().edm_casesHexa, SIGNAL("clicked()"), self.majFormeCases)
|
|
|
|
|
- self.ecran.connect(self.ui().edm_casesCarrees, SIGNAL("clicked()"), self.majFormeCases)
|
|
|
|
|
- self.ecran.connect(self.ui().edm_couleur, SIGNAL("clicked()"), self.selectionCouleur)
|
|
|
|
|
- self.ecran.connect(self.ui().edm_image, SIGNAL("clicked()"), self.selectionImage)
|
|
|
|
|
-
|
|
|
|
|
- def formeCases(self):
|
|
|
|
|
- return "H" if self.ui().edm_casesHexa.isChecked() else "C"
|
|
|
|
|
-
|
|
|
|
|
- def majFormeCases(self):
|
|
|
|
|
- if self.vueForme.formeCases() != self.ecran.formeCases():
|
|
|
|
|
- #on enregistre la def de forme, d'image et d'etiquette en cours
|
|
|
|
|
- self.mat().formeDef[self.vueForme.formeCases()] = self.vueForme.formeDef()
|
|
|
|
|
- self.mat().img = self.vueForme.imageDef()
|
|
|
|
|
- self.mat().etiquette = self.vueForme.etiquetteDef()
|
|
|
|
|
-
|
|
|
|
|
- #on recree la scene avec la nouvelle forme de cases
|
|
|
|
|
- self.vueForme.vider()
|
|
|
|
|
- self.vueForme.creer(self.ecran.formeCases())
|
|
|
|
|
-
|
|
|
|
|
- #on charge les def correspondantes a la nouvelle forme
|
|
|
|
|
- self.vueForme.chargerFormeDef(self.mat().formeDef[self.formeCases()])
|
|
|
|
|
- self.vueForme.chargerImageDef(self.mat().img)
|
|
|
|
|
- self.vueForme.chargerEtiquetteDef(self.mat().etiquette)
|
|
|
|
|
-
|
|
|
|
|
- def majEtiquetteVueForme(self):
|
|
|
|
|
- self.mat().etiquette.txt = self.ui().edm_nom.texte()
|
|
|
|
|
- self.vueForme.chargerEtiquetteDef(self.mat().etiquette)
|
|
|
|
|
-
|
|
|
|
|
- def logoModifie(self):
|
|
|
|
|
- self.vueForme.nouvelleImageDef(self.ui().edm_logo.image())
|
|
|
|
|
-
|
|
|
|
|
- def selectionImage(self):
|
|
|
|
|
- """selectionne le fichier image dans la boite de dialogue dediee"""
|
|
|
|
|
- img = selectionImage()
|
|
|
|
|
- if img:
|
|
|
|
|
- self.vueForme.nouvelleImageDef(img)
|
|
|
|
|
-
|
|
|
|
|
- def selectionCouleur(self):
|
|
|
|
|
- """selectionne la couleur dans la boite de dialogue dediee"""
|
|
|
|
|
- couleur = QColorDialog(self.ecran).getColor(QColor("white"), self.ecran)
|
|
|
|
|
- if couleur.isValid():
|
|
|
|
|
- self.mat().couleur = couleur
|
|
|
|
|
- self.vueForme.majCouleur(couleur)
|
|
|
|
|
-
|
|
|
|
|
- def afficherAideForme(self):
|
|
|
|
|
- msg = "Sur l'écran ci-contre, vous pouvez éditer la forme et l'apparence de votre pion. Vous pouvez: \n\n" \
|
|
|
|
|
- "Choisir la couleur du pion \n" \
|
|
|
|
|
- "Choisir une image (qui remplacera alors le logo sur le pion) \n" \
|
|
|
|
|
- "Deplacer l'etiquette et l'image sur le pion en cliquant dessus \n" \
|
|
|
|
|
- "Faire pivoter l'image avec [FLECHE HAUT] et [FLECHE BAS] \n" \
|
|
|
|
|
- "Modifier la taille de l'image avec [FLECHE GAUCHE] et [FLECHE DROITE] \n" \
|
|
|
|
|
- "Activer desactiver l'etiquette en gras avec [G] \n" \
|
|
|
|
|
- "Modifier la taille de la police avec [FLECHE HAUT] et [FLECHE BAS]"
|
|
|
|
|
- dmMessage(msg)
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- self.vueForme.creer(self.formeCases())
|
|
|
|
|
- self.vueForme.autoriserModifForme(True)
|
|
|
|
|
- self.vueForme.majCouleur(self.mat().couleur)
|
|
|
|
|
- self.vueForme.chargerFormeDef(self.mat().formeDef[self.formeCases()])
|
|
|
|
|
- self.vueForme.chargerImageDef(self.mat().img)
|
|
|
|
|
- self.vueForme.chargerEtiquetteDef(self.mat().etiquette)
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- self.mat().formeDef[self.vueForme.formeCases()] = self.vueForme.formeDef()
|
|
|
|
|
- self.mat().img = self.vueForme.imageDef()
|
|
|
|
|
- self.mat().etiquette = self.vueForme.etiquetteDef()
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-class EdPageCombat(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdPageCombat, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["cb", "dc"]
|
|
|
|
|
- self._modes = ["combat"]
|
|
|
|
|
-
|
|
|
|
|
- def construire(self):
|
|
|
|
|
- #etat
|
|
|
|
|
- dico = lstLibEtats(self.mat().typ())
|
|
|
|
|
- for num in dico:
|
|
|
|
|
- self.ui().edm_etat.addItem(QString.fromUtf8(dico[num]), QVariant(num))
|
|
|
|
|
- self.ui().edm_etat.setCurrentIndex(0)
|
|
|
|
|
-
|
|
|
|
|
- #statuts
|
|
|
|
|
- if self.mat().typ() == "dc":
|
|
|
|
|
- self.ui().edm_statut0.setVisible(False)
|
|
|
|
|
- self.ui().edm_statut1.setVisible(False)
|
|
|
|
|
- self.ui().edm_statut2.setVisible(False)
|
|
|
|
|
- self.ui().edm_statut3.setVisible(False)
|
|
|
|
|
- self.ui().edm_effets.setVisible(False);self.ui().edm_effets_lbl.setVisible(False)
|
|
|
|
|
- self.ui().edm_actions_lbl.setVisible(False)
|
|
|
|
|
- else:
|
|
|
|
|
- self.ui().edm_statut5.setVisible(False)
|
|
|
|
|
-# self.ui().edm_layoutStatuts.update()
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- self.ui().edm_etat.setCurrentIndex(self.ui().edm_etat.findData(QVariant(self.mat().etat)))
|
|
|
|
|
-
|
|
|
|
|
- for statut in self.mat().statuts:
|
|
|
|
|
- case = self.ui().page_cbt.findChild(QCheckBox, "edm_statut{}".format(statut))
|
|
|
|
|
- if case: case.setChecked(True)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- self.mat().etat = self.ui().edm_etat.itemData(self.ui().edm_etat.currentIndex()).toInt()[0]
|
|
|
|
|
-
|
|
|
|
|
- self.mat().statuts = []
|
|
|
|
|
- for i in range(0, 6):
|
|
|
|
|
- case = self.ui().page_cbt.findChild(QCheckBox, "edm_statut{}".format(i))
|
|
|
|
|
- if case:
|
|
|
|
|
- if case.isChecked(): self.mat().statuts.append(i)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-class EdPageDeplacement(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdPageDeplacement, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["cb"]
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- self.ui().edm_taille.setValue(self.mat().h)
|
|
|
|
|
- self.ui().edm_depMarche.setValue(self.mat().depMarche)
|
|
|
|
|
- self.ui().edm_depNage.setValue(self.mat().depNage)
|
|
|
|
|
- self.ui().edm_depEscalade.setValue(self.mat().depEscalade)
|
|
|
|
|
- self.ui().edm_depVol.setValue(self.mat().depVol)
|
|
|
|
|
- self.ui().edm_saut.setValue(self.mat().saut)
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- self.mat().h = self.ui().edm_taille.value()
|
|
|
|
|
- self.mat().depMarche = self.ui().edm_depMarche.value()
|
|
|
|
|
- self.mat().depNage = self.ui().edm_depNage.value()
|
|
|
|
|
- self.mat().depEscalade = self.ui().edm_depEscalade.value()
|
|
|
|
|
- self.mat().depVol = self.ui().edm_depVol.value()
|
|
|
|
|
- self.mat().saut = self.ui().edm_saut.value()
|
|
|
|
|
-
|
|
|
|
|
-class EdPageProprietes(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdPageProprietes, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["dc"]
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- self.ui().edm_hauteur.setValue(self.mat().h)
|
|
|
|
|
- self.ui().edm_hauteurPlafond.setChecked(self.mat().hMax)
|
|
|
|
|
- self.ui().edm_escalade.setChecked(self.mat().escalade)
|
|
|
|
|
- self.ui().edm_inflammable.setChecked(self.mat().inflammable)
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- self.mat().h = self.ui().edm_hauteur.value()
|
|
|
|
|
- self.mat().hMax = self.ui().edm_hauteurPlafond.isChecked()
|
|
|
|
|
- self.mat().escalade = self.ui().edm_escalade.isChecked()
|
|
|
|
|
- self.mat().brule = self.ui().edm_inflammable.isChecked()
|
|
|
|
|
-
|
|
|
|
|
-class EdPageAttributs(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdPageAttributs, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["cb"]
|
|
|
|
|
- self._modes = ["creation", "combat"]
|
|
|
|
|
-
|
|
|
|
|
- def layoutCarac(self):
|
|
|
|
|
- """retourne le layout des attributs"""
|
|
|
|
|
- return self.ecran.ui.edm_deroulementAttributs_layout
|
|
|
|
|
-
|
|
|
|
|
- def construire(self):
|
|
|
|
|
- """construit les champs d'attributs"""
|
|
|
|
|
- """cree les champs dedies a la saisie des attributs dans la grille dediee"""
|
|
|
|
|
- self.layoutCarac().setSpacing(4)
|
|
|
|
|
- self.layoutCarac().setMargin(0)
|
|
|
|
|
-
|
|
|
|
|
- for nomAttribut in regles.ordreAttributsFichePerso():
|
|
|
|
|
- if len(nomAttribut) > 0:
|
|
|
|
|
- lay = QHBoxLayout()
|
|
|
|
|
- lay.setMargin(0)
|
|
|
|
|
- lay.setSpacing(2)
|
|
|
|
|
-
|
|
|
|
|
- etiquette = dm.DmLabel()
|
|
|
|
|
- etiquette.majTexte(regles.attribut(nomAttribut).nom)
|
|
|
|
|
- etiquette.setObjectName("{}_etiquette".format(nomAttribut))
|
|
|
|
|
- etiquette.setAlignment(Qt.AlignLeft|Qt.AlignVCenter)
|
|
|
|
|
- etiquette.setMinimumSize(QSize(110, 24))
|
|
|
|
|
- etiquette.setMaximumSize(QSize(110, 24))
|
|
|
|
|
- lay.addWidget(etiquette)
|
|
|
|
|
-
|
|
|
|
|
- champ = dm.DmLineEdit()
|
|
|
|
|
- champ.setMinimumSize(QSize(80, 24))
|
|
|
|
|
- champ.setMaximumSize(QSize(80, 24))
|
|
|
|
|
- champ.setAlignment(Qt.AlignCenter)
|
|
|
|
|
- champ.majTexte(regles.listeAttributs()[nomAttribut])
|
|
|
|
|
- champ.setObjectName("{}_champ".format(nomAttribut))
|
|
|
|
|
- champ.setStyleSheet("background-color: rgb({},{},{});".format(248,248,248))
|
|
|
|
|
- ## self.connect(champ, SIGNAL("textChanged()"), self.controlerAttribut)
|
|
|
|
|
- lay.addWidget(champ)
|
|
|
|
|
-
|
|
|
|
|
- self.layoutCarac().addLayout(lay)
|
|
|
|
|
- else:
|
|
|
|
|
- lay = QHBoxLayout()
|
|
|
|
|
- etiquetteVide = dm.DmLabel()
|
|
|
|
|
- etiquetteVide.setMinimumHeight(9)
|
|
|
|
|
- etiquetteVide.setMaximumHeight(9)
|
|
|
|
|
- lay.addWidget(etiquetteVide)
|
|
|
|
|
- lay.addWidget(etiquetteVide)
|
|
|
|
|
- self.layoutCarac().addLayout(lay)
|
|
|
|
|
-
|
|
|
|
|
- def listeAttributs(self):
|
|
|
|
|
- """renvoie la liste des attributs tels qu'ils
|
|
|
|
|
- sont saisis dans la liste des attributs"""
|
|
|
|
|
- attributs = regles.listeAttributs()
|
|
|
|
|
- for i in range(0, self.layoutCarac().count()):
|
|
|
|
|
- layout = self.layoutCarac().itemAt(i).layout()
|
|
|
|
|
- widget = layout.itemAt(1).widget()
|
|
|
|
|
- if widget != 0 and widget != None:
|
|
|
|
|
- if str(widget.objectName()[-6:]) == "_champ":
|
|
|
|
|
- attr = str(widget.objectName()[:-6])
|
|
|
|
|
- attributs[attr] = widget.texte()
|
|
|
|
|
- return attributs
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- """met a jour la liste des attributs du Combattant"""
|
|
|
|
|
- for i in range(0, self.layoutCarac().count()):
|
|
|
|
|
- layout = self.layoutCarac().itemAt(i).layout()
|
|
|
|
|
- widget = layout.itemAt(1).widget()
|
|
|
|
|
- if widget != 0:
|
|
|
|
|
- if str(widget.objectName()[-6:]) == "_champ":
|
|
|
|
|
- attr = str(widget.objectName()[:-6])
|
|
|
|
|
- widget.majTexte(self.ecran.mat().listeAttributs[attr])
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- self.mat().attributs = self.listeAttributs()
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-class EdPageAttaques(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdPageAttaques, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["cb"]
|
|
|
|
|
- self._compteurAttaque = 0
|
|
|
|
|
-
|
|
|
|
|
- def layoutAtt(self):
|
|
|
|
|
- """retourne le layout des attaques"""
|
|
|
|
|
- return self.ecran.ui.edm_deroulementAttaques_layout
|
|
|
|
|
-
|
|
|
|
|
- def construire(self):
|
|
|
|
|
- self.layoutAtt().setAlignment(Qt.AlignLeft)
|
|
|
|
|
-
|
|
|
|
|
- def attaqueNouvelle(self, attaque = None):
|
|
|
|
|
- """ajoute une nouvelle ligne a la liste des attaques"""
|
|
|
|
|
- #on ajoute de suite un panneau 'nouvelle attaque en dessous'
|
|
|
|
|
- self._compteurAttaque += 1
|
|
|
|
|
- panneau = FrameAttaque(self._compteurAttaque)
|
|
|
|
|
- if attaque: panneau.chargerAttaque(attaque)
|
|
|
|
|
- panneau.setObjectName(QString("att_frame_{}".format(self._compteurAttaque)))
|
|
|
|
|
- self.ecran.connect(panneau, SIGNAL("attaqueNouvelle()"), self.attaqueNouvelle)
|
|
|
|
|
- self.ecran.connect(panneau, SIGNAL("attaqueSupprimer(int)"), self.attaqueSupprimer)
|
|
|
|
|
- self.layoutAtt().addWidget(panneau)
|
|
|
|
|
-
|
|
|
|
|
- def attaqueSupprimer(self, index):
|
|
|
|
|
- """supprime la ligne selectionnee de la liste des attaques"""
|
|
|
|
|
- panneau = self.findChild(QFrame, "att_frame_{}".format(index))
|
|
|
|
|
- self.layoutAtt().removeWidget(panneau)
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- self.layoutAtt().setAlignment(Qt.AlignTop)
|
|
|
|
|
- for attaque in self.mat().attaques:
|
|
|
|
|
- self.attaqueNouvelle(attaque)
|
|
|
|
|
- self.attaqueNouvelle()
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- listeAttaques = []
|
|
|
|
|
- for i in range(0, self.layoutAtt().count()):
|
|
|
|
|
- panneau = self.layoutAtt().itemAt(i).widget()
|
|
|
|
|
- if panneau != 0:
|
|
|
|
|
- attaque = panneau.attaque()
|
|
|
|
|
- if attaque:
|
|
|
|
|
- listeAttaques.append(attaque)
|
|
|
|
|
- self.mat().attaques = listeAttaques
|
|
|
|
|
-
|
|
|
|
|
-class EdPageInventaire(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdPageInventaire, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["cb", "dc"]
|
|
|
|
|
-
|
|
|
|
|
- def construire(self):
|
|
|
|
|
- self.ecran.ui.edm_listeInventaire.construire()
|
|
|
|
|
- self.ecran.connect(self.ecran.ui.edm_filtreTypeObjet, SIGNAL("currentChanged(int)"), self.filtrerInventaire)
|
|
|
|
|
- self.ecran.ui.edm_filtreTypeObjet.stackUnder(self.ecran.ui.edm_listeInventaire)
|
|
|
|
|
- self.ecran.connect(self.ecran.ui.edm_listeInventaire, SIGNAL("objetClique(int)"), self.editerObjet)
|
|
|
|
|
-
|
|
|
|
|
- def editerObjet(self, indexObjet):
|
|
|
|
|
- if indexObjet < len(self.ecran.ui.edm_listeInventaire.inventaire()):
|
|
|
|
|
- objet = self.ecran.ui.edm_listeInventaire.inventaire()[indexObjet]
|
|
|
|
|
- else:
|
|
|
|
|
- objet = None
|
|
|
|
|
- typeObjet = self.ecran.ui.edm_filtreTypeObjet.currentIndex() - 1
|
|
|
|
|
-
|
|
|
|
|
- self.fenetreEO = EcranEditionObjet(objet, typeObjet)
|
|
|
|
|
- self.fenetreEO.show()
|
|
|
|
|
- self.fenetreEO.exec_()
|
|
|
|
|
- resultat = self.fenetreEO.resultat()
|
|
|
|
|
-
|
|
|
|
|
- if resultat:
|
|
|
|
|
- if objet:
|
|
|
|
|
- self.ecran.ui.edm_listeInventaire.majObjet(objet, resultat)
|
|
|
|
|
- else:
|
|
|
|
|
- self.ecran.ui.edm_listeInventaire.ajouterObjet(resultat)
|
|
|
|
|
- else:
|
|
|
|
|
- if objet:
|
|
|
|
|
- self.ecran.ui.edm_listeInventaire.supprimerObjet(objet)
|
|
|
|
|
-
|
|
|
|
|
- self.fenetreEO = None
|
|
|
|
|
- self.majTotauxInventaire()
|
|
|
|
|
-
|
|
|
|
|
- def majTotauxInventaire(self):
|
|
|
|
|
- inv = self.ecran.ui.edm_listeInventaire.inventaire()
|
|
|
|
|
- poidsTotal = 0.00
|
|
|
|
|
- for obj in inv:
|
|
|
|
|
- poidsTotal += obj.poidsTotal()
|
|
|
|
|
- self.ecran.ui.edm_inventaire_poids.majTexte("{} kg".format(poidsTotal))
|
|
|
|
|
-
|
|
|
|
|
- def filtrerInventaire(self, index):
|
|
|
|
|
- filtre = index - 1
|
|
|
|
|
- self.ecran.ui.edm_listeInventaire.filtrer(filtre)
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- self.ui().edm_listeInventaire.charger(self.mat().inventaire)
|
|
|
|
|
- self.majTotauxInventaire()
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- self.mat().inventaire = self.ui().edm_listeInventaire.inventaire()
|
|
|
|
|
-
|
|
|
|
|
-class EdPageNotes(EdSectionBase):
|
|
|
|
|
- def __init__(self, ecran):
|
|
|
|
|
- super(EdPageNotes, self).__init__(ecran)
|
|
|
|
|
- self._filtre = ["cb", "dc"]
|
|
|
|
|
-
|
|
|
|
|
- def construire(self):
|
|
|
|
|
- if self.mat().typ() == "dc":
|
|
|
|
|
- self.ui().edm_detail_espece.setVisible(False);self.ui().edm_lbl_espece.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_profession.setVisible(False);self.ui().edm_lbl_profession.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_religion.setVisible(False);self.ui().edm_lbl_religion.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_lieuNaissance.setVisible(False);self.ui().edm_lbl_lieuNaissance.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_espece.setVisible(False);self.ui().edm_lbl_espece.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_sexe.setVisible(False);self.ui().edm_lbl_sexe.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_yeux.setVisible(False);self.ui().edm_lbl_yeux.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_peau.setVisible(False);self.ui().edm_lbl_peau.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_cheveux.setVisible(False);self.ui().edm_lbl_cheveux.setVisible(False)
|
|
|
|
|
- self.ui().edm_detail_langues.setVisible(False);self.ui().edm_lbl_langues.setVisible(False)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- def layout(self):
|
|
|
|
|
- return self.ui().edm_layoutNotes
|
|
|
|
|
-
|
|
|
|
|
- def charger(self):
|
|
|
|
|
- for detail in self.mat().details:
|
|
|
|
|
- widget = self.ui().edm_pages.findChild(dm.DmLineEdit, "edm_detail_{}".format(detail))
|
|
|
|
|
- if widget: widget.majTexte(self.mat().details[detail])
|
|
|
|
|
-# self.ui().edm_notes.setText(QString.fromUtf8(self.mat().notes))
|
|
|
|
|
-
|
|
|
|
|
- def enregistrer(self):
|
|
|
|
|
- listeWidget = self.ui().edm_pages.findChildren(dm.DmLineEdit)
|
|
|
|
|
- for widget in listeWidget:
|
|
|
|
|
- detail = str(widget.objectName()).replace("edm_detail_","")
|
|
|
|
|
- txt = widget.texte()
|
|
|
|
|
- if len(txt) > 0: self.mat().details[detail] = txt
|
|
|
|
|
-
|
|
|
|
|
-# self.mat().notes = str(self.ui().edm_notes.toPlainText().toUtf8())
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-if __name__ == "__main__":
|
|
|
|
|
- app = QApplication(sys.argv)
|
|
|
|
|
- mat = Combattant()
|
|
|
|
|
-# mat.position = (1,1)
|
|
|
|
|
- ecran = EcranEditionMateriel(mat)
|
|
|
|
|
- ecran.afficher()
|
|
|
|
|
- r = app.exec_()
|
|
|
|
|
- mat = ecran.mat()
|
|
|
|
|
- exit(r)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+#from __future__ import unicode_literals
|
|
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
|
|
+from __future__ import division
|
|
|
|
|
+
|
|
|
|
|
+import sys
|
|
|
|
|
+
|
|
|
|
|
+from PyQt4.QtCore import SIGNAL, Qt, QString, QSize, QVariant
|
|
|
|
|
+from PyQt4.QtGui import QDialog, QColorDialog, QColor, QHBoxLayout, QFrame, \
|
|
|
|
|
+ QApplication, QCheckBox
|
|
|
|
|
+
|
|
|
|
|
+import Actions
|
|
|
|
|
+from Combattant import Combattant
|
|
|
|
|
+from EcranEditionObjet import EcranEditionObjet
|
|
|
|
|
+from Objet import Objet
|
|
|
|
|
+from VueEditionForme import VueEditionForme
|
|
|
|
|
+from dialogues import dmMessage
|
|
|
|
|
+from frameAttaque import FrameAttaque
|
|
|
|
|
+from lib.Decor import Decor
|
|
|
|
|
+from lib.commun import lstLibEtats
|
|
|
|
|
+import regles
|
|
|
|
|
+from rsc import selectionImage, RImage
|
|
|
|
|
+import ui.dm as dm
|
|
|
|
|
+from ui.ecran_editionMateriel import Ui_edm_fenetre
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def nouveauCombattant():
|
|
|
|
|
+ return Combattant()
|
|
|
|
|
+
|
|
|
|
|
+def nouveauDecor():
|
|
|
|
|
+ return Decor()
|
|
|
|
|
+
|
|
|
|
|
+class EcranEditionMateriel(QDialog):
|
|
|
|
|
+ """interface de creation/edition de terrains"""
|
|
|
|
|
+ def __init__(self, mat, parent=None):
|
|
|
|
|
+ """initialisation de la fenetre"""
|
|
|
|
|
+ super (EcranEditionMateriel, self).__init__()
|
|
|
|
|
+ self._mat = mat
|
|
|
|
|
+ self._mode = "creation" if mat.position == (-1,-1) else "combat"
|
|
|
|
|
+ self._sections = []
|
|
|
|
|
+
|
|
|
|
|
+ def mat(self):
|
|
|
|
|
+ """retourne le materiel de la fenetre"""
|
|
|
|
|
+ return self._mat
|
|
|
|
|
+
|
|
|
|
|
+ def mode(self):
|
|
|
|
|
+ return self._mode
|
|
|
|
|
+
|
|
|
|
|
+ def createWidgets(self):
|
|
|
|
|
+ """construction de l'interface"""
|
|
|
|
|
+ #construction de l'interface
|
|
|
|
|
+ self.ui = Ui_edm_fenetre()
|
|
|
|
|
+ self.ui.setupUi(self)
|
|
|
|
|
+ self.connect(self.ui.edm_enregistrer, SIGNAL("clicked()"), self.valider)
|
|
|
|
|
+ self.connect(self.ui.edm_annuler, SIGNAL("clicked()"), self.annuler)
|
|
|
|
|
+
|
|
|
|
|
+ def toutesLesSections(self):
|
|
|
|
|
+ return [EdEnTete, EdPageCreation, EdPageCombat, EdPageDeplacement, EdPageProprietes, \
|
|
|
|
|
+ EdPageAttributs, EdPageAttaques, EdPageInventaire, EdPageNotes]
|
|
|
|
|
+
|
|
|
|
|
+ def section(self, nom):
|
|
|
|
|
+ for section in self._sections:
|
|
|
|
|
+ if section.__class__.__name__ == nom: return section
|
|
|
|
|
+ return None
|
|
|
|
|
+
|
|
|
|
|
+ def afficher(self, pageInitiale = 0, formeCases = "H"):
|
|
|
|
|
+ """affiche la fenetre"""
|
|
|
|
|
+ self.createWidgets()
|
|
|
|
|
+
|
|
|
|
|
+ #on instancie et on construit les sections necessaires
|
|
|
|
|
+ for section in self.toutesLesSections():
|
|
|
|
|
+ instance = section(self)
|
|
|
|
|
+ if self.mat().typ() in instance.filtre() \
|
|
|
|
|
+ and self._mode in instance.modes():
|
|
|
|
|
+ self._sections.append(instance)
|
|
|
|
|
+ instance.construire()
|
|
|
|
|
+ if section == EdPageCreation:
|
|
|
|
|
+ if formeCases == "C": self.ui.edm_casesCarrees.setChecked(True)
|
|
|
|
|
+ instance.charger()
|
|
|
|
|
+ else:
|
|
|
|
|
+ self.ui.edm_menu.setRowHidden((self.toutesLesSections().index(section) - 1), True)
|
|
|
|
|
+
|
|
|
|
|
+ self.allerAPage(pageInitiale)
|
|
|
|
|
+ self.majAffichage()
|
|
|
|
|
+ self.show()
|
|
|
|
|
+
|
|
|
|
|
+ def allerAPage(self, index, sens = "+"):
|
|
|
|
|
+ while self.ui.edm_menu.isRowHidden(index):
|
|
|
|
|
+ index += 1 if sens == "+" else -1
|
|
|
|
|
+ if index > self.ui.edm_menu.rowCount(): return
|
|
|
|
|
+ self.ui.edm_menu.setCurrentCell(index, 0)
|
|
|
|
|
+ self.ui.edm_menu.setCurrentCell(index, 1)
|
|
|
|
|
+ self.ui.edm_pages.setCurrentIndex(index)
|
|
|
|
|
+
|
|
|
|
|
+ def pageSuivante(self):
|
|
|
|
|
+ index = self.ui.edm_menu.currentRow() + 1
|
|
|
|
|
+ if index > (self.ui.edm_menu.rowCount() - 1): index = 0
|
|
|
|
|
+ self.allerAPage(index)
|
|
|
|
|
+
|
|
|
|
|
+ def pagePrecedente(self):
|
|
|
|
|
+ index = self.ui.edm_menu.currentRow() - 1
|
|
|
|
|
+ if index < 0: index = self.ui.edm_menu.rowCount() - 1
|
|
|
|
|
+ self.allerAPage(index, "-")
|
|
|
|
|
+
|
|
|
|
|
+ def nomModifie(self):
|
|
|
|
|
+ """le nom du pion a ete modifie"""
|
|
|
|
|
+ self.majAffichage()
|
|
|
|
|
+ sectionForme = self.section("EdPageCreation")
|
|
|
|
|
+ if sectionForme: sectionForme.majEtiquetteVueForme()
|
|
|
|
|
+
|
|
|
|
|
+ def logoModifie(self):
|
|
|
|
|
+ """le logo du pion a ete modifie"""
|
|
|
|
|
+ sectionForme = self.section("EdPageCreation")
|
|
|
|
|
+ if sectionForme: sectionForme.logoModifie()
|
|
|
|
|
+
|
|
|
|
|
+ #### barre d'outils
|
|
|
|
|
+ def majAffichage(self):
|
|
|
|
|
+ """verifie la validite des saisies"""
|
|
|
|
|
+ self.ui.edm_enregistrer.setEnabled(len(self.ui.edm_nom.texte()) > 0)
|
|
|
|
|
+
|
|
|
|
|
+ def valider(self):
|
|
|
|
|
+ """enregistre le materiel cree/edite"""
|
|
|
|
|
+ for section in self._sections:
|
|
|
|
|
+ section.enregistrer()
|
|
|
|
|
+ self.done(1)
|
|
|
|
|
+
|
|
|
|
|
+ def annuler(self):
|
|
|
|
|
+ """annule la creation/edition"""
|
|
|
|
|
+ self._mat = None
|
|
|
|
|
+ self.done(0)
|
|
|
|
|
+
|
|
|
|
|
+ def wheelEvent(self, event):
|
|
|
|
|
+ if event.delta() < 0:
|
|
|
|
|
+ self.pageSuivante()
|
|
|
|
|
+ return
|
|
|
|
|
+ elif event.delta() > 0:
|
|
|
|
|
+ self.pagePrecedente()
|
|
|
|
|
+ return
|
|
|
|
|
+ return QDialog.wheelEvent(self, event)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class EdSectionBase(object):
|
|
|
|
|
+ """classe de base pour les differentes sections de l'ecran d'edition des pions"""
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ self.ecran = ecran
|
|
|
|
|
+ self._filtre = []
|
|
|
|
|
+ self._modes = ["creation", "combat"]
|
|
|
|
|
+
|
|
|
|
|
+ def filtre(self):
|
|
|
|
|
+ """liste des classes de materiel concernees par cette section"""
|
|
|
|
|
+ return self._filtre
|
|
|
|
|
+
|
|
|
|
|
+ def modes(self):
|
|
|
|
|
+ return self._modes
|
|
|
|
|
+
|
|
|
|
|
+ def ui(self):
|
|
|
|
|
+ return self.ecran.ui
|
|
|
|
|
+
|
|
|
|
|
+ def mat(self):
|
|
|
|
|
+ return self.ecran.mat()
|
|
|
|
|
+
|
|
|
|
|
+ def construire(self):
|
|
|
|
|
+ """construit et met en forme"""
|
|
|
|
|
+ pass
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ """charge les donnees du materiel dans la section"""
|
|
|
|
|
+ pass
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ """met a jour le materiel en fonction des donnees saisies"""
|
|
|
|
|
+ pass
|
|
|
|
|
+
|
|
|
|
|
+class EdEnTete(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdEnTete, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["cb", "dc"]
|
|
|
|
|
+
|
|
|
|
|
+ def construire(self):
|
|
|
|
|
+ if self.ecran.mode() == "creation":
|
|
|
|
|
+ self.ecran.connect(self.ui().edm_logo, SIGNAL("clicked()"), self.selectionnerLogo)
|
|
|
|
|
+ self.ecran.connect(self.ui().edm_nom, SIGNAL("textEdited(QString)"), self.ecran.nomModifie)
|
|
|
|
|
+ else:
|
|
|
|
|
+ self.ui().edm_nom.setEnabled(False)
|
|
|
|
|
+ self.majLibelleMode()
|
|
|
|
|
+
|
|
|
|
|
+ def majLibelleMode(self):
|
|
|
|
|
+ if self.mat().typ() == "cb":
|
|
|
|
|
+ txt1 = "Fiche de personnage"
|
|
|
|
|
+ else:
|
|
|
|
|
+ txt1 = "Fiche du decor"
|
|
|
|
|
+ txt2 = " Creation" if self.ecran.mode() == "creation" else "Combat"
|
|
|
|
|
+ self.ui().edm_mode.majTexte((txt1 + " : " + txt2).upper())
|
|
|
|
|
+ couleur = "rgb(180,60,50)" if self.ecran.mode() == "combat" else "rgb(20,20,150)"
|
|
|
|
|
+ self.ui().edm_enTete.setStyleSheet(QString("#edm_mode {color: "+couleur+";}"))
|
|
|
|
|
+
|
|
|
|
|
+ def selectionnerLogo(self):
|
|
|
|
|
+ img = selectionImage()
|
|
|
|
|
+ if img:
|
|
|
|
|
+ self.ui().edm_logo.chargerImage(img)
|
|
|
|
|
+ self.ecran.logoModifie()
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ self.ui().edm_nom.majTexte(self.mat().nom())
|
|
|
|
|
+ if self.mat().logo.estValide():
|
|
|
|
|
+ self.ui().edm_logo.chargerImage(self.mat().logo)
|
|
|
|
|
+ else:
|
|
|
|
|
+ self.ui().edm_logo.majTexte("Choisissez \nun fichier\nimage")
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ self.mat().majNom(self.ui().edm_nom.texte())
|
|
|
|
|
+ self.mat().logo = self.ui().edm_logo.image() if self.ui().edm_logo.image() else RImage()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class EdPageCreation(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdPageCreation, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["cb", "dc"]
|
|
|
|
|
+ self._modes = ["creation"]
|
|
|
|
|
+
|
|
|
|
|
+ def construire(self):
|
|
|
|
|
+ self.vueForme = VueEditionForme(self.ui().edm_vueForme)
|
|
|
|
|
+ self.ecran.connect(self.ui().edm_aideForme, SIGNAL("clicked()"), self.afficherAideForme)
|
|
|
|
|
+ self.ecran.connect(self.ui().edm_casesHexa, SIGNAL("clicked()"), self.majFormeCases)
|
|
|
|
|
+ self.ecran.connect(self.ui().edm_casesCarrees, SIGNAL("clicked()"), self.majFormeCases)
|
|
|
|
|
+ self.ecran.connect(self.ui().edm_couleur, SIGNAL("clicked()"), self.selectionCouleur)
|
|
|
|
|
+ self.ecran.connect(self.ui().edm_image, SIGNAL("clicked()"), self.selectionImage)
|
|
|
|
|
+
|
|
|
|
|
+ def formeCases(self):
|
|
|
|
|
+ return "H" if self.ui().edm_casesHexa.isChecked() else "C"
|
|
|
|
|
+
|
|
|
|
|
+ def majFormeCases(self):
|
|
|
|
|
+ if self.vueForme.formeCases() != self.ecran.formeCases():
|
|
|
|
|
+ #on enregistre la def de forme, d'image et d'etiquette en cours
|
|
|
|
|
+ self.mat().formeDef[self.vueForme.formeCases()] = self.vueForme.formeDef()
|
|
|
|
|
+ self.mat().img = self.vueForme.imageDef()
|
|
|
|
|
+ self.mat().etiquette = self.vueForme.etiquetteDef()
|
|
|
|
|
+
|
|
|
|
|
+ #on recree la scene avec la nouvelle forme de cases
|
|
|
|
|
+ self.vueForme.vider()
|
|
|
|
|
+ self.vueForme.creer(self.ecran.formeCases())
|
|
|
|
|
+
|
|
|
|
|
+ #on charge les def correspondantes a la nouvelle forme
|
|
|
|
|
+ self.vueForme.chargerFormeDef(self.mat().formeDef[self.formeCases()])
|
|
|
|
|
+ self.vueForme.chargerImageDef(self.mat().img)
|
|
|
|
|
+ self.vueForme.chargerEtiquetteDef(self.mat().etiquette)
|
|
|
|
|
+
|
|
|
|
|
+ def majEtiquetteVueForme(self):
|
|
|
|
|
+ self.mat().etiquette.txt = self.ui().edm_nom.texte()
|
|
|
|
|
+ self.vueForme.chargerEtiquetteDef(self.mat().etiquette)
|
|
|
|
|
+
|
|
|
|
|
+ def logoModifie(self):
|
|
|
|
|
+ self.vueForme.nouvelleImageDef(self.ui().edm_logo.image())
|
|
|
|
|
+
|
|
|
|
|
+ def selectionImage(self):
|
|
|
|
|
+ """selectionne le fichier image dans la boite de dialogue dediee"""
|
|
|
|
|
+ img = selectionImage()
|
|
|
|
|
+ if img:
|
|
|
|
|
+ self.vueForme.nouvelleImageDef(img)
|
|
|
|
|
+
|
|
|
|
|
+ def selectionCouleur(self):
|
|
|
|
|
+ """selectionne la couleur dans la boite de dialogue dediee"""
|
|
|
|
|
+ couleur = QColorDialog(self.ecran).getColor(QColor("white"), self.ecran)
|
|
|
|
|
+ if couleur.isValid():
|
|
|
|
|
+ self.mat().couleur = couleur
|
|
|
|
|
+ self.vueForme.majCouleur(couleur)
|
|
|
|
|
+
|
|
|
|
|
+ def afficherAideForme(self):
|
|
|
|
|
+ msg = "Sur l'écran ci-contre, vous pouvez éditer la forme et l'apparence de votre pion. Vous pouvez: \n\n" \
|
|
|
|
|
+ "Choisir la couleur du pion \n" \
|
|
|
|
|
+ "Choisir une image (qui remplacera alors le logo sur le pion) \n" \
|
|
|
|
|
+ "Deplacer l'etiquette et l'image sur le pion en cliquant dessus \n" \
|
|
|
|
|
+ "Faire pivoter l'image avec [FLECHE HAUT] et [FLECHE BAS] \n" \
|
|
|
|
|
+ "Modifier la taille de l'image avec [FLECHE GAUCHE] et [FLECHE DROITE] \n" \
|
|
|
|
|
+ "Activer desactiver l'etiquette en gras avec [G] \n" \
|
|
|
|
|
+ "Modifier la taille de la police avec [FLECHE HAUT] et [FLECHE BAS]"
|
|
|
|
|
+ dmMessage(msg)
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ self.vueForme.creer(self.formeCases())
|
|
|
|
|
+ self.vueForme.autoriserModifForme(True)
|
|
|
|
|
+ self.vueForme.majCouleur(self.mat().couleur)
|
|
|
|
|
+ self.vueForme.chargerFormeDef(self.mat().formeDef[self.formeCases()])
|
|
|
|
|
+ self.vueForme.chargerImageDef(self.mat().img)
|
|
|
|
|
+ self.vueForme.chargerEtiquetteDef(self.mat().etiquette)
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ self.mat().formeDef[self.vueForme.formeCases()] = self.vueForme.formeDef()
|
|
|
|
|
+ self.mat().img = self.vueForme.imageDef()
|
|
|
|
|
+ self.mat().etiquette = self.vueForme.etiquetteDef()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class EdPageCombat(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdPageCombat, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["cb", "dc"]
|
|
|
|
|
+ self._modes = ["combat"]
|
|
|
|
|
+
|
|
|
|
|
+ def construire(self):
|
|
|
|
|
+ #etat
|
|
|
|
|
+ dico = lstLibEtats(self.mat().typ())
|
|
|
|
|
+ for num in dico:
|
|
|
|
|
+ self.ui().edm_etat.addItem(QString.fromUtf8(dico[num]), QVariant(num))
|
|
|
|
|
+ self.ui().edm_etat.setCurrentIndex(0)
|
|
|
|
|
+
|
|
|
|
|
+ #statuts
|
|
|
|
|
+ if self.mat().typ() == "dc":
|
|
|
|
|
+ self.ui().edm_statut0.setVisible(False)
|
|
|
|
|
+ self.ui().edm_statut1.setVisible(False)
|
|
|
|
|
+ self.ui().edm_statut2.setVisible(False)
|
|
|
|
|
+ self.ui().edm_statut3.setVisible(False)
|
|
|
|
|
+ self.ui().edm_effets.setVisible(False);self.ui().edm_effets_lbl.setVisible(False)
|
|
|
|
|
+ self.ui().edm_actions_lbl.setVisible(False)
|
|
|
|
|
+ else:
|
|
|
|
|
+ self.ui().edm_statut5.setVisible(False)
|
|
|
|
|
+# self.ui().edm_layoutStatuts.update()
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ self.ui().edm_etat.setCurrentIndex(self.ui().edm_etat.findData(QVariant(self.mat().etat)))
|
|
|
|
|
+
|
|
|
|
|
+ for statut in self.mat().statuts:
|
|
|
|
|
+ case = self.ui().page_cbt.findChild(QCheckBox, "edm_statut{}".format(statut))
|
|
|
|
|
+ if case: case.setChecked(True)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ self.mat().etat = self.ui().edm_etat.itemData(self.ui().edm_etat.currentIndex()).toInt()[0]
|
|
|
|
|
+
|
|
|
|
|
+ self.mat().statuts = []
|
|
|
|
|
+ for i in range(0, 6):
|
|
|
|
|
+ case = self.ui().page_cbt.findChild(QCheckBox, "edm_statut{}".format(i))
|
|
|
|
|
+ if case:
|
|
|
|
|
+ if case.isChecked(): self.mat().statuts.append(i)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class EdPageDeplacement(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdPageDeplacement, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["cb"]
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ self.ui().edm_taille.setValue(self.mat().h)
|
|
|
|
|
+ self.ui().edm_depMarche.setValue(self.mat().depMarche)
|
|
|
|
|
+ self.ui().edm_depNage.setValue(self.mat().depNage)
|
|
|
|
|
+ self.ui().edm_depEscalade.setValue(self.mat().depEscalade)
|
|
|
|
|
+ self.ui().edm_depVol.setValue(self.mat().depVol)
|
|
|
|
|
+ self.ui().edm_saut.setValue(self.mat().saut)
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ self.mat().h = self.ui().edm_taille.value()
|
|
|
|
|
+ self.mat().depMarche = self.ui().edm_depMarche.value()
|
|
|
|
|
+ self.mat().depNage = self.ui().edm_depNage.value()
|
|
|
|
|
+ self.mat().depEscalade = self.ui().edm_depEscalade.value()
|
|
|
|
|
+ self.mat().depVol = self.ui().edm_depVol.value()
|
|
|
|
|
+ self.mat().saut = self.ui().edm_saut.value()
|
|
|
|
|
+
|
|
|
|
|
+class EdPageProprietes(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdPageProprietes, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["dc"]
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ self.ui().edm_hauteur.setValue(self.mat().h)
|
|
|
|
|
+ self.ui().edm_hauteurPlafond.setChecked(self.mat().hMax)
|
|
|
|
|
+ self.ui().edm_escalade.setChecked(self.mat().escalade)
|
|
|
|
|
+ self.ui().edm_inflammable.setChecked(self.mat().inflammable)
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ self.mat().h = self.ui().edm_hauteur.value()
|
|
|
|
|
+ self.mat().hMax = self.ui().edm_hauteurPlafond.isChecked()
|
|
|
|
|
+ self.mat().escalade = self.ui().edm_escalade.isChecked()
|
|
|
|
|
+ self.mat().brule = self.ui().edm_inflammable.isChecked()
|
|
|
|
|
+
|
|
|
|
|
+class EdPageAttributs(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdPageAttributs, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["cb"]
|
|
|
|
|
+ self._modes = ["creation", "combat"]
|
|
|
|
|
+
|
|
|
|
|
+ def layoutCarac(self):
|
|
|
|
|
+ """retourne le layout des attributs"""
|
|
|
|
|
+ return self.ecran.ui.edm_deroulementAttributs_layout
|
|
|
|
|
+
|
|
|
|
|
+ def construire(self):
|
|
|
|
|
+ """construit les champs d'attributs"""
|
|
|
|
|
+ """cree les champs dedies a la saisie des attributs dans la grille dediee"""
|
|
|
|
|
+ self.layoutCarac().setSpacing(4)
|
|
|
|
|
+ self.layoutCarac().setMargin(0)
|
|
|
|
|
+
|
|
|
|
|
+ for nomAttribut in regles.ordreAttributsFichePerso():
|
|
|
|
|
+ if len(nomAttribut) > 0:
|
|
|
|
|
+ lay = QHBoxLayout()
|
|
|
|
|
+ lay.setMargin(0)
|
|
|
|
|
+ lay.setSpacing(2)
|
|
|
|
|
+
|
|
|
|
|
+ etiquette = dm.DmLabel()
|
|
|
|
|
+ etiquette.majTexte(regles.attribut(nomAttribut).nom)
|
|
|
|
|
+ etiquette.setObjectName("{}_etiquette".format(nomAttribut))
|
|
|
|
|
+ etiquette.setAlignment(Qt.AlignLeft|Qt.AlignVCenter)
|
|
|
|
|
+ etiquette.setMinimumSize(QSize(110, 24))
|
|
|
|
|
+ etiquette.setMaximumSize(QSize(110, 24))
|
|
|
|
|
+ lay.addWidget(etiquette)
|
|
|
|
|
+
|
|
|
|
|
+ champ = dm.DmLineEdit()
|
|
|
|
|
+ champ.setMinimumSize(QSize(80, 24))
|
|
|
|
|
+ champ.setMaximumSize(QSize(80, 24))
|
|
|
|
|
+ champ.setAlignment(Qt.AlignCenter)
|
|
|
|
|
+ champ.majTexte(regles.listeAttributs()[nomAttribut])
|
|
|
|
|
+ champ.setObjectName("{}_champ".format(nomAttribut))
|
|
|
|
|
+ champ.setStyleSheet("background-color: rgb({},{},{});".format(248,248,248))
|
|
|
|
|
+ ## self.connect(champ, SIGNAL("textChanged()"), self.controlerAttribut)
|
|
|
|
|
+ lay.addWidget(champ)
|
|
|
|
|
+
|
|
|
|
|
+ self.layoutCarac().addLayout(lay)
|
|
|
|
|
+ else:
|
|
|
|
|
+ lay = QHBoxLayout()
|
|
|
|
|
+ etiquetteVide = dm.DmLabel()
|
|
|
|
|
+ etiquetteVide.setMinimumHeight(9)
|
|
|
|
|
+ etiquetteVide.setMaximumHeight(9)
|
|
|
|
|
+ lay.addWidget(etiquetteVide)
|
|
|
|
|
+ lay.addWidget(etiquetteVide)
|
|
|
|
|
+ self.layoutCarac().addLayout(lay)
|
|
|
|
|
+
|
|
|
|
|
+ def listeAttributs(self):
|
|
|
|
|
+ """renvoie la liste des attributs tels qu'ils
|
|
|
|
|
+ sont saisis dans la liste des attributs"""
|
|
|
|
|
+ attributs = regles.listeAttributs()
|
|
|
|
|
+ for i in range(0, self.layoutCarac().count()):
|
|
|
|
|
+ layout = self.layoutCarac().itemAt(i).layout()
|
|
|
|
|
+ widget = layout.itemAt(1).widget()
|
|
|
|
|
+ if widget != 0 and widget != None:
|
|
|
|
|
+ if str(widget.objectName()[-6:]) == "_champ":
|
|
|
|
|
+ attr = str(widget.objectName()[:-6])
|
|
|
|
|
+ attributs[attr] = widget.texte()
|
|
|
|
|
+ return attributs
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ """met a jour la liste des attributs du Combattant"""
|
|
|
|
|
+ for i in range(0, self.layoutCarac().count()):
|
|
|
|
|
+ layout = self.layoutCarac().itemAt(i).layout()
|
|
|
|
|
+ widget = layout.itemAt(1).widget()
|
|
|
|
|
+ if widget != 0:
|
|
|
|
|
+ if str(widget.objectName()[-6:]) == "_champ":
|
|
|
|
|
+ attr = str(widget.objectName()[:-6])
|
|
|
|
|
+ widget.majTexte(self.ecran.mat().listeAttributs[attr])
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ self.mat().attributs = self.listeAttributs()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class EdPageAttaques(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdPageAttaques, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["cb"]
|
|
|
|
|
+ self._compteurAttaque = 0
|
|
|
|
|
+
|
|
|
|
|
+ def layoutAtt(self):
|
|
|
|
|
+ """retourne le layout des attaques"""
|
|
|
|
|
+ return self.ecran.ui.edm_deroulementAttaques_layout
|
|
|
|
|
+
|
|
|
|
|
+ def construire(self):
|
|
|
|
|
+ self.layoutAtt().setAlignment(Qt.AlignLeft)
|
|
|
|
|
+
|
|
|
|
|
+ def attaqueNouvelle(self, attaque = None):
|
|
|
|
|
+ """ajoute une nouvelle ligne a la liste des attaques"""
|
|
|
|
|
+ #on ajoute de suite un panneau 'nouvelle attaque en dessous'
|
|
|
|
|
+ self._compteurAttaque += 1
|
|
|
|
|
+ panneau = FrameAttaque(self._compteurAttaque)
|
|
|
|
|
+ if attaque: panneau.chargerAttaque(attaque)
|
|
|
|
|
+ panneau.setObjectName(QString("att_frame_{}".format(self._compteurAttaque)))
|
|
|
|
|
+ self.ecran.connect(panneau, SIGNAL("attaqueNouvelle()"), self.attaqueNouvelle)
|
|
|
|
|
+ self.ecran.connect(panneau, SIGNAL("attaqueSupprimer(int)"), self.attaqueSupprimer)
|
|
|
|
|
+ self.layoutAtt().addWidget(panneau)
|
|
|
|
|
+
|
|
|
|
|
+ def attaqueSupprimer(self, index):
|
|
|
|
|
+ """supprime la ligne selectionnee de la liste des attaques"""
|
|
|
|
|
+ panneau = self.findChild(QFrame, "att_frame_{}".format(index))
|
|
|
|
|
+ self.layoutAtt().removeWidget(panneau)
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ self.layoutAtt().setAlignment(Qt.AlignTop)
|
|
|
|
|
+ for attaque in self.mat().attaques:
|
|
|
|
|
+ self.attaqueNouvelle(attaque)
|
|
|
|
|
+ self.attaqueNouvelle()
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ listeAttaques = []
|
|
|
|
|
+ for i in range(0, self.layoutAtt().count()):
|
|
|
|
|
+ panneau = self.layoutAtt().itemAt(i).widget()
|
|
|
|
|
+ if panneau != 0:
|
|
|
|
|
+ attaque = panneau.attaque()
|
|
|
|
|
+ if attaque:
|
|
|
|
|
+ listeAttaques.append(attaque)
|
|
|
|
|
+ self.mat().attaques = listeAttaques
|
|
|
|
|
+
|
|
|
|
|
+class EdPageInventaire(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdPageInventaire, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["cb", "dc"]
|
|
|
|
|
+
|
|
|
|
|
+ def construire(self):
|
|
|
|
|
+ self.ecran.ui.edm_listeInventaire.construire()
|
|
|
|
|
+ self.ecran.connect(self.ecran.ui.edm_filtreTypeObjet, SIGNAL("currentChanged(int)"), self.filtrerInventaire)
|
|
|
|
|
+ self.ecran.ui.edm_filtreTypeObjet.stackUnder(self.ecran.ui.edm_listeInventaire)
|
|
|
|
|
+ self.ecran.connect(self.ecran.ui.edm_listeInventaire, SIGNAL("objetClique(int)"), self.editerObjet)
|
|
|
|
|
+
|
|
|
|
|
+ def editerObjet(self, indexObjet):
|
|
|
|
|
+ if indexObjet < len(self.ecran.ui.edm_listeInventaire.inventaire()):
|
|
|
|
|
+ objet = self.ecran.ui.edm_listeInventaire.inventaire()[indexObjet]
|
|
|
|
|
+ else:
|
|
|
|
|
+ objet = None
|
|
|
|
|
+ typeObjet = self.ecran.ui.edm_filtreTypeObjet.currentIndex() - 1
|
|
|
|
|
+
|
|
|
|
|
+ self.fenetreEO = EcranEditionObjet(objet, typeObjet)
|
|
|
|
|
+ self.fenetreEO.show()
|
|
|
|
|
+ self.fenetreEO.exec_()
|
|
|
|
|
+ resultat = self.fenetreEO.resultat()
|
|
|
|
|
+
|
|
|
|
|
+ if resultat:
|
|
|
|
|
+ if objet:
|
|
|
|
|
+ self.ecran.ui.edm_listeInventaire.majObjet(objet, resultat)
|
|
|
|
|
+ else:
|
|
|
|
|
+ self.ecran.ui.edm_listeInventaire.ajouterObjet(resultat)
|
|
|
|
|
+ else:
|
|
|
|
|
+ if objet:
|
|
|
|
|
+ self.ecran.ui.edm_listeInventaire.supprimerObjet(objet)
|
|
|
|
|
+
|
|
|
|
|
+ self.fenetreEO = None
|
|
|
|
|
+ self.majTotauxInventaire()
|
|
|
|
|
+
|
|
|
|
|
+ def majTotauxInventaire(self):
|
|
|
|
|
+ inv = self.ecran.ui.edm_listeInventaire.inventaire()
|
|
|
|
|
+ poidsTotal = 0.00
|
|
|
|
|
+ for obj in inv:
|
|
|
|
|
+ poidsTotal += obj.poidsTotal()
|
|
|
|
|
+ self.ecran.ui.edm_inventaire_poids.majTexte("{} kg".format(poidsTotal))
|
|
|
|
|
+
|
|
|
|
|
+ def filtrerInventaire(self, index):
|
|
|
|
|
+ filtre = index - 1
|
|
|
|
|
+ self.ecran.ui.edm_listeInventaire.filtrer(filtre)
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ self.ui().edm_listeInventaire.charger(self.mat().inventaire)
|
|
|
|
|
+ self.majTotauxInventaire()
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ self.mat().inventaire = self.ui().edm_listeInventaire.inventaire()
|
|
|
|
|
+
|
|
|
|
|
+class EdPageNotes(EdSectionBase):
|
|
|
|
|
+ def __init__(self, ecran):
|
|
|
|
|
+ super(EdPageNotes, self).__init__(ecran)
|
|
|
|
|
+ self._filtre = ["cb", "dc"]
|
|
|
|
|
+
|
|
|
|
|
+ def construire(self):
|
|
|
|
|
+ if self.mat().typ() == "dc":
|
|
|
|
|
+ self.ui().edm_detail_espece.setVisible(False);self.ui().edm_lbl_espece.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_profession.setVisible(False);self.ui().edm_lbl_profession.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_religion.setVisible(False);self.ui().edm_lbl_religion.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_lieuNaissance.setVisible(False);self.ui().edm_lbl_lieuNaissance.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_espece.setVisible(False);self.ui().edm_lbl_espece.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_sexe.setVisible(False);self.ui().edm_lbl_sexe.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_yeux.setVisible(False);self.ui().edm_lbl_yeux.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_peau.setVisible(False);self.ui().edm_lbl_peau.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_cheveux.setVisible(False);self.ui().edm_lbl_cheveux.setVisible(False)
|
|
|
|
|
+ self.ui().edm_detail_langues.setVisible(False);self.ui().edm_lbl_langues.setVisible(False)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ def layout(self):
|
|
|
|
|
+ return self.ui().edm_layoutNotes
|
|
|
|
|
+
|
|
|
|
|
+ def charger(self):
|
|
|
|
|
+ for detail in self.mat().details:
|
|
|
|
|
+ widget = self.ui().edm_pages.findChild(dm.DmLineEdit, "edm_detail_{}".format(detail))
|
|
|
|
|
+ if widget: widget.majTexte(self.mat().details[detail])
|
|
|
|
|
+# self.ui().edm_notes.setText(QString.fromUtf8(self.mat().notes))
|
|
|
|
|
+
|
|
|
|
|
+ def enregistrer(self):
|
|
|
|
|
+ listeWidget = self.ui().edm_pages.findChildren(dm.DmLineEdit)
|
|
|
|
|
+ for widget in listeWidget:
|
|
|
|
|
+ detail = str(widget.objectName()).replace("edm_detail_","")
|
|
|
|
|
+ txt = widget.texte()
|
|
|
|
|
+ if len(txt) > 0: self.mat().details[detail] = txt
|
|
|
|
|
+
|
|
|
|
|
+# self.mat().notes = str(self.ui().edm_notes.toPlainText().toUtf8())
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+if __name__ == "__main__":
|
|
|
|
|
+ app = QApplication(sys.argv)
|
|
|
|
|
+ mat = Combattant()
|
|
|
|
|
+# mat.position = (1,1)
|
|
|
|
|
+ ecran = EcranEditionMateriel(mat)
|
|
|
|
|
+ ecran.afficher()
|
|
|
|
|
+ r = app.exec_()
|
|
|
|
|
+ mat = ecran.mat()
|
|
|
|
|
+ exit(r)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|