def handle_expand(self, e: QtGui.QMouseEvent) -> None:
     """
     Check if click happened on the part with cause expanding the item in the view. If so also expand/collapse
     the same item in the other view.
     """
     clicked_index = self.indexAt(e.pos())
     if clicked_index.isValid():
         # if click is left from text then it is expand event
         vrect = self.visualRect(clicked_index)
         item_identation = vrect.x() - self.visualRect(self.rootIndex()).x()
         if e.pos().x() < item_identation:
             self.expand_in_other_view(clicked_index, not self.isExpanded(clicked_index))
示例#2
0
 def mouseReleaseEvent(self, event: QMouseEvent) -> None:
     super().mouseReleaseEvent(event)
     if self.__mouseDown and event.button() == Qt.LeftButton:
         self.__mouseDown = False
     if self.__selectionDidChange:
         self.__selectionDidChange = False
         self.selectionFinished.emit()
示例#3
0
 def _select_data(self):
     self.widget.attr_x, self.widget.attr_y = self.data.domain[:2]
     area = self.widget.areas[0]
     self.widget.select_area(area, QMouseEvent(
         QEvent.MouseButtonPress, QPoint(), Qt.LeftButton,
         Qt.LeftButton, Qt.KeyboardModifiers()))
     return [0, 4, 6, 7, 11, 17, 19, 21, 22, 24, 26, 39, 40, 43, 44, 46]
示例#4
0
    def test_reset_to_input(self):
        """Checks if the data resets to input when Reset to Input is pressed"""
        data = Table("iris")
        self.send_signal(self.widget.Inputs.data, data)
        output = self.get_output(self.widget.Outputs.data)
        self.assertEqual(len(output), len(data))
        self.widget.set_current_tool(
            self.widget.TOOLS[1][2])  # PutInstanceTool
        tool = self.widget.current_tool
        event = QMouseEvent(QEvent.MouseButtonPress, QPointF(0.17, 0.17),
                            Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)
        tool.mousePressEvent(event)
        output = self.get_output(self.widget.Outputs.data)
        self.assertNotEqual(len(output), len(data))
        self.assertEqual(len(output), 151)
        self.widget.reset_to_input()
        output = self.get_output(self.widget.Outputs.data)
        self.assertEqual(len(output), len(data))

        self.send_signal(self.widget.Inputs.data, data)
        output = self.get_output(self.widget.Outputs.data)
        self.assertEqual(len(output), len(data))
        self.widget.set_current_tool(self.widget.TOOLS[5][2])  # ClearTool
        output = self.get_output(self.widget.Outputs.data)
        self.assertIsNone(output)
        self.widget.reset_to_input()
        output = self.get_output(self.widget.Outputs.data)
        self.assertEqual(len(output), len(data))
示例#5
0
def mouse_move(widget, pos, buttons=Qt.NoButton):
    if isinstance(widget, QGraphicsView):
        widget = widget.viewport()

    event = QMouseEvent(QEvent.MouseMove, pos, Qt.NoButton, buttons,
                        Qt.NoModifier)
    QApplication.sendEvent(widget, event)
示例#6
0
def mouse_release(widget, pos, mouse_button=Qt.LeftButton):
    if isinstance(widget, QGraphicsView):
        widget = widget.viewport()

    event = QMouseEvent(QEvent.MouseButtonRelease, pos, mouse_button,
                        Qt.NoButton, Qt.NoModifier)
    QApplication.sendEvent(widget, event)
示例#7
0
文件: utils.py 项目: yuta2/orange3
def mouseMove(widget, pos=QPoint(), delay=-1):  # pragma: no-cover
    # Like QTest.mouseMove, but functional without QCursor.setPos
    if pos.isNull():
        pos = widget.rect().center()
    me = QMouseEvent(QMouseEvent.MouseMove, pos, widget.mapToGlobal(pos),
                     Qt.NoButton, Qt.MouseButtons(0), Qt.NoModifier)
    if delay > 0:
        QTest.qWait(delay)

    QApplication.sendEvent(widget, me)
 def _select_data(self):
     self.widget.select_area(
         1,
         QMouseEvent(
             QEvent.MouseButtonPress,
             QPoint(),
             Qt.LeftButton,
             Qt.LeftButton,
             Qt.KeyboardModifiers(),
         ),
     )
     return [2, 3, 9, 23, 29, 30, 34, 35, 37, 42, 47, 49]
示例#9
0
    def test_selection_setting(self):
        widget = self.widget
        data = Table("iris.tab")
        self.send_signal(widget.Inputs.data, data)

        widget.select_area(
            1,
            QMouseEvent(QEvent.MouseButtonPress, QPoint(), Qt.LeftButton,
                        Qt.LeftButton, Qt.KeyboardModifiers()))

        # Changing the data must reset the selection
        self.send_signal(widget.Inputs.data, Table("titanic"))
        self.assertFalse(bool(widget.selection))
        self.assertIsNone(self.get_output(widget.Outputs.selected_data))

        self.send_signal(widget.Inputs.data, data)
        self.assertFalse(bool(widget.selection))
        self.assertIsNone(self.get_output(widget.Outputs.selected_data))

        widget.select_area(
            1,
            QMouseEvent(QEvent.MouseButtonPress, QPoint(), Qt.LeftButton,
                        Qt.LeftButton, Qt.KeyboardModifiers()))
        settings = self.widget.settingsHandler.pack_data(self.widget)

        # Setting data to None must reset the selection
        self.send_signal(widget.Inputs.data, None)
        self.assertFalse(bool(widget.selection))
        self.assertIsNone(self.get_output(widget.Outputs.selected_data))

        self.send_signal(widget.Inputs.data, data)
        self.assertFalse(bool(widget.selection))
        self.assertIsNone(self.get_output(widget.Outputs.selected_data))

        w = self.create_widget(OWMosaicDisplay, stored_settings=settings)
        self.assertFalse(bool(widget.selection))
        self.send_signal(w.Inputs.data, data, widget=w)
        self.assertEqual(w.selection, {1})
        self.assertIsNotNone(self.get_output(w.Outputs.selected_data,
                                             widget=w))
示例#10
0
def mouseMove(widget, buttons, modifier=Qt.NoModifier, pos=QPoint(), delay=-1):
    # type: (QWidget, Qt.MouseButtons, Qt.KeyboardModifier, QPoint, int) -> None
    """
    Like QTest.mouseMove, but with `buttons` and `modifier` parameters.

    Parameters
    ----------
    widget : QWidget
    buttons: Qt.MouseButtons
    modifier : Qt.KeyboardModifiers
    pos : QPoint
    delay : int
    """
    if pos.isNull():
        pos = widget.rect().center()
    me = QMouseEvent(QMouseEvent.MouseMove, pos, widget.mapToGlobal(pos),
                     Qt.NoButton, buttons, modifier)
    if delay > 0:
        QTest.qWait(delay)

    QCoreApplication.sendEvent(widget, me)
示例#11
0
    def test_summary(self):
        """Check if status bar is updated when data is received"""
        data, info = Table("iris"), self.widget.info
        no_input, no_output = "No data on input", "No data on output"

        self.widget.set_current_tool(self.widget.TOOLS[1][2])
        tool = self.widget.current_tool
        event = QMouseEvent(QEvent.MouseButtonPress, QPointF(0.17, 0.17),
                            Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)
        tool.mousePressEvent(event)
        self.assertEqual(info._StateInfo__input_summary.brief, "")
        self.assertEqual(info._StateInfo__input_summary.details, no_input)
        output = self.get_output(self.widget.Outputs.data)
        summary, details = f"{len(output)}", format_summary_details(output)
        self.assertEqual(info._StateInfo__output_summary.brief, summary)
        self.assertEqual(info._StateInfo__output_summary.details, details)

        self.send_signal(self.widget.Inputs.data, data)
        summary, details = f"{len(data)}", format_summary_details(data)
        self.assertEqual(info._StateInfo__input_summary.brief, summary)
        self.assertEqual(info._StateInfo__input_summary.details, details)
        output = self.get_output(self.widget.Outputs.data)
        summary, details = f"{len(output)}", format_summary_details(output)
        self.assertEqual(info._StateInfo__output_summary.brief, summary)
        self.assertEqual(info._StateInfo__output_summary.details, details)

        self.send_signal(self.widget.Inputs.data, None)
        self.assertEqual(info._StateInfo__input_summary.brief, "")
        self.assertEqual(info._StateInfo__input_summary.details, no_input)
        output = self.get_output(self.widget.Outputs.data)
        summary, details = f"{len(output)}", format_summary_details(output)
        self.assertEqual(info._StateInfo__output_summary.brief, summary)
        self.assertEqual(info._StateInfo__output_summary.details, details)

        self.widget.set_current_tool(self.widget.TOOLS[5][2])
        self.assertEqual(info._StateInfo__output_summary.brief, "")
        self.assertEqual(info._StateInfo__output_summary.details, no_output)
示例#12
0
 def mousePressEvent(self, event: QMouseEvent) -> None:
     self.__mouseDown = event.button() == Qt.LeftButton
     super().mousePressEvent(event)
示例#13
0
 def _mouse_button_press_event(self):
     return QMouseEvent(QEvent.MouseButtonPress, QPoint(100, 10),
                        Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)