Changeset fb27c925ab8b…
Parent 7a580a1a2d7b…
by
Changes to 2 files · Browse files at fb27c925ab8b Showing diff from parent 7a580a1a2d7b Diff from another changeset...
|
@@ -0,0 +1,57 @@ + # gorev.py - TortoiseHg's dialog for selecting a revision
+#
+# Copyright 2007 TK Soh <teekaysoh@gmail.com>
+# Copyright 2007 Steve Borho <steve@borho.org>
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2, incorporated herein by reference.
+
+import os
+import gtk
+import gobject
+import mercurial
+
+from thgutil.i18n import _
+from hggtk import gtklib, gdialog
+
+
+class GotoRevDialog(gtk.Dialog):
+ 'Dialog for selecting a revision'
+ def __init__(self, gotofunc):
+ super(GotoRevDialog, self).__init__(flags=gtk.DIALOG_MODAL)
+ gtklib.set_tortoise_icon(self, 'menulog.ico')
+ gtklib.set_tortoise_keys(self)
+
+ self._btn_goto = gtk.Button(_('Select'))
+ self._btn_goto.connect('clicked', self._btn_goto_clicked)
+ self.action_area.pack_end(self._btn_goto)
+
+ self.set_title(_('Select Revision'))
+
+ self.gotofunc = gotofunc
+
+ self.tips = gtk.Tooltips()
+
+ hbox = gtk.HBox()
+ self.revEntry = gtk.Entry()
+ self.revEntry.connect('activate', self._btn_goto_clicked)
+ hbox.pack_start(self.revEntry, True, True, 4)
+ eventbox = gtk.EventBox()
+ eventbox.add(hbox)
+ self.tips.set_tip(
+ eventbox, _('revision number, changeset ID, branch or tag'))
+ self.vbox.pack_start(eventbox, False, False, 4)
+
+ self.revEntry.grab_focus()
+
+ self.show_all()
+
+ def _btn_goto_clicked(self, button, data=None):
+ try:
+ revision = self.revEntry.get_text()
+ if self.gotofunc:
+ self.gotofunc(revision)
+ except mercurial.error.RepoError, e:
+ gdialog.Prompt(_('Invalid Revision'), str(e), self).run()
+ self.revEntry.grab_focus()
+ return
|
@@ -20,7 +20,7 @@ from hggtk.logview import treemodel
from hggtk.logview.treeview import TreeView as LogTreeView
-from hggtk import gdialog, gtklib, hgcmd, datamine, logfilter
+from hggtk import gdialog, gtklib, hgcmd, datamine, logfilter, gorev
from hggtk import backout, status, hgemail, tagadd, update, merge, archive
from hggtk import changeset
@@ -65,7 +65,12 @@ _('_DataMine'),
self.datamine_clicked,
tip=_('Search Repository History')),
- gtk.SeparatorToolItem()
+ gtk.SeparatorToolItem(),
+ self.make_toolbutton(gtk.STOCK_JUMP_TO,
+ _('Select Revision'),
+ self.goto_clicked,
+ tip=_('Select revision')),
+ gtk.SeparatorToolItem(),
] + self.changeview.get_tbbuttons()
if not self.opts.get('from-synch'):
self.synctb = self.make_toolbutton(gtk.STOCK_NETWORK,
@@ -452,6 +457,7 @@
def get_body(self):
self.filter_dialog = None
+ self.gorev_dialog = None
self._menu = self.tree_context_menu()
self._menu2 = self.tree_diff_context_menu()
@@ -540,6 +546,37 @@ parent = self.repo['.'].rev()
self.graphview.set_revision_id(parent)
+ def goto_clicked(self, toolbutton, data=None):
+ if self.gorev_dialog:
+ self.gorev_dialog.show()
+ self.gorev_dialog.present()
+ else:
+ self.show_goto_dialog()
+
+ def show_goto_dialog(self):
+ 'Launch a modeless goto revision dialog'
+ def goto_rev_(rev):
+ self.goto_rev(rev)
+
+ def close_filter_dialog(dialog, response_id):
+ dialog.hide()
+
+ def delete_event(dialog, event, data=None):
+ # return True to prevent the dialog from being destroyed
+ return True
+
+ dlg = gorev.GotoRevDialog(goto_rev_)
+ dlg.connect('response', close_filter_dialog)
+ dlg.connect('delete-event', delete_event)
+ dlg.set_modal(False)
+ dlg.show()
+
+ self.gorev_dialog = dlg
+
+ def goto_rev(self, revision):
+ rid = self.repo[revision].rev()
+ self.graphview.set_revision_id(rid, load=True)
+
def strip_rev(self, menuitem):
rev = self.currow[treemodel.REVID]
res = gdialog.Confirm(_('Confirm Strip Revision(s)'), [], self,
|
Loading...