/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to branchview/treemodel.py

  • Committer: Vincent Ladeuil
  • Date: 2008-05-05 18:16:46 UTC
  • mto: (487.1.1 gtk)
  • mto: This revision was merged to the branch mainline in revision 490.
  • Revision ID: v.ladeuil+lp@free.fr-20080505181646-n95l8ltw2u6jtr26
Fix bug #187283 fix replacing _() by _i18n().

* genpot.sh 
Remove duplication. Add the ability to specify the genrated pot
file on command-line for debugging purposes.

* po/olive-gtk.pot:
Regenerated.

* __init__.py, branch.py, branchview/treeview.py, checkout.py,
commit.py, conflicts.py, diff.py, errors.py, initialize.py,
merge.py, nautilus-bzr.py, olive/__init__.py, olive/add.py,
olive/bookmark.py, olive/guifiles.py, olive/info.py,
olive/menu.py, olive/mkdir.py, olive/move.py, olive/remove.py,
olive/rename.py, push.py, revbrowser.py, status.py, tags.py:
Replace all calls to _() by calls to _i18n(), the latter being
defined in __init__.py and imported in the other modules from
there. This fix the problem encountered countless times when
running bzr selftest and getting silly error messages about
boolean not being callables.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# -*- coding: UTF-8 -*-
2
 
"""BranchTreeModel."""
 
2
"""Tree model.
 
3
 
 
4
"""
3
5
 
4
6
__copyright__ = "Copyright � 2005 Canonical Ltd."
5
 
__author__ = "Gary van der Merwe <garyvdm@gmail.com>"
6
 
 
7
 
 
8
 
from gi.repository import Gtk
9
 
from gi.repository import GObject
 
7
__author__    = "Gary van der Merwe <garyvdm@gmail.com>"
 
8
 
 
9
 
 
10
import gtk
 
11
import gobject
 
12
import pango
 
13
import re
10
14
from xml.sax.saxutils import escape
11
 
 
12
 
from bzrlib.config import parse_username
13
15
from bzrlib.revision import NULL_REVISION
14
16
 
15
 
from time import (
16
 
    strftime,
17
 
    localtime,
18
 
    )
19
 
 
 
17
from time import (strftime, localtime)
20
18
 
21
19
REVID = 0
22
20
NODE = 1
31
29
PARENTS = 10
32
30
CHILDREN = 11
33
31
TAGS = 12
34
 
AUTHORS = 13
35
 
 
36
 
 
37
 
class BranchTreeModel(Gtk.ListStore):
38
 
    """A model of branch's merge history."""
39
 
 
40
 
    def __init__(self, branch, line_graph_data):
41
 
        super(BranchTreeModel, self).__init__(
42
 
            GObject.TYPE_STRING,
43
 
            GObject.TYPE_PYOBJECT,
44
 
            GObject.TYPE_PYOBJECT,
45
 
            GObject.TYPE_PYOBJECT,
46
 
            GObject.TYPE_STRING,
47
 
            GObject.TYPE_STRING,
48
 
            GObject.TYPE_STRING,
49
 
            GObject.TYPE_STRING,
50
 
            GObject.TYPE_STRING,
51
 
            GObject.TYPE_PYOBJECT,
52
 
            GObject.TYPE_PYOBJECT,
53
 
            GObject.TYPE_PYOBJECT,
54
 
            GObject.TYPE_PYOBJECT,
55
 
            GObject.TYPE_STRING)
 
32
 
 
33
class TreeModel(gtk.GenericTreeModel):
 
34
 
 
35
    
 
36
    def __init__ (self, branch, line_graph_data):
 
37
        gtk.GenericTreeModel.__init__(self)
56
38
        self.revisions = {}
57
 
        self.branch = branch
 
39
        self.branch = branch
58
40
        self.repository = branch.repository
59
 
        if self.branch.supports_tags():
 
41
        self.line_graph_data = line_graph_data
 
42
 
 
43
        if self.branch.supports_tags():
60
44
            self.tags = self.branch.tags.get_reverse_tag_dict()
61
45
        else:
62
46
            self.tags = {}
63
 
        self.set_line_graph_data(line_graph_data)
64
47
 
65
48
    def add_tag(self, tag, revid):
66
49
        self.branch.tags.set_tag(tag, revid)
69
52
        except KeyError:
70
53
            self.tags[revid] = [tag]
71
54
 
72
 
    def _line_graph_item_to_model_row(self, rowref, data):
73
 
        revid, node, lines, parents, children, revno_sequence = data
74
 
        if rowref > 0:
75
 
            last_lines = self.line_graph_data[rowref - 1][2]
 
55
    def on_get_flags(self):
 
56
        return gtk.TREE_MODEL_LIST_ONLY
 
57
    
 
58
    def on_get_n_columns(self):
 
59
        return 13
 
60
    
 
61
    def on_get_column_type(self, index):
 
62
        if index == REVID: return gobject.TYPE_STRING
 
63
        if index == NODE: return gobject.TYPE_PYOBJECT
 
64
        if index == LINES: return gobject.TYPE_PYOBJECT
 
65
        if index == LAST_LINES: return gobject.TYPE_PYOBJECT
 
66
        if index == REVNO: return gobject.TYPE_STRING
 
67
        if index == SUMMARY: return gobject.TYPE_STRING
 
68
        if index == MESSAGE: return gobject.TYPE_STRING
 
69
        if index == COMMITTER: return gobject.TYPE_STRING
 
70
        if index == TIMESTAMP: return gobject.TYPE_STRING
 
71
        if index == REVISION: return gobject.TYPE_PYOBJECT
 
72
        if index == PARENTS: return gobject.TYPE_PYOBJECT
 
73
        if index == CHILDREN: return gobject.TYPE_PYOBJECT
 
74
        if index == TAGS: return gobject.TYPE_PYOBJECT
 
75
        
 
76
    def on_get_iter(self, path):
 
77
        return path[0]
 
78
    
 
79
    def on_get_path(self, rowref):
 
80
        return rowref
 
81
    
 
82
    def on_get_value(self, rowref, column):
 
83
        if len(self.line_graph_data) > 0:
 
84
            (revid, node, lines, parents,
 
85
             children, revno_sequence) = self.line_graph_data[rowref]
76
86
        else:
77
 
            last_lines = []
78
 
        revno = ".".join(["%d" % (revno) for revno in revno_sequence])
79
 
        tags = self.tags.get(revid, [])
 
87
            (revid, node, lines, parents,
 
88
             children, revno_sequence) = (None, (0, 0), (), (),
 
89
                                          (), ())
 
90
        if column == REVID: return revid
 
91
        if column == NODE: return node
 
92
        if column == LINES: return lines
 
93
        if column == PARENTS: return parents
 
94
        if column == CHILDREN: return children
 
95
        if column == LAST_LINES:
 
96
            if rowref>0:
 
97
                return self.line_graph_data[rowref-1][2]
 
98
            return []
 
99
        if column == REVNO: return ".".join(["%d" % (revno)
 
100
                                      for revno in revno_sequence])
 
101
 
 
102
        if column == TAGS: return self.tags.get(revid, [])
 
103
 
80
104
        if not revid or revid == NULL_REVISION:
81
 
            revision = None
82
 
        elif revid not in self.revisions:
 
105
            return None
 
106
        if revid not in self.revisions:
83
107
            revision = self.repository.get_revisions([revid])[0]
84
108
            self.revisions[revid] = revision
85
109
        else:
86
110
            revision = self.revisions[revid]
87
 
        if revision is None:
88
 
            summary = message = committer = timestamp = authors = None
89
 
        else:
90
 
            summary = escape(revision.get_summary())
91
 
            message = escape(revision.message)
92
 
            committer = parse_username(revision.committer)[0]
93
 
            timestamp = strftime(
94
 
                "%Y-%m-%d %H:%M", localtime(revision.timestamp))
95
 
            authors = ", ".join([
96
 
                parse_username(author)[0]
97
 
                for author in revision.get_apparent_authors()])
98
 
        return (revid, node, lines, last_lines, revno, summary, message,
99
 
                committer, timestamp, revision, parents, children, tags,
100
 
                authors)
 
111
        
 
112
        if column == REVISION: return revision
 
113
        if column == SUMMARY: return escape(revision.get_summary())
 
114
        if column == MESSAGE: return escape(revision.message)
 
115
        if column == COMMITTER: return re.sub('<.*@.*>', '', 
 
116
                                             revision.committer).strip(' ')
 
117
        if column == TIMESTAMP: 
 
118
            return strftime("%Y-%m-%d %H:%M", localtime(revision.timestamp))
101
119
 
102
 
    def set_line_graph_data(self, line_graph_data):
103
 
        self.clear()
104
 
        self.line_graph_data = line_graph_data
105
 
        for rowref, data in enumerate(self.line_graph_data):
106
 
            row = self._line_graph_item_to_model_row(rowref, data)
107
 
            self.append(row)
 
120
    def on_iter_next(self, rowref):
 
121
        if rowref < len(self.line_graph_data) - 1:
 
122
            return rowref+1
 
123
        return None
 
124
    
 
125
    def on_iter_children(self, parent):
 
126
        if parent is None: return 0
 
127
        return None
 
128
    
 
129
    def on_iter_has_child(self, rowref):
 
130
        return False
 
131
    
 
132
    def on_iter_n_children(self, rowref):
 
133
        if rowref is None: return len(self.line_graph_data)
 
134
        return 0
 
135
    
 
136
    def on_iter_nth_child(self, parent, n):
 
137
        if parent is None: return n
 
138
        return None
 
139
    
 
140
    def on_iter_parent(self, child):
 
141
        return None