/tortoisehg/hgtk/gorev.py

https://bitbucket.org/tortoisehg/hgtk/ · Python · 65 lines · 45 code · 13 blank · 7 comment · 4 complexity · eef824162852da89c4feb2dc94d6a696 MD5 · raw file

  1. # gorev.py - TortoiseHg's dialog for selecting a revision
  2. #
  3. # Copyright 2007 TK Soh <teekaysoh@gmail.com>
  4. # Copyright 2007 Steve Borho <steve@borho.org>
  5. #
  6. # This software may be used and distributed according to the terms of the
  7. # GNU General Public License version 2, incorporated herein by reference.
  8. import os
  9. import gtk
  10. import gobject
  11. from mercurial import error
  12. from tortoisehg.util.i18n import _
  13. from tortoisehg.hgtk import gtklib, gdialog
  14. class GotoRevDialog(gtk.Dialog):
  15. 'Dialog for selecting a revision'
  16. def __init__(self, gotofunc):
  17. super(GotoRevDialog, self).__init__(flags=gtk.DIALOG_MODAL)
  18. gtklib.set_tortoise_icon(self, 'menulog.ico')
  19. gtklib.set_tortoise_keys(self)
  20. self.set_has_separator(False)
  21. self._btn_goto = gtk.Button(_('Select'))
  22. self._btn_goto.connect('clicked', self._btn_goto_clicked)
  23. self.action_area.pack_end(self._btn_goto)
  24. self.set_title(_('Select Revision'))
  25. self.gotofunc = gotofunc
  26. self.tips = gtklib.Tooltips()
  27. hbox = gtk.HBox()
  28. self.revEntry = gtk.Entry()
  29. self.revEntry.connect('activate', self._btn_goto_clicked)
  30. hbox.pack_start(self.revEntry, True, True, 4)
  31. eventbox = gtk.EventBox()
  32. eventbox.add(hbox)
  33. self.tips.set_tip(
  34. eventbox, _('revision number, changeset ID, branch or tag'))
  35. self.vbox.pack_start(eventbox, False, False, 4)
  36. self.revEntry.grab_focus()
  37. self.show_all()
  38. def _btn_goto_clicked(self, button, data=None):
  39. try:
  40. revision = self.revEntry.get_text()
  41. if self.gotofunc:
  42. self.gotofunc(revision)
  43. self.revEntry.set_text('')
  44. self.hide()
  45. except error.LookupError, e:
  46. gdialog.Prompt(_('Ambiguous Revision'), str(e), self).run()
  47. self.revEntry.grab_focus()
  48. return
  49. except error.RepoError, e:
  50. gdialog.Prompt(_('Invalid Revision'), str(e), self).run()
  51. self.revEntry.grab_focus()
  52. return