/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 annotate/gannotate.py

  • Committer: Jelmer Vernooij
  • Author(s): Kiddo
  • Date: 2007-11-28 18:00:03 UTC
  • mto: This revision was merged to the branch mainline in revision 410.
  • Revision ID: jelmer@samba.org-20071128180003-oq0m5cfuab52ekk1
Make toolbars follow GNOME standards.

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
class GAnnotateWindow(Window):
46
46
    """Annotate window."""
47
47
 
48
 
    def __init__(self, all=False, plain=False, parent=None, branch=None):
 
48
    def __init__(self, all=False, plain=False, parent=None):
49
49
        self.all = all
50
50
        self.plain = plain
51
 
        self._branch = branch
52
51
        
53
52
        Window.__init__(self, parent)
54
53
        
81
80
        try:
82
81
            branch.lock_read()
83
82
            branch.repository.lock_read()
84
 
            self.dotted = {}
85
 
            revno_map = self.branch.get_revision_id_to_revno_map()
86
 
            for revision_id, revno in revno_map.iteritems():
87
 
                self.dotted[revision_id] = '.'.join(str(num) for num in revno)
88
83
            for line_no, (revision, revno, line)\
89
84
                    in enumerate(self._annotate(tree, file_id)):
90
85
                if revision.revision_id == last_seen and not self.all:
114
109
 
115
110
        self.annoview.set_model(self.annomodel)
116
111
        self.annoview.grab_focus()
117
 
        my_revno = self.dotted.get(self.revision_id, 'current')
118
 
        title = '%s (%s) - gannotate' % (self.tree.id2path(file_id), my_revno)
119
 
        self.set_title(title)
120
112
 
121
113
    def jump_to_line(self, lineno):
122
114
        if lineno > len(self.annomodel) or lineno < 1:
132
124
        self.annoview.set_cursor(row)
133
125
        self.annoview.scroll_to_cell(row, use_align=True)
134
126
 
 
127
    def _dotted_revnos(self, repository, revision_id):
 
128
        """Return a dict of revision_id -> dotted revno
 
129
        
 
130
        :param repository: The repository to get the graph from
 
131
        :param revision_id: The last revision for which this info is needed
 
132
        """
 
133
        graph = repository.get_revision_graph(revision_id)
 
134
        dotted = {}
 
135
        for n, revision_id, d, revno, e in tsort.merge_sort(graph, 
 
136
            revision_id, generate_revno=True):
 
137
            dotted[revision_id] = '.'.join(str(num) for num in revno)
 
138
        return dotted
135
139
 
136
140
    def _annotate(self, tree, file_id):
137
141
        current_revision = FakeRevision(CURRENT_REVISION)
146
150
            revision_id = self.branch.last_revision()
147
151
        else:
148
152
            revision_id = self.revision_id
 
153
        dotted = self._dotted_revnos(repository, revision_id)
149
154
        revision_cache = RevisionCache(repository, self.revisions)
150
155
        for origin, text in tree.annotate_iter(file_id):
151
156
            rev_id = origin
155
160
            else:
156
161
                try:
157
162
                    revision = revision_cache.get_revision(rev_id)
158
 
                    revno = self.dotted.get(rev_id, 'merge')
 
163
                    revno = dotted.get(rev_id, 'merge')
159
164
                    if len(revno) > 15:
160
165
                        revno = 'merge'
161
166
                except NoSuchRevision:
178
183
 
179
184
    def _activate_selected_revision(self, w):
180
185
        rev_id = self._selected_revision()
181
 
        if not rev_id or rev_id == NULL_REVISION:
 
186
        if rev_id is None:
182
187
            return
183
188
        selected = self.revisions[rev_id]
184
189
        self.revisionview.set_revision(selected)
242
247
        self._search.show_for('line')
243
248
        self._search.set_target(self.annoview, LINE_NUM_COL)
244
249
 
245
 
    def line_diff(self, tv, path, tvc):
 
250
    def row_diff(self, tv, path, tvc):
246
251
        row = path[0]
247
252
        revision = self.annotations[row]
248
253
        repository = self.branch.repository
257
262
                tree2 = repository.revision_tree(NULL_REVISION)
258
263
        from bzrlib.plugins.gtk.diff import DiffWindow
259
264
        window = DiffWindow()
260
 
        window.set_diff("Diff for line %d" % (row+1), tree1, tree2)
 
265
        window.set_diff("Diff for row %d" % (row+1), tree1, tree2)
261
266
        window.set_file(tree1.id2path(self.file_id))
262
267
        window.show()
263
268
 
267
272
        tv.set_rules_hint(False)
268
273
        tv.connect("cursor-changed", self._activate_selected_revision)
269
274
        tv.show()
270
 
        tv.connect("row-activated", self.line_diff)
 
275
        tv.connect("row-activated", self.row_diff)
271
276
 
272
277
        cell = gtk.CellRendererText()
273
278
        cell.set_property("xalign", 1.0)
321
326
        return tv
322
327
 
323
328
    def _create_log_view(self):
324
 
        lv = RevisionView(self._branch)
 
329
        lv = RevisionView()
325
330
        lv.show()
326
331
        return lv
327
332