/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: 2007-11-02 14:49:57 UTC
  • mto: (330.6.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 341.
  • Revision ID: daniel.schierbeck@gmail.com-20071102144957-8r4lp70ma5bpk8r8
Renamed logview 'revisionview'.

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