/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: Szilveszter Farkas (Phanatic)
  • Date: 2007-03-15 16:23:15 UTC
  • mfrom: (170 trunk)
  • mto: (170.1.3 trunk)
  • mto: This revision was merged to the branch mainline in revision 172.
  • Revision ID: szilveszter.farkas@gmail.com-20070315162315-rs1sbxjh31n314zc
MergeĀ fromĀ trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
55
55
 
56
56
        self._create()
57
57
        self.revisions = {}
58
 
        self.history = []
59
 
        self._no_back = set()
60
58
 
61
59
    def annotate(self, tree, branch, file_id):
62
60
        self.annotations = []
66
64
        self.revision_id = getattr(tree, 'get_revision_id', 
67
65
                                   lambda: CURRENT_REVISION)()
68
66
        
69
 
        # [revision id, line number, author, revno, highlight color, line]
 
67
        # [revision id, line number, committer, revno, highlight color, line]
70
68
        self.annomodel = gtk.ListStore(gobject.TYPE_STRING,
71
69
                                       gobject.TYPE_STRING,
72
70
                                       gobject.TYPE_STRING,
84
82
                    revno = committer = ""
85
83
                else:
86
84
                    last_seen = revision.revision_id
87
 
                    committer = revision.properties.get('author',
88
 
                        revision.committer)
 
85
                    committer = revision.committer
89
86
 
90
87
                if revision.revision_id not in self.revisions:
91
88
                    self.revisions[revision.revision_id] = revision
180
177
            return None
181
178
        return self.annomodel[path][REVISION_ID_COL]
182
179
 
183
 
    def _activate_selected_revision(self, w):
 
180
    def _show_log(self, w):
184
181
        rev_id = self._selected_revision()
185
182
        if rev_id is None:
186
183
            return
187
 
        selected = self.revisions[rev_id]
188
 
        self.logview.set_revision(selected)
189
 
        if (len(selected.parent_ids) != 0 and selected.parent_ids[0] not in
190
 
            self._no_back):
191
 
            enable_back = True
192
 
        else:
193
 
            enable_back = False
194
 
        self.back_button.set_sensitive(enable_back)
 
184
        self.logview.set_revision(self.revisions[rev_id])
195
185
 
196
186
    def _create(self):
197
187
        self.logview = self._create_log_view()
198
188
        self.annoview = self._create_annotate_view()
199
189
 
200
 
        vbox = gtk.VBox(False)
 
190
        vbox = gtk.VBox(False, 12)
 
191
        vbox.set_border_width(12)
201
192
        vbox.show()
202
193
 
203
194
        sw = gtk.ScrolledWindow()
206
197
        sw.add(self.annoview)
207
198
        self.annoview.gwindow = self
208
199
        sw.show()
209
 
 
210
 
        swbox = gtk.VBox()
211
 
        swbox.pack_start(sw)
212
 
        swbox.show()
213
 
 
214
 
        hbox = gtk.HBox(False, 6)
215
 
        self.back_button = self._create_back_button()
216
 
        hbox.pack_start(self.back_button, expand=False, fill=True)
217
 
        self.forward_button = self._create_forward_button()
218
 
        hbox.pack_start(self.forward_button, expand=False, fill=True)
219
 
        hbox.show()
220
 
        vbox.pack_start(hbox, expand=False, fill=True)
221
200
        
222
201
        self.pane = pane = gtk.VPaned()
223
 
        pane.add1(swbox)
 
202
        pane.add1(sw)
224
203
        pane.add2(self.logview)
225
204
        pane.show()
226
205
        vbox.pack_start(pane, expand=True, fill=True)
227
206
 
228
207
        self._search = SearchBox()
229
 
        swbox.pack_start(self._search, expand=False, fill=True)
 
208
        vbox.pack_start(self._search, expand=False, fill=True)
230
209
        accels = gtk.AccelGroup()
231
210
        accels.connect_group(gtk.keysyms.f, gtk.gdk.CONTROL_MASK,
232
211
                             gtk.ACCEL_LOCKED,
236
215
                             self._search_by_line)
237
216
        self.add_accel_group(accels)
238
217
 
 
218
        hbox = gtk.HBox(True, 6)
 
219
        hbox.pack_start(self._create_prev_button(), expand=False, fill=True)
 
220
        hbox.pack_end(self._create_button_box(), expand=False, fill=True)
 
221
        hbox.show()
 
222
        vbox.pack_start(hbox, expand=False, fill=True)
 
223
 
239
224
        self.add(vbox)
240
225
 
241
226
    def _search_by_text(self, accel_group, window, key, modifiers):
269
254
    def _create_annotate_view(self):
270
255
        tv = gtk.TreeView()
271
256
        tv.set_rules_hint(False)
272
 
        tv.connect("cursor-changed", self._activate_selected_revision)
 
257
        tv.connect("cursor-changed", self._show_log)
273
258
        tv.show()
274
259
        tv.connect("row-activated", self.row_diff)
275
260
 
329
314
        lv.show()
330
315
        return lv
331
316
 
332
 
    def _create_back_button(self):
 
317
    def _create_button_box(self):
 
318
        box = gtk.HButtonBox()
 
319
        box.set_layout(gtk.BUTTONBOX_END)
 
320
        box.show()
 
321
 
 
322
        button = gtk.Button()
 
323
        button.set_use_stock(True)
 
324
        button.set_label("gtk-close")
 
325
        button.connect("clicked", lambda w: self.destroy())
 
326
        button.show()
 
327
 
 
328
        box.pack_start(button, expand=False, fill=False)
 
329
 
 
330
        return box
 
331
 
 
332
    def _create_prev_button(self):
 
333
        box = gtk.HButtonBox()
 
334
        box.set_layout(gtk.BUTTONBOX_START)
 
335
        box.show()
 
336
        
333
337
        button = gtk.Button()
334
338
        button.set_use_stock(True)
335
339
        button.set_label("gtk-go-back")
336
340
        button.connect("clicked", lambda w: self.go_back())
337
 
        button.set_relief(gtk.RELIEF_NONE)
338
 
        button.show()
339
 
        return button
340
 
 
341
 
    def _create_forward_button(self):
342
 
        button = gtk.Button()
343
 
        button.set_use_stock(True)
344
 
        button.set_label("gtk-go-forward")
345
 
        button.connect("clicked", lambda w: self.go_forward())
346
 
        button.set_relief(gtk.RELIEF_NONE)
347
 
        button.show()
348
 
        button.set_sensitive(False)
349
 
        return button
 
341
        button.show()
 
342
        box.pack_start(button, expand=False, fill=False)
 
343
        return box
350
344
 
351
345
    def go_back(self):
352
 
        last_tree = self.tree
353
346
        rev_id = self._selected_revision()
354
347
        parent_id = self.revisions[rev_id].parent_ids[0]
355
 
        target_tree = self.branch.repository.revision_tree(parent_id)
356
 
        if self._go(target_tree):
357
 
            self.history.append(last_tree)
358
 
            self.forward_button.set_sensitive(True)
359
 
        else:
360
 
            self._no_back.add(parent_id)
361
 
            self.back_button.set_sensitive(False)
362
 
 
363
 
    def go_forward(self):
364
 
        if len(self.history) == 0:
365
 
            return
366
 
        target_tree = self.history.pop()
367
 
        if len(self.history) == 0:
368
 
            self.forward_button.set_sensitive(False)
369
 
        self._go(target_tree)
370
 
 
371
 
    def _go(self, target_tree):
372
 
        rev_id = self._selected_revision()
373
 
        if self.file_id in target_tree:
374
 
            offset = self.get_scroll_offset(target_tree)
 
348
        tree = self.branch.repository.revision_tree(parent_id)
 
349
        if self.file_id in tree:
 
350
            offset = self.get_scroll_offset(tree)
375
351
            (row,), col = self.annoview.get_cursor()
376
 
            self.annotate(target_tree, self.branch, self.file_id)
377
 
            new_row = row+offset
378
 
            if new_row < 0:
379
 
                new_row = 0
380
 
            self.annoview.set_cursor(new_row)
381
 
            return True
382
 
        else:
383
 
            return False
 
352
            self.annotate(tree, self.branch, self.file_id)
 
353
            self.annoview.set_cursor(row+offset)
384
354
 
385
355
    def get_scroll_offset(self, tree):
386
356
        old = self.tree.get_file(self.file_id)