PageRenderTime 43ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/hgconf/uname_qt.py

https://bitbucket.org/sborho/hgconfig
Python | 96 lines | 91 code | 2 blank | 3 comment | 5 complexity | 2f7942dc26102824f7df734680bec52f MD5 | raw file
  1. # Username dialog (Qt)
  2. from PyQt4.QtCore import *
  3. from PyQt4.QtGui import *
  4. from mercurial import util
  5. from ui_uname import Ui_Dialog
  6. import os, socket
  7. import iniparse
  8. class UsernameDialogQt(QDialog):
  9. '''Simple dialog for accepting a username and scope'''
  10. def __init__(self, hgui, repo, tolocal):
  11. QDialog.__init__(self)
  12. self.hgui = hgui
  13. self.repo = repo
  14. self.ui = Ui_Dialog()
  15. self.ui.setupUi(self)
  16. # Get current username or decent default guess
  17. try:
  18. user = os.environ.get("HGUSER") or \
  19. self.hgui.config("ui", "username") or \
  20. os.environ.get("EMAIL") or \
  21. '%s@%s' % (util.getuser(), socket.getfqdn())
  22. except KeyError:
  23. user = ''
  24. # If no localrepo is provided, disable that option
  25. if not repo:
  26. self.ui.localRadioButton.setEnabled(False)
  27. elif tolocal:
  28. self.ui.localRadioButton.setChecked(True)
  29. settings = QSettings('vcs', 'hgconfig')
  30. settings.beginGroup('uname')
  31. self.unamehist = []
  32. size = settings.beginReadArray('history')
  33. for i in xrange(0, size):
  34. settings.setArrayIndex(i)
  35. self.unamehist.append(settings.value('text').toString())
  36. settings.endArray()
  37. settings.endGroup()
  38. if user and user not in self.unamehist:
  39. self.unamehist.append(user)
  40. for name in self.unamehist:
  41. self.ui.usernameComboBox.insertItem(0, name)
  42. self.ui.usernameComboBox.setCurrentIndex(0)
  43. def accept(self):
  44. local = self.ui.localRadioButton.isChecked()
  45. username = str(self.ui.usernameComboBox.currentText())
  46. if username in self.unamehist:
  47. self.unamehist.remove(username)
  48. self.unamehist.append(username)
  49. settings = QSettings('vcs', 'hgconfig')
  50. settings.beginGroup('uname')
  51. settings.beginWriteArray('history')
  52. for i, name in enumerate(self.unamehist):
  53. settings.setArrayIndex(i)
  54. settings.setValue("text", QVariant(name))
  55. settings.endArray()
  56. settings.endGroup()
  57. settings.sync()
  58. if local:
  59. path = [os.sep.join([self.repo.root, '.hg', 'hgrc'])]
  60. else:
  61. path = util.user_rcpath()
  62. for fn in path:
  63. if os.path.exists(fn):
  64. break
  65. else:
  66. fn = path[0]
  67. self.hgui.warn("Creating %s\n" % fn)
  68. f = open(fn, "w")
  69. f.write("# Generated by hg-config\n")
  70. f.close()
  71. ini = iniparse.INIConfig(file(fn))
  72. if 'ui' not in list(ini):
  73. ini.new_namespace('ui')
  74. if 'hooks' not in list(ini):
  75. ini.new_namespace('hooks')
  76. ini['ui']['username'] = username
  77. ini['hooks']['precommit.username'] = ''
  78. f = open(fn, "w")
  79. f.write(str(ini))
  80. f.close()
  81. # set username for this commit
  82. self.hgui.setconfig("ui", "username", username)
  83. QDialog.accept(self)