[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/games/kmj
From: Wolfgang Rohdewald <wolfgang () rohdewald ! de>
Date: 2009-04-02 1:38:50
Message-ID: 1238636330.072479.2481.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 948034 by wrohdewald:
class PlayerWindLabel
M +30 -6 board.py
M +3 -23 kmj.py
--- trunk/playground/games/kmj/board.py #948033:948034
@@ -22,7 +22,7 @@
from PyKDE4.kdecore import i18n
from PyQt4.QtCore import Qt, QPointF, QPoint, QString, QRectF, QMimeData, SIGNAL, QVariant
from PyQt4.QtGui import QGraphicsRectItem, QGraphicsItem, QSizePolicy, QFrame, QGraphicsItemGroup
-from PyQt4.QtGui import QMenu, QCursor, QGraphicsView, QGraphicsEllipseItem, QGraphicsScene
+from PyQt4.QtGui import QMenu, QCursor, QGraphicsView, QGraphicsEllipseItem, QGraphicsScene, QLabel
from PyQt4.QtGui import QColor, QPainter, QDrag, QPixmap, QStyleOptionGraphicsItem, QPen, QBrush
from PyQt4.QtSvg import QGraphicsSvgItem
from tileset import Tileset, TileException, LIGHTSOURCES, elements, Elements
@@ -30,7 +30,8 @@
import random
-from util import logException
+import util
+from util import logException, PREF
ROUNDWINDCOLOR = QColor(235, 235, 173)
@@ -286,6 +287,27 @@
windtilenr = {'N':1, 'S':2, 'E':3, 'W':4}
self.face.setElementId('WIND_%d' % windtilenr[name])
+class PlayerWindLabel(QLabel):
+ def __init__(self, name, roundsFinished=0, parent=None):
+ QLabel.__init__(self, parent)
+ pwind = PlayerWind(name, roundsFinished)
+ self.tileset = Tileset(util.PREF.windTilesetName)
+ pwind.setFaceTileset(self.tileset)
+ pm= QPixmap(70, 70)
+ self.pm = pm
+ pm.fill(Qt.transparent)
+ painter = QPainter(pm)
+ painter.setRenderHint(QPainter.Antialiasing)
+ painter.scale(0.65, 0.65)
+ pwind.paint(painter, QStyleOptionGraphicsItem())
+ for child in pwind.childItems():
+ if isinstance(child, QGraphicsSvgItem):
+ painter.save()
+ painter.translate(child.mapToParent(0.0, 0.0))
+ child.paint(painter, QStyleOptionGraphicsItem())
+ painter.restore()
+ self.setPixmap(pm)
+
class Board(QGraphicsRectItem):
""" a board with any number of positioned tiles"""
def __init__(self, width, height, tileset, tiles=None, rotation = 0):
@@ -861,10 +883,12 @@
assert event # quieten pylint
# also adjust the background to the container. Do this here because this way
# it is easier to minimize calls to setBackground()
- grandpa = self.parentWidget().parentWidget()
- if grandpa and grandpa.objectName() == 'MainWindow':
- grandpa.applySettings()
- grandpa.setBackground()
+ parent = self.parentWidget()
+ if parent:
+ grandpa = parent.parentWidget()
+ if grandpa and grandpa.objectName() == 'MainWindow':
+ grandpa.applySettings()
+ grandpa.setBackground()
if self.scene():
self.fitInView(self.scene().itemsBoundingRect(), Qt.KeepAspectRatio)
--- trunk/playground/games/kmj/kmj.py #948033:948034
@@ -62,7 +62,7 @@
try:
import board
- from board import Tile, PlayerWind, Walls, FittingView, ROUNDWINDCOLOR, \
+ from board import Tile, PlayerWind, PlayerWindLabel, Walls, FittingView, ROUNDWINDCOLOR, \
HandBoard, SelectorBoard, MJScene
from playerlist import PlayerList
from tileset import Tileset, elements, LIGHTSOURCES
@@ -226,9 +226,7 @@
self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()"))
grid = QGridLayout()
self.names = None
- self.scenes = []
self.nameWidgets = []
- self.tileset = Tileset(util.PREF.tilesetName)
for idx, wind in enumerate(WINDS):
cbName = QComboBox()
# increase width, we want to see the full window title
@@ -236,15 +234,7 @@
cbName.addItems(playerNames)
grid.addWidget(cbName, idx+1, 1)
self.nameWidgets.append(cbName)
- self.scenes.append(QGraphicsScene())
- view = FittingView()
- view.setEnabled(False)
- view.setScene(self.scenes[idx])
- pwind = PlayerWind(wind)
- pwind.setFaceTileset(self.tileset)
- pwind.scale(0.3, 0.3)
- self.scenes[idx].addItem(pwind)
- grid.addWidget(view, idx+1, 0)
+ grid.addWidget(PlayerWindLabel(wind), idx+1, 0)
self.connect(cbName, SIGNAL('currentIndexChanged(const QString&)'),
self.slotValidate)
grid.setColumnStretch(0, 1)
@@ -309,23 +299,13 @@
grid.addWidget(QLabel(i18n("Wind")), 0, 1)
grid.addWidget(QLabel(i18n("Score")), 0, 2)
grid.addWidget(QLabel(i18n("Mah Jongg")), 0, 3)
- self.scenes = []
- self.tileset = Tileset(util.PREF.windTilesetName)
for idx, player in enumerate(self.players):
player.spValue = QSpinBox()
player.spValue.setRange(0, util.PREF.upperLimit)
name = QLabel(player.name)
name.setBuddy(player.spValue)
grid.addWidget(name, idx+1, 0)
- self.scenes.append(QGraphicsScene())
- view = FittingView()
- view.setScene(self.scenes[idx])
- pwind = PlayerWind(player.wind.name, self.game.roundsFinished)
- pwind.setFaceTileset(self.tileset)
- pwind.scale(0.3, 0.3)
- self.scenes[idx].addItem(pwind)
- view.setEnabled(False)
- grid.addWidget(view, idx+1, 1)
+ grid.addWidget(PlayerWindLabel(player.wind.name, self.game.roundsFinished), idx+1, 1)
grid.addWidget(player.spValue, idx+1, 2)
player.won = QCheckBox("")
grid.addWidget(player.won, idx+1, 3)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic