def showMoveHelper(self, visible=True): """show help text In empty HandBoards""" if visible: if not self.__moveHelper: splitter = QGraphicsRectItem(self) hbCenter = self.rect().center() splitter.setRect(hbCenter.x() * 0.5, hbCenter.y(), hbCenter.x() * 1, 1) helpItems = [splitter] for name, yFactor in [(m18n('Move Exposed Tiles Here'), 0.5), (m18n('Move Concealed Tiles Here'), 1.5)]: helper = QGraphicsSimpleTextItem(name, self) helper.setScale(3) nameRect = QRectF() nameRect.setSize(helper.mapToParent(helper.boundingRect()).boundingRect().size()) center = QPointF(hbCenter) center.setY(center.y() * yFactor) helper.setPos(center - nameRect.center()) if self.sceneRotation() == 180: rotateCenter(helper, 180) helpItems.append(helper) self.__moveHelper = self.scene().createItemGroup(helpItems) self.__moveHelper.setVisible(True) else: if self.__moveHelper: self.__moveHelper.setVisible(False)
def decoratePlayer(self, player): """show player info on the wall""" side = player.front sideCenter = side.center() name = side.nameLabel if player.handBoard: player.newHandContent = player.computeNewHand() name.setText(' - '.join( [player.localName, unicode(player.newHandContent.total())])) else: name.setText(player.localName) name.resetTransform() if side.rotation() == 180: rotateCenter(name, 180) nameRect = QRectF() nameRect.setSize( name.mapToParent(name.boundingRect()).boundingRect().size()) name.setPos(sideCenter - nameRect.center()) player.colorizeName() side.windTile.setWind(player.wind, self.game.roundsFinished) side.windTile.resetTransform() side.windTile.setPos( sideCenter.x() * 1.63, sideCenter.y() - side.windTile.rect().height() / 2.5) side.nameLabel.show() side.windTile.show()
def paint(self, painter, option, widget=None): if not self.__icon.isNull(): if option.state & QStyle.State_Selected: mode = QIcon.Selected elif option.state & QStyle.State_Enabled: mode = QIcon.Normal elif option.state & QStyle.State_Active: mode = QIcon.Active else: mode = QIcon.Disabled transform = self.sceneTransform() if widget is not None: # 'widget' is the QGraphicsView.viewport() view = widget.parent() if isinstance(view, QGraphicsView): # Combine the scene transform with the view transform. view_transform = view.transform() transform = view_transform * view_transform lod = option.levelOfDetailFromTransform(transform) w, h = self.__iconSize.width(), self.__iconSize.height() target = QRectF(0, 0, w, h) source = QRectF(0, 0, w * lod, w * lod).toRect() # The actual size of the requested pixmap can be smaller. size = self.__icon.actualSize(source.size(), mode=mode) source.setSize(size) pixmap = self.__icon.pixmap(source.size(), mode=mode) painter.setRenderHint( QPainter.SmoothPixmapTransform, self.__transformationMode == Qt.SmoothTransformation ) painter.drawPixmap(target, pixmap, QRectF(source))
def decoratePlayer(self, player): """show player info on the wall""" side = player.front sideCenter = side.center() name = side.nameLabel if player.handBoard: player.newHandContent = player.computeNewHand() name.setText(' - '.join([player.localName, unicode(player.newHandContent.total())])) else: name.setText(player.localName) name.resetTransform() if side.rotation() == 180: rotateCenter(name, 180) nameRect = QRectF() nameRect.setSize(name.mapToParent(name.boundingRect()).boundingRect().size()) name.setPos(sideCenter - nameRect.center()) player.colorizeName() side.windTile.setWind(player.wind, self.game.roundsFinished) side.windTile.resetTransform() side.windTile.setPos(sideCenter.x()*1.63, sideCenter.y()-side.windTile.rect().height()/2.5) side.nameLabel.show() side.windTile.show()