diff -r e5621b135c68 -r 235d6a030128 Plugins/VcsPlugins/vcsMercurial/HgUserConfigDialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/HgUserConfigDialog.py Fri Oct 21 20:01:56 2016 +0200 @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2014 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to enter some user data. +""" + +from __future__ import unicode_literals + +from PyQt5.QtCore import pyqtSlot +from PyQt5.QtWidgets import QDialog + +from Globals.E5ConfigParser import E5ConfigParser + +from .HgUtilities import getConfigPath + +from .Ui_HgUserConfigDialog import Ui_HgUserConfigDialog + + +class HgUserConfigDialog(QDialog, Ui_HgUserConfigDialog): + """ + Class implementing a dialog to enter some user data. + """ + def __init__(self, version=(0, 0), parent=None): + """ + Constructor + + @param version Mercurial version info (tuple of two integers) + @param parent reference to the parent widget (QWidget) + """ + super(HgUserConfigDialog, self).__init__(parent) + self.setupUi(self) + + msh = self.minimumSizeHint() + self.resize(max(self.width(), msh.width()), msh.height()) + + self.__config = None + self.readUserConfig() + + def writeUserConfig(self): + """ + Public method to write the user configuration file. + """ + if self.__config is None: + self.__config = E5ConfigParser() + + self.__config["ui"] = { + "username": "{0} <{1}>".format( + self.userNameEdit.text(), + self.emailEdit.text(), + ) + } + self.__config["extensions"] = {} + if self.fetchCheckBox.isChecked(): + self.__config["extensions"]["fetch"] = "" + if self.gpgCheckBox.isChecked(): + self.__config["extensions"]["gpg"] = "" + if self.purgeCheckBox.isChecked(): + self.__config["extensions"]["purge"] = "" + if self.queuesCheckBox.isChecked(): + self.__config["extensions"]["mq"] = "" + if self.rebaseCheckBox.isChecked(): + self.__config["extensions"]["rebase"] = "" + if self.shelveCheckBox.isChecked(): + self.__config["extensions"]["shelve"] = "" + if self.largefilesCheckBox.isChecked(): + self.__config["extensions"]["largefiles"] = "" + self.__config["largefiles"] = { + "minsize": self.lfFileSizeSpinBox.value(), + } + lfFilePatterns = self.lfFilePatternsEdit.text() + if lfFilePatterns: + self.__config["largefiles"]["patterns"] = lfFilePatterns + + cfgFile = getConfigPath() + with open(cfgFile, "w") as configFile: + self.__config.write(configFile) + + def readUserConfig(self): + """ + Public method to read the user configuration file. + """ + cfgFile = getConfigPath() + + self.__config = E5ConfigParser() + if self.__config.read(cfgFile): + # step 1: extract user name and email + try: + username = self.__config["ui"]["username"].strip() + if "<" in username and username.endswith(">"): + name, email = username[:-1].rsplit("<", 1) + else: + name = username + email = "" + self.userNameEdit.setText(name.strip()), + self.emailEdit.setText(email.strip()), + except KeyError: + pass + + # step 2: extract extensions information + if "extensions" in self.__config: + self.fetchCheckBox.setChecked( + "fetch" in self.__config["extensions"]) + self.gpgCheckBox.setChecked( + "gpg" in self.__config["extensions"]) + self.purgeCheckBox.setChecked( + "purge" in self.__config["extensions"]) + self.queuesCheckBox.setChecked( + "mq" in self.__config["extensions"]) + self.rebaseCheckBox.setChecked( + "rebase" in self.__config["extensions"]) + self.shelveCheckBox.setChecked( + "shelve" in self.__config["extensions"]) + self.largefilesCheckBox.setChecked( + "largefiles" in self.__config["extensions"]) + + # step 3: extract large files information + if "largefiles" in self.__config: + if "minsize" in self.__config["largefiles"]: + self.lfFileSizeSpinBox.setValue( + self.__config.getint("largefiles", "minsize")) + if "patterns" in self.__config["largefiles"]: + self.lfFilePatternsEdit.setText( + self.__config["largefiles"]["patterns"]) + + @pyqtSlot() + def accept(self): + """ + Public slot to accept the dialog. + """ + self.writeUserConfig() + + super(HgUserConfigDialog, self).accept()