Fri, 21 Oct 2016 20:01:56 +0200
Continued refactoring the Mercurial user config management code.
# -*- 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()