39 from PyQt5 import QtWebEngineWidgets # __IGNORE_WARNING__ |
39 from PyQt5 import QtWebEngineWidgets # __IGNORE_WARNING__ |
40 WEBENGINE_AVAILABLE = True |
40 WEBENGINE_AVAILABLE = True |
41 except ImportError: |
41 except ImportError: |
42 WEBENGINE_AVAILABLE = False |
42 WEBENGINE_AVAILABLE = False |
43 |
43 |
44 from .Info import Version, BugAddress, Program, FeatureAddress |
44 from .Info import Version, VersionOnly, BugAddress, Program, FeatureAddress |
45 from . import Config |
45 from . import Config |
46 |
46 |
47 from E5Gui.E5SingleApplication import E5SingleApplicationServer |
47 from E5Gui.E5SingleApplication import E5SingleApplicationServer |
48 from E5Gui.E5Action import E5Action, createActionGroup |
48 from E5Gui.E5Action import E5Action, createActionGroup |
49 from E5Gui.E5ToolBarManager import E5ToolBarManager |
49 from E5Gui.E5ToolBarManager import E5ToolBarManager |
6483 @param versions contents of the downloaded versions file (list of |
6483 @param versions contents of the downloaded versions file (list of |
6484 strings) |
6484 strings) |
6485 """ |
6485 """ |
6486 url = "" |
6486 url = "" |
6487 try: |
6487 try: |
6488 if "-snapshot-" in Version: |
6488 if "-snapshot-" in VersionOnly: |
6489 # check snapshot version |
6489 # check snapshot version |
6490 if versions[2][0] == "6" and versions[2] > Version: |
6490 if versions[2][0] == "6" and versions[2] > VersionOnly: |
6491 res = E5MessageBox.yesNo( |
6491 res = E5MessageBox.yesNo( |
6492 self, |
6492 self, |
6493 self.tr("Update available"), |
6493 self.tr("Update available"), |
6494 self.tr( |
6494 self.tr( |
6495 """The update to <b>{0}</b> of eric6 is""" |
6495 """The update to <b>{0}</b> of eric6 is""" |
6496 """ available at <b>{1}</b>. Would you like to""" |
6496 """ available at <b>{1}</b>. Would you like to""" |
6497 """ get it?""") |
6497 """ get it?""") |
6498 .format(versions[2], versions[3]), |
6498 .format(versions[2], versions[3]), |
6499 yesDefault=True) |
6499 yesDefault=True) |
6500 url = res and versions[3] or '' |
6500 url = res and versions[3] or '' |
6501 elif versions[0] > Version: |
6501 elif versions[0] > VersionOnly: |
6502 res = E5MessageBox.yesNo( |
6502 res = E5MessageBox.yesNo( |
6503 self, |
6503 self, |
6504 self.tr("Update available"), |
6504 self.tr("Update available"), |
6505 self.tr( |
6505 self.tr( |
6506 """The update to <b>{0}</b> of eric6 is""" |
6506 """The update to <b>{0}</b> of eric6 is""" |
6517 self.tr( |
6517 self.tr( |
6518 """You are using the latest version of""" |
6518 """You are using the latest version of""" |
6519 """ eric6""")) |
6519 """ eric6""")) |
6520 else: |
6520 else: |
6521 # check release version |
6521 # check release version |
6522 if versions[0] > Version: |
6522 if versions[0] > VersionOnly: |
6523 res = E5MessageBox.yesNo( |
6523 res = E5MessageBox.yesNo( |
6524 self, |
6524 self, |
6525 self.tr("Update available"), |
6525 self.tr("Update available"), |
6526 self.tr( |
6526 self.tr( |
6527 """The update to <b>{0}</b> of eric6 is""" |
6527 """The update to <b>{0}</b> of eric6 is""" |
6638 @param required required version (string) |
6638 @param required required version (string) |
6639 @param snapshot required snapshot version (string) |
6639 @param snapshot required snapshot version (string) |
6640 @return flag indicating, that the version is newer than the required |
6640 @return flag indicating, that the version is newer than the required |
6641 one (boolean) |
6641 one (boolean) |
6642 """ |
6642 """ |
6643 if Version.startswith("@@"): |
6643 if VersionOnly.startswith("@@"): |
6644 # development version, always newer |
6644 # development version, always newer |
6645 return True |
6645 return True |
6646 |
6646 |
6647 if "-snapshot-" in Version: |
6647 if VersionOnly.startswith("rev_"): |
|
6648 # installed from cloned sources, always newer |
|
6649 return True |
|
6650 |
|
6651 if "-snapshot-" in VersionOnly: |
6648 # check snapshot version |
6652 # check snapshot version |
6649 if snapshot is None: |
6653 if snapshot is None: |
6650 return True |
6654 return True |
6651 else: |
6655 else: |
6652 vers = Version.split("-snapshot-")[1] |
6656 vers = VersionOnly.split("-snapshot-")[1] |
6653 return vers.split()[0] > snapshot |
6657 return vers > snapshot |
6654 |
6658 |
6655 return Version.split()[0] > required |
6659 versionTuple = self.__versionToTuple(VersionOnly) |
|
6660 if isinstance(required, str): |
|
6661 required = self.__versionToTuple(required) |
|
6662 return versionTuple > required |
|
6663 |
|
6664 def __versionToTuple(self, version): |
|
6665 """ |
|
6666 Private method to convert a version string into a tuple. |
|
6667 |
|
6668 @param version version string |
|
6669 @type str |
|
6670 @return version tuple |
|
6671 @rtype tuple of int and str |
|
6672 """ |
|
6673 versionParts = [] |
|
6674 for part in version.split("."): |
|
6675 part = part.strip() |
|
6676 if part: |
|
6677 try: |
|
6678 part = int(part) |
|
6679 except ValueError: |
|
6680 # not an integer |
|
6681 pass |
|
6682 versionParts.append(part) |
|
6683 return tuple(versionParts) |
6656 |
6684 |
6657 ################################# |
6685 ################################# |
6658 ## Below are some utility methods |
6686 ## Below are some utility methods |
6659 ################################# |
6687 ################################# |
6660 |
6688 |