/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

Merged with mainline.

Show diffs side-by-side

added added

removed removed

Lines of Context:
80
80
        try:
81
81
            branch.lock_read()
82
82
            branch.repository.lock_read()
 
83
            self.dotted = {}
 
84
            revno_map = self.branch.get_revision_id_to_revno_map()
 
85
            for revision_id, revno in revno_map.iteritems():
 
86
                self.dotted[revision_id] = '.'.join(str(num) for num in revno)
83
87
            for line_no, (revision, revno, line)\
84
88
                    in enumerate(self._annotate(tree, file_id)):
85
89
                if revision.revision_id == last_seen and not self.all:
109
113
 
110
114
        self.annoview.set_model(self.annomodel)
111
115
        self.annoview.grab_focus()
 
116
        my_revno = self.dotted.get(self.revision_id, 'current')
 
117
        title = '%s (%s) - gannotate' % (self.tree.id2path(file_id), my_revno)
 
118
        self.set_title(title)
112
119
 
113
120
    def jump_to_line(self, lineno):
114
121
        if lineno > len(self.annomodel) or lineno < 1:
124
131
        self.annoview.set_cursor(row)
125
132
        self.annoview.scroll_to_cell(row, use_align=True)
126
133
 
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
139
134
 
140
135
    def _annotate(self, tree, file_id):
141
136
        current_revision = FakeRevision(CURRENT_REVISION)
150
145
            revision_id = self.branch.last_revision()
151
146
        else:
152
147
            revision_id = self.revision_id
153
 
        dotted = self._dotted_revnos(repository, revision_id)
154
148
        revision_cache = RevisionCache(repository, self.revisions)
155
149
        for origin, text in tree.annotate_iter(file_id):
156
150
            rev_id = origin
160
154
            else:
161
155
                try:
162
156
                    revision = revision_cache.get_revision(rev_id)
163
 
                    revno = dotted.get(rev_id, 'merge')
 
157
                    revno = self.dotted.get(rev_id, 'merge')
164
158
                    if len(revno) > 15:
165
159
                        revno = 'merge'
166
160
                except NoSuchRevision:
247
241
        self._search.show_for('line')
248
242
        self._search.set_target(self.annoview, LINE_NUM_COL)
249
243
 
250
 
    def row_diff(self, tv, path, tvc):
 
244
    def line_diff(self, tv, path, tvc):
251
245
        row = path[0]
252
246
        revision = self.annotations[row]
253
247
        repository = self.branch.repository
262
256
                tree2 = repository.revision_tree(NULL_REVISION)
263
257
        from bzrlib.plugins.gtk.diff import DiffWindow
264
258
        window = DiffWindow()
265
 
        window.set_diff("Diff for row %d" % (row+1), tree1, tree2)
 
259
        window.set_diff("Diff for line %d" % (row+1), tree1, tree2)
266
260
        window.set_file(tree1.id2path(self.file_id))
267
261
        window.show()
268
262
 
272
266
        tv.set_rules_hint(False)
273
267
        tv.connect("cursor-changed", self._activate_selected_revision)
274
268
        tv.show()
275
 
        tv.connect("row-activated", self.row_diff)
 
269
        tv.connect("row-activated", self.line_diff)
276
270
 
277
271
        cell = gtk.CellRendererText()
278
272
        cell.set_property("xalign", 1.0)