/hgconf/uname_qt.py
Python | 96 lines | 91 code | 2 blank | 3 comment | 5 complexity | 2f7942dc26102824f7df734680bec52f MD5 | raw file
- # Username dialog (Qt)
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- from mercurial import util
- from ui_uname import Ui_Dialog
- import os, socket
- import iniparse
- class UsernameDialogQt(QDialog):
- '''Simple dialog for accepting a username and scope'''
- def __init__(self, hgui, repo, tolocal):
- QDialog.__init__(self)
- self.hgui = hgui
- self.repo = repo
- self.ui = Ui_Dialog()
- self.ui.setupUi(self)
- # Get current username or decent default guess
- try:
- user = os.environ.get("HGUSER") or \
- self.hgui.config("ui", "username") or \
- os.environ.get("EMAIL") or \
- '%s@%s' % (util.getuser(), socket.getfqdn())
- except KeyError:
- user = ''
- # If no localrepo is provided, disable that option
- if not repo:
- self.ui.localRadioButton.setEnabled(False)
- elif tolocal:
- self.ui.localRadioButton.setChecked(True)
- settings = QSettings('vcs', 'hgconfig')
- settings.beginGroup('uname')
- self.unamehist = []
- size = settings.beginReadArray('history')
- for i in xrange(0, size):
- settings.setArrayIndex(i)
- self.unamehist.append(settings.value('text').toString())
- settings.endArray()
- settings.endGroup()
- if user and user not in self.unamehist:
- self.unamehist.append(user)
- for name in self.unamehist:
- self.ui.usernameComboBox.insertItem(0, name)
- self.ui.usernameComboBox.setCurrentIndex(0)
- def accept(self):
- local = self.ui.localRadioButton.isChecked()
- username = str(self.ui.usernameComboBox.currentText())
- if username in self.unamehist:
- self.unamehist.remove(username)
- self.unamehist.append(username)
- settings = QSettings('vcs', 'hgconfig')
- settings.beginGroup('uname')
- settings.beginWriteArray('history')
- for i, name in enumerate(self.unamehist):
- settings.setArrayIndex(i)
- settings.setValue("text", QVariant(name))
- settings.endArray()
- settings.endGroup()
- settings.sync()
- if local:
- path = [os.sep.join([self.repo.root, '.hg', 'hgrc'])]
- else:
- path = util.user_rcpath()
- for fn in path:
- if os.path.exists(fn):
- break
- else:
- fn = path[0]
- self.hgui.warn("Creating %s\n" % fn)
- f = open(fn, "w")
- f.write("# Generated by hg-config\n")
- f.close()
- ini = iniparse.INIConfig(file(fn))
- if 'ui' not in list(ini):
- ini.new_namespace('ui')
- if 'hooks' not in list(ini):
- ini.new_namespace('hooks')
- ini['ui']['username'] = username
- ini['hooks']['precommit.username'] = ''
- f = open(fn, "w")
- f.write(str(ini))
- f.close()
- # set username for this commit
- self.hgui.setconfig("ui", "username", username)
- QDialog.accept(self)