Plugins/PluginVcsMercurial.py

changeset 5554
c477ae02bf5f
parent 5520
2a97a4d58bc6
child 5558
858abfcbaf28
equal deleted inserted replaced
5553:d0e3207d1e8f 5554:c477ae02bf5f
141 Module function to prepare for an uninstallation. 141 Module function to prepare for an uninstallation.
142 """ 142 """
143 if not e5App().getObject("PluginManager").isPluginLoaded( 143 if not e5App().getObject("PluginManager").isPluginLoaded(
144 "PluginVcsMercurial"): 144 "PluginVcsMercurial"):
145 Preferences.Prefs.settings.remove("Mercurial") 145 Preferences.Prefs.settings.remove("Mercurial")
146
147
148 def clearPrivateData():
149 """
150 Module function to clear the private data of the plug-in.
151 """
152 for key in ["RepositoryUrlHistory"]:
153 VcsMercurialPlugin.setPreferences(key, [])
146 154
147 155
148 class VcsMercurialPlugin(QObject): 156 class VcsMercurialPlugin(QObject):
149 """ 157 """
150 Class implementing the Mercurial version control plugin. 158 Class implementing the Mercurial version control plugin.
151 """ 159 """
160 MercurialDefaults = {
161 "StopLogOnCopy": True, # used in log browser
162 "LogLimit": 20,
163 "CommitMessages": 20,
164 "Commits": [],
165 "CommitAuthorsLimit": 20,
166 "CommitAuthors": [],
167 "PullUpdate": False,
168 "PreferUnbundle": False,
169 "ServerPort": 8000,
170 "ServerStyle": "",
171 "CleanupPatterns": "*.orig *.rej *~",
172 "CreateBackup": False,
173 "InternalMerge": False,
174 "Encoding": "utf-8",
175 "EncodingMode": "strict",
176 "ConsiderHidden": False,
177 "LogMessageColumnWidth": 30,
178 "LogBrowserGeometry": QByteArray(),
179 "LogBrowserSplitterStates": [QByteArray(), QByteArray(),
180 QByteArray()],
181 # mainSplitter, detailsSplitter, diffSplitter
182 "StatusDialogGeometry": QByteArray(),
183 "StatusDialogSplitterState": QByteArray(),
184 "MqStatusDialogGeometry": QByteArray(),
185 "MqStatusDialogSplitterState": QByteArray(),
186 "RepositoryUrlHistory": [],
187 }
188
152 def __init__(self, ui): 189 def __init__(self, ui):
153 """ 190 """
154 Constructor 191 Constructor
155 192
156 @param ui reference to the user interface object (UI.UserInterface) 193 @param ui reference to the user interface object (UI.UserInterface)
157 """ 194 """
158 super(VcsMercurialPlugin, self).__init__(ui) 195 super(VcsMercurialPlugin, self).__init__(ui)
159 self.__ui = ui 196 self.__ui = ui
160
161 self.__mercurialDefaults = {
162 "StopLogOnCopy": True, # used in log browser
163 "LogLimit": 20,
164 "CommitMessages": 20,
165 "Commits": [],
166 "CommitAuthorsLimit": 20,
167 "CommitAuthors": [],
168 "PullUpdate": False,
169 "PreferUnbundle": False,
170 "ServerPort": 8000,
171 "ServerStyle": "",
172 "CleanupPatterns": "*.orig *.rej *~",
173 "CreateBackup": False,
174 "InternalMerge": False,
175 "Encoding": "utf-8",
176 "EncodingMode": "strict",
177 "ConsiderHidden": False,
178 "LogMessageColumnWidth": 30,
179 "LogBrowserGeometry": QByteArray(),
180 "LogBrowserSplitterStates": [QByteArray(), QByteArray(),
181 QByteArray()],
182 # mainSplitter, detailsSplitter, diffSplitter
183 "StatusDialogGeometry": QByteArray(),
184 "StatusDialogSplitterState": QByteArray(),
185 "MqStatusDialogGeometry": QByteArray(),
186 "MqStatusDialogSplitterState": QByteArray(),
187 }
188 197
189 from VcsPlugins.vcsMercurial.ProjectHelper import HgProjectHelper 198 from VcsPlugins.vcsMercurial.ProjectHelper import HgProjectHelper
190 self.__projectHelperObject = HgProjectHelper(None, None) 199 self.__projectHelperObject = HgProjectHelper(None, None)
191 try: 200 try:
192 e5App().registerPluginObject( 201 e5App().registerPluginObject(
246 255
247 tb = self.__ui.getToolbar("vcs")[1] 256 tb = self.__ui.getToolbar("vcs")[1]
248 tb.setVisible(True) 257 tb.setVisible(True)
249 tb.setEnabled(True) 258 tb.setEnabled(True)
250 259
251 def getPreferences(self, key): 260 @classmethod
261 def getPreferences(cls, key):
252 """ 262 """
253 Public method to retrieve the various settings. 263 Public method to retrieve the various settings.
254 264
255 @param key the key of the value to get 265 @param key the key of the value to get
256 @return the requested setting 266 @return the requested setting
257 """ 267 """
258 if key in ["StopLogOnCopy", "PullUpdate", "PreferUnbundle", 268 if key in ["StopLogOnCopy", "PullUpdate", "PreferUnbundle",
259 "CreateBackup", "InternalMerge", "ConsiderHidden"]: 269 "CreateBackup", "InternalMerge", "ConsiderHidden"]:
260 return Preferences.toBool(Preferences.Prefs.settings.value( 270 return Preferences.toBool(Preferences.Prefs.settings.value(
261 "Mercurial/" + key, self.__mercurialDefaults[key])) 271 "Mercurial/" + key, cls.MercurialDefaults[key]))
262 elif key in ["LogLimit", "CommitMessages", "CommitAuthorsLimit", 272 elif key in ["LogLimit", "CommitMessages", "CommitAuthorsLimit",
263 "ServerPort", "LogMessageColumnWidth"]: 273 "ServerPort", "LogMessageColumnWidth"]:
264 return int(Preferences.Prefs.settings.value( 274 return int(Preferences.Prefs.settings.value(
265 "Mercurial/" + key, self.__mercurialDefaults[key])) 275 "Mercurial/" + key, cls.MercurialDefaults[key]))
266 elif key in ["Commits", "CommitAuthors"]: 276 elif key in ["Commits", "CommitAuthors", "RepositoryUrlHistory"]:
267 return Preferences.toList(Preferences.Prefs.settings.value( 277 return Preferences.toList(Preferences.Prefs.settings.value(
268 "Mercurial/" + key)) 278 "Mercurial/" + key, cls.MercurialDefaults[key]))
269 elif key in ["LogBrowserGeometry", "StatusDialogGeometry", 279 elif key in ["LogBrowserGeometry", "StatusDialogGeometry",
270 "StatusDialogSplitterState", "MqStatusDialogGeometry", 280 "StatusDialogSplitterState", "MqStatusDialogGeometry",
271 "MqStatusDialogSplitterState"]: 281 "MqStatusDialogSplitterState"]:
272 # QByteArray values 282 # QByteArray values
273 v = Preferences.Prefs.settings.value("Mercurial/" + key) 283 v = Preferences.Prefs.settings.value("Mercurial/" + key)
274 if v is not None: 284 if v is not None:
275 return v 285 return v
276 else: 286 else:
277 return self.__mercurialDefaults[key] 287 return cls.MercurialDefaults[key]
278 elif key in ["LogBrowserSplitterStates"]: 288 elif key in ["LogBrowserSplitterStates"]:
279 # list of QByteArray values 289 # list of QByteArray values
280 states = Preferences.Prefs.settings.value("Mercurial/" + key) 290 states = Preferences.Prefs.settings.value("Mercurial/" + key)
281 if states is not None: 291 if states is not None:
282 return states 292 return states
283 else: 293 else:
284 return self.__mercurialDefaults[key] 294 return cls.MercurialDefaults[key]
285 else: 295 else:
286 return Preferences.Prefs.settings.value( 296 return Preferences.Prefs.settings.value(
287 "Mercurial/" + key, self.__mercurialDefaults[key]) 297 "Mercurial/" + key, cls.MercurialDefaults[key])
288 298
289 def setPreferences(self, key, value): 299 @classmethod
300 def setPreferences(cls, key, value):
290 """ 301 """
291 Public method to store the various settings. 302 Public method to store the various settings.
292 303
293 @param key the key of the setting to be set 304 @param key the key of the setting to be set
294 @param value the value to be set 305 @param value the value to be set
301 312
302 @return list of global options (list of string) 313 @return list of global options (list of string)
303 """ 314 """
304 args = [] 315 args = []
305 if self.getPreferences("Encoding") != \ 316 if self.getPreferences("Encoding") != \
306 self.__mercurialDefaults["Encoding"]: 317 self.MercurialDefaults["Encoding"]:
307 args.append("--encoding") 318 args.append("--encoding")
308 args.append(self.getPreferences("Encoding")) 319 args.append(self.getPreferences("Encoding"))
309 if self.getPreferences("EncodingMode") != \ 320 if self.getPreferences("EncodingMode") != \
310 self.__mercurialDefaults["EncodingMode"]: 321 self.MercurialDefaults["EncodingMode"]:
311 args.append("--encodingmode") 322 args.append("--encodingmode")
312 args.append(self.getPreferences("EncodingMode")) 323 args.append(self.getPreferences("EncodingMode"))
313 if self.getPreferences("ConsiderHidden"): 324 if self.getPreferences("ConsiderHidden"):
314 args.append("--hidden") 325 args.append("--hidden")
315 return args 326 return args

eric ide

mercurial