dm.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. """ensemble des widgets surchargés"""
  4. from PyQt4.QtCore import *
  5. from PyQt4.QtGui import *
  6. try:
  7. from lib.outilsSvg import *
  8. import lib.regles as regles
  9. from lib.Actions import *
  10. except:
  11. try:
  12. from outilsSvg import *
  13. import regles as regles
  14. from Actions import *
  15. except:
  16. pass
  17. class DmLabel(QLabel):
  18. """surcharge de QLabel"""
  19. def __init__(self, parent = None):
  20. super(DmLabel, self).__init__(parent)
  21. def majTexte(self, txt):
  22. self.clear()
  23. self.setText(QString.fromUtf8(txt))
  24. def chargerImage(self, chemin):
  25. self.clear()
  26. if len(chemin) > 0:
  27. pix = QPixmap(QString.fromUtf8(chemin))
  28. pix = pix.scaled(self.width(), self.height(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
  29. else:
  30. pix = QPixmap()
  31. self.setPixmap(pix)
  32. def texte(self):
  33. return str(self.text().toUtf8())
  34. class DmLabelChoixImage(DmLabel):
  35. """surcharge de DmLabel,
  36. affiche une fenetre de selection de fichier, recupere une image,
  37. et l'affiche."""
  38. def __init__(self, parent = None):
  39. super(DmLabelChoixImage, self).__init__(parent)
  40. self.setStyleSheet("QLabel { padding: 3px; }")
  41. self._sourceImage = ""
  42. def mousePressEvent(self, event):
  43. if event.button() == 1:
  44. self.selectionImage()
  45. def selectionImage(self):
  46. fichier = QFileDialog.getOpenFileName(self,
  47. "Selectionnez une image",
  48. "\\img",
  49. "Images (*.png *.jpg)")
  50. if len(fichier) > 0:
  51. pix = QPixmap(fichier)
  52. if not pix.isNull():
  53. self._sourceImage = fichier
  54. self.clear()
  55. pix = pix.scaled(self.width(), self.height(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
  56. self.setPixmap(pix)
  57. self.emit(SIGNAL("imageModifiee()"))
  58. else:
  59. dial = QMessageBox(self)
  60. dial.setText("Format non reconnu")
  61. dial.setWindowTitle("Erreur")
  62. dial.setStandardButtons(QMessageBox.Ok)
  63. dial.exec_()
  64. def image(self):
  65. """retourne le chemin de l'image chargee"""
  66. return self._sourceImage
  67. def chargerImage(self, chemin):
  68. self._sourceImage = chemin
  69. super(DmLabelChoixImage, self).chargerImage(chemin)
  70. class DmTextEdit(QTextEdit):
  71. def __init__(self, parent = None):
  72. super(DmTextEdit, self).__init__(parent)
  73. def majTexte(self, txt):
  74. self.clear()
  75. self.setText(QString.fromUtf8(str(txt)))
  76. def texte(self):
  77. return str(self.toPlainText().toUtf8())
  78. class DmLineEdit(QLineEdit):
  79. def __init__(self, parent = None):
  80. super(DmLineEdit, self).__init__(parent)
  81. def majTexte(self, txt):
  82. self.clear()
  83. self.setText(QString.fromUtf8(str(txt)))
  84. def texte(self):
  85. return str(self.text().toUtf8())
  86. class DmGraphicsView(QGraphicsView):
  87. """surcharge de QGraphicsView"""
  88. def __init__(self, parent = None):
  89. super(DmGraphicsView, self).__init__(parent)
  90. self.nbZoomActuel = 0
  91. def resizeEvent(self, event):
  92. super(DmGraphicsView, self).resizeEvent(event)
  93. self.emit(SIGNAL("resizeEvent()"))
  94. def wheelEvent(self, event):
  95. """zoom/dezoom avec la molette de la souris"""
  96. #on zoom/dezoom et on recentre sur la position du curseur
  97. zoom = 1.00
  98. if event.delta() > 0:
  99. if self.nbZoomActuel <= 10:
  100. self.nbZoomActuel += 1
  101. zoom = 1.25
  102. elif event.delta() < 0:
  103. if self.nbZoomActuel >= -10:
  104. zoom = 0.8
  105. self.nbZoomActuel -= 1
  106. if zoom != 0.00:
  107. self.scale(zoom, zoom)
  108. self.centerOn(self.mapToScene(event.pos()))
  109. event.accept() #pour considerer l'evenement comme resolu, sans ca les barres de defilement reagissent aussi
  110. class DmComboBox(QComboBox):
  111. """surcharge de QComboBox"""
  112. def __init__(self, parent = None):
  113. super(DmComboBox, self).__init__(parent)
  114. def allerA(self, donnee):
  115. """cherche la donnee demandee et affiche la ligne"""
  116. index = self.findData(QVariant(donnee))
  117. self.setCurrentIndex(index)
  118. def valeurActuelle(self):
  119. """renvoie sous forme de QVariant la valeur en cours"""
  120. return self.itemData(self.currentIndex())
  121. class DmTableWidget(QTableWidget):
  122. """surcharge de QTableWidget"""
  123. def __init__(self, parent = None):
  124. super(DmTableWidget, self).__init__(parent)
  125. self.majEnCours = False
  126. def vider(self):
  127. """supprime toutes les lignes"""
  128. self.majEnCours = True
  129. while self.rowCount() > 0:
  130. self.removeRow(0)
  131. self.majEnCours = False
  132. def nouvelleLigneFin(self):
  133. """ajoute une ligne en derniere position"""
  134. pos = self.rowCount()
  135. self.insertRow(pos)
  136. return pos
  137. def lignes(self):
  138. """retourne la liste des index de lignes de la table"""
  139. return range(0, self.rowCount())
  140. def colonnes(self):
  141. """retourne la liste des index de lignes de la table"""
  142. return range(0, self.columnCount())
  143. def masquerColonneId(self):
  144. """masque la colonne en position 0 qui contient les identifiants"""
  145. self.setColumnWidth(0, 0)
  146. def majData(self, ligne, colonne, var):
  147. """met a jour la cellule avec une donnee de type QVariant"""
  148. var = QVariant(var)
  149. self.item(ligne, colonne).setData(0, var)
  150. return True
  151. def majTexte(self, ligne, colonne, texte):
  152. """met a jour la cellule avec du texte"""
  153. if not self.item(ligne, colonne):
  154. self.setItem(ligne, colonne, QTableWidgetItem(QString.fromUtf8(str(texte))))
  155. else:
  156. self.item(ligne, colonne).setText(QString.fromUtf8(str(texte)))
  157. return True
  158. def majEnt(self, ligne, colonne, valeur):
  159. """met a jour la cellule avec une valeur numerique entiere
  160. si valeur ne peut etre converti en numerique, on retourne Faux"""
  161. retour = False
  162. try:
  163. entier = QVariant(long(valeur))
  164. self.item(ligne, colonne).setData(0, entier)
  165. retour = True
  166. except:
  167. pass
  168. return retour
  169. def chercherLigne(self, colonne, valeur):
  170. """cherche la valeur dans la colonne demandee
  171. renvoie la ligne correspondante """
  172. ligne = None
  173. for i in range(0, self.rowCount()):
  174. if str(self.item(i, colonne).text().toUtf8()) == str(valeur):
  175. ligne = i
  176. break
  177. return ligne
  178. def majLigne(self, ligne, dico, flags = []):
  179. """rempli la ligne avec les donnees trouvees dans le dictionnaire"""
  180. for colonne in range(0, self.columnCount()):
  181. nomChamp = ""
  182. item = self.horizontalHeaderItem(colonne)
  183. if item:
  184. nomChamp = str(item.text())
  185. if nomChamp in dico:
  186. item = QTableWidgetItem()
  187. for f in flags:
  188. item.setFlag(f)
  189. var = QVariant(dico[nomChamp])
  190. item.setData(0, var)
  191. self.setItem(ligne, colonne, item)
  192. def texte(self, ligne, colonne):
  193. return str(self.item(ligne, colonne).text().toUtf8())
  194. def data(self, ligne, colonne):
  195. retour = None
  196. item = self.item(ligne, colonne)
  197. if item:
  198. retour = item.data(0)
  199. return retour
  200. def ligneSelectionnee(self):
  201. """renvoie la ligne selectionnee (la premiere si plusieurs le sont)"""
  202. return self.currentRow()
  203. def selectionner(self, ligne, colonne):
  204. self.setCurrentCell(ligne, colonne, QItemSelectionModel.Select)
  205. class DmTableBiblio(DmTableWidget):
  206. """table utilisee pour afficher les bibliotheques d'objets:
  207. terrains, decors, creatures"""
  208. def __init__(self, parent = None):
  209. super(DmTableBiblio, self).__init__(parent)
  210. self.fichier = ""
  211. self.masquerColonneId()
  212. def defFichier(self, fichier):
  213. """definit le fichier de sauvegarde qui la source des donnees de la table"""
  214. self.fichier = fichier
  215. def initAffichage(self):
  216. """fait les differents reglages relatifs a l'apparence"""
  217. self.setColumnWidth(0, 0)
  218. self.setIconSize(QSize(30,20))
  219. self.horizontalHeader().setStretchLastSection(True)
  220. def remplir(self):
  221. """remplit la table avec les donnees contenues dans le dictionnaire de la savuvegarde"""
  222. dico = afficheSvg(self.fichier)
  223. self.majEnCours = True
  224. self.setSortingEnabled(False)
  225. index = 0
  226. for elt in dico:
  227. objet = dico[elt]
  228. self.insertRow(int(index))
  229. #code de l'objet
  230. self.setItem(int(index),0,QTableWidgetItem(QString.fromUtf8(elt)))
  231. #icone et nom
  232. icon = QIcon(objet.icone())
  233. item = QTableWidgetItem(icon,QString.fromUtf8(objet.nom))
  234. self.setItem(int(index),1,item)
  235. index += 1
  236. self.sizeHintForColumn(1)
  237. self.setSortingEnabled(True)
  238. self.sortItems(1)
  239. self.majEnCours = False
  240. def maj(self):
  241. self.vider()
  242. self.remplir()
  243. def actuel(self):
  244. """renvoie l'objet actuellement selectionne"""
  245. objet = None
  246. index = self.item(self.currentRow(), 0)
  247. if index > 0:
  248. objet = charger(self.fichier, str(index.text().toUtf8()))
  249. return objet
  250. class DmTableAttributsPi(DmTableWidget):
  251. """table utilisee pour afficher les attributs d'un pion dans le panneau Pi"""
  252. def __init__(self, parent = None):
  253. super(DmTableBiblio, self).__init__(parent)
  254. self.fichier = ""
  255. self.masquerColonneId()
  256. def defFichier(self, fichier):
  257. """definit le fichier de sauvegarde qui la source des donnees de la table"""
  258. self.fichier = fichier
  259. def initAffichage(self):
  260. """fait les differents reglages relatifs a l'apparence"""
  261. self.setColumnWidth(0, 0)
  262. self.setIconSize(QSize(30,20))
  263. self.horizontalHeader().setStretchLastSection(True)
  264. def remplir(self):
  265. """remplit la table avec les donnees contenues dans le dictionnaire de la savuvegarde"""
  266. dico = afficheSvg(self.fichier)
  267. self.majEnCours = True
  268. self.setSortingEnabled(False)
  269. index = 0
  270. for elt in dico:
  271. objet = dico[elt]
  272. self.insertRow(int(index))
  273. #code de l'objet
  274. self.setItem(int(index),0,QTableWidgetItem(QString.fromUtf8(elt)))
  275. #icone et nom
  276. icon = QIcon("img\\"+objet.icone())
  277. item = QTableWidgetItem(icon,QString.fromUtf8(objet.nom))
  278. self.setItem(int(index),1,item)
  279. index += 1
  280. self.sizeHintForColumn(1)
  281. self.setSortingEnabled(True)
  282. self.sortItems(1)
  283. self.majEnCours = False
  284. def maj(self):
  285. self.vider()
  286. self.remplir()
  287. def actuel(self):
  288. """renvoie l'objet actuellement selectionne"""
  289. objet = None
  290. index = self.item(self.currentRow(), 0)
  291. if index > 0:
  292. objet = charger(self.fichier, str(index.text().toUtf8()))
  293. return objet
  294. class DmTableInventaire(DmTableWidget):
  295. """table utilisee pour afficher l'inventaire d'un combattant"""
  296. itemExited = pyqtSignal(QTableWidgetItem)
  297. def __init__(self, parent = None):
  298. super(DmTableInventaire, self).__init__(parent)
  299. self._inventaire = []
  300. #pour la gestion des survols
  301. self.setMouseTracking(True)
  302. self._last_index = QPersistentModelIndex()
  303. self.viewport().installEventFilter(self)
  304. self.connect(self, SIGNAL("itemEntered(QTableWidgetItem*)"), self.itemSurvole)
  305. self.connect(self, SIGNAL("itemExited(QTableWidgetItem*)"), self.itemSurvoleFin)
  306. self.connect(self, SIGNAL("itemClicked(QTableWidgetItem*)"), self.itemClique)
  307. def construire(self):
  308. self.setColumnWidth(0, 0);self.setColumnWidth(1, 0);self.setColumnWidth(2, 20);self.setColumnWidth(3, 40)
  309. self.setColumnWidth(4, 291);self.setColumnWidth(5, 60);self.setColumnWidth(6, 60);self.setColumnWidth(7, 20)
  310. def ajouterObjet(self, objet):
  311. ligne = self.rowCount() - 1 #avant la ligne 'ajouter'
  312. self.insertRow(ligne)
  313. self.remplirLigne(ligne, objet)
  314. self._inventaire.append(objet)
  315. def charger(self, inventaire):
  316. """charge l'inventaire en parametre"""
  317. for objet in inventaire:
  318. self.ajouterObjet(objet)
  319. def majObjet(self, ancien, nouveau):
  320. """maj la ligne correspondant a l'objet"""
  321. index = self._inventaire.index(ancien)
  322. self._inventaire[index] = nouveau
  323. self.remplirLigne(index, nouveau)
  324. def supprimerObjet(self, objet):
  325. """ajoute la ligne correspondant a l'objet"""
  326. index = self._inventaire.index(objet)
  327. self._inventaire.remove(objet)
  328. self.removeRow(index)
  329. def remplirLigne(self, ligne, objet):
  330. """remplit les cellules de la ligne avec les donnees de l'objet"""
  331. imgType = ["pieces.png", "armes.png", "chimie.png", "diamant.png", "boiteOutils.png"]
  332. donnees = ["{}{}".format(objet.typeObjet, objet.nom), objet.typeObjet, "", \
  333. objet.quantite, objet.nom, objet.valeurTotale(), objet.poidsTotal(), ""]
  334. for col in self.colonnes():
  335. if col == 3:
  336. item = QTableWidgetItem(QIcon("\\img\\{}".format(imgType[objet.typeObjet])), QString(""))
  337. else:
  338. item = QTableWidgetItem(QString().fromUtf8(str(donnees[col])))
  339. item.setFlags(Qt.NoItemFlags)
  340. ## item.setData(0, donnees[col])
  341. self.setItem(ligne, col, item)
  342. def inventaire(self):
  343. """cree un inventaire a partir des donnees de la table"""
  344. return self._inventaire
  345. def itemSurvole(self, item):
  346. ligne = item.row()
  347. self.majCouleurLigne(ligne, QColor(150, 50, 50, 150))
  348. def itemSurvoleFin(self, item):
  349. ligne = item.row()
  350. self.majCouleurLigne(ligne, QColor(248, 248, 248, 150))
  351. def itemClique(self, item):
  352. ligne = item.row()
  353. self.emit(SIGNAL("objetClique(int)"), ligne)
  354. def majCouleurLigne(self, ligne, couleur):
  355. """modifie la couleur de fond des items de la lignes"""
  356. for col in self.colonnes():
  357. item = self.item(ligne, col)
  358. if item:
  359. item.setBackground(QBrush(couleur))
  360. def eventFilter(self, widget, event):
  361. if widget is self.viewport():
  362. index = self._last_index
  363. if event.type() == QEvent.MouseMove:
  364. index = self.indexAt(event.pos())
  365. elif event.type() == QEvent.Leave:
  366. index = QModelIndex()
  367. if index != self._last_index:
  368. row = self._last_index.row()
  369. column = self._last_index.column()
  370. item = self.item(row, column)
  371. if item is not None:
  372. self.itemExited.emit(item)
  373. self._last_index = QPersistentModelIndex(index)
  374. return QTableWidget.eventFilter(self, widget, event)
  375. class DmTableInventaireCombat(DmTableInventaire):
  376. """inventaire affiche dans le panneau de combat"""
  377. def __init__(self, parent = None):
  378. super(DmTableInventaireCombat, self).__init__(parent)
  379. ##class DmTableListeAttaques(DmTableWidget):
  380. ## """liste des attaques du combattant"""
  381. ## def __init__(self, parent = None):
  382. ## super(DmTableListeAttaques, self).__init__(parent)
  383. ## self.panneau = None
  384. ## self._listeAttaques = []
  385. ## self.connect(self, SIGNAL("currentCellChanged(int, int, int, int)"), self.selectionChangee)
  386. ##
  387. ## def listeAttaques(self):
  388. ## #on recupere les donnees de l'attaque en cours avant d'exporter la liste
  389. ## self.enregistrerPanneau(self.ligneSelectionnee())
  390. ## return self._listeAttaques
  391. ##
  392. ## def attaqueSelectionnee(self):
  393. ## """renvoie l'attaque selectionnee"""
  394. ## retour = None
  395. ## if len(self._listeAttaques) > 0 and self.ligneSelectionnee() != None:
  396. ## retour = self._listeAttaques[self.ligneSelectionnee()]
  397. ## return retour
  398. ##
  399. ## def majAttaque(self, index, nouvelle):
  400. ## """met a jour les donnees de l'attaque en position x"""
  401. ## self._listeAttaques[index] = nouvelle
  402. ##
  403. ## def charger(self, fenetre, listeAttaques):
  404. ## self.panneau = fenetre.ui.edc_attaque_panneau
  405. ## self._listeAttaques = listeAttaques
  406. ## self.peupler()
  407. ## self.selectionner(0, 0)
  408. ## self.majPanneau()
  409. ##
  410. ## def peupler(self):
  411. ## self.vider()
  412. ## for attaque in self._listeAttaques:
  413. ## ligne = self.nouvelleLigneFin()
  414. ## self.setItem(ligne, 0, QTableWidgetItem(attaque.icone(), QString.fromUtf8(attaque.nom())))
  415. ##
  416. ## def majPanneau(self):
  417. ## """met a jour les donnees du panneau"""
  418. ## self.panneau.chargerAttaque(self.attaqueSelectionnee())
  419. ##
  420. ## def enregistrerPanneau(self, ligne):
  421. ## """enregistre les donnees du panneau sur l'attaque de la ligne"""
  422. ## attaque = self.panneau.attaque()
  423. ## if attaque:
  424. ## self._listeAttaques[ligne] = attaque
  425. ## self.peupler()
  426. ##
  427. ## def nouvelle(self):
  428. ## attaque = Cac()
  429. ## self._listeAttaques.append(attaque)
  430. ## self.peupler()
  431. ## self.selectionner(self.rowCount(), 0)
  432. ##
  433. ## def supprimer(self):
  434. ## """supprime l'attaque actuellement selectionnee"""
  435. #### ligne = self.ligneSelectionnee()
  436. ## self._listeAttaques.remove(self.attaqueSelectionnee())
  437. ## self.peupler()
  438. #### self.selectionner(ligne, 0)
  439. #### self.removeRow(self.ligneSelectionnee())
  440. ##
  441. ## def selectionChangee(self, ancienneLigne, ancienneColonne, ligne, colonne):
  442. ## self.enregistrerPanneau(ancienneLigne)
  443. ## self.panneau.chargerAttaque(None)
  444. ## self.majPanneau()
  445. #### self.emit(SIGNAL("selectionChangee(int, int)"), ancienneLigne, ligne)
  446. ##
  447. ##
  448. ##
  449. ##class DmTableAttributsAttaque(DmTableWidget):
  450. ## """table contenant les attributs (selon regles) d'une attaque"""
  451. ## def __init__(self, parent = None):
  452. ## super(DmTableAttributsAttaque, self).__init__(parent)
  453. ## self._constr = False
  454. ##
  455. ## def attributs(self):
  456. ## """retourne un dictionnaire contenant les attributs"""
  457. ## dico = {}
  458. ## for ligne in self.lignes():
  459. ## nomAttr = regles.ordreAttributsAttaques()[ligne]
  460. ## dico[nomAttr] = regles.attributAttaque(nomAttr).controler(self.texte(ligne, 1))
  461. ## return dico
  462. ##
  463. ## def construire(self):
  464. ## """cree les lignes et remplit la colonne des noms d'attributs"""
  465. ## for nomAttribut in regles.ordreAttributsAttaques():
  466. ## attribut = regles.attributAttaque(nomAttribut)
  467. ## ligne = self.nouvelleLigneFin()
  468. ## self.majTexte(ligne, 0, attribut.nom)
  469. ## self.majTexte(ligne, 1, "")
  470. ## self._constr = True
  471. ##
  472. ## def charger(self, attributs):
  473. ## """charge les attributs d'une attaque"""
  474. ## self.decharger()
  475. ## for ligne in self.lignes():
  476. ## attr = regles.ordreAttributsAttaques()[ligne]
  477. ## valeur = attributs[attr]
  478. ## self.majTexte(ligne, 1, valeur)
  479. ##
  480. ## def decharger(self):
  481. ## """efface les valeurs de la colonne des valeurs,
  482. ## mais laisse intacte la colonne des noms d'attributs"""
  483. ## if not self._constr:
  484. ## self.contruire()
  485. ## else:
  486. ## for ligne in self.lignes():
  487. ## self.majTexte(ligne, 1, "")
  488. ##
  489. class DmTableMenu(QTableWidget):
  490. """table utilisee comme barre d'onglets verticale"""
  491. def __init__(self, parent = None):
  492. super(DmTableMenu, self).__init__(parent)
  493. def setItem(self, ligne, colonne, item):
  494. super(DmTableMenu, self).setItem(ligne, colonne, item)
  495. if ligne == 0:
  496. self.setItemSelected(item, True)
  497. class DmFrameInf_Combattant(QGroupBox):
  498. """frame d'information (combattant)"""
  499. def __init__(self, parent = None):
  500. super(DmFrameInf_Combattant, self).__init__(parent)
  501. def maj(self, combattant):
  502. self.setVisible((combattant != None))
  503. if combattant:
  504. self.findChild(DmLabel, "inf_pionNom").majTexte(combattant.nom)
  505. self.findChild(DmLabel, "inf_pionImage").chargerImage("img\\"+combattant.img.nomFichier)
  506. self.findChild(DmLabel, "inf_pionEffet").setVisible(False)
  507. class DmFrameInf_Decor(QGroupBox):
  508. """frame d'information (decor)"""
  509. def __init__(self, parent = None):
  510. super(DmFrameInf_Decor, self).__init__(parent)
  511. def maj(self, decor):
  512. self.setVisible((decor != None))
  513. if decor:
  514. self.findChild(DmLabel, "inf_decorNom").majTexte(decor.nom)
  515. self.findChild(DmLabel, "inf_decorImage").chargerImage("img\\"+decor.img.nomFichier)
  516. class DmFrameInf_Case(QGroupBox):
  517. """frame d'information (case)"""
  518. def __init__(self, parent = None):
  519. super(DmFrameInf_Case, self).__init__(parent)
  520. def maj(self, case):
  521. self.setVisible((case != None))
  522. if len(case.terrain.nom) > 0:
  523. self.findChild(DmLabel, "inf_caseTerrain").majTexte(case.terrain.nom)
  524. else:
  525. self.findChild(DmLabel, "inf_caseTerrain").majTexte("Case")
  526. self.findChild(DmLabel, "inf_caseCoord").majTexte("X: {} Y: {}".format(case.x, case.y))
  527. self.findChild(DmLabel, "inf_caseAltitude").majTexte("Alt.: {}".format(case.altitude))
  528. if case.effetActif != "":
  529. self.findChild(DmLabel, "inf_caseEffet").chargerImage("img\\"+case.imgEffet[case.effetActif])
  530. else:
  531. self.findChild(DmLabel, "inf_caseEffet").clear()
  532. class DmFrame(QFrame):
  533. """surcharge de QFrame"""
  534. def __init__(self, parent = None):
  535. super(DmFrame, self).__init__(parent)