diff -r 94dd4e83968f -r bb3bebb6d6bb UI/UserInterface.py --- a/UI/UserInterface.py Wed Jan 18 18:40:16 2017 +0100 +++ b/UI/UserInterface.py Thu Jan 19 19:45:32 2017 +0100 @@ -41,7 +41,7 @@ except ImportError: WEBENGINE_AVAILABLE = False -from .Info import Version, BugAddress, Program, FeatureAddress +from .Info import Version, VersionOnly, BugAddress, Program, FeatureAddress from . import Config from E5Gui.E5SingleApplication import E5SingleApplicationServer @@ -6325,7 +6325,7 @@ """ if self.isOnline(): if not manual: - if Version.startswith("@@"): + if VersionOnly.startswith("@@"): return else: period = Preferences.getUI("PerformVersionCheck") @@ -6485,9 +6485,9 @@ """ url = "" try: - if "-snapshot-" in Version: + if "-snapshot-" in VersionOnly: # check snapshot version - if versions[2][0] == "6" and versions[2] > Version: + if versions[2][0] == "6" and versions[2] > VersionOnly: res = E5MessageBox.yesNo( self, self.tr("Update available"), @@ -6498,7 +6498,7 @@ .format(versions[2], versions[3]), yesDefault=True) url = res and versions[3] or '' - elif versions[0] > Version: + elif versions[0] > VersionOnly: res = E5MessageBox.yesNo( self, self.tr("Update available"), @@ -6519,7 +6519,7 @@ """ eric6""")) else: # check release version - if versions[0] > Version: + if versions[0] > VersionOnly: res = E5MessageBox.yesNo( self, self.tr("Update available"), @@ -6640,19 +6640,47 @@ @return flag indicating, that the version is newer than the required one (boolean) """ - if Version.startswith("@@"): + if VersionOnly.startswith("@@"): # development version, always newer return True - if "-snapshot-" in Version: + if VersionOnly.startswith("rev_"): + # installed from cloned sources, always newer + return True + + if "-snapshot-" in VersionOnly: # check snapshot version if snapshot is None: return True else: - vers = Version.split("-snapshot-")[1] - return vers.split()[0] > snapshot - - return Version.split()[0] > required + vers = VersionOnly.split("-snapshot-")[1] + return vers > snapshot + + versionTuple = self.__versionToTuple(VersionOnly) + if isinstance(required, str): + required = self.__versionToTuple(required) + return versionTuple > required + + def __versionToTuple(self, version): + """ + Private method to convert a version string into a tuple. + + @param version version string + @type str + @return version tuple + @rtype tuple of int and str + """ + versionParts = [] + for part in version.split("."): + part = part.strip() + if part: + try: + part = int(part) + except ValueError: + # not an integer + pass + versionParts.append(part) + return tuple(versionParts) ################################# ## Below are some utility methods