class RevisionBrowser(gtk.Dialog): """ Revision Browser main window. """ def __init__(self, branch, parent=None): gtk.Dialog.__init__(self, title="Revision Browser - Olive", parent=parent, flags=gtk.DIALOG_MODAL, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) # Get arguments self.branch = branch # Create the widgets self._button_select = gtk.Button(_i18n("_Select"), use_underline=True) start_revs = [branch.last_revision(),] self.treeview = TreeView(branch, start_revs, None) # Set callbacks self._button_select.connect('clicked', self._on_select_clicked) self.treeview.connect('revision-activated', self._on_treeview_revision_activated) # Set properties self.set_default_size(600, 400) self.vbox.set_spacing(3) self.treeview.set_property('graph-column-visible', False) self.treeview.set_property('date-column-visible', True) self.treeview.set_property('mainline-only', True) # Construct the dialog self.action_area.pack_end(self._button_select) self.vbox.pack_start(self.treeview, True, True) # Show the dialog self.show_all() def _on_treeview_revision_activated(self, treeview, path, column): """ Double-click on a row should also select a revision. """ self._on_select_clicked(treeview) def _on_select_clicked(self, widget): """ Select button clicked handler. """ self.selected_revno = self.treeview.get_property('revision-number') self.selected_revid = \ self.treeview.get_property('revision').revision_id self.response(gtk.RESPONSE_OK)