def testNode2IndexMethods(self): """Test node2index and node2sourceIndex""" view = QgsLayerTreeView() view.setModel(self.model) if USE_MODEL_TESTER: proxy_tester = QAbstractItemModelTester(view.model()) tree_model = view.layerTreeModel() proxy_model = view.proxyModel() proxy_index = proxy_model.index(1, 0) node2 = view.index2node(proxy_index) self.assertEqual(node2.name(), 'layer2') proxy_layer2_index = view.node2index(node2) self.assertEqual(proxy_layer2_index, view.node2index(node2)) source_index = tree_model.index(1, 0) tree_layer2_index = view.node2sourceIndex(node2) self.assertEqual(tree_layer2_index, view.node2sourceIndex(node2))
def testProxyModel(self): """Test proxy model filtering and private layers""" view = QgsLayerTreeView() view.setModel(self.model) if USE_MODEL_TESTER: proxy_tester = QAbstractItemModelTester(view.model()) tree_model = view.layerTreeModel() proxy_model = view.proxyModel() self.assertEqual(tree_model.rowCount(), 3) self.assertEqual(proxy_model.rowCount(), 3) items = [] for r in range(tree_model.rowCount()): items.append(tree_model.data(tree_model.index(r, 0))) self.assertEqual(items, ['layer1', 'layer2', 'layer3']) proxy_items = [] for r in range(proxy_model.rowCount()): proxy_items.append(proxy_model.data(proxy_model.index(r, 0))) self.assertEqual(proxy_items, ['layer1', 'layer2', 'layer3']) self.layer3.setFlags(self.layer.Private) self.assertEqual(tree_model.rowCount(), 3) self.assertEqual(proxy_model.rowCount(), 2) proxy_items = [] for r in range(proxy_model.rowCount()): proxy_items.append(proxy_model.data(proxy_model.index(r, 0))) self.assertEqual(proxy_items, ['layer1', 'layer2']) view.setShowPrivateLayers(True) self.assertEqual(proxy_model.rowCount(), 3) proxy_items = [] for r in range(proxy_model.rowCount()): proxy_items.append(proxy_model.data(proxy_model.index(r, 0))) self.assertEqual(proxy_items, ['layer1', 'layer2', 'layer3']) view.setShowPrivateLayers(False) self.assertEqual(proxy_model.rowCount(), 2) proxy_items = [] for r in range(proxy_model.rowCount()): proxy_items.append(proxy_model.data(proxy_model.index(r, 0))) self.assertEqual(proxy_items, ['layer1', 'layer2']) # Test filters proxy_model.setFilterText('layer2') self.assertEqual(proxy_model.rowCount(), 1) proxy_items = [] for r in range(proxy_model.rowCount()): proxy_items.append(proxy_model.data(proxy_model.index(r, 0))) self.assertEqual(proxy_items, ['layer2'])