/tortoisehg/hgqt/revert.py

https://bitbucket.org/tortoisehg/hgtk/ · Python · 72 lines · 53 code · 13 blank · 6 comment · 4 complexity · 5dc5b59c51bec217c581791650aa2631 MD5 · raw file

  1. # revert.py - File revert dialog for TortoiseHg
  2. #
  3. # Copyright 2010 Steve Borho <steve@borho.org>
  4. #
  5. # This software may be used and distributed according to the terms of the
  6. # GNU General Public License version 2, incorporated herein by reference.
  7. import os
  8. from PyQt4.QtCore import *
  9. from PyQt4.QtGui import *
  10. from mercurial import util, error
  11. from tortoisehg.util import hglib
  12. from tortoisehg.hgqt.i18n import _
  13. from tortoisehg.hgqt import cmdui, qtlib
  14. class RevertDialog(QDialog):
  15. def __init__(self, repo, wfile, rev, parent):
  16. super(RevertDialog, self).__init__(parent)
  17. self.setWindowTitle(_('Revert - %s') % repo.displayname)
  18. f = self.windowFlags()
  19. self.setWindowFlags(f & ~Qt.WindowContextHelpButtonHint)
  20. self.repo = repo
  21. self.wfile = repo.wjoin(wfile)
  22. self.rev = str(rev)
  23. self.setLayout(QVBoxLayout())
  24. lbl = QLabel(_('<b>Revert %s to its contents at revision %d?</b>') % (
  25. wfile, rev))
  26. self.layout().addWidget(lbl)
  27. self.allchk = QCheckBox(_('Revert all files to this revision'))
  28. self.layout().addWidget(self.allchk)
  29. self.cmd = cmdui.Widget()
  30. self.cmd.setShowOutput(False)
  31. self.cmd.stbar.setVisible(False)
  32. self.cmd.commandFinished.connect(self.finished)
  33. self.layout().addWidget(self.cmd, 1)
  34. BB = QDialogButtonBox
  35. bbox = QDialogButtonBox(BB.Ok|BB.Cancel)
  36. bbox.accepted.connect(self.accept)
  37. bbox.rejected.connect(self.reject)
  38. self.layout().addWidget(bbox)
  39. self.bbox = bbox
  40. def accept(self):
  41. if self.allchk.isChecked():
  42. if not qtlib.QuestionMsgBox(_('Confirm Revert'),
  43. _('Reverting all files will discard changes and '
  44. 'leave affected files in a modified state.<br>'
  45. '<br>Are you sure you want to use revert?<br><br>'
  46. '(use update to checkout another revision)'),
  47. parent=self):
  48. return
  49. cmdline = ['revert', '--repository', self.repo.root, '--all']
  50. else:
  51. cmdline = ['revert', '--repository', self.repo.root, self.wfile]
  52. cmdline += ['--rev', self.rev]
  53. self.cmd.setShowOutput(True)
  54. self.cmd.stbar.setVisible(True)
  55. self.cmd.run(cmdline)
  56. def finished(self, ret):
  57. if ret == 0:
  58. self.bbox.button(QDialogButtonBox.Ok).setVisible(False)
  59. self.bbox.button(QDialogButtonBox.Cancel).setText(_('Close'))