--- a/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py Sun Mar 30 22:00:14 2014 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py Thu Apr 03 23:05:31 2014 +0200 @@ -18,6 +18,8 @@ ConfigurationPageBase from .Ui_MercurialPage import Ui_MercurialPage +from Utilities import supportedCodecs + class MercurialPage(ConfigurationPageBase, Ui_MercurialPage): """ @@ -35,40 +37,77 @@ self.__plugin = plugin + self.encodingComboBox.addItems(sorted(supportedCodecs)) + self.encodingModeComboBox.addItems(["strict", "ignore", "replace"]) + # set initial values + # global options + index = self.encodingComboBox.findText( + self.__plugin.getPreferences("Encoding")) + self.encodingComboBox.setCurrentIndex(index) + index = self.encodingModeComboBox.findText( + self.__plugin.getPreferences("EncodingMode")) + self.encodingModeComboBox.setCurrentIndex(index) + self.hiddenChangesetsCheckBox.setChecked( + self.__plugin.getPreferences("ConsiderHidden")) + # log self.logSpinBox.setValue( self.__plugin.getPreferences("LogLimit")) + # commit self.commitSpinBox.setValue( self.__plugin.getPreferences("CommitMessages")) + # incoming/outgoing self.logBrowserCheckBox.setChecked( self.__plugin.getPreferences("UseLogBrowser")) + # pull self.pullUpdateCheckBox.setChecked( self.__plugin.getPreferences("PullUpdate")) self.preferUnbundleCheckBox.setChecked( self.__plugin.getPreferences("PreferUnbundle")) + # cleanup self.cleanupPatternEdit.setText( self.__plugin.getPreferences("CleanupPatterns")) + # revert self.backupCheckBox.setChecked( self.__plugin.getPreferences("CreateBackup")) + # merge + self.internalMergeCheckBox.setChecked( + self.__plugin.getPreferences("InternalMerge")) def save(self): """ Public slot to save the Mercurial configuration. """ + # global options + self.__plugin.setPreferences( + "Encoding", self.encodingComboBox.currentText()) + self.__plugin.setPreferences( + "EncodingMode", self.encodingModeComboBox.currentText()) + self.__plugin.setPreferences( + "ConsiderHidden", self.hiddenChangesetsCheckBox.isChecked()) + # log self.__plugin.setPreferences( "LogLimit", self.logSpinBox.value()) + # commit self.__plugin.setPreferences( "CommitMessages", self.commitSpinBox.value()) + # incoming/outgoing self.__plugin.setPreferences( "UseLogBrowser", self.logBrowserCheckBox.isChecked()) + # pull self.__plugin.setPreferences( "PullUpdate", self.pullUpdateCheckBox.isChecked()) self.__plugin.setPreferences( "PreferUnbundle", self.preferUnbundleCheckBox.isChecked()) + # cleanup self.__plugin.setPreferences( "CleanupPatterns", self.cleanupPatternEdit.text()) + # revert self.__plugin.setPreferences( "CreateBackup", self.backupCheckBox.isChecked()) + # merge + self.__plugin.setPreferences( + "InternalMerge", self.internalMergeCheckBox.isChecked()) @pyqtSlot() def on_configButton_clicked(self): @@ -78,21 +117,32 @@ from QScintilla.MiniEditor import MiniEditor cfgFile = self.__plugin.getConfigPath() if not os.path.exists(cfgFile): - username = "" - from .MercurialUserDataDialog import MercurialUserDataDialog - dlg = MercurialUserDataDialog() + from ..HgUserConfigDataDialog import HgUserConfigDataDialog + dlg = HgUserConfigDataDialog() if dlg.exec_() == QDialog.Accepted: - name, email = dlg.getData() - if name and email: - username = "{0} <{1}>".format(name, email) - elif name: - username = name - elif email: - username = email + firstName, lastName, email, extensions, extensionsData = \ + dlg.getData() + else: + firstName, lastName, email, extensions, extensionsData = ( + "Firstname", "Lastname", "email_address", [], {}) try: f = open(cfgFile, "w") - f.write(os.linesep.join(["[ui]", - "username = {0}".format(username), ""])) + f.write("[ui]\n") + f.write("username = {0} {1} <{2}>\n".format( + firstName, lastName, email)) + if extensions: + f.write("\n[extensions]\n") + f.write(" =\n".join(extensions)) + f.write(" =\n") # complete the last line + if "largefiles" in extensionsData: + dataDict = extensionsData["largefiles"] + f.write("\n[largefiles]\n") + if "minsize" in dataDict: + f.write("minsize = {0}\n".format(dataDict["minsize"])) + if "patterns" in dataDict: + f.write("patterns =\n") + f.write(" {0}\n".format( + "\n ".join(dataDict["patterns"]))) f.close() except (IOError, OSError): # ignore these