Example #1
0
 def show_image(self,
                pattern,
                use_grayscale=False,
                alpha=0,
                beta=0,
                gamma=0):
     # if not self.connected:
     #     self.print_text_signal.emit("Impossible to show image: projector is not connected!")
     #     return
     loaded_image = QImage(pattern).convertToFormat(
         QImage.Format.Format_RGB32)
     values = loaded_image.bits()
     pixel_values = np.array(values).reshape(loaded_image.height(),
                                             loaded_image.width(), 4)
     if use_grayscale:
         thickness = DLPColorCalibrator.my_log_function(
             1, alpha, beta, gamma)
         tmp, corrected_values = DLPColorCalibrator.my_color_correction(
             pixel_values, alpha, beta, gamma, thickness)
         corrected_values_tr = corrected_values.copy()
         corrected_image = QImage(corrected_values_tr,
                                  corrected_values_tr.shape[1],
                                  corrected_values_tr.shape[0],
                                  QImage.Format_RGB32)
         self.img = QPixmap(corrected_image)
     else:
         self.img = QPixmap(loaded_image)
     if self.horizontal_mirror:
         self.img = self.img.transformed(QTransform().scale(-1, 1))
     if self.vertical_mirror:
         self.img = self.img.transformed(QTransform().scale(1, -1))
     self.display_image_signal.emit(self.img)
     self.setPixmap(self.img)
Example #2
0
 def testMap(self):
     transform = QTransform()
     values = (10.0, 20.0)
     tx, ty = transform.map(*values)
     self.assertTrue(isinstance(tx, float))
     self.assertTrue(isinstance(ty, float))
     self.assertEqual((tx, ty), values)
Example #3
0
 def anim_value_changed(self, value):
     value = int(value)
     t = QTransform()
     t.rotate(value, Qt.YAxis)
     self.setPixmap(self.dog_pixmap.transformed(t))
     if value == 180:
         self.anim1.start()
Example #4
0
 def mouseMoveEvent(self, event):
     """
     Mouse move event handler
     @param event:
     @type event:
     """
     modifiers = QApplication.keyboardModifiers()
     # mouse coordinates, relative to parent widget
     pos = self.mapToParent(event.pos())
     img = self.tool.layer.parentImage
     r = self.tool.resizingCoeff
     self.tool.targetQuad_old = self.tool.getTargetQuad(
     )  # TODO added 15/05/18 validate
     self.posRelImg = (pos - QPoint(img.xOffset, img.yOffset)) / r
     if modifiers == Qt.ControlModifier | Qt.AltModifier:
         if self.tool.isModified():
             dlgWarn("A transformation is in progress", "Reset first")
             return
         # update the new starting  position
         self.posRelImg_ori = self.posRelImg  # (pos - QPoint(img.xOffset, img.yOffset)) / r
         self.posRelImg_frozen = self.posRelImg
         self.tool.moveRotatingTool()
         self.tool.parent().repaint()
         return
     curimg = self.tool.layer.getCurrentImage()
     w, h = curimg.width(), curimg.height()
     s = w / self.tool.img.width()
     form = self.tool.getForm()
     if form.options['Free']:
         pass
     elif form.options['Rotation']:
         center = self.tool.getTargetQuad().boundingRect().center()
         v = QPointF(self.posRelImg.x() - center.x(),
                     self.posRelImg.y() - center.y())
         v0 = QPointF(self.posRelImg_frozen.x() - center.x(),
                      self.posRelImg_frozen.y() - center.y())
         theta = (np.arctan2(v.y(), v.x()) -
                  np.arctan2(v0.y(), v0.x())) * 180.0 / np.pi
         T = QTransform()  # self.tool.geoTrans_ori)
         T.translate(center.x(), center.y()).rotate(theta).translate(
             -center.x(), -center.y())
         q = T.map(self.tool.getFrozenQuad())
         for i, role in enumerate(
             ['topLeft', 'topRight', 'bottomRight', 'bottomLeft']):
             self.tool.btnDict[role].posRelImg = q.at(i)
     elif form.options['Translation']:
         # translation vector (coordinates are relative to the full size image)
         p = QPointF(self.posRelImg) - QPointF(self.posRelImg_frozen)
         T = QTransform()
         T.translate(p.x(), p.y())
         q = T.map(self.tool.getFrozenQuad())
         for i, role in enumerate(
             ['topLeft', 'topRight', 'bottomRight', 'bottomLeft']):
             self.tool.btnDict[role].posRelImg = q.at(i)
     self.tool.moveRotatingTool()
     self.tool.modified = True
     self.tool.layer.applyToStack()
     self.parent().repaint()
 def testItemAt(self):
     #QGraphicsScene.itemAt()
     self.assertEqual(self.scene.itemAt(50, 50, QTransform()), self.topleft)
     self.assertEqual(self.scene.itemAt(150, 50, QTransform()),
                      self.topright)
     self.assertEqual(self.scene.itemAt(50, 150, QTransform()),
                      self.bottomleft)
     self.assertEqual(self.scene.itemAt(150, 150, QTransform()),
                      self.bottomright)
Example #6
0
 def paint(self, painter: QPainter, model: BaseModel = None):
     _pix_map = self._pixel_map.scaledToHeight(model.radius * 1.025,
                                               mode=Qt.SmoothTransformation)
     _seed = hash(model.name)
     _transf = QTransform()
     _transf.rotate(_seed % 360)
     _pix_map = _pix_map.transformed(_transf, mode=Qt.SmoothTransformation)
     _x, _y = self.transform(model.x - _pix_map.width() / 2.0,
                             model.y + _pix_map.height() / 2.0)
     painter.drawPixmap(round(_x), round(_y), _pix_map)
Example #7
0
    def keyPressEvent(self, event):
        """Handles deleting and rotating the selected
        item when dedicated keys are pressed.

        Args:
            event (QKeyEvent): Key event
        """
        if event.key() == Qt.Key_Delete and self.isSelected():
            self._project_item._project.remove_item(self.name())
            event.accept()
        elif event.key() == Qt.Key_R and self.isSelected():
            # TODO:
            # 1. Change name item text direction when rotating
            # 2. Save rotation into project file
            rect = self.mapToScene(self.boundingRect()).boundingRect()
            center = rect.center()
            t = QTransform()
            t.translate(center.x(), center.y())
            t.rotate(90)
            t.translate(-center.x(), -center.y())
            self.setPos(t.map(self.pos()))
            self.setRotation(self.rotation() + 90)
            links = set(lnk for conn in self.connectors.values()
                        for lnk in conn.links)
            for link in links:
                link.update_geometry()
            event.accept()
        else:
            super().keyPressEvent(event)
Example #8
0
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.horizontalSliderDikey.valueChanged.connect(self.dikey_egim)

        labelCizgi0 = QLabel(self.ui.egimAnaFrame)
        labelCizgi0.move(500, 348)
        labelCizgi0.resize(25, 12)
        labelCizgi0.setScaledContents(True)
        labelCizgi0.setStyleSheet("QLabel{ background-color: none;}")
        pixmapCizgi0 = QPixmap("aa.png")
        xformCizgi0 = QTransform()
        xformCizgi0.rotate(105)
        xformed_pixmapCizgi0 = pixmapCizgi0.transformed(
            xformCizgi0, Qt.SmoothTransformation)
        labelCizgi0.setPixmap(xformed_pixmapCizgi0)

        labelCizgi5 = QLabel(self.ui.egimAnaFrame)
        labelCizgi5.move(480, 400)
        labelCizgi5.resize(25, 18)
        labelCizgi5.setScaledContents(True)
        labelCizgi5.setStyleSheet("QLabel{ background-color: none;}")
        pixmapCizgi5 = QPixmap("aa.png")
        xformCizgi5 = QTransform()
        xformCizgi5.rotate(130)
        xformed_pixmapCizgi5 = pixmapCizgi5.transformed(xformCizgi5)
        labelCizgi5.setPixmap(xformed_pixmapCizgi5)

        self.show()
Example #9
0
 def mvp(self):
     view_center = self.rect().center()
     mvp = QTransform()
     mvp.translate(view_center.x(), view_center.y())
     mvp.scale(self.camera.zoom, self.camera.zoom)
     mvp.translate(self.camera.pos.x(), self.camera.pos.y())
     return mvp
Example #10
0
    def __init__(self, paint_device):
        # NB: AllFeatures passed since doing otherwise results in unsupported
        # features being turned into rasters (which is not a useful fallback
        # here).
        super().__init__(QPaintEngine.PaintEngineFeature.AllFeatures)

        self._transform = QTransform()
        self._pen = QPen()

        # [((r, g, b, a) or None, width, [(x, y), ...]), ...]
        #
        # Colours are None or tuples of 0.0 to 1.0 floats. Line widths are
        # given in pixels. Line coordinates are given in pixels.
        self._outlines = []
Example #11
0
    def testsquareToQuad(self):
        q1 = QPolygonF()
        q1.append(QPointF(10.0, 10.0))
        q1.append(QPointF(20.0, 10.0))
        q1.append(QPointF(10.0, -10.0))
        q1.append(QPointF(20.0, -10.0))

        t1 = QTransform()
        r1 = QTransform.squareToQuad(q1, t1)
        r2 = QTransform.squareToQuad(q1)

        self.assertTrue(r1)
        self.assertTrue(r2)

        self.assertEqual(t1, r2)
Example #12
0
    def _transform_image(self) -> QPixmap:
        """Create a randomly rotated and resized version of self.image."""
        # Rotate
        degrees = random.randint(0, 359)
        transform = QTransform()
        transform.rotate(degrees)
        image = self.image.transformed(transform)

        # Generate random dimensions but make sure the image fits to the screen
        dim = 'width' if image.width() > image.height() else 'height'
        image = self._normalize(image, dim)
        other = {'width': 'height', 'height': 'width'}[dim]
        if getattr(image, other)() >= getattr(self, 'screen_' + other):
            image = self._normalize(image, other)

        return image
Example #13
0
    def refreshImage(self, i, j):
        currentItem = self.itemAt(self.xFromCol(j), self.yFromRow(i),
                                  QTransform())
        if currentItem != 0 and currentItem.data(0) == 777:
            currentItem = None

        filename = self.getPieceFilename(self.board[i][j])
        if filename == "":
            return

        y = self.nPieceWidth * i
        x = self.nPieceWidth * j
        item = QGraphicsPixmapItem(QPixmap(filename))

        colorize = QGraphicsColorizeEffect()
        if self.board[i][j].color() == pieceColor.White:
            if self.threatPiece[i][j]:
                colorize.setColor(self.cLightPieceColorThreat)
            else:
                colorize.setColor(self.cLightPieceColor)
        else:
            if self.threatPiece[i][j]:
                colorize.setColor(self.cDarkPieceColorThreat)
            else:
                colorize.setColor(self.cDarkPieceColor)

        item.setGraphicsEffect(colorize)
        item.setCacheMode(QGraphicsItem.NoCache)  # needed for proper rendering
        item.setData(0, 777)

        self.addItem(item)
        item.setPos(x, y)
Example #14
0
    def refreshTile(self, i, j):
        currentItem = self.itemAt(j * self.nPieceWidth, i * self.nPieceWidth,
                                  QTransform())
        if currentItem != 0 and currentItem.data(0) == 777:
            currentItem = None

        self.drawTile(i, j)
Example #15
0
    def __init__(self, model_type: str = '', pst_xy: np.ndarray = None, dir_xy: np.ndarray = None, v_xy: np.ndarray = None,
                 radius: int = 1, damage: float = 0, life: float = 1, weight: float = 1, creator: str = 'unknown'):
        self._type = model_type
        self._pst_xy = np.array([0, 0]) if pst_xy is None else pst_xy
        self._dir_xy = np.array([0, 1]) if dir_xy is None else dir_xy
        self._v_xy = np.array([0, 0]) if v_xy is None else v_xy
        self._transform = QTransform()
        self._transform.rotate(self.angle)

        self._damage = damage
        self._radius = radius
        self._life = life
        self.color = 255, 255, 255
        self.weight = weight
        self.name = 'unknown'
        self._creator = creator
Example #16
0
 def clearMap(self):
     self.ui.gvWorldMap.setTransform(QTransform())
     self.scene.clear()
     self.drawMap()
     self.ui.listWidget.clear()
     self.ui.departure.setCurrentIndex(-1)
     self.ui.arrival.setCurrentIndex(-1)
 def changeAiLeftHandTo(self, number):
     # self.player_left.setPixmap()
     # image_hand = QtGui.QPixmap("Assets/AiPlayer/"+str(number)+"Kiri.png")
     image_hand = QtGui.QPixmap("Assets/AiKiri/akiri0" + str(number) +
                                "f4.png")
     image_hand = image_hand.transformed(QTransform().scale(1, -1))
     self.ai_left.setPixmap(image_hand)
Example #18
0
    def mousePressEvent(self, event):  # 重载鼠标事件
        pos = event.scenePos()  # 当前鼠标事件发生的场景坐标QPointF(x,y)
        x, y = pos.toTuple()
        old_point = self.current_point
        if event.button() == Qt.LeftButton and not self.acceptMove:  # 仅左键事件触发且不接受拖拽时
            transform = QTransform(1, 0, 0, 0, 1, 0, 0, 0, 1)  # 仿射变换矩阵,这里是不变
            self.current_point = self.itemAt(pos, transform)
            print("选中的图元:", self.current_point)
            if isinstance(self.current_point, QGraphicsEllipseItem):
                self.wh *= 2  # 选中后放大关键点
                lx, ly = self.center2LeftTop(x, y)
                self.current_point.setRect(QRect(lx, ly, self.wh, self.wh))
                self.acceptMove = True  # 允许拖拽
                self.select_listItem()
            else:
                self.current_point = old_point  # 防止选中了点后,没按右键释放,而是选中了图片图元

        if event.button() == Qt.RightButton and self.acceptMove:  # 仅右键事件触发
            # 如果当前选中的Item是关键点,则将该关键点移动到当前光标所在位置
            if isinstance(self.current_point, QGraphicsEllipseItem):
                print("释放的点:", self.current_point.rect())
                self.wh = self.wh_const  # 释放后缩小关键点
                lx, ly = self.center2LeftTop(x, y)
                self.current_point.setRect(QRect(lx, ly, self.wh, self.wh))
                self.updateBoneLine(x, y)
                self.acceptMove = False
                self.changeKeyPoints(x, y)  # 将更改后的坐标映射回原图
                self.update_listItem(x, y)  # 更新列表框中的关键点坐标数值
                self.update()
Example #19
0
 def __init__(self, reverse=False):
     super(QRCItem, self).__init__()
     self.reverse = reverse
     self.ItemStacksBehindParent = True
     self.pixmap = QPixmap(":/images/background.png")
     self.pixmap_reflect = self.pixmap.transformed(QTransform().scale(
         -1, 1))
    def wheelEvent(self, event: QtGui.QWheelEvent):
        """Implementation.

    Handles zooming the editor's view.
    """

        if (event.modifiers() & Qt.ControlModifier
                and event.orientation() == Qt.Vertical):
            if event.delta() > 0:
                self.zoomIn()
            else:
                self.zoomOut()

            # TODO: Improve cursor anchoring; be more like Aseprite
            prevAnchor = self.transformationAnchor()
            self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
            self.setTransform(QTransform.fromScale(self.zoom(), self.zoom()))
            self.updateSceneRect(self.zoom())
            self.setTransformationAnchor(prevAnchor)
            event.accept()
        elif event.orientation() == Qt.Horizontal:
            # XXX: Workaround for the insane horizontal scroll delta of 15240 on the
            # Logitech G502 mouse.
            if abs(event.delta()) == 15240:
                newDelta = 120 if event.delta() > 0 else -120
                event = QtGui.QWheelEvent(event.pos(),
                                          event.globalPos(),
                                          newDelta,
                                          event.buttons(),
                                          event.modifiers(),
                                          orient=Qt.Horizontal)
            super().wheelEvent(event)
        else:
            super().wheelEvent(event)
Example #21
0
    def mouseReleaseEvent(self, event):
        # normal mode
        if not self.draft_mode:
            if event.button() == Qt.LeftButton:
                # toggle sidebar with properties
                clicked_item = self.itemAt(event.scenePos(), QTransform())
                if self._clicked_item:
                    if isinstance(clicked_item, ProcessItem):
                        self.views()[0].sidebar_toggled.emit(
                            clicked_item.data(0))
                        self.views()[0].commodity_clicked.emit(None)
                    elif isinstance(clicked_item, CommodityItem):
                        self.views()[0].sidebar_toggled.emit(None)
                        self.views()[0].commodity_clicked.emit(
                            clicked_item.data(0))
                    else:
                        self.views()[0].sidebar_toggled.emit(None)
                        self.views()[0].commodity_clicked.emit(None)
                else:
                    self.views()[0].sidebar_toggled.emit(None)
                    self.views()[0].commodity_clicked.emit(None)
            return

        # draft mode in selection
        if self.edit_mode == SelectConnect.SELECT:
            # release process item
            if self._clicked_item:
                self._clicked_item.setOpacity(1.0)
                # remove clicked item from collision list with drop indicator
                collision_items = self.collidingItems(self._drop_indicator)
                if collision_items:
                    collision_items.remove(self._clicked_item)
                # avoid placement if colliding with other items
                if not collision_items:
                    self._clicked_item.setPos(self._drop_indicator.scenePos())
                    self._clicked_item.data(
                        0).coordinate = self._drop_indicator.pos()
                    self._bounding_rect.update()
                self.disable_drop_indicator()
                self._clicked_item = None
        else:
            # connecting processes
            if event.button() == Qt.LeftButton:
                clicked_item = self.itemAt(event.scenePos(), QTransform())
                self.execute_connection(clicked_item, event.scenePos())

        super().mouseReleaseEvent(event)
 def changeAiRightHandTo(self, number):
     # self.player_left.setPixmap()
     # image_hand = QtGui.QPixmap("Assets/AiPlayer/"+str(number)+"Kanan.png")
     image_hand = QtGui.QPixmap("Assets/AiKanan/akanan0" + str(number) +
                                "f4.png")
     image_hand = image_hand.transformed(QTransform().scale(1, -1))
     self.ai_right.setPixmap(image_hand)
     self.ai_right.setScaledContents(True)
Example #23
0
    def __init__(self,
                 graph_view_form,
                 x,
                 y,
                 extent,
                 entity_id=None,
                 entity_class_id=None):
        """Initializes item

        Args:
            graph_view_form (GraphViewForm): 'owner'
            x (float): x-coordinate of central point
            y (float): y-coordinate of central point
            extent (int): Preferred extent
            entity_id (int, optional): The entity id in case of a non-wip item
            entity_class_id (int, optional): The entity class id in case of a wip item
        """
        if not entity_id and not entity_class_id:
            raise ValueError(
                "Can't create an RelationshipItem without relationship id nor relationship class id."
            )
        super().__init__()
        self._graph_view_form = graph_view_form
        self.db_mngr = graph_view_form.db_mngr
        self.db_map = graph_view_form.db_map
        self.entity_id = entity_id
        self._entity_class_id = entity_class_id
        self._entity_name = f"<WIP {self.entity_class_name}>"
        self.arc_items = list()
        self._extent = extent
        self.refresh_icon()
        self.setPos(x, y)
        rect = self.boundingRect()
        self.setOffset(-rect.width() / 2, -rect.height() / 2)
        self._press_pos = None
        self._merge_target = None
        self._moved_on_scene = False
        self._view_transform = QTransform(
        )  # To determine collisions in the view
        self._views_cursor = {}
        self._bg = None
        self._bg_brush = Qt.NoBrush
        self._init_bg()
        self._bg.setFlag(QGraphicsItem.ItemStacksBehindParent, enabled=True)
        self.is_wip = None
        self._question_item = None  # In case this becomes a template
        if not self.entity_id:
            self.become_wip()
        else:
            self.become_whole()
        self.setZValue(0)
        self.setFlag(QGraphicsItem.ItemIsSelectable, enabled=True)
        self.setFlag(QGraphicsItem.ItemIsMovable, enabled=True)
        self.setFlag(QGraphicsItem.ItemIgnoresTransformations, enabled=True)
        self.setFlag(QGraphicsItem.ItemSendsScenePositionChanges, enabled=True)
        self.setAcceptHoverEvents(True)
        self.setCursor(Qt.ArrowCursor)
 def remove_marker(self, x, y):
     transform = QTransform()
     try:
         self._scene.removeItem(
             self._scene.itemAt(float(x), float(y), transform))
         self._scene.removeItem(
             self._scene.itemAt(float(x), float(y), transform))
     except:
         pass
Example #25
0
 def brushStrokeSeg(qp, x0, y0, x, y, brush):
     """
     Base method for brush painting.
     The method paints the straight line ((x0,y0), (x, y)) with the brush defined by brush,
     using an active QPainter instance qp,
     It returns the last painted position, or the initial position if
     not any painting occurs, due to spacing constraints.
     @param x0: image x-coord
     @type x0: float
     @param y0: image y-coord
     @type y0: float
     @param x: image x-coord
     @type x: float
     @param y: image y-coord
     @type y: float
     @param brush: painting brush or eraser
     @type brush: dict
     @return: last painted position
     @rtype: 2-uple of float
     """
     tmp_x = x
     tmp_y = y
     # vector of the move
     a_x, a_y = tmp_x - x0, tmp_y - y0
     # move length : use 1-norm for performance
     d = sqrt(a_x * a_x + a_y * a_y)
     spacing, jitter, radius, pxmp = brush['spacing'], brush[
         'jitter'], brush['size'] / 2, brush['pixmap']
     step = 1 if d == 0 else radius * 0.3 * spacing / d  # 0.25
     sinBeta, cosBeta = 0.0, 1.0
     if jitter != 0.0:
         step *= (1.0 + choice(brushFamily.jitterRange) * jitter / 100.0)
         sinBeta = choice(brushFamily.jitterRange) * jitter / 100
         cosbeta = sqrt(1 - sinBeta * sinBeta)
     p_x, p_y = x0, y0
     if d != 0.0:
         cosTheta, sinTheta = a_x / d, a_y / d
         if jitter != 0.0:
             cosTheta = cosTheta * cosBeta + sinTheta * sinBeta
             sinTheta = sinTheta * cosBeta - cosTheta * sinBeta
         transform = QTransform(
             cosTheta, sinTheta, -sinTheta, cosTheta, 0, 0
         )  # Caution: angles > 0 correspond to counterclockwise rotations of pxmp
         pxmp = pxmp.transformed(transform)
     count = 0
     maxCount = int(1.0 / step)
     while count < maxCount:
         count += 1
         if pxmp is None:
             qp.drawEllipse(QPointF(p_x, p_y), radius, radius)
         else:
             qp.drawPixmap(QPointF(p_x - radius, p_y - radius),
                           pxmp)  # TODO radius added 19/03/20 validate
         p_x, p_y = p_x + a_x * step, p_y + a_y * step
     # return last brush position
     return p_x, p_y
Example #26
0
 def __init__(self, scene: 'QTetris.QScene'):
     super(QTetris.QView, self).__init__()
     self.setTransform(QTransform().rotate(+90).scale(+1, -1))
     self.setMinimumSize(100, 200)
     self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
     self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
     self.setRenderHints(QPainter.Antialiasing)
     self.setFrameStyle(QFrame.NoFrame)
     self.setMouseTracking(True)
     self.setScene(scene)
Example #27
0
    def mousePressEvent(self, event):
        """ Start mouse pan or zoom mode.
        """

        if event.button() == Qt.LeftButton:
            self.x1 = event.x()
            self.y1 = event.y()
            pic_x=self.picshow.x()
            pic_y=self.picshow.y()

            transform=QTransform()
            print(self.x1,self.y1)
Example #28
0
    def testquadToQuad(self):
        q1 = QPolygonF()
        q1.append(QPointF(10.0, 10.0))
        q1.append(QPointF(20.0, 10.0))
        q1.append(QPointF(10.0, -10.0))
        q1.append(QPointF(20.0, -10.0))

        q2 = QPolygonF()
        q2.append(QPointF(20.0, 20.0))
        q2.append(QPointF(30.0, 20.0))
        q2.append(QPointF(20.0, -20.0))
        q2.append(QPointF(30.0, -20.0))

        t1 = QTransform()
        r1 = QTransform.quadToQuad(q1, q2, t1)
        r2 = QTransform.quadToQuad(q1, q2)

        self.assertTrue(r1)
        self.assertTrue(r2)

        self.assertEqual(t1, r2)
    def paintTileMap(self):
        tilemap = self._tilemaps[self._current_tilemap]
        tm_w = tilemap.size().width()
        tm_h = tilemap.size().height()
        self.setFixedWidth(tm_w + 20)
        self.setFixedHeight(tm_h + 20)
        self._scene.setSceneRect(0, 0, tm_w, tm_h)

        if self._current_tilemap_item is not None:
            self._current_tilemap_item = self._scene.itemAt(
                float(0), float(0), QTransform())
            self._scene.removeItem(self._current_tilemap_item)
        item = self._scene.addPixmap(tilemap)
Example #30
0
    def handleRightButton(self, pos: QPointF):
        """Handles the right mouse button for the Editor area.

    Returns whether or not the calling event should be accepted.
    """

        editor = self._editor
        coord = editor.sceneToGrid(pos)
        item = editor.itemAtGridPos(coord, QTransform())
        if isinstance(item, Tile):
            editor.removeTile(coord)
            return True
        else:
            return False