1# -*- coding: utf-8 -*- 2 3# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> 4# 5 6""" 7Module implementing the Mercurial configuration page. 8""" 9 10from PyQt5.QtCore import pyqtSlot 11 12from Preferences.ConfigurationPages.ConfigurationPageBase import ( 13 ConfigurationPageBase 14) 15from .Ui_MercurialPage import Ui_MercurialPage 16 17from Utilities import supportedCodecs 18 19 20class MercurialPage(ConfigurationPageBase, Ui_MercurialPage): 21 """ 22 Class implementing the Mercurial configuration page. 23 """ 24 def __init__(self, plugin): 25 """ 26 Constructor 27 28 @param plugin reference to the plugin object 29 """ 30 super().__init__() 31 self.setupUi(self) 32 self.setObjectName("MercurialPage") 33 34 self.__plugin = plugin 35 36 self.encodingComboBox.addItems(sorted(supportedCodecs)) 37 self.encodingModeComboBox.addItems(["strict", "ignore", "replace"]) 38 39 # set initial values 40 # global options 41 index = self.encodingComboBox.findText( 42 self.__plugin.getPreferences("Encoding")) 43 self.encodingComboBox.setCurrentIndex(index) 44 index = self.encodingModeComboBox.findText( 45 self.__plugin.getPreferences("EncodingMode")) 46 self.encodingModeComboBox.setCurrentIndex(index) 47 self.hiddenChangesetsCheckBox.setChecked( 48 self.__plugin.getPreferences("ConsiderHidden")) 49 # log 50 self.logSpinBox.setValue( 51 self.__plugin.getPreferences("LogLimit")) 52 self.logWidthSpinBox.setValue( 53 self.__plugin.getPreferences("LogMessageColumnWidth")) 54 self.startFullLogCheckBox.setChecked( 55 self.__plugin.getPreferences("LogBrowserShowFullLog")) 56 # commit 57 self.commitSpinBox.setValue( 58 self.__plugin.getPreferences("CommitMessages")) 59 self.commitAuthorsSpinBox.setValue( 60 self.__plugin.getPreferences("CommitAuthorsLimit")) 61 # pull 62 self.pullUpdateCheckBox.setChecked( 63 self.__plugin.getPreferences("PullUpdate")) 64 self.preferUnbundleCheckBox.setChecked( 65 self.__plugin.getPreferences("PreferUnbundle")) 66 # cleanup 67 self.cleanupPatternEdit.setText( 68 self.__plugin.getPreferences("CleanupPatterns")) 69 # revert 70 self.backupCheckBox.setChecked( 71 self.__plugin.getPreferences("CreateBackup")) 72 # merge 73 self.internalMergeCheckBox.setChecked( 74 self.__plugin.getPreferences("InternalMerge")) 75 76 def save(self): 77 """ 78 Public slot to save the Mercurial configuration. 79 """ 80 # global options 81 self.__plugin.setPreferences( 82 "Encoding", self.encodingComboBox.currentText()) 83 self.__plugin.setPreferences( 84 "EncodingMode", self.encodingModeComboBox.currentText()) 85 self.__plugin.setPreferences( 86 "ConsiderHidden", self.hiddenChangesetsCheckBox.isChecked()) 87 # log 88 self.__plugin.setPreferences( 89 "LogLimit", self.logSpinBox.value()) 90 self.__plugin.setPreferences( 91 "LogMessageColumnWidth", self.logWidthSpinBox.value()) 92 self.__plugin.setPreferences( 93 "LogBrowserShowFullLog", self.startFullLogCheckBox.isChecked()) 94 # commit 95 self.__plugin.setPreferences( 96 "CommitMessages", self.commitSpinBox.value()) 97 self.__plugin.setPreferences( 98 "CommitAuthorsLimit", self.commitAuthorsSpinBox.value()) 99 # pull 100 self.__plugin.setPreferences( 101 "PullUpdate", self.pullUpdateCheckBox.isChecked()) 102 self.__plugin.setPreferences( 103 "PreferUnbundle", self.preferUnbundleCheckBox.isChecked()) 104 # cleanup 105 self.__plugin.setPreferences( 106 "CleanupPatterns", self.cleanupPatternEdit.text()) 107 # revert 108 self.__plugin.setPreferences( 109 "CreateBackup", self.backupCheckBox.isChecked()) 110 # merge 111 self.__plugin.setPreferences( 112 "InternalMerge", self.internalMergeCheckBox.isChecked()) 113 114 @pyqtSlot() 115 def on_configButton_clicked(self): 116 """ 117 Private slot to edit the (per user) Mercurial configuration file. 118 """ 119 from ..HgUserConfigDialog import HgUserConfigDialog 120 from ..HgUtilities import hgVersion 121 122 dlg = HgUserConfigDialog(version=hgVersion(self.__plugin)[1]) 123 dlg.exec() 124