def data(self, index, role): ''' PyQt API Method -- see PyQt for documentation ''' if not index.isValid(): return QVariant() node = index.internalPointer().node if node is None: return QVariant() # only override displaying of left column if index.column() != 0: return XmlModel.data(self, index, role) # give some nodes special icons if role == Qt.DecorationRole: if node.tag in ['structure', 'specification']: if node.getparent().tag == 'model': return QVariant(IconLibrary.icon('folder_development')) elif node.getparent().tag == 'structure': return QVariant(IconLibrary.icon('method')) elif node.getparent().tag == 'specification' and node.tag != 'submodel': # assume it's a submodel group return QVariant(IconLibrary.icon('folder_development')) # fall back on default return XmlModel.data(self, index, role)
def data(self, index, role): ''' PyQt API Method -- see PyQt for documentation ''' if not index.isValid(): return QVariant() node = index.internalPointer().node if node is None: return QVariant() # only override displaying of left column if index.column() != 0: return XmlModel.data(self, index, role) # give some nodes special icons if role == Qt.DecorationRole: if node.tag in ['structure', 'specification']: if node.getparent().tag == 'model': return QVariant(IconLibrary.icon('folder_development')) elif node.getparent().tag == 'structure': return QVariant(IconLibrary.icon('method')) elif node.getparent( ).tag == 'specification' and node.tag != 'submodel': # assume it's a submodel group return QVariant(IconLibrary.icon('folder_development')) # fall back on default return XmlModel.data(self, index, role)
def data(self, index, role): ''' PyQt API Method -- See the PyQt documentation for a description ''' # Handle special drawing of missing models node = index.internalPointer().node if node.tag != 'model' or node.get('name') not in self.missing_models: # Not a missing model -- use default data handler return XmlModel.data(self, index, role) # Missing models get a colored description label and a special icon if index.column() == 1: if role == Qt.ForegroundRole: return QVariant(QColor(Qt.red)) elif role == Qt.DisplayRole: return QVariant("(no such model)") # Give it a special icon elif role == Qt.DecorationRole and index.column() == 0: return QVariant(IconLibrary.icon('missing_model')) # Other data properties are handled by the default data() method return XmlModel.data(self, index, role)
def data(self, index, role): """ PyQt API Method -- See the PyQt documentation for a description """ # Handle special drawing of missing models node = index.internalPointer().node if node.tag != "model" or node.get("name") not in self.missing_models: # Not a missing model -- use default data handler return XmlModel.data(self, index, role) # Missing models get a colored description label and a special icon if index.column() == 1: if role == Qt.ForegroundRole: return QVariant(QColor(Qt.red)) elif role == Qt.DisplayRole: return QVariant("(no such model)") # Give it a special icon elif role == Qt.DecorationRole and index.column() == 0: return QVariant(IconLibrary.icon("missing_model")) # Other data properties are handled by the default data() method return XmlModel.data(self, index, role)
class TestXmlModel(opus_unittest.TestCase): def setUp(self): self.app = QApplication([], True) self.testdatapath = os.path.split(__file__)[0] self.testdatapath = os.path.join(self.testdatapath, 'testdata') manager_xml_file = os.path.join(self.testdatapath, 'model_manager.xml') self.xml = ElementTree(file=manager_xml_file).getroot() self.instance = XmlModel(self.xml) def test_iconFromType(self): # just test some of the icons expected_results = { 'dir_path': self.instance.folderIcon, 'path': self.instance.folderDatabaseIcon, '-- NOT IN DICT --.': QVariant(), 'defValue': QVariant() } for key, value in expected_results.items(): self.assertEqual(self.instance.iconFromType(key), value) def test_columnCount(self): self.assertEqual(self.instance.columnCount(None), len(self.instance._headers)) def test_rebuild_tree(self): pass def test_index_and_parent(self): idx_child1 = self.instance.index(0, 0, QModelIndex()) idx_child2 = self.instance.index(1, 0, QModelIndex()) idx_child21 = self.instance.index(0, 0, idx_child2) node_child1 = self.instance.root_node().find('child_1') node_child2 = self.instance.root_node().find('child_2') node_child21 = self.instance.root_node().find('child_2/child_21') # Make sure the nodes are actually there self.assertFalse(node_child1 is None) self.assertFalse(node_child2 is None) self.assertFalse(node_child21 is None) # Check to see if the indexes contain the actual nodes self.assertTrue(idx_child1.internalPointer().node is node_child1) self.assertTrue(idx_child21.internalPointer().node is node_child21) # Check parent lookups self.assertEquals(self.instance.parent(idx_child21), idx_child2) self.assertEquals(self.instance.parent(idx_child2), QModelIndex()) self.assertNotEqual(self.instance.parent(idx_child21), self.instance.parent(idx_child2)) def test_data(self): # test that the tag name is returned as display # test that the correct icon is returned for the types # test that QVariant() is returned for bogus values idx_child1 = self.instance.index(0, 1, QModelIndex()) idx_child2 = self.instance.index(1, 0, QModelIndex()) idx_child21 = self.instance.index(0, 0, idx_child2) idx_child21_value = self.instance.index(0, 1, idx_child2) node_child2 = self.instance.root_node().find('child_2') node_child21 = self.instance.root_node().find('child_2/child_21') self.assertEqual(str(self.instance.data(idx_child1, Qt.DisplayRole).toString()), '*********') # password values should be secret self.assertEqual(str(self.instance.data(idx_child2, Qt.DisplayRole).toString()), node_child2.tag) self.assertTrue(node_child21.text is not None) self.assertEqual(str(self.instance.data(idx_child21_value, Qt.DisplayRole).toString()), node_child21.text.strip()) self.assertTrue(self.instance.data(idx_child21, Qt.DecorationRole) is not None) self.assertEqual(self.instance.data(idx_child21, Qt.DecorationRole), QVariant(self.instance.iconFromType(node_child21.get('type')))) def test_rowCount(self): idx_child1 = self.instance.index(0, 1, QModelIndex()) idx_child2 = self.instance.index(1, 0, QModelIndex()) self.assertEquals(self.instance.rowCount(QModelIndex()), 2) self.assertEquals(self.instance.rowCount(idx_child2), 1) self.assertEquals(self.instance.rowCount(idx_child1), 0) def test_remove_node(self): pass def test_removeRow(self): pass def test_index_for_item(self): pass def test_update_node(self): pass def test_item_for_node(self): pass def test_index_for_node(self): pass def test_add_node(self): pass def test_insert_node(self): pass def test_index(self): pass def test_make_item_local(self): pass def test_insertRow(self): pass def test_insert_sibling(self): pass def test_move_up(self): pass def test_move_down(self): pass def test_root_node(self): self.assertTrue(self.instance.root_node() is self.instance._root_node and self.instance._root_node is not None) def test_root_item(self): self.assertTrue(self.instance.root_item() is self.instance._root_item and self.instance._root_item is not None)
class TestXmlModel(opus_unittest.TestCase): def setUp(self): self.app = QApplication([], True) self.testdatapath = os.path.split(__file__)[0] self.testdatapath = os.path.join(self.testdatapath, 'testdata') manager_xml_file = os.path.join(self.testdatapath, 'model_manager.xml') self.xml = ElementTree(file=manager_xml_file).getroot() self.instance = XmlModel(self.xml) def test_iconFromType(self): # just test some of the icons expected_results = { 'dir_path': self.instance.folderIcon, 'path': self.instance.folderDatabaseIcon, '-- NOT IN DICT --.': QVariant(), 'defValue': QVariant() } for key, value in expected_results.items(): self.assertEqual(self.instance.iconFromType(key), value) def test_columnCount(self): self.assertEqual(self.instance.columnCount(None), len(self.instance._headers)) def test_rebuild_tree(self): pass def test_index_and_parent(self): idx_child1 = self.instance.index(0, 0, QModelIndex()) idx_child2 = self.instance.index(1, 0, QModelIndex()) idx_child21 = self.instance.index(0, 0, idx_child2) node_child1 = self.instance.root_node().find('child_1') node_child2 = self.instance.root_node().find('child_2') node_child21 = self.instance.root_node().find('child_2/child_21') # Make sure the nodes are actually there self.assertFalse(node_child1 is None) self.assertFalse(node_child2 is None) self.assertFalse(node_child21 is None) # Check to see if the indexes contain the actual nodes self.assertTrue(idx_child1.internalPointer().node is node_child1) self.assertTrue(idx_child21.internalPointer().node is node_child21) # Check parent lookups self.assertEquals(self.instance.parent(idx_child21), idx_child2) self.assertEquals(self.instance.parent(idx_child2), QModelIndex()) self.assertNotEqual(self.instance.parent(idx_child21), self.instance.parent(idx_child2)) def test_data(self): # test that the tag name is returned as display # test that the correct icon is returned for the types # test that QVariant() is returned for bogus values idx_child1 = self.instance.index(0, 1, QModelIndex()) idx_child2 = self.instance.index(1, 0, QModelIndex()) idx_child21 = self.instance.index(0, 0, idx_child2) idx_child21_value = self.instance.index(0, 1, idx_child2) node_child2 = self.instance.root_node().find('child_2') node_child21 = self.instance.root_node().find('child_2/child_21') self.assertEqual( str(self.instance.data(idx_child1, Qt.DisplayRole).toString()), '*********') # password values should be secret self.assertEqual( str(self.instance.data(idx_child2, Qt.DisplayRole).toString()), node_child2.tag) self.assertTrue(node_child21.text is not None) self.assertEqual( str( self.instance.data(idx_child21_value, Qt.DisplayRole).toString()), node_child21.text.strip()) self.assertTrue( self.instance.data(idx_child21, Qt.DecorationRole) is not None) self.assertEqual( self.instance.data(idx_child21, Qt.DecorationRole), QVariant(self.instance.iconFromType(node_child21.get('type')))) def test_rowCount(self): idx_child1 = self.instance.index(0, 1, QModelIndex()) idx_child2 = self.instance.index(1, 0, QModelIndex()) self.assertEquals(self.instance.rowCount(QModelIndex()), 2) self.assertEquals(self.instance.rowCount(idx_child2), 1) self.assertEquals(self.instance.rowCount(idx_child1), 0) def test_remove_node(self): pass def test_removeRow(self): pass def test_index_for_item(self): pass def test_update_node(self): pass def test_item_for_node(self): pass def test_index_for_node(self): pass def test_add_node(self): pass def test_insert_node(self): pass def test_index(self): pass def test_make_item_local(self): pass def test_insertRow(self): pass def test_insert_sibling(self): pass def test_move_up(self): pass def test_move_down(self): pass def test_root_node(self): self.assertTrue(self.instance.root_node() is self.instance._root_node and self.instance._root_node is not None) def test_root_item(self): self.assertTrue(self.instance.root_item() is self.instance._root_item and self.instance._root_item is not None)