1
# -*- coding: UTF-8 -*-
6
__copyright__ = "Copyright � 2005 Canonical Ltd."
7
__author__ = "Gary van der Merwe <garyvdm@gmail.com>"
14
from xml.sax.saxutils import escape
16
from time import (strftime, localtime)
1
# -*- coding: UTF-8 -*-
6
__copyright__ = "Copyright � 2005 Canonical Ltd."
7
__author__ = "Gary van der Merwe <garyvdm@gmail.com>"
14
from xml.sax.saxutils import escape
16
from time import (strftime, localtime)
31
class TreeModel(gtk.GenericTreeModel):
34
def __init__ (self, branch, line_graph_data):
35
gtk.GenericTreeModel.__init__(self)
31
class TreeModel(gtk.GenericTreeModel):
34
def __init__ (self, branch, line_graph_data):
35
gtk.GenericTreeModel.__init__(self)
36
36
self.revisions = {}
38
self.repository = branch.repository
39
self.line_graph_data = line_graph_data
41
def on_get_flags(self):
42
return gtk.TREE_MODEL_LIST_ONLY
44
def on_get_n_columns(self):
47
def on_get_column_type(self, index):
48
if index == REVID: return gobject.TYPE_STRING
49
if index == NODE: return gobject.TYPE_PYOBJECT
50
if index == LINES: return gobject.TYPE_PYOBJECT
51
if index == LAST_LINES: return gobject.TYPE_PYOBJECT
52
if index == REVNO: return gobject.TYPE_STRING
53
if index == MESSAGE: return gobject.TYPE_STRING
54
if index == COMMITER: return gobject.TYPE_STRING
55
if index == TIMESTAMP: return gobject.TYPE_STRING
56
if index == REVISION: return gobject.TYPE_PYOBJECT
57
if index == PARENTS: return gobject.TYPE_PYOBJECT
38
self.repository = branch.repository
39
self.line_graph_data = line_graph_data
41
def on_get_flags(self):
42
return gtk.TREE_MODEL_LIST_ONLY
44
def on_get_n_columns(self):
47
def on_get_column_type(self, index):
48
if index == REVID: return gobject.TYPE_STRING
49
if index == NODE: return gobject.TYPE_PYOBJECT
50
if index == LINES: return gobject.TYPE_PYOBJECT
51
if index == LAST_LINES: return gobject.TYPE_PYOBJECT
52
if index == REVNO: return gobject.TYPE_STRING
53
if index == MESSAGE: return gobject.TYPE_STRING
54
if index == COMMITER: return gobject.TYPE_STRING
55
if index == TIMESTAMP: return gobject.TYPE_STRING
56
if index == REVISION: return gobject.TYPE_PYOBJECT
57
if index == PARENTS: return gobject.TYPE_PYOBJECT
58
58
if index == CHILDREN: return gobject.TYPE_PYOBJECT
59
if index == TAGS: return gobject.TYPE_PYOBJECT
61
def on_get_iter(self, path):
64
def on_get_path(self, rowref):
67
def on_get_value(self, rowref, column):
68
if len(self.line_graph_data) > 0:
69
(revid, node, lines, parents,
70
children, revno_sequence) = self.line_graph_data[rowref]
72
(revid, node, lines, parents,
73
children, revno_sequence) = (None, (0, 0), (), (),
75
if column == REVID: return revid
76
if column == NODE: return node
77
if column == LINES: return lines
78
if column == PARENTS: return parents
79
if column == CHILDREN: return children
80
if column == LAST_LINES:
82
return self.line_graph_data[rowref-1][2]
84
if column == REVNO: return ".".join(["%d" % (revno)
85
for revno in revno_sequence])
59
if index == TAGS: return gobject.TYPE_PYOBJECT
61
def on_get_iter(self, path):
64
def on_get_path(self, rowref):
67
def on_get_value(self, rowref, column):
68
if len(self.line_graph_data) > 0:
69
(revid, node, lines, parents,
70
children, revno_sequence) = self.line_graph_data[rowref]
72
(revid, node, lines, parents,
73
children, revno_sequence) = (None, (0, 0), (), (),
75
if column == REVID: return revid
76
if column == NODE: return node
77
if column == LINES: return lines
78
if column == PARENTS: return parents
79
if column == CHILDREN: return children
80
if column == LAST_LINES:
82
return self.line_graph_data[rowref-1][2]
84
if column == REVNO: return ".".join(["%d" % (revno)
85
for revno in revno_sequence])
88
88
if not self.branch.supports_tags():
91
91
return self.branch.tags.get_reverse_tag_dict()[revid]
97
if revid not in self.revisions:
98
revision = self.repository.get_revisions([revid])[0]
99
self.revisions[revid] = revision
101
revision = self.revisions[revid]
103
if column == REVISION: return revision
104
if column == MESSAGE: return escape(revision.get_summary())
105
if column == COMMITER: return re.sub('<.*@.*>', '',
106
revision.committer).strip(' ')
107
if column == TIMESTAMP:
108
return strftime("%Y-%m-%d %H:%M", localtime(revision.timestamp))
110
def on_iter_next(self, rowref):
111
if rowref < len(self.line_graph_data) - 1:
115
def on_iter_children(self, parent):
116
if parent is None: return 0
119
def on_iter_has_child(self, rowref):
122
def on_iter_n_children(self, rowref):
123
if rowref is None: return len(self.line_graph_data)
126
def on_iter_nth_child(self, parent, n):
127
if parent is None: return n
130
def on_iter_parent(self, child):
97
if revid not in self.revisions:
98
revision = self.repository.get_revisions([revid])[0]
99
self.revisions[revid] = revision
101
revision = self.revisions[revid]
103
if column == REVISION: return revision
104
if column == MESSAGE: return escape(revision.get_summary())
105
if column == COMMITER: return re.sub('<.*@.*>', '',
106
revision.committer).strip(' ')
107
if column == TIMESTAMP:
108
return strftime("%Y-%m-%d %H:%M", localtime(revision.timestamp))
110
def on_iter_next(self, rowref):
111
if rowref < len(self.line_graph_data) - 1:
115
def on_iter_children(self, parent):
116
if parent is None: return 0
119
def on_iter_has_child(self, rowref):
122
def on_iter_n_children(self, rowref):
123
if rowref is None: return len(self.line_graph_data)
126
def on_iter_nth_child(self, parent, n):
127
if parent is None: return n
130
def on_iter_parent(self, child):