/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: Aaron Bentley
  • Date: 2007-03-17 23:13:21 UTC
  • mto: This revision was merged to the branch mainline in revision 172.
  • Revision ID: aaron.bentley@utoronto.ca-20070317231321-1ougi4ktyqpbvmoh
Add 'forward' button, much button cleanup

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 = []
58
59
 
59
60
    def annotate(self, tree, branch, file_id):
60
61
        self.annotations = []
177
178
            return None
178
179
        return self.annomodel[path][REVISION_ID_COL]
179
180
 
180
 
    def _show_log(self, w):
 
181
    def _activate_selected_revision(self, w):
181
182
        rev_id = self._selected_revision()
182
183
        if rev_id is None:
183
184
            return
184
 
        self.logview.set_revision(self.revisions[rev_id])
 
185
        selected = self.revisions[rev_id]
 
186
        self.logview.set_revision(selected)
 
187
        self.back_button.set_sensitive(len(selected.parent_ids) != 0)
185
188
 
186
189
    def _create(self):
187
190
        self.logview = self._create_log_view()
219
222
                             self._search_by_line)
220
223
        self.add_accel_group(accels)
221
224
 
222
 
        hbox = gtk.HBox(True, 6)
223
 
        hbox.pack_start(self._create_prev_button(), expand=False, fill=True)
 
225
        hbox = gtk.HBox(False, 6)
 
226
        self.back_button = self._create_back_button()
 
227
        hbox.pack_start(self.back_button, expand=False, fill=True)
 
228
        self.forward_button = self._create_forward_button()
 
229
        hbox.pack_start(self.forward_button, expand=False, fill=True)
224
230
        hbox.pack_end(self._create_button_box(), expand=False, fill=True)
225
231
        hbox.show()
226
232
        vbox.pack_start(hbox, expand=False, fill=True)
258
264
    def _create_annotate_view(self):
259
265
        tv = gtk.TreeView()
260
266
        tv.set_rules_hint(False)
261
 
        tv.connect("cursor-changed", self._show_log)
 
267
        tv.connect("cursor-changed", self._activate_selected_revision)
262
268
        tv.show()
263
269
        tv.connect("row-activated", self.row_diff)
264
270
 
319
325
        return lv
320
326
 
321
327
    def _create_button_box(self):
322
 
        box = gtk.HButtonBox()
323
 
        box.set_layout(gtk.BUTTONBOX_END)
324
 
        box.show()
325
 
 
326
328
        button = gtk.Button()
327
329
        button.set_use_stock(True)
328
330
        button.set_label("gtk-close")
329
331
        button.connect("clicked", lambda w: self.destroy())
330
332
        button.show()
331
 
 
332
 
        box.pack_start(button, expand=False, fill=False)
333
 
 
334
 
        return box
335
 
 
336
 
    def _create_prev_button(self):
337
 
        box = gtk.HButtonBox()
338
 
        box.set_layout(gtk.BUTTONBOX_START)
339
 
        box.show()
340
 
        
 
333
        return button
 
334
 
 
335
    def _create_back_button(self):
341
336
        button = gtk.Button()
342
337
        button.set_use_stock(True)
343
338
        button.set_label("gtk-go-back")
344
339
        button.connect("clicked", lambda w: self.go_back())
345
340
        button.show()
346
 
        box.pack_start(button, expand=False, fill=False)
347
 
        return box
 
341
        return button
 
342
 
 
343
    def _create_forward_button(self):
 
344
        button = gtk.Button()
 
345
        button.set_use_stock(True)
 
346
        button.set_label("gtk-go-forward")
 
347
        button.connect("clicked", lambda w: self.go_forward())
 
348
        button.show()
 
349
        button.set_sensitive(False)
 
350
        return button
348
351
 
349
352
    def go_back(self):
 
353
        self.history.append(self.tree)
 
354
        self.forward_button.set_sensitive(True)
350
355
        rev_id = self._selected_revision()
351
356
        parent_id = self.revisions[rev_id].parent_ids[0]
352
 
        tree = self.branch.repository.revision_tree(parent_id)
353
 
        if self.file_id in tree:
354
 
            offset = self.get_scroll_offset(tree)
 
357
        target_tree = self.branch.repository.revision_tree(parent_id)
 
358
        self._go(target_tree)
 
359
 
 
360
    def go_forward(self):
 
361
        if len(self.history) == 0:
 
362
            return
 
363
        target_tree = self.history.pop()
 
364
        if len(self.history) == 0:
 
365
            self.forward_button.set_sensitive(False)
 
366
        self._go(target_tree)
 
367
 
 
368
    def _go(self, target_tree):
 
369
        rev_id = self._selected_revision()
 
370
        if self.file_id in target_tree:
 
371
            offset = self.get_scroll_offset(target_tree)
355
372
            (row,), col = self.annoview.get_cursor()
356
 
            self.annotate(tree, self.branch, self.file_id)
357
 
            self.annoview.set_cursor(row+offset)
 
373
            self.annotate(target_tree, self.branch, self.file_id)
 
374
            new_row = row+offset
 
375
            if new_row < 0:
 
376
                new_row = 0
 
377
            self.annoview.set_cursor(new_row)
358
378
 
359
379
    def get_scroll_offset(self, tree):
360
380
        old = self.tree.get_file(self.file_id)