Rev 165: Make sure that WorkingTreeModel conforms correctly for the in http://bazaar.launchpad.net/~jameinel/bzr-explorer/wt_model

John Arbash Meinel john at arbash-meinel.com
Tue Jul 7 22:03:51 BST 2009


At http://bazaar.launchpad.net/~jameinel/bzr-explorer/wt_model

------------------------------------------------------------
revno: 165
revision-id: john at arbash-meinel.com-20090707210347-ryhrlim4kjuli6fl
parent: john at arbash-meinel.com-20090707205158-95ex3vouiczesp4v
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: wt_model
timestamp: Tue 2009-07-07 16:03:47 -0500
message:
  Make sure that WorkingTreeModel conforms correctly for the
  headerData and columnCount interfaces.
-------------- next part --------------
=== modified file 'lib/wt_model.py'
--- a/lib/wt_model.py	2009-07-07 20:51:58 +0000
+++ b/lib/wt_model.py	2009-07-07 21:03:47 +0000
@@ -76,6 +76,15 @@
 
 class WorkingTreeModel(QtCore.QAbstractItemModel):
 
+    _headers = [
+        'name',
+        'file_id',
+        'disk_kind',
+        'status',
+        'inv_kind',
+        'path',
+        ]
+
     def __init__(self, path, parent=None):
         QtCore.QAbstractItemModel.__init__(self, parent)
         self._wt = workingtree.WorkingTree.open(path)
@@ -100,14 +109,23 @@
     # def rowCount(self, ...):
     # implement def hasChildren(self, ...) if rowCount is expensive
 
-    # def columnCount(self, ...):
+    def columnCount(self, parent=None):
+        # this can vary based on parent, but *doesn't*
+        return len(WorkingTreeModel._headers)
+
+    def headerData(self, section, orientation, role):
+        """Return the header to show for a given entry."""
+        headers = WorkingTreeModel._headers
+        if (orientation == QtCore.Qt.Horizontal
+            and role == QtCore.Qt.DisplayRole
+            and section < len(headers)):
+            return QtCore.QVariant(headers[section])
+        return QtCore.QVariant()
 
     # def data(self, ...):
 
     # implement def setData(self, ...) if we want to be editable
 
-    # def headerData(self, ...):
-
     # Interesting Role list:
     #   QtCore.Qt.DisplayRole, QtCore.Qt.ToolTipRole, QtCore.Qt.WhatsThisRole
 

=== modified file 'tests/test_wt_model.py'
--- a/tests/test_wt_model.py	2009-07-07 20:51:58 +0000
+++ b/tests/test_wt_model.py	2009-07-07 21:03:47 +0000
@@ -16,6 +16,8 @@
 
 """tests for the WorkingTreeModel class"""
 
+from PyQt4 import QtCore, QtGui
+
 from bzrlib import (
     errors,
     inventory,
@@ -27,9 +29,33 @@
 
 class TestWTModel(tests.TestCaseWithTransport):
 
-    def test__init__(self):
+    def test_headerData(self):
         self.make_branch_and_tree('.')
         model = wt_model.WorkingTreeModel('.')
+        self.assertEqual(6, model.columnCount())
+        res = model.headerData(0, QtCore.Qt.Horizontal, QtCore.Qt.DisplayRole)
+        self.assertIsInstance(res, QtCore.QVariant)
+        self.assertEqual('name', res.toString())
+        res = model.headerData(1, QtCore.Qt.Horizontal, QtCore.Qt.DisplayRole)
+        self.assertEqual('file_id', res.toString())
+        res = model.headerData(2, QtCore.Qt.Horizontal, QtCore.Qt.DisplayRole)
+        self.assertEqual('disk_kind', res.toString())
+        res = model.headerData(3, QtCore.Qt.Horizontal, QtCore.Qt.DisplayRole)
+        self.assertEqual('status', res.toString())
+        res = model.headerData(4, QtCore.Qt.Horizontal, QtCore.Qt.DisplayRole)
+        self.assertEqual('inv_kind', res.toString())
+        res = model.headerData(5, QtCore.Qt.Horizontal, QtCore.Qt.DisplayRole)
+        self.assertEqual('path', res.toString())
+
+        res = model.headerData(6, QtCore.Qt.Horizontal, QtCore.Qt.DisplayRole)
+        self.assertIsInstance(res, QtCore.QVariant)
+        self.assertTrue(res.isNull())
+        res = model.headerData(0, QtCore.Qt.Vertical, QtCore.Qt.DisplayRole)
+        self.assertIsInstance(res, QtCore.QVariant)
+        self.assertTrue(res.isNull())
+        res = model.headerData(0, QtCore.Qt.Vertical, QtCore.Qt.ToolTipRole)
+        self.assertIsInstance(res, QtCore.QVariant)
+        self.assertTrue(res.isNull())
 
 
 class Test_WTItem(tests.TestCaseWithTransport):



More information about the bazaar-commits mailing list