EcranFondPlateau.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. """Scene affichee dans la QGraphicsView lorsqu'aucun [combat, plateau] n'est cree"""
  4. from __future__ import division
  5. from PyQt4.QtCore import *
  6. from PyQt4.QtGui import *
  7. class EcranFondPlateau(QGraphicsScene):
  8. """ecran de fond lorsqu'aucun plateau n'est cree"""
  9. def __init__(self, fenetre, parent=None):
  10. super(EcranFondPlateau, self).__init__()
  11. self.fenetre = fenetre
  12. self.setSceneRect(0, 0, 0.8*self.fenetre.ui.cbt_vue.width(), 0.8*self.fenetre.ui.cbt_vue.height())
  13. self.connect(self.fenetre.ui.cbt_vue, SIGNAL("resizeEvent()"), self.actu)
  14. self.fenetre.connect(self.fenetre.ui.cbt_vue, SIGNAL("resizeEvent()"), self.actu)
  15. self.cmdEnCours = CommandeFondPlateau(self, "enCours", ":/interface/512/ressource/armes_512.png", "Afficher le dernier combat", 40, 60, 30, 60)
  16. self.cmdEnCours.creer()
  17. self.cmdCharger = CommandeFondPlateau(self, "charger", ":/interface/512/ressource/dossier_512.png", "Charger un combat", 65, 15, 30, 60)
  18. self.cmdCharger.creer()
  19. self.cmdCreer = CommandeFondPlateau(self, "creer", ":/interface/512/ressource/plus_512.png", "Créer un nouveau combat", 15, 15, 30, 60)
  20. self.cmdCreer.creer()
  21. self.setSceneRect(QRectF())
  22. self.fenetre.ui.cbt_vue.fitInView(self.sceneRect(), Qt.KeepAspectRatioByExpanding)
  23. self.txt = QGraphicsTextItem()
  24. self.txt.setPos(QPointF(0,0))
  25. self.txt.setFont(QFont("Stencil", 18))
  26. self.txt.setDefaultTextColor(QColor(170,170,170))
  27. self.txt.setVisible(False)
  28. self.addItem(self.txt)
  29. def actu(self):
  30. self.setSceneRect(0, 0, 0.8*self.fenetre.ui.cbt_vue.width(), 0.8*self.fenetre.ui.cbt_vue.height())
  31. self.cmdEnCours.actu()
  32. self.cmdCharger.actu()
  33. self.cmdCreer.actu()
  34. def clic(self, cmdId):
  35. """on a clique sur une des commandes"""
  36. if cmdId == "creer":
  37. self.fenetre.nouveauPlateau()
  38. elif cmdId == "charger":
  39. self.fenetre.afficherEcranChargerPlateau()
  40. elif cmdId == "enCours":
  41. self.fenetre.chargerDernierPlateau()
  42. else:
  43. print "Commande invalide"
  44. def majTexte(self, txt):
  45. """affiche la legende en haut de l'ecran lors du surviol d'une commande"""
  46. if len(txt) > 0:
  47. self.txt.setTextWidth(self.width())
  48. self.txt.setPlainText(QString.fromUtf8(txt))
  49. self.centrerTxt()
  50. self.txt.setVisible((len(txt)>0))
  51. def centrerTxt(self):
  52. """centre le texte affiche"""
  53. f = QTextBlockFormat()
  54. f.setAlignment(Qt.AlignHCenter)
  55. cursor = self.txt.textCursor()
  56. cursor.select(QTextCursor.Document)
  57. cursor.mergeBlockFormat(f)
  58. cursor.clearSelection()
  59. self.txt.setTextCursor(cursor)
  60. class CommandeFondPlateau(QGraphicsPixmapItem):
  61. """bouton image affiche sur l'EcranFondPlateau"""
  62. def __init__(self, ecran, cmdId, img = "", txt = "", x = 0, y = 0, h = 100, transparence = 0, parent=None):
  63. """Attention: x, y, h sont en % des dimensions de l'ecran!! et transparence est en %"""
  64. super(CommandeFondPlateau, self).__init__()
  65. self.ecran = ecran
  66. self.cmdId = cmdId
  67. self.img = img
  68. self.txt = txt
  69. self.x = x
  70. self.y = y
  71. self.h = h
  72. self.transparence = transparence
  73. def actu(self):
  74. """ajoute une image au fond de l'ecran. """
  75. self.setShapeMode(QGraphicsPixmapItem.BoundingRectShape)
  76. lEcran = self.ecran.width()
  77. hEcran = self.ecran.height()
  78. pix = QPixmap()
  79. pix.load(self.img)
  80. pix = pix.scaledToHeight(((self.h*hEcran)/100), Qt.SmoothTransformation)
  81. self.setPixmap(pix)
  82. self.setPos(((self.x*lEcran)/100), \
  83. ((self.y*hEcran)/100) )
  84. self.setOpacity(self.transparence/100)
  85. def creer(self):
  86. self.setAcceptHoverEvents(True)
  87. self.setFlag(QGraphicsItem.ItemIsFocusable)
  88. self.actu()
  89. self.ecran.addItem(self)
  90. def mousePressEvent(self, event):
  91. """cree un plateau sur clic gauche"""
  92. self.ecran.clic(self.cmdId)
  93. def hoverEnterEvent(self, event):
  94. effet = QGraphicsColorizeEffect()
  95. effet.setColor(QColor(170, 170, 170))
  96. self.setGraphicsEffect(effet)
  97. self.ecran.majTexte(self.txt)
  98. def hoverLeaveEvent(self, event):
  99. self.setGraphicsEffect(None)
  100. self.ecran.majTexte("")