src/eric7/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 9054
adae534abaf0
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2010 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the Mercurial configuration page.
8 """
9
10 import os
11
12 from PyQt6.QtCore import pyqtSlot
13
14 from EricWidgets.EricApplication import ericApp
15 from EricWidgets.EricPathPicker import EricPathPickerModes
16
17 from Preferences.ConfigurationPages.ConfigurationPageBase import (
18 ConfigurationPageBase
19 )
20 from .Ui_MercurialPage import Ui_MercurialPage
21 from .. import HgUtilities
22
23 import Globals
24 from Utilities import supportedCodecs
25
26
27 class MercurialPage(ConfigurationPageBase, Ui_MercurialPage):
28 """
29 Class implementing the Mercurial configuration page.
30 """
31 def __init__(self, plugin):
32 """
33 Constructor
34
35 @param plugin reference to the plugin object
36 """
37 super().__init__()
38 self.setupUi(self)
39 self.setObjectName("MercurialPage")
40
41 self.__plugin = plugin
42
43 self.hgPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
44 if Globals.isWindowsPlatform():
45 self.hgPicker.setFilters(self.tr(
46 "Executable Files (*.exe);;"
47 "All Files (*)"
48 ))
49 else:
50 self.hgPicker.setFilters(self.tr("All Files (*)"))
51
52 self.encodingComboBox.addItems(sorted(supportedCodecs))
53 self.encodingModeComboBox.addItems(["strict", "ignore", "replace"])
54
55 self.installButton.setEnabled(not self.__mercurialInstalled())
56
57 # set initial values
58 # executable override
59 self.hgPicker.setText(
60 self.__plugin.getPreferences("MercurialExecutablePath"))
61
62 # global options
63 index = self.encodingComboBox.findText(
64 self.__plugin.getPreferences("Encoding"))
65 self.encodingComboBox.setCurrentIndex(index)
66 index = self.encodingModeComboBox.findText(
67 self.__plugin.getPreferences("EncodingMode"))
68 self.encodingModeComboBox.setCurrentIndex(index)
69 self.hiddenChangesetsCheckBox.setChecked(
70 self.__plugin.getPreferences("ConsiderHidden"))
71 # log
72 self.logSpinBox.setValue(
73 self.__plugin.getPreferences("LogLimit"))
74 self.logWidthSpinBox.setValue(
75 self.__plugin.getPreferences("LogMessageColumnWidth"))
76 self.startFullLogCheckBox.setChecked(
77 self.__plugin.getPreferences("LogBrowserShowFullLog"))
78 # commit
79 self.commitAuthorsSpinBox.setValue(
80 self.__plugin.getPreferences("CommitAuthorsLimit"))
81 # pull
82 self.pullUpdateCheckBox.setChecked(
83 self.__plugin.getPreferences("PullUpdate"))
84 self.preferUnbundleCheckBox.setChecked(
85 self.__plugin.getPreferences("PreferUnbundle"))
86 # cleanup
87 self.cleanupPatternEdit.setText(
88 self.__plugin.getPreferences("CleanupPatterns"))
89 # revert
90 self.backupCheckBox.setChecked(
91 self.__plugin.getPreferences("CreateBackup"))
92 # merge
93 self.internalMergeCheckBox.setChecked(
94 self.__plugin.getPreferences("InternalMerge"))
95
96 def save(self):
97 """
98 Public slot to save the Mercurial configuration.
99 """
100 # executable override
101 self.__plugin.setPreferences(
102 "MercurialExecutablePath", self.hgPicker.text())
103 # global options
104 self.__plugin.setPreferences(
105 "Encoding", self.encodingComboBox.currentText())
106 self.__plugin.setPreferences(
107 "EncodingMode", self.encodingModeComboBox.currentText())
108 self.__plugin.setPreferences(
109 "ConsiderHidden", self.hiddenChangesetsCheckBox.isChecked())
110 # log
111 self.__plugin.setPreferences(
112 "LogLimit", self.logSpinBox.value())
113 self.__plugin.setPreferences(
114 "LogMessageColumnWidth", self.logWidthSpinBox.value())
115 self.__plugin.setPreferences(
116 "LogBrowserShowFullLog", self.startFullLogCheckBox.isChecked())
117 # commit
118 self.__plugin.setPreferences(
119 "CommitAuthorsLimit", self.commitAuthorsSpinBox.value())
120 # pull
121 self.__plugin.setPreferences(
122 "PullUpdate", self.pullUpdateCheckBox.isChecked())
123 self.__plugin.setPreferences(
124 "PreferUnbundle", self.preferUnbundleCheckBox.isChecked())
125 # cleanup
126 self.__plugin.setPreferences(
127 "CleanupPatterns", self.cleanupPatternEdit.text())
128 # revert
129 self.__plugin.setPreferences(
130 "CreateBackup", self.backupCheckBox.isChecked())
131 # merge
132 self.__plugin.setPreferences(
133 "InternalMerge", self.internalMergeCheckBox.isChecked())
134
135 @pyqtSlot()
136 def on_configButton_clicked(self):
137 """
138 Private slot to edit the (per user) Mercurial configuration file.
139 """
140 from ..HgUserConfigDialog import HgUserConfigDialog
141 from ..HgUtilities import hgVersion
142
143 dlg = HgUserConfigDialog(version=hgVersion(self.__plugin)[1])
144 dlg.exec()
145
146 @pyqtSlot()
147 def on_installButton_clicked(self):
148 """
149 Private slot to install Mercurial alongside eric7.
150 """
151 pip = ericApp().getObject("Pip")
152 pip.installPackages(["mercurial"],
153 interpreter=Globals.getPythonExecutable())
154 self.installButton.setEnabled(not self.__mercurialInstalled())
155
156 def __mercurialInstalled(self):
157 """
158 Private method to check, if Mercurial is installed alongside eric7.
159
160 @return flag indicating an installed Mercurial executable
161 @rtype bool
162 """
163 hg = HgUtilities.getHgExecutable()
164 # assume local installation, if the path is absolute
165 return os.path.isabs(hg)

eric ide

mercurial