예제 #1
0
def test_mouseClickEvent():
    plt = pg.GraphicsView()
    plt.show()
    resizeWindow(plt, 200, 200)
    vb = pg.ViewBox()
    plt.scene().addItem(vb)
    vb.resize(200, 200)
    QtTest.QTest.qWaitForWindowExposed(plt)
    QtTest.QTest.qWait(100)

    roi = pg.RectROI((0, 0), (10, 20), removable=True)
    vb.addItem(roi)
    app.processEvents()

    mouseClick(plt, roi.mapToScene(pg.Point(2, 2)),
               QtCore.Qt.MouseButton.LeftButton)
예제 #2
0
def test_PolyLineROI():
    rois = [(pg.PolyLineROI([[0, 0], [10, 0], [0, 15]], closed=True,
                            pen=0.3), 'closed'),
            (pg.PolyLineROI([[0, 0], [10, 0], [0, 15]], closed=False,
                            pen=0.3), 'open')]

    #plt = pg.plot()
    plt = pg.GraphicsView()
    plt.show()
    resizeWindow(plt, 200, 200)
    vb = pg.ViewBox()
    plt.scene().addItem(vb)
    vb.resize(200, 200)
    #plt.plotItem = pg.PlotItem()
    #plt.scene().addItem(plt.plotItem)
    #plt.plotItem.resize(200, 200)

    plt.scene().minDragTime = 0  # let us simulate mouse drags very quickly.

    # seemingly arbitrary requirements; might need longer wait time for some platforms..
    QtTest.QTest.qWaitForWindowExposed(plt)
    QtTest.QTest.qWait(100)

    for r, name in rois:
        vb.clear()
        vb.addItem(r)
        vb.autoRange()
        app.processEvents()

        assertImageApproved(plt, 'roi/polylineroi/' + name + '_init',
                            'Init %s polyline.' % name)
        initState = r.getState()
        assert len(r.getState()['points']) == 3

        # hover over center
        center = r.mapToScene(pg.Point(3, 3))
        mouseMove(plt, center)
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_hover_roi',
                            'Hover mouse over center of ROI.')

        # drag ROI
        mouseDrag(plt, center, center + pg.Point(10, -10),
                  QtCore.Qt.MouseButton.LeftButton)
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_drag_roi',
                            'Drag mouse over center of ROI.')

        # hover over handle
        pt = r.mapToScene(pg.Point(r.getState()['points'][2]))
        mouseMove(plt, pt)
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_hover_handle',
                            'Hover mouse over handle.')

        # drag handle
        mouseDrag(plt, pt, pt + pg.Point(5, 20),
                  QtCore.Qt.MouseButton.LeftButton)
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_drag_handle',
                            'Drag mouse over handle.')

        # hover over segment
        pt = r.mapToScene((pg.Point(r.getState()['points'][2]) +
                           pg.Point(r.getState()['points'][1])) * 0.5)
        mouseMove(plt, pt + pg.Point(0, 2))
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_hover_segment',
                            'Hover mouse over diagonal segment.')

        # click segment
        mouseClick(plt, pt, QtCore.Qt.MouseButton.LeftButton)
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_click_segment',
                            'Click mouse over segment.')

        # drag new handle
        mouseMove(
            plt, pt + pg.Point(10, -10)
        )  # pg bug: have to move the mouse off/on again to register hover
        mouseDrag(plt, pt, pt + pg.Point(10, -10),
                  QtCore.Qt.MouseButton.LeftButton)
        assertImageApproved(plt,
                            'roi/polylineroi/' + name + '_drag_new_handle',
                            'Drag mouse over created handle.')

        # clear all points
        r.clearPoints()
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_clear',
                            'All points cleared.')
        assert len(r.getState()['points']) == 0

        # call setPoints
        r.setPoints(initState['points'])
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_setpoints',
                            'Reset points to initial state.')
        assert len(r.getState()['points']) == 3

        # call setState
        r.setState(initState)
        assertImageApproved(plt, 'roi/polylineroi/' + name + '_setstate',
                            'Reset ROI to initial state.')
        assert len(r.getState()['points']) == 3

    plt.hide()