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 |