예제 #1
0
파일: scoring.py 프로젝트: zero804/kajongg
 def showMoveHelper(self, visible=None):
     """show help text In empty HandBoards"""
     if visible is None:
         visible = not self.uiTiles
     if self.__moveHelper and not isAlive(self.__moveHelper):
         return
     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 [(i18n('Move Exposed Tiles Here'), 0.5),
                                   (i18n('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 sceneRotation(self) == 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)
예제 #2
0
파일: scoring.py 프로젝트: KDE/kajongg
 def showMoveHelper(self, visible=None):
     """show help text In empty HandBoards"""
     if visible is None:
         visible = not self.uiTiles
     if self.__moveHelper and not isAlive(self.__moveHelper):
         return
     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)
예제 #3
0
파일: uitile.py 프로젝트: zero804/kajongg
 def boundingRect(self):
     """define the part of the tile we want to see. Do not return QRect()
     if tileset is not known because that makes QGraphicsscene crash"""
     if self.tileset:
         self._boundingRect = QRectF(
             QPointF(),
             self.tileset.tileSize if Internal.Preferences.showShadows
             else self.tileset.faceSize)
     return self._boundingRect
예제 #4
0
 def text(self, value):
     if self.__text != value:
         self.__text = value
         self.prepareGeometryChange()
         txt = self.__text
         if ' - ' in txt:
             # this disables animated movement if only the score changes
             txt = txt[:txt.rfind(' - ')] + ' - 55'
         self.__boundingRect = QRectF(
             QFontMetrics(self.__font).boundingRect(txt))
         self.needsRefresh = True
예제 #5
0
 def paint(self, painter, dummyOption, dummyWidget=None):
     """paint the marker"""
     with Painter(painter):
         painter.setBrush(self.__brush)
         size = Internal.scene.windTileset.faceSize.height()
         ellRect = QRectF(QPoint(), QPoint(size, size))
         painter.drawEllipse(ellRect)
         renderer = Internal.scene.windTileset.renderer()
         painter.translate(12, 12)
         painter.scale(0.60, 0.60)
         renderer.render(painter, self.wind.markerSvgName, self.boundingRect())
예제 #6
0
파일: board.py 프로젝트: oleglite/checkers
    def draw_border(self):
        rect = self.rect()
        outer_size = min([rect.width(), rect.height()])
        outer_rect = QRectF(0, 0, outer_size, outer_size)
        inner_rect = self.board_rect()
        self._painter.fillRect(outer_rect, self._border_brush)

        self._painter.setPen(QPen(QBrush(Qt.black), 3))
        self._painter.drawRect(inner_rect)

        labels = 'ABCDEFGHIJ'
        for i in xrange(self.board.SIZE):
            # bottom labels
            left = self._border_size + i * self._field_size
            top = outer_rect.bottom() - self._border_size
            text_rect = QRectF(left, top, self._field_size, self._border_size)
            self._painter.drawText(text_rect, Qt.AlignCenter, labels[i])

            # left labels
            top = self._border_size + (self.board.SIZE - i - 1) * self._field_size
            text_rect = QRectF(0, top, self._border_size, self._field_size)
            self._painter.drawText(text_rect, Qt.AlignCenter, str(i + 1))
예제 #7
0
파일: uiwall.py 프로젝트: KDE/kajongg
 def decoratePlayer(self, player):
     """show player info on the wall"""
     side = player.front
     sideCenter = side.center()
     name = side.nameLabel
     name.setText(
         ' - '.join([player.localName,
                     unicode(player.explainHand().total())]))
     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()
예제 #8
0
파일: uitile.py 프로젝트: zero804/kajongg
 def pixmapFromSvg(self, pmapSize=None, withBorders=None):
     """returns a pixmap with default size as given in SVG
     and optional borders/shadows"""
     if withBorders is None:
         withBorders = Internal.Preferences.showShadows
     if withBorders:
         wantSize = self.tileset.tileSize.toSize()
     else:
         wantSize = self.tileset.faceSize.toSize()
     if not pmapSize:
         pmapSize = wantSize
     result = QPixmap(pmapSize)
     result.fill(Qt.transparent)
     painter = QPainter(result)
     if not painter.isActive():
         logException(
             'painter is not active. Wanted size: %s' %
             str(pmapSize))
     try:
         xScale = float(pmapSize.width()) / wantSize.width()
         yScale = float(pmapSize.height()) / wantSize.height()
     except ZeroDivisionError:
         xScale = 1
         yScale = 1
     if not withBorders:
         painter.scale(*self.tileset.tileFaceRelation())
         painter.translate(-self.facePos())
     renderer = self.tileset.renderer()
     renderer.render(painter, self.__elementId())
     painter.resetTransform()
     self._drawDarkness(painter)
     if self.showFace():
         faceSize = self.tileset.faceSize.toSize()
         faceSize = QSize(
             faceSize.width() * xScale,
             faceSize.height() * yScale)
         painter.translate(self.facePos())
         renderer.render(painter, self.tileset.svgName[self.tile.exposed],
                         QRectF(QPointF(), QSizeF(faceSize)))
     return result
예제 #9
0
파일: uitile.py 프로젝트: zero804/kajongg
 def paint(self, painter, dummyOption, dummyWidget=None):
     """paint the entire tile.
     I tried to cache a pixmap for the tile and darkener but without face,
     but that actually made it slower."""
     with Painter(painter):
         renderer = self.tileset.renderer()
         withBorders = Internal.Preferences.showShadows
         if not withBorders:
             painter.scale(*self.tileset.tileFaceRelation())
         renderer.render(painter, self.__elementId(), self.boundingRect())
         self._drawDarkness(painter)
     with Painter(painter):
         if self.showFace():
             if withBorders:
                 faceSize = self.tileset.faceSize.toSize()
                 renderer.render(
                     painter, self.tileset.svgName[str(self.tile.exposed)],
                     QRectF(self.facePos(), QSizeF(faceSize)))
             else:
                 renderer.render(
                     painter, self.tileset.svgName[str(self.tile.exposed)],
                     self.boundingRect())
     if self.cross:
         self.__paintCross(painter)
예제 #10
0
 def boundingRect(self):
     """around the text"""
     return self.__boundingRect or QRectF()
예제 #11
0
 def tileFaceRect(self):
     """the face rect of a uiTile relative its origin"""
     return QRectF(self.tileFacePos(), self.tileset.faceSize)
예제 #12
0
 def boundingRect(self): # pylint: disable=no-self-use
     """define the part of the tile we want to see"""
     size = Internal.scene.windTileset.faceSize.height() * 1.1
     return QRectF(QPoint(), QPoint(size, size))