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