/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: Daniel Schierbeck
  • Date: 2008-01-23 16:36:21 UTC
  • mto: (423.1.8 trunk)
  • mto: This revision was merged to the branch mainline in revision 429.
  • Revision ID: daniel.schierbeck@gmail.com-20080123163621-x8kublc38ojipnly
Made the revision popup menu correctly add tags.

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