Ejemplo n.º 1
0
    def create_tool(self):
        self.widget = self.create_widget()
        self.section = self.widget.current_section
        tool = self.widget.selection_tool

        self.model = PointsTableModel(self.widget)
        self.model.set_section(self.section)
        tool.set_selection_model(
            QtCore.QItemSelectionModel(self.model, self.widget))

        tool.set_data(
            self.section.distances,
            [self.section.z] + list(self.section.layers_elev),
            1,
        )

        return tool
Ejemplo n.º 2
0
    def test_flags(self):
        model = PointsTableModel(None)
        model.set_section(self.section())

        assert model.flags(model.index(0, 0)) == (QtCore.Qt.ItemIsEnabled
                                                  | QtCore.Qt.ItemIsSelectable)

        assert model.flags(model.index(0, 1)) == (QtCore.Qt.ItemIsEnabled
                                                  | QtCore.Qt.ItemIsSelectable
                                                  | QtCore.Qt.ItemIsEditable)
Ejemplo n.º 3
0
 def test_headerData(self):
     model = PointsTableModel(None)
     model.set_section(self.section())
     assert model.headerData(0, QtCore.Qt.Horizontal) == "abs_lat"
     assert model.headerData(1, QtCore.Qt.Horizontal) == "zfond"
     assert model.headerData(2, QtCore.Qt.Horizontal) == "Layer1"
     assert model.headerData(0, QtCore.Qt.Vertical) == "0"
Ejemplo n.º 4
0
    def test_setData(self):
        section = self.section()

        model = PointsTableModel(None)
        model.set_section(section)

        assert model.setData(model.index(1, 1), 10.0, QtCore.Qt.EditRole)
        assert section.z[1] == 10.0

        assert model.setData(model.index(1, 2), 10.0, QtCore.Qt.EditRole)
        assert section.layers_elev[0][1] == 10.0
Ejemplo n.º 5
0
    def create_widget(self):
        request = QgsFeatureRequest()
        request.setLimit(1)
        feature = next(self.layer.getFeatures(request))

        section = PreCourlisFileLine(self.layer).section_from_feature(feature)
        section.feature = feature

        widget = GraphWidget(None)

        model = PointsTableModel(widget)
        model.set_section(section)
        sel_model = QtCore.QItemSelectionModel(model, widget)
        widget.set_selection_model(sel_model)

        widget.set_sections(
            layer=self.layer,
            feature=feature,
            previous_section=None,
            current_section=section,
            next_section=None,
        )
        return widget
Ejemplo n.º 6
0
    def test_data(self):
        section = self.section()

        model = PointsTableModel(None)
        model.set_section(section)

        assert model.data(model.index(1, 0), QtCore.Qt.DisplayRole) == str(
            round(section.distances[1], 3))
        assert model.data(model.index(1, 1),
                          QtCore.Qt.DisplayRole) == str(round(section.z[1], 3))
        assert model.data(model.index(1, 2), QtCore.Qt.DisplayRole) == str(
            round(section.layers_elev[0][1], 3))

        assert model.data(model.index(1, 0),
                          QtCore.Qt.EditRole) == section.distances[1]
        assert model.data(model.index(1, 1),
                          QtCore.Qt.EditRole) == section.z[1]
        assert (model.data(model.index(1, 2),
                           QtCore.Qt.EditRole) == section.layers_elev[0][1])
Ejemplo n.º 7
0
 def test_columnCount(self):
     model = PointsTableModel(None)
     model.set_section(self.section())
     assert model.columnCount() == 3
Ejemplo n.º 8
0
 def test_rowCount(self):
     model = PointsTableModel(None)
     model.set_section(self.section())
     assert model.rowCount() == 9
Ejemplo n.º 9
0
 def test_set_section(self):
     model = PointsTableModel(None)
     model.set_section(self.section())
Ejemplo n.º 10
0
 def test_init(self):
     PointsTableModel(None)
Ejemplo n.º 11
0
class TestSelectionTool(TestGraphWidgetBase):
    def create_tool(self):
        self.widget = self.create_widget()
        self.section = self.widget.current_section
        tool = self.widget.selection_tool

        self.model = PointsTableModel(self.widget)
        self.model.set_section(self.section)
        tool.set_selection_model(
            QtCore.QItemSelectionModel(self.model, self.widget))

        tool.set_data(
            self.section.distances,
            [self.section.z] + list(self.section.layers_elev),
            1,
        )

        return tool

    def event(self, row):
        event = Mock()
        event.button = 1
        event.xdata = self.section.distances[row] + 10
        event.ydata = self.section.z[row] + 10
        event.x = 0
        event.y = 0
        return event

    def start_editing(self, tool):
        tool.selection_model.select(
            self.model.index(1, 1),
            QtCore.QItemSelectionModel.ClearAndSelect,
        )
        tool.refresh_selection()
        tool.start_edit(self.section.distances[1], self.section.z[1])

    def test_deactivate(self):
        tool = self.create_tool()
        tool.deactivate()

    def test_start_edit(self):
        tool = self.create_tool()
        self.start_editing(tool)

    def test_finish_edit(self):
        tool = self.create_tool()
        self.start_editing(tool)
        tool.finish_edit(self.section.distances[1] + 3, self.section.z[1] + 3)

    def test_motion_refresh(self):
        tool = self.create_tool()
        self.start_editing(tool)
        tool.motion_refresh(False)
        tool.motion_refresh(True)

    def test_on_press(self):
        tool = self.create_tool()
        tool.on_press(self.event(2))
        indexes = tool.selection_model.selection().indexes()
        assert len(indexes) == 1
        assert indexes[0].row() == 2
        assert indexes[0].column() == 1

    def test_on_press_layer(self):
        tool = self.create_tool()
        tool.column = 2
        tool.on_press(self.event(2))
        indexes = tool.selection_model.selection().indexes()
        assert len(indexes) == 1
        assert indexes[0].row() == 2
        assert indexes[0].column() == 2

    @patch(
        "PreCourlis.widgets.selection_tool.QtWidgets.QApplication.keyboardModifiers",
        return_value=QtCore.Qt.ControlModifier,
    )
    def test_on_press_ctrl(self, key_mod_mock):
        tool = self.create_tool()
        tool.on_press(self.event(2))
        tool.on_press(self.event(3))
        indexes = tool.selection_model.selection().indexes()
        assert len(indexes) == 2

    @patch(
        "PreCourlis.widgets.selection_tool.QtWidgets.QApplication.keyboardModifiers",
        return_value=QtCore.Qt.ShiftModifier,
    )
    def test_on_press_shift(self, key_mod_mock):
        tool = self.create_tool()
        tool.on_press(self.event(2))
        tool.on_press(self.event(4))
        indexes = tool.selection_model.selection().indexes()
        assert len(indexes) == 3

    def test_on_motion(self):
        tool = self.create_tool()
        self.start_editing(tool)

        event = Mock()
        event.button = 1
        event.xdata = tool.editing_start[0]
        event.ydata = tool.editing_start[1] + 3
        event.x = 0
        event.y = 0

        tool.on_motion(event)

    def test_on_release(self):
        tool = self.create_tool()
        self.start_editing(tool)

        event = Mock()
        event.button = 1
        event.xdata = tool.editing_start[0]
        event.ydata = tool.editing_start[1] + 3
        event.x = 0
        event.y = 0

        tool.on_release(event)