Ejemplo n.º 1
0
    def mousePressEvent(self, event: QMouseEvent):
        state = self._get_state_cb()

        for node_id, node in state.items():
            if intersect_node(node, event.pos()):
                self._clicked_node_id = node_id
                self._last_click_pos = event.pos()
Ejemplo n.º 2
0
    def _set_cursor_for_position(self, event: QMouseEvent):
        level_object = self.object_at(*event.pos().toTuple())

        if level_object is not None:
            is_resizable = not level_object.is_single_block

            edges = self._cursor_on_edge_of_object(level_object, event.pos())

            if is_resizable and edges:
                if edges == Qt.RightEdge and level_object.expands(
                ) & EXPANDS_HORIZ:
                    cursor = Qt.SizeHorCursor
                elif edges == Qt.BottomEdge and level_object.expands(
                ) & EXPANDS_VERT:
                    cursor = Qt.SizeVerCursor
                elif (level_object.expands() & EXPANDS_BOTH) == EXPANDS_BOTH:
                    cursor = Qt.SizeFDiagCursor
                else:
                    return

                if self.mouse_mode not in RESIZE_MODES:
                    self.setCursor(cursor)

                return

        if self.mouse_mode not in RESIZE_MODES:
            self.setCursor(Qt.ArrowCursor)
Ejemplo n.º 3
0
    def mouseMoveEvent(self, event: QMouseEvent):
        if self.mouse_mode == MODE_DRAG:
            self.setCursor(Qt.ClosedHandCursor)
            self._dragging(event)

        elif self.mouse_mode in RESIZE_MODES:
            previously_selected_objects = self.level_ref.selected_objects

            self._resizing(event)

            self.level_ref.selected_objects = previously_selected_objects

        elif self.selection_square.active:
            self._set_selection_end(event.pos())

        elif SETTINGS["resize_mode"] == RESIZE_LEFT_CLICK:
            self._set_cursor_for_position(event)

        x, y = event.pos().toTuple()

        object_under_cursor = self.object_at(x, y)

        if SETTINGS[
                "object_tooltip_enabled"] and object_under_cursor is not None:
            self.setToolTip(str(object_under_cursor))
        else:
            self.setToolTip("")
            QToolTip.hideText()

        return super(LevelView, self).mouseMoveEvent(event)
Ejemplo n.º 4
0
 def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None:
     if self._pressed:
         option = QtWidgets.QStyleOptionSlider()
         self.initStyleOption(option)
         groove = self.style().subControlRect(
             QtWidgets.QStyle.CC_Slider,
             option,
             QtWidgets.QStyle.SC_SliderGroove,
             self,
         )
         handle = self.style().subControlRect(
             QtWidgets.QStyle.CC_Slider,
             option,
             QtWidgets.QStyle.SC_SliderHandle,
             self,
         )
         value = self.style().sliderValueFromPosition(
             self.minimum(), self.maximum(), event.pos().x(), groove.width()
         )
         handle.moveCenter(event.pos())
         handle = handle.marginsAdded(
             QtCore.QMargins(
                 handle.width(), handle.width(), handle.width(), handle.width()
             )
         )
         if self.hasTracking():
             self.setValue2(value)
             self.repaint(handle)
     else:
         super().mouseMoveEvent(event)
Ejemplo n.º 5
0
    def mouseReleaseEvent(self, event: QtGui.QMouseEvent) -> None:
        if self._pressed:
            self._pressed = False
            option = QtWidgets.QStyleOptionSlider()
            self.initStyleOption(option)
            groove = self.style().subControlRect(
                QtWidgets.QStyle.CC_Slider,
                option,
                QtWidgets.QStyle.SC_SliderGroove,
                self,
            )
            handle = self.style().subControlRect(
                QtWidgets.QStyle.CC_Slider,
                option,
                QtWidgets.QStyle.SC_SliderHandle,
                self,
            )
            value = self.style().sliderValueFromPosition(
                self.minimum(), self.maximum(), event.pos().x(), groove.width()
            )
            handle.moveCenter(event.pos())
            handle = handle.marginsAdded(
                QtCore.QMargins(
                    handle.width(), handle.width(), handle.width(), handle.width()
                )
            )
            value = self.style().sliderValueFromPosition(
                self.minimum(), self.maximum(), event.pos().x(), groove.width()
            )
            self.setSliderDown(False)
            self.setValue2(value)
            self.update()

        super().mouseReleaseEvent(event)
Ejemplo n.º 6
0
 def mouseReleaseEvent(self, event: QMouseEvent):
     self.logger.debug(event.pos())
     self.bottomright = (event.pos().x(), event.pos().y())
     self.isDragging = False
     if not self.validClipRect(self.topleft, self.bottomright):
         msg = f"不正な選択範囲:選択範囲は左上から右下へ選択してください"
         self.logger.warning(msg)
         self.parent_window.wakeup(msg, "")
         self.hide()
         return
     cropped = self.img.crop((self.topleft[0], self.topleft[1],
                              self.bottomright[0], self.bottomright[1]))
     try:
         ocr = OCRfromPILImage(cropped)
     except Exception as ex:
         import traceback
         traceback.print_exc()
         ocr = "OCR ERROR!!"
     #設定で有効であればクリップボードコピー
     if Config.config["copy_to_clipboard"] is True:
         pyperclip.copy(ocr)
     try:
         ja = Translate(ocr)
     except Exception as ex:
         ja = "TRANSLATE ERROR!!"
     self.parent_window.wakeup(ocr, ja)
     self.hide()
Ejemplo n.º 7
0
    def mouseMoveEvent(self,
                       event: QtGui.QMouseEvent) -> None:  # pragma: no cover
        if (not event.buttons() & QtCore.Qt.LeftButton
                or (event.pos() - self.drag_start_pos).manhattanLength() <
                QtWidgets.QApplication.startDragDistance()):
            return super().mouseMoveEvent(event)
        index = self.tabAt(event.pos())
        if index == -1:
            return super().mouseMoveEvent(event)

        rect = self.tabRect(index)
        pixmap = QtGui.QPixmap(rect.size())
        self.render(pixmap, QtCore.QPoint(), QtGui.QRegion(rect))

        mime_data = QtCore.QMimeData()
        mime_data.setData("application/x-pew2tabbar",
                          QtCore.QByteArray().number(index))

        drag = QtGui.QDrag(self)
        drag.setMimeData(mime_data)
        drag.setPixmap(pixmap)
        drag.setDragCursor(
            QtGui.QCursor(QtCore.Qt.DragMoveCursor).pixmap(),
            QtCore.Qt.MoveAction)
        drag.exec_(QtCore.Qt.MoveAction)
Ejemplo n.º 8
0
    def mouseMoveEvent(self, event: QMouseEvent) -> None:
        count: int = self.__listValue.__len__()
        if count <= 1: return

        pos: int = event.pos().x() if self.__horizontal else event.pos().y()
        target: int = self.width() if self.__horizontal else self.height()
        index: int = self.__listValue.index(self.__currentValue)

        if self.__pressed:
            # 数值到边界时,阻止继续往对应方向移动
            if index is 0 and pos >= self.__pressedPos or index is count - 1 and pos <= self.__pressedPos:
                return

            self.__offset = pos - self.__pressedPos

            # 若移动速度过快时进行限制
            if self.__offset > target // self.__percent:
                self.__offset = target // self.__percent
            elif self.__offset < -target // self.__percent:
                self.__offset = -target // self.__percent

            if self.__oldIndex != index:
                self.currentIndexChanged.emit(index)
                self.currentValueChanged.emit(self.__listValue[index])
                self.__oldIndex = index

            self.update()
Ejemplo n.º 9
0
 def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None:
     if self.nav_pos is not None and self.allow_navigation:
         pos = event.pos()
         offset = self.nav_pos - pos
         self.chart().scroll(offset.x(), -offset.y())
         self.nav_pos = event.pos()
     else:
         super().mouseMoveEvent(event)
Ejemplo n.º 10
0
 def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None:
     if self.last_pos is not None:
         pos = event.pos()
         offset = self.last_pos - pos
         self.chart().scroll(offset.x(), 0)
         self.last_pos = event.pos()
     else:
         super().mouseMoveEvent(event)
Ejemplo n.º 11
0
 def mousePressEvent(self, event: QMouseEvent):
     if event.button() == Qt.LeftButton:
         self.logger.debug(self.topleft)
         self.topleft = (event.pos().x(), event.pos().y())
         self.isDragging = True
     elif event.button() == Qt.RightButton:
         self.parent_window.wakeup("", "")
         self.hide()
Ejemplo n.º 12
0
    def mousePressEvent(self, event: QtGui.QMouseEvent):

        self.opt.sliderPosition = self.first_position
        self._first_sc = self.style().hitTestComplexControl(
            QtWidgets.QStyle.CC_Slider, self.opt, event.pos(), self)

        self.opt.sliderPosition = self.second_position
        self._second_sc = self.style().hitTestComplexControl(
            QtWidgets.QStyle.CC_Slider, self.opt, event.pos(), self)
Ejemplo n.º 13
0
 def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None:
     if "drag" in self.interaction_flags:
         dx = self._last_pos.x() - event.pos().x()
         dy = self._last_pos.y() - event.pos().y()
         self.horizontalScrollBar().setValue(
             self.horizontalScrollBar().value() + dx)
         self.verticalScrollBar().setValue(
             self.verticalScrollBar().value() + dy)
         self._last_pos = event.pos()
         return
     super().mouseMoveEvent(event)
Ejemplo n.º 14
0
 def mousePressEvent(self, event: QtGui.QMouseEvent):
     if "zoom" in self.interaction_flags and event.button(
     ) == QtCore.Qt.LeftButton:
         self._last_pos = event.pos()
         self.setDragMode(QtWidgets.QGraphicsView.RubberBandDrag)
         super().mousePressEvent(event)
     elif (len(self.interaction_flags) == 0
           and event.button() == QtCore.Qt.LeftButton
           ) or event.button() == QtCore.Qt.MiddleButton:
         self.setInteractionFlag("drag")
         self._last_pos = event.pos()
     else:
         super().mousePressEvent(event)
Ejemplo n.º 15
0
 def mousePressEvent(self, e: QtGui.QMouseEvent):
     self.position = QPoint(e.globalX() - self.geometry().x(),
                            e.globalY() - self.geometry().y())
     if not self.m_isEditing:
         return
     if not self.m_infocus:
         return
     if not e.buttons() and QtCore.Qt.LeftButton:
         self.setCursorShape(e.pos())
         return
     if e.button() == QtCore.Qt.RightButton:
         self.popupShow(e.pos())
         e.accept()
Ejemplo n.º 16
0
    def mouseMoveEvent(self, event: QtGui.QMouseEvent):
        """Implementation.

    Handles panning the editor view.
    """

        if event.buttons() & Qt.MiddleButton:
            delta = self._lastMousePos - event.pos()
            hBar = self.horizontalScrollBar()
            vBar = self.verticalScrollBar()
            hBar.setValue(hBar.value() + delta.x())
            vBar.setValue(vBar.value() + delta.y())
            self._lastMousePos = event.pos()

        super().mouseMoveEvent(event)
Ejemplo n.º 17
0
    def _resizing(self, event: QMouseEvent):
        self.resizing_happened = True

        if isinstance(self.level_ref.level, WorldMap):
            return

        x, y = event.pos().toTuple()

        level_x, level_y = self._to_level_point(x, y)

        dx = dy = 0

        if self.mouse_mode & MODE_RESIZE_HORIZ:
            dx = level_x - self.resize_obj_start_point[0]

        if self.mouse_mode & MODE_RESIZE_VERT:
            dy = level_y - self.resize_obj_start_point[1]

        self.last_mouse_position = level_x, level_y

        selected_objects = self.get_selected_objects()

        for obj in selected_objects:
            obj.resize_by(dx, dy)

            self.level_ref.changed = True

        self.update()
Ejemplo n.º 18
0
 def mousePressEvent(self, event: QMouseEvent) -> None:
     if self._chartIsSet and self._panEnabled and event.button(
     ) == Qt.MiddleButton:
         self._mousePressEventPos = event.pos()
         self._panOn = True
         QApplication.setOverrideCursor(QCursor(Qt.ClosedHandCursor))
     super().mousePressEvent(event)
Ejemplo n.º 19
0
    def mouseMoveEvent(self, event: QMouseEvent) -> None:
        y: int = event.pos().y()

        # Y轴必须是在高度范围内
        topY: int = (y - self.__percentHeight // 2)
        if 0 <= topY <= self.__rightHeight and y < self.height():
            # 自动计算纵坐标,转换成当前百分比
            self.__percent = (1 - (
                (y - self.__percentHeight / 2) / self.__rightHeight)) * 100
            # 计算当前百分比对应的当前值
            self.__value = self.__percent / 100 * (self.__maxValue -
                                                   self.__minValue)
            # 计算当前背景图片对应百分比处中心点像素
            self.initColor()
        elif topY <= 0:
            self.__value = self.__maxValue
            self.__percent = 100.0
            self.__color = self.__topColor
        elif topY >= self.__rightHeight:
            self.__value = self.__minValue
            self.__percent = 0.0
            self.__color = self.__bottomColor

        self.update()
        self.colorChanged.emit(self.__color, self.__value, self.__percent)
Ejemplo n.º 20
0
 def mouseReleaseEvent(self, event: QtGui.QMouseEvent) -> None:
     if event.button() == QtCore.Qt.MouseButton.LeftButton:
         newReplaceable = self._calcReplaceable(event.pos())
         if self._replaceable is None or self._replaceable != newReplaceable:
             self._setReplaceable(newReplaceable)
         else:
             self._setReplaceable(None)
Ejemplo n.º 21
0
    def mousePressEvent(self, event: QtGui.QMouseEvent):
        """Overrides inherited mousePressEvent to emit appropriate filepath signals
         based on which columns were clicked, and to allow user to clear any selections
        by clicking off the displayed tree.

        Args:
            event (QtGui.QMouseEvent): QMouseEvent triggered by user
        """

        index = self.indexAt(event.pos())

        if index.row() == -1:
            self.clearSelection()
            self.setCurrentIndex(QModelIndex())
            return super().mousePressEvent(event)

        model = self.model()
        source_model = self.model().sourceModel()
        full_path = source_model.filePath(model.mapToSource(index))

        if index.column() == source_model.FILENAME:
            if not source_model.isDir(model.mapToSource(index)):
                qis_abs_path = full_path[full_path.
                                         index(__name__.split('.')[0]):]
                self.qlibrary_filepath_signal.emit(qis_abs_path)

        return super().mousePressEvent(event)
Ejemplo n.º 22
0
    def mouseMoveEvent(self, event: QMouseEvent):
        x, y = self.world_view.mapFromParent(event.pos()).toTuple()

        x //= Block.WIDTH * 2
        y //= Block.HEIGHT * 2

        try:
            level_info = self.world.level_at_position(x, y)

            if level_info is None:
                self.setCursor(Qt.ArrowCursor)

                self.setToolTip("")
                QToolTip.hideText()
            else:
                self.setCursor(Qt.PointingHandCursor)

                level_name = self.world.level_name_at_position(x, y)

                object_set = level_info[0]
                object_set_name = OBJECT_SET_ITEMS[object_set].split(" ", 1)[1]
                layout_address, enemy_address = map(hex, level_info[1:])

                self.setToolTip(f"<b>{level_name}</b><br/>"
                                f"<u>Type:</u> {object_set_name}<br/>"
                                f"<u>Objects:</u> {layout_address}<br/>"
                                f"<u>Enemies:</u> {enemy_address}")
        except ValueError:
            pass

        return super(WorldMapLevelSelect, self).mouseMoveEvent(event)
Ejemplo n.º 23
0
 def mousePressEvent(self, event: QtGui.QMouseEvent):
     if event.button() == QtCore.Qt.RightButton:
         entry = self.actionAt(event.pos())
         if entry is not None:
             plugin_name = entry.text()
             options = []
             escape = False
             new_screen = self.pyUbiForge.right_click_plugins.get_screen_options(
                 plugin_name, options)
             while new_screen is not None and not escape:
                 # show screen
                 screen = PluginOptionsScreen(self.pyUbiForge, plugin_name,
                                              new_screen)
                 escape = screen.escape
                 if not escape:
                     # pull options from screen
                     options.append(screen.options)
                     new_screen = self.pyUbiForge.right_click_plugins.get_screen_options(
                         plugin_name, options)
             if not escape:
                 entry.trigger()
         else:
             QtWidgets.QMenu.mousePressEvent(self, event)
     elif event.button() == QtCore.Qt.LeftButton:
         QtWidgets.QMenu.mousePressEvent(self, event)
 def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None:
     """
     重载mousePressEvent函数
     :param a0: 事件
     :return:None
     """
     self.on_move_to_position(a0.pos())
    def mouseMoveEvent(self, event: QMouseEvent = None) -> None:
        x: int = event.pos().x()
        y: int = event.pos().y()

        # 矫正X轴的偏差
        if x <= self.__borderWidth:
            x = self.__borderWidth
        elif x >= self.width() - self.__borderWidth:
            x = self.width() - self.__borderWidth

        # 矫正Y轴的偏差
        if y <= self.__borderWidth:
            y = self.__borderWidth
        elif y >= self.height() - self.__borderWidth:
            y = self.height() - self.__borderWidth

        # 指针必须在范围内
        self.__lastPos = QPoint(x, y)

        # 获取当前坐标处的颜色值
        self.__color = QColor(self.__bgPix.toImage().pixel(self.__lastPos))

        # X坐标所在360分比为hue值
        self.__hue = ((x - self.__borderWidth) /
                      (self.width() - self.__borderWidth * 2)) * 360
        # Y坐标所在高度的100分比sat值
        self.__sat = 100 - ((y - self.__borderWidth) /
                            (self.height() - self.__borderWidth * 2) * 100)

        self.update()
        self.colorChanged.emit(self.__color, self.__hue, self.__sat)
Ejemplo n.º 26
0
 def mousePressEvent(self, event: QtGui.QMouseEvent):
     pos_x = event.pos().x()
     pos_y = event.pos().y()
     min_x, min_y, width, height = self.get_overlay_pos()
     self.pointed.emit(float(pos_x-min_x)/width, float(pos_y-min_y)/height,
                       [pos_x, pos_y, min_x, min_y, width, height])
     self.draw_crossline(pos_x, pos_y)
     super(SliceViewer, self).mousePressEvent(event)
Ejemplo n.º 27
0
 def mouseMoveEvent(self, event: QMouseEvent):
     """
     Handle mouse move, moving the target view port to cursor position in target scene when mouse is pressed.
     """
     if self._is_mouse_pressed:
         self._target_view.centerOn(
             self.map_event_pos_to_target_scene_pos(event.pos()))
         event.accept()
Ejemplo n.º 28
0
 def mousePressEvent(self, event: QtGui.QMouseEvent):
     """ Overrides inherited mousePressEvent to allow user to clear any selections
     by clicking off the displayed tree. Then calls the inherited mousePressEvent"""
     myindex = self.indexAt(event.pos())
     if myindex.row() == -1:
         self.clearSelection()
         self.setCurrentIndex(QModelIndex())
     super().mousePressEvent(event)
Ejemplo n.º 29
0
    def _on_left_mouse_button_down(self, event: QMouseEvent):
        if self._select_objects_on_click(event):
            x, y = event.pos().toTuple()

            obj = self.object_at(x, y)

            if obj is not None:
                edge = self._cursor_on_edge_of_object(obj, event.pos())

                if SETTINGS["resize_mode"] == RESIZE_LEFT_CLICK and edge:

                    self._try_start_resize(self._resize_mode_from_edge(edge),
                                           event)
                else:
                    self.drag_start_point = obj.x_position, obj.y_position
        else:
            self._start_selection_square(event.pos())
Ejemplo n.º 30
0
 def mousePressEvent(self, event: QtGui.QMouseEvent):
     entry: TreeViewEntry = self.itemAt(event.pos())
     if entry is not None and entry.depth == 3 and entry.childCount() == 0:
         forge_file_name, datafile_id = entry.forge_file_name, entry.datafile_id
         self.pyUbiForge.forge_files[forge_file_name].decompress_datafile(
             datafile_id)
         self.populate_tree()
     QtWidgets.QTreeWidget.mousePressEvent(self, event)
Ejemplo n.º 31
0
    def mousePressEvent(self, mouseEvent: QMouseEvent):
        closestNode = self.playerNode.closest(mouseEvent.pos() - self.paintOffset)
        direction = closestNode.row - self.playerNode.row, closestNode.column - self.playerNode.column
        crawlNode = self.playerNode.crawl(direction)

        self.animation = QPropertyAnimation(self, b"player", self)
        if len(crawlNode.links) > 2:
            self.animation.setEasingCurve(QEasingCurve.OutBack);
        else:
            self.animation.setEasingCurve(QEasingCurve.OutBounce);
        self.animation.setStartValue(self.player)
        self.animation.setEndValue(crawlNode.point)
        self.animation.setDuration(400)
        self.animation.start()

        self.playerNode = crawlNode
        if self.playerNode == self.finishNode:
            QMessageBox.information(self, self.tr("Victory!"), self.tr("You won :)"), QMessageBox.Ok)
            self.initMaze()