/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
1
# -*- coding: UTF-8 -*-
2
"""Tree model.
3
4
"""
5
6
__copyright__ = "Copyright © 2005 Canonical Ltd."
7
__author__    = "Gary van der Merwe <garyvdm@gmail.com>"
8
9
10
import gtk
11
import gobject
12
import pango
13
14
from bzrlib.osutils import format_date
15
16
REVID = 0
17
NODE = 1
18
LINES = 2
19
LAST_LINES = 3
20
REVNO = 4
21
MESSAGE = 5
22
COMMITER = 6
23
TIMESTAMP = 7
24
REVISION = 8
25
PARENTS = 9
26
CHILDREN = 10
27
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
28
class TreeModel(gtk.GenericTreeModel):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
29
30
    
31
    def __init__ (self, branch, line_graph_data):
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
32
        gtk.GenericTreeModel.__init__(self)
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
33
        self.revisions = {}
34
        self.branch = branch
35
        self.line_graph_data = line_graph_data
36
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
37
    def on_get_flags(self):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
38
        return gtk.TREE_MODEL_LIST_ONLY
39
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
40
    def on_get_n_columns(self):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
41
        return 11
42
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
43
    def on_get_column_type(self, index):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
44
        if index == REVID: return gobject.TYPE_STRING
45
        if index == NODE: return gobject.TYPE_PYOBJECT
46
        if index == LINES: return gobject.TYPE_PYOBJECT
47
        if index == LAST_LINES: return gobject.TYPE_PYOBJECT
48
        if index == REVNO: return gobject.TYPE_STRING
49
        if index == MESSAGE: return gobject.TYPE_STRING
50
        if index == COMMITER: return gobject.TYPE_STRING
51
        if index == TIMESTAMP: return gobject.TYPE_STRING
52
        if index == REVISION: return gobject.TYPE_PYOBJECT
53
        if index == PARENTS: return gobject.TYPE_PYOBJECT
54
        if index == CHILDREN: return gobject.TYPE_PYOBJECT
55
        
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
56
    def on_get_iter(self, path):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
57
        return path[0]
58
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
59
    def on_get_path(self, rowref):
60
        return rowref
61
    
62
    def on_get_value(self, rowref, column):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
63
        (revid, node, lines, parents,
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
64
         children, revno_sequence) = self.line_graph_data[rowref]
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
65
        if column == REVID: return revid
66
        if column == NODE: return node
67
        if column == LINES: return lines
68
        if column == PARENTS: return parents
69
        if column == CHILDREN: return children
70
        if column == LAST_LINES:
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
71
            if rowref>0:
72
                return self.line_graph_data[rowref-1][2]
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
73
            return []
74
        if column == REVNO: return ".".join(["%d" % (revno)
75
                                      for revno in revno_sequence])
76
        
256.2.35 by Gary van der Merwe
Try Change to TreeModel (crashes)
77
        if revid in self.revisions:
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
78
            revision = self.revisions[revid]
256.2.35 by Gary van der Merwe
Try Change to TreeModel (crashes)
79
            
80
            if column == REVISION: return revision
81
            if column == MESSAGE: return revision.message.split("\n")[0]
82
            if column == COMMITER: return revision.committer
83
            if column == TIMESTAMP: return format_date(revision.timestamp,
84
                                                       revision.timezone)
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
85
        else:
86
            return None
87
    
88
    def on_iter_next(self, rowref):
89
        if rowref < len(self.line_graph_data) - 1:
90
            return rowref+1
91
        return None
92
    
93
    def on_iter_children(self, parent):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
94
        if parent is None: return 0
95
        return None
96
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
97
    def on_iter_has_child(self, rowref):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
98
        return False
99
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
100
    def on_iter_n_children(self, rowref):
101
        if rowref is None: return len(self.line_graph_data)
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
102
        return 0
103
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
104
    def on_iter_nth_child(self, parent, n):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
105
        if parent is None: return n
106
        return None
107
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
108
    def on_iter_parent(self, child):
256.2.29 by Gary van der Merwe
Implement a TreeModel that loads revisions incrementaly.
109
        return None
256.2.35 by Gary van der Merwe
Try Change to TreeModel (crashes)
110
    
256.2.36 by Gary van der Merwe
Revert back to GenericTreeModel and implement on_ref_node
111
    def on_ref_node(self, iter):
256.2.35 by Gary van der Merwe
Try Change to TreeModel (crashes)
112
        revid = self.line_graph_data[iter][0]
113
        if revid not in self.revisions:
114
            revision = self.branch.repository.get_revisions([revid])[0]
115
            self.revisions[revid] = revision        
116