--- a/Plugins/PluginVcsMercurial.py Fri Feb 24 18:51:36 2017 +0100 +++ b/Plugins/PluginVcsMercurial.py Fri Feb 24 18:58:27 2017 +0100 @@ -143,12 +143,49 @@ if not e5App().getObject("PluginManager").isPluginLoaded( "PluginVcsMercurial"): Preferences.Prefs.settings.remove("Mercurial") + + +def clearPrivateData(): + """ + Module function to clear the private data of the plug-in. + """ + for key in ["RepositoryUrlHistory"]: + VcsMercurialPlugin.setPreferences(key, []) class VcsMercurialPlugin(QObject): """ Class implementing the Mercurial version control plugin. """ + MercurialDefaults = { + "StopLogOnCopy": True, # used in log browser + "LogLimit": 20, + "CommitMessages": 20, + "Commits": [], + "CommitAuthorsLimit": 20, + "CommitAuthors": [], + "PullUpdate": False, + "PreferUnbundle": False, + "ServerPort": 8000, + "ServerStyle": "", + "CleanupPatterns": "*.orig *.rej *~", + "CreateBackup": False, + "InternalMerge": False, + "Encoding": "utf-8", + "EncodingMode": "strict", + "ConsiderHidden": False, + "LogMessageColumnWidth": 30, + "LogBrowserGeometry": QByteArray(), + "LogBrowserSplitterStates": [QByteArray(), QByteArray(), + QByteArray()], + # mainSplitter, detailsSplitter, diffSplitter + "StatusDialogGeometry": QByteArray(), + "StatusDialogSplitterState": QByteArray(), + "MqStatusDialogGeometry": QByteArray(), + "MqStatusDialogSplitterState": QByteArray(), + "RepositoryUrlHistory": [], + } + def __init__(self, ui): """ Constructor @@ -158,34 +195,6 @@ super(VcsMercurialPlugin, self).__init__(ui) self.__ui = ui - self.__mercurialDefaults = { - "StopLogOnCopy": True, # used in log browser - "LogLimit": 20, - "CommitMessages": 20, - "Commits": [], - "CommitAuthorsLimit": 20, - "CommitAuthors": [], - "PullUpdate": False, - "PreferUnbundle": False, - "ServerPort": 8000, - "ServerStyle": "", - "CleanupPatterns": "*.orig *.rej *~", - "CreateBackup": False, - "InternalMerge": False, - "Encoding": "utf-8", - "EncodingMode": "strict", - "ConsiderHidden": False, - "LogMessageColumnWidth": 30, - "LogBrowserGeometry": QByteArray(), - "LogBrowserSplitterStates": [QByteArray(), QByteArray(), - QByteArray()], - # mainSplitter, detailsSplitter, diffSplitter - "StatusDialogGeometry": QByteArray(), - "StatusDialogSplitterState": QByteArray(), - "MqStatusDialogGeometry": QByteArray(), - "MqStatusDialogSplitterState": QByteArray(), - } - from VcsPlugins.vcsMercurial.ProjectHelper import HgProjectHelper self.__projectHelperObject = HgProjectHelper(None, None) try: @@ -248,7 +257,8 @@ tb.setVisible(True) tb.setEnabled(True) - def getPreferences(self, key): + @classmethod + def getPreferences(cls, key): """ Public method to retrieve the various settings. @@ -258,14 +268,14 @@ if key in ["StopLogOnCopy", "PullUpdate", "PreferUnbundle", "CreateBackup", "InternalMerge", "ConsiderHidden"]: return Preferences.toBool(Preferences.Prefs.settings.value( - "Mercurial/" + key, self.__mercurialDefaults[key])) + "Mercurial/" + key, cls.MercurialDefaults[key])) elif key in ["LogLimit", "CommitMessages", "CommitAuthorsLimit", "ServerPort", "LogMessageColumnWidth"]: return int(Preferences.Prefs.settings.value( - "Mercurial/" + key, self.__mercurialDefaults[key])) - elif key in ["Commits", "CommitAuthors"]: + "Mercurial/" + key, cls.MercurialDefaults[key])) + elif key in ["Commits", "CommitAuthors", "RepositoryUrlHistory"]: return Preferences.toList(Preferences.Prefs.settings.value( - "Mercurial/" + key)) + "Mercurial/" + key, cls.MercurialDefaults[key])) elif key in ["LogBrowserGeometry", "StatusDialogGeometry", "StatusDialogSplitterState", "MqStatusDialogGeometry", "MqStatusDialogSplitterState"]: @@ -274,19 +284,20 @@ if v is not None: return v else: - return self.__mercurialDefaults[key] + return cls.MercurialDefaults[key] elif key in ["LogBrowserSplitterStates"]: # list of QByteArray values states = Preferences.Prefs.settings.value("Mercurial/" + key) if states is not None: return states else: - return self.__mercurialDefaults[key] + return cls.MercurialDefaults[key] else: return Preferences.Prefs.settings.value( - "Mercurial/" + key, self.__mercurialDefaults[key]) + "Mercurial/" + key, cls.MercurialDefaults[key]) - def setPreferences(self, key, value): + @classmethod + def setPreferences(cls, key, value): """ Public method to store the various settings. @@ -303,11 +314,11 @@ """ args = [] if self.getPreferences("Encoding") != \ - self.__mercurialDefaults["Encoding"]: + self.MercurialDefaults["Encoding"]: args.append("--encoding") args.append(self.getPreferences("Encoding")) if self.getPreferences("EncodingMode") != \ - self.__mercurialDefaults["EncodingMode"]: + self.MercurialDefaults["EncodingMode"]: args.append("--encodingmode") args.append(self.getPreferences("EncodingMode")) if self.getPreferences("ConsiderHidden"):