Exemple #1
0
    def testSetData(self):
        l1 = create_layer('l1')
        l2 = create_layer('l2')
        QgsProject.instance().addMapLayers([l1, l2])
        m = QgsMapLayerModel()

        # set checked
        m.setItemsCheckable(True)
        self.assertTrue(m.setData(m.index(0, 0), True, Qt.CheckStateRole))
        self.assertTrue(m.data(m.index(0, 0), Qt.CheckStateRole))
        self.assertFalse(m.data(m.index(1, 0), Qt.CheckStateRole))
        self.assertTrue(m.setData(m.index(1, 0), True, Qt.CheckStateRole))
        self.assertTrue(m.data(m.index(0, 0), Qt.CheckStateRole))
        self.assertTrue(m.data(m.index(1, 0), Qt.CheckStateRole))

        m.setAllowEmptyLayer(True)
        self.assertFalse(m.setData(m.index(0, 0), True, Qt.CheckStateRole))
        self.assertTrue(m.setData(m.index(1, 0), True, Qt.CheckStateRole))

        m.setAdditionalItems(['a'])
        self.assertFalse(m.setData(m.index(3, 0), True, Qt.CheckStateRole))

        QgsProject.instance().removeMapLayers([l1.id(), l2.id()])
Exemple #2
0
    def testGettersSetters(self):
        """ test model getters/setters """
        m = QgsMapLayerModel()

        m.setItemsCheckable(True)
        self.assertTrue(m.itemsCheckable())
        m.setItemsCheckable(False)
        self.assertFalse(m.itemsCheckable())

        m.setAllowEmptyLayer(True)
        self.assertTrue(m.allowEmptyLayer())
        m.setAllowEmptyLayer(False)
        self.assertFalse(m.allowEmptyLayer())

        m.setShowCrs(True)
        self.assertTrue(m.showCrs())
        m.setShowCrs(False)
        self.assertFalse(m.showCrs())

        m.setAdditionalItems(['a', 'b'])
        self.assertEqual(m.additionalItems(), ['a', 'b'])
        m.setAdditionalItems([])
        self.assertFalse(m.additionalItems())
Exemple #3
0
    def testDisplayRoleShowCrs(self):
        l1 = create_layer('l1')
        l2 = create_layer('l2')
        l3 = QgsVectorLayer("NoGeometry?field=fldtxt:string&field=fldint:integer",
                            'no geom', "memory")

        QgsProject.instance().addMapLayers([l1, l2, l3])
        m = QgsMapLayerModel()
        m.setShowCrs(True)
        self.assertEqual(m.data(m.index(0, 0), Qt.DisplayRole), 'l1 [EPSG:3111]')
        self.assertEqual(m.data(m.index(1, 0), Qt.DisplayRole), 'l2 [EPSG:3111]')
        self.assertEqual(m.data(m.index(2, 0), Qt.DisplayRole), 'no geom')

        m.setAllowEmptyLayer(True)
        self.assertFalse(m.data(m.index(0, 0), Qt.DisplayRole))
        self.assertEqual(m.data(m.index(1, 0), Qt.DisplayRole), 'l1 [EPSG:3111]')
        self.assertEqual(m.data(m.index(2, 0), Qt.DisplayRole), 'l2 [EPSG:3111]')
        self.assertEqual(m.data(m.index(3, 0), Qt.DisplayRole), 'no geom')

        m.setAdditionalItems(['a'])
        self.assertEqual(m.data(m.index(4, 0), Qt.DisplayRole), 'a')

        QgsProject.instance().removeMapLayers([l1.id(), l2.id(), l3.id()])
    def testInsertRows(self):
        l1 = create_layer('l1')
        l2 = create_layer('l2')
        QgsProject.instance().addMapLayers([l1, l2])
        m = QgsMapLayerModel()
        self.assertEqual(m.rowCount(), 2)
        self.assertEqual(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())

        self.assertTrue(m.insertRows(0, 2))
        self.assertEqual(m.rowCount(), 4)
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(3, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())

        self.assertTrue(m.insertRows(3, 1))
        self.assertEqual(m.rowCount(), 5)
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertFalse(m.data(m.index(3, 0), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(4, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())

        self.assertTrue(m.insertRows(5, 2))
        self.assertEqual(m.rowCount(), 7)
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertFalse(m.data(m.index(3, 0), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(4, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())
        self.assertFalse(m.data(m.index(5, 0), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(6, 0), QgsMapLayerModel.LayerIdRole))

        m = QgsMapLayerModel()
        m.setAllowEmptyLayer(True)
        self.assertEqual(m.rowCount(), 3)
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())

        self.assertTrue(m.insertRows(2, 2))
        self.assertEqual(m.rowCount(), 5)
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertFalse(m.data(m.index(2, 0), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(3, 0), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(4, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())

        QgsProject.instance().removeMapLayers([l1.id(), l2.id()])
    def testSetDataId(self):
        l1 = create_layer('l1')
        l2 = create_layer('l2')
        QgsProject.instance().addMapLayers([l1, l2])
        m = QgsMapLayerModel()
        self.assertEqual(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())

        self.assertTrue(
            m.setData(m.index(0, 0), l2.id(), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())
        self.assertEqual(m.data(m.index(0, 0), QgsMapLayerModel.LayerRole), l2)
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerRole), l2)

        self.assertTrue(
            m.setData(m.index(1, 0), l1.id(), QgsMapLayerModel.LayerIdRole))
        self.assertEqual(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())
        self.assertEqual(m.data(m.index(0, 0), QgsMapLayerModel.LayerRole), l2)
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerRole), l1)

        m.setAllowEmptyLayer(True)
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerRole))
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerRole), l2)
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerRole), l1)
        self.assertTrue(
            m.setData(m.index(1, 0), l1.id(), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerRole))
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerRole), l1)
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerRole), l1)
        self.assertTrue(
            m.setData(m.index(2, 0), l2.id(), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerIdRole))
        self.assertFalse(m.data(m.index(0, 0), QgsMapLayerModel.LayerRole))
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerIdRole),
                         l1.id())
        self.assertEqual(m.data(m.index(1, 0), QgsMapLayerModel.LayerRole), l1)
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerIdRole),
                         l2.id())
        self.assertEqual(m.data(m.index(2, 0), QgsMapLayerModel.LayerRole), l2)

        m.setAdditionalItems(['a'])
        self.assertFalse(
            m.setData(m.index(3, 0), True, QgsMapLayerModel.LayerRole))

        QgsProject.instance().removeMapLayers([l1.id(), l2.id()])
    def testFlags(self):
        l1 = create_layer('l1')
        l2 = create_layer('l2')
        QgsProject.instance().addMapLayers([l1, l2])
        m = QgsMapLayerModel()

        self.assertFalse(m.flags(QModelIndex()) & Qt.ItemIsDropEnabled)

        # not checkable
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsDragEnabled)
        self.assertFalse(m.flags(m.index(1, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(1, 0)) & Qt.ItemIsDragEnabled)
        m.setAllowEmptyLayer(True)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsDragEnabled)
        self.assertFalse(m.flags(m.index(1, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(1, 0)) & Qt.ItemIsDragEnabled)
        self.assertFalse(m.flags(m.index(2, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(2, 0)) & Qt.ItemIsDragEnabled)
        m.setAllowEmptyLayer(False)

        # checkable
        m.setItemsCheckable(True)
        self.assertTrue(m.flags(m.index(0, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsDragEnabled)
        self.assertTrue(m.flags(m.index(1, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(1, 0)) & Qt.ItemIsDragEnabled)
        m.setAllowEmptyLayer(True)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsDragEnabled)
        self.assertTrue(m.flags(m.index(1, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(1, 0)) & Qt.ItemIsDragEnabled)
        self.assertTrue(m.flags(m.index(2, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(2, 0)) & Qt.ItemIsDragEnabled)

        m.setAdditionalItems(['a'])
        self.assertFalse(m.flags(m.index(3, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(3, 0)) & Qt.ItemIsDragEnabled)

        m.setAdditionalItems([])
        m.setAllowEmptyLayer(False)
        m.setItemsCheckable(False)

        m.setItemsCanBeReordered(True)
        m.setItemsCheckable(False)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsUserCheckable)
        self.assertTrue(m.flags(m.index(0, 0)) & Qt.ItemIsDragEnabled)
        self.assertFalse(m.flags(m.index(1, 0)) & Qt.ItemIsUserCheckable)
        self.assertTrue(m.flags(m.index(1, 0)) & Qt.ItemIsDragEnabled)
        m.setAllowEmptyLayer(True)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(0, 0)) & Qt.ItemIsDragEnabled)
        self.assertFalse(m.flags(m.index(1, 0)) & Qt.ItemIsUserCheckable)
        self.assertTrue(m.flags(m.index(1, 0)) & Qt.ItemIsDragEnabled)
        self.assertFalse(m.flags(m.index(2, 0)) & Qt.ItemIsUserCheckable)
        self.assertTrue(m.flags(m.index(2, 0)) & Qt.ItemIsDragEnabled)

        m.setAdditionalItems(['a'])
        self.assertFalse(m.flags(m.index(3, 0)) & Qt.ItemIsUserCheckable)
        self.assertFalse(m.flags(m.index(3, 0)) & Qt.ItemIsDragEnabled)

        self.assertTrue(m.flags(QModelIndex()) & Qt.ItemIsDropEnabled)

        QgsProject.instance().removeMapLayers([l1.id(), l2.id()])
Exemple #7
0
    def testAdditionalLayers(self):
        l1 = create_layer('l1')
        l2 = create_layer('l2')
        QgsProject.instance().addMapLayers([l1, l2])
        m = QgsMapLayerModel()
        self.assertEqual(m.rowCount(QModelIndex()), 2)
        l3 = create_layer('l3')
        l4 = create_layer('l4')
        m.setAdditionalLayers([l3, l4])
        self.assertEqual(m.rowCount(QModelIndex()), 4)

        m.setAdditionalItems(['a', 'b'])
        self.assertEqual(m.rowCount(QModelIndex()), 6)
        self.assertEqual(m.data(m.index(0, 0), Qt.DisplayRole), 'l1')
        self.assertEqual(m.data(m.index(1, 0), Qt.DisplayRole), 'l2')
        self.assertEqual(m.data(m.index(2, 0), Qt.DisplayRole), 'l3')
        self.assertEqual(m.data(m.index(3, 0), Qt.DisplayRole), 'l4')
        self.assertEqual(m.data(m.index(4, 0), Qt.DisplayRole), 'a')
        self.assertEqual(m.data(m.index(5, 0), Qt.DisplayRole), 'b')

        m.setAllowEmptyLayer(True)
        self.assertEqual(m.rowCount(QModelIndex()), 7)
        self.assertFalse(m.data(m.index(0, 0), Qt.DisplayRole))
        self.assertEqual(m.data(m.index(1, 0), Qt.DisplayRole), 'l1')
        self.assertEqual(m.data(m.index(2, 0), Qt.DisplayRole), 'l2')
        self.assertEqual(m.data(m.index(3, 0), Qt.DisplayRole), 'l3')
        self.assertEqual(m.data(m.index(4, 0), Qt.DisplayRole), 'l4')
        self.assertEqual(m.data(m.index(5, 0), Qt.DisplayRole), 'a')
        self.assertEqual(m.data(m.index(6, 0), Qt.DisplayRole), 'b')

        l3.deleteLater()
        QCoreApplication.sendPostedEvents(None, QEvent.DeferredDelete)
        self.assertEqual(m.rowCount(QModelIndex()), 6)
        self.assertFalse(m.data(m.index(0, 0), Qt.DisplayRole))
        self.assertEqual(m.data(m.index(1, 0), Qt.DisplayRole), 'l1')
        self.assertEqual(m.data(m.index(2, 0), Qt.DisplayRole), 'l2')
        self.assertEqual(m.data(m.index(3, 0), Qt.DisplayRole), 'l4')
        self.assertEqual(m.data(m.index(4, 0), Qt.DisplayRole), 'a')
        self.assertEqual(m.data(m.index(5, 0), Qt.DisplayRole), 'b')

        l5 = create_layer('l5')
        l6 = create_layer('l6')
        m.setAdditionalLayers([l5, l6, l4])
        self.assertEqual(m.rowCount(QModelIndex()), 8)
        self.assertFalse(m.data(m.index(0, 0), Qt.DisplayRole))
        self.assertEqual(m.data(m.index(1, 0), Qt.DisplayRole), 'l1')
        self.assertEqual(m.data(m.index(2, 0), Qt.DisplayRole), 'l2')
        self.assertEqual(m.data(m.index(3, 0), Qt.DisplayRole), 'l5')
        self.assertEqual(m.data(m.index(4, 0), Qt.DisplayRole), 'l6')
        self.assertEqual(m.data(m.index(5, 0), Qt.DisplayRole), 'l4')
        self.assertEqual(m.data(m.index(6, 0), Qt.DisplayRole), 'a')
        self.assertEqual(m.data(m.index(7, 0), Qt.DisplayRole), 'b')

        m.setAdditionalLayers([l5, l4])
        self.assertEqual(m.rowCount(QModelIndex()), 7)
        self.assertFalse(m.data(m.index(0, 0), Qt.DisplayRole))
        self.assertEqual(m.data(m.index(1, 0), Qt.DisplayRole), 'l1')
        self.assertEqual(m.data(m.index(2, 0), Qt.DisplayRole), 'l2')
        self.assertEqual(m.data(m.index(3, 0), Qt.DisplayRole), 'l5')
        self.assertEqual(m.data(m.index(4, 0), Qt.DisplayRole), 'l4')
        self.assertEqual(m.data(m.index(5, 0), Qt.DisplayRole), 'a')
        self.assertEqual(m.data(m.index(6, 0), Qt.DisplayRole), 'b')

        QgsProject.instance().removeMapLayers([l1.id(), l2.id()])

        self.assertEqual(m.rowCount(QModelIndex()), 5)
        self.assertFalse(m.data(m.index(0, 0), Qt.DisplayRole))
        self.assertEqual(m.data(m.index(1, 0), Qt.DisplayRole), 'l5')
        self.assertEqual(m.data(m.index(2, 0), Qt.DisplayRole), 'l4')
        self.assertEqual(m.data(m.index(3, 0), Qt.DisplayRole), 'a')
        self.assertEqual(m.data(m.index(4, 0), Qt.DisplayRole), 'b')