Plugins/VcsPlugins/vcsMercurial/HgUserConfigDialog.py

changeset 5262
235d6a030128
parent 5104
0b9420dc1093
child 5264
8bc23ecb4ea3
--- /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()

eric ide

mercurial