Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py

branch
Py2 comp.
changeset 3484
645c12de6b0c
parent 3178
f25fc1364c88
parent 3308
955abb40a903
child 3656
441956d8fce5
equal deleted inserted replaced
3456:96232974dcdb 3484:645c12de6b0c
16 16
17 from Preferences.ConfigurationPages.ConfigurationPageBase import \ 17 from Preferences.ConfigurationPages.ConfigurationPageBase import \
18 ConfigurationPageBase 18 ConfigurationPageBase
19 from .Ui_MercurialPage import Ui_MercurialPage 19 from .Ui_MercurialPage import Ui_MercurialPage
20 20
21 from Utilities import supportedCodecs
22
21 23
22 class MercurialPage(ConfigurationPageBase, Ui_MercurialPage): 24 class MercurialPage(ConfigurationPageBase, Ui_MercurialPage):
23 """ 25 """
24 Class implementing the Mercurial configuration page. 26 Class implementing the Mercurial configuration page.
25 """ 27 """
33 self.setupUi(self) 35 self.setupUi(self)
34 self.setObjectName("MercurialPage") 36 self.setObjectName("MercurialPage")
35 37
36 self.__plugin = plugin 38 self.__plugin = plugin
37 39
40 self.encodingComboBox.addItems(sorted(supportedCodecs))
41 self.encodingModeComboBox.addItems(["strict", "ignore", "replace"])
42
38 # set initial values 43 # set initial values
44 # global options
45 index = self.encodingComboBox.findText(
46 self.__plugin.getPreferences("Encoding"))
47 self.encodingComboBox.setCurrentIndex(index)
48 index = self.encodingModeComboBox.findText(
49 self.__plugin.getPreferences("EncodingMode"))
50 self.encodingModeComboBox.setCurrentIndex(index)
51 self.hiddenChangesetsCheckBox.setChecked(
52 self.__plugin.getPreferences("ConsiderHidden"))
53 # log
39 self.logSpinBox.setValue( 54 self.logSpinBox.setValue(
40 self.__plugin.getPreferences("LogLimit")) 55 self.__plugin.getPreferences("LogLimit"))
56 # commit
41 self.commitSpinBox.setValue( 57 self.commitSpinBox.setValue(
42 self.__plugin.getPreferences("CommitMessages")) 58 self.__plugin.getPreferences("CommitMessages"))
59 # incoming/outgoing
43 self.logBrowserCheckBox.setChecked( 60 self.logBrowserCheckBox.setChecked(
44 self.__plugin.getPreferences("UseLogBrowser")) 61 self.__plugin.getPreferences("UseLogBrowser"))
62 # pull
45 self.pullUpdateCheckBox.setChecked( 63 self.pullUpdateCheckBox.setChecked(
46 self.__plugin.getPreferences("PullUpdate")) 64 self.__plugin.getPreferences("PullUpdate"))
47 self.preferUnbundleCheckBox.setChecked( 65 self.preferUnbundleCheckBox.setChecked(
48 self.__plugin.getPreferences("PreferUnbundle")) 66 self.__plugin.getPreferences("PreferUnbundle"))
67 # cleanup
49 self.cleanupPatternEdit.setText( 68 self.cleanupPatternEdit.setText(
50 self.__plugin.getPreferences("CleanupPatterns")) 69 self.__plugin.getPreferences("CleanupPatterns"))
70 # revert
51 self.backupCheckBox.setChecked( 71 self.backupCheckBox.setChecked(
52 self.__plugin.getPreferences("CreateBackup")) 72 self.__plugin.getPreferences("CreateBackup"))
73 # merge
74 self.internalMergeCheckBox.setChecked(
75 self.__plugin.getPreferences("InternalMerge"))
53 76
54 def save(self): 77 def save(self):
55 """ 78 """
56 Public slot to save the Mercurial configuration. 79 Public slot to save the Mercurial configuration.
57 """ 80 """
81 # global options
82 self.__plugin.setPreferences(
83 "Encoding", self.encodingComboBox.currentText())
84 self.__plugin.setPreferences(
85 "EncodingMode", self.encodingModeComboBox.currentText())
86 self.__plugin.setPreferences(
87 "ConsiderHidden", self.hiddenChangesetsCheckBox.isChecked())
88 # log
58 self.__plugin.setPreferences( 89 self.__plugin.setPreferences(
59 "LogLimit", self.logSpinBox.value()) 90 "LogLimit", self.logSpinBox.value())
91 # commit
60 self.__plugin.setPreferences( 92 self.__plugin.setPreferences(
61 "CommitMessages", self.commitSpinBox.value()) 93 "CommitMessages", self.commitSpinBox.value())
94 # incoming/outgoing
62 self.__plugin.setPreferences( 95 self.__plugin.setPreferences(
63 "UseLogBrowser", self.logBrowserCheckBox.isChecked()) 96 "UseLogBrowser", self.logBrowserCheckBox.isChecked())
97 # pull
64 self.__plugin.setPreferences( 98 self.__plugin.setPreferences(
65 "PullUpdate", self.pullUpdateCheckBox.isChecked()) 99 "PullUpdate", self.pullUpdateCheckBox.isChecked())
66 self.__plugin.setPreferences( 100 self.__plugin.setPreferences(
67 "PreferUnbundle", self.preferUnbundleCheckBox.isChecked()) 101 "PreferUnbundle", self.preferUnbundleCheckBox.isChecked())
102 # cleanup
68 self.__plugin.setPreferences( 103 self.__plugin.setPreferences(
69 "CleanupPatterns", self.cleanupPatternEdit.text()) 104 "CleanupPatterns", self.cleanupPatternEdit.text())
105 # revert
70 self.__plugin.setPreferences( 106 self.__plugin.setPreferences(
71 "CreateBackup", self.backupCheckBox.isChecked()) 107 "CreateBackup", self.backupCheckBox.isChecked())
108 # merge
109 self.__plugin.setPreferences(
110 "InternalMerge", self.internalMergeCheckBox.isChecked())
72 111
73 @pyqtSlot() 112 @pyqtSlot()
74 def on_configButton_clicked(self): 113 def on_configButton_clicked(self):
75 """ 114 """
76 Private slot to edit the (per user) Mercurial configuration file. 115 Private slot to edit the (per user) Mercurial configuration file.
77 """ 116 """
78 from QScintilla.MiniEditor import MiniEditor 117 from QScintilla.MiniEditor import MiniEditor
79 cfgFile = self.__plugin.getConfigPath() 118 cfgFile = self.__plugin.getConfigPath()
80 if not os.path.exists(cfgFile): 119 if not os.path.exists(cfgFile):
81 username = "" 120 from ..HgUserConfigDataDialog import HgUserConfigDataDialog
82 from .MercurialUserDataDialog import MercurialUserDataDialog 121 dlg = HgUserConfigDataDialog()
83 dlg = MercurialUserDataDialog()
84 if dlg.exec_() == QDialog.Accepted: 122 if dlg.exec_() == QDialog.Accepted:
85 name, email = dlg.getData() 123 firstName, lastName, email, extensions, extensionsData = \
86 if name and email: 124 dlg.getData()
87 username = "{0} <{1}>".format(name, email) 125 else:
88 elif name: 126 firstName, lastName, email, extensions, extensionsData = (
89 username = name 127 "Firstname", "Lastname", "email_address", [], {})
90 elif email:
91 username = email
92 try: 128 try:
93 f = open(cfgFile, "w") 129 f = open(cfgFile, "w")
94 f.write(os.linesep.join(["[ui]", 130 f.write("[ui]\n")
95 "username = {0}".format(username), ""])) 131 f.write("username = {0} {1} <{2}>\n".format(
132 firstName, lastName, email))
133 if extensions:
134 f.write("\n[extensions]\n")
135 f.write(" =\n".join(extensions))
136 f.write(" =\n") # complete the last line
137 if "largefiles" in extensionsData:
138 dataDict = extensionsData["largefiles"]
139 f.write("\n[largefiles]\n")
140 if "minsize" in dataDict:
141 f.write("minsize = {0}\n".format(dataDict["minsize"]))
142 if "patterns" in dataDict:
143 f.write("patterns =\n")
144 f.write(" {0}\n".format(
145 "\n ".join(dataDict["patterns"])))
96 f.close() 146 f.close()
97 except (IOError, OSError): 147 except (IOError, OSError):
98 # ignore these 148 # ignore these
99 pass 149 pass
100 editor = MiniEditor(cfgFile, "Properties", self) 150 editor = MiniEditor(cfgFile, "Properties", self)

eric ide

mercurial