178
179
return self.annomodel[path][REVISION_ID_COL]
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:
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)
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)
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)
226
232
vbox.pack_start(hbox, expand=False, fill=True)
321
327
def _create_button_box(self):
322
box = gtk.HButtonBox()
323
box.set_layout(gtk.BUTTONBOX_END)
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())
332
box.pack_start(button, expand=False, fill=False)
336
def _create_prev_button(self):
337
box = gtk.HButtonBox()
338
box.set_layout(gtk.BUTTONBOX_START)
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())
346
box.pack_start(button, expand=False, fill=False)
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())
349
button.set_sensitive(False)
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)
360
def go_forward(self):
361
if len(self.history) == 0:
363
target_tree = self.history.pop()
364
if len(self.history) == 0:
365
self.forward_button.set_sensitive(False)
366
self._go(target_tree)
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)
377
self.annoview.set_cursor(new_row)
359
379
def get_scroll_offset(self, tree):
360
380
old = self.tree.get_file(self.file_id)