/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: John Arbash Meinel
  • Date: 2007-10-30 21:15:13 UTC
  • mfrom: (326 trunk)
  • mto: (330.3.3 trunk)
  • mto: This revision was merged to the branch mainline in revision 368.
  • Revision ID: john@arbash-meinel.com-20071030211513-l8ukdfa81g1y74mi
Merge the latest trunk 326

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
from bzrlib.revision import NULL_REVISION, CURRENT_REVISION
29
29
 
30
30
from colormap import AnnotateColorMap, AnnotateColorSaturation
31
 
from bzrlib.plugins.gtk.revisionview import RevisionView
 
31
from bzrlib.plugins.gtk.logview import LogView
32
32
from bzrlib.plugins.gtk.window import Window
33
33
 
34
34
 
64
64
        self.branch = branch
65
65
        self.tree = tree
66
66
        self.file_id = file_id
67
 
        self.revisionview.set_file_id(file_id)
 
67
        self.logview.set_file_id(file_id)
68
68
        self.revision_id = getattr(tree, 'get_revision_id', 
69
69
                                   lambda: CURRENT_REVISION)()
70
70
        
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:
180
186
        if rev_id is None:
181
187
            return
182
188
        selected = self.revisions[rev_id]
183
 
        self.revisionview.set_revision(selected)
 
189
        self.logview.set_revision(selected)
184
190
        if (len(selected.parent_ids) != 0 and selected.parent_ids[0] not in
185
191
            self._no_back):
186
192
            enable_back = True
189
195
        self.back_button.set_sensitive(enable_back)
190
196
 
191
197
    def _create(self):
192
 
        self.revisionview = self._create_log_view()
 
198
        self.logview = self._create_log_view()
193
199
        self.annoview = self._create_annotate_view()
194
200
 
195
201
        vbox = gtk.VBox(False)
216
222
        
217
223
        self.pane = pane = gtk.VPaned()
218
224
        pane.add1(swbox)
219
 
        pane.add2(self.revisionview)
 
225
        pane.add2(self.logview)
220
226
        pane.show()
221
227
        vbox.pack_start(pane, expand=True, fill=True)
222
228
 
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)
320
326
        return tv
321
327
 
322
328
    def _create_log_view(self):
323
 
        lv = RevisionView()
 
329
        lv = LogView()
324
330
        lv.show()
325
331
        return lv
326
332