Prepared the code for Qt > 5.9.99.

Sat, 13 May 2017 16:32:54 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 13 May 2017 16:32:54 +0200
changeset 5736
000ea446ff4b
parent 5735
f606dbe20be6
child 5737
6820ae39114e

Prepared the code for Qt > 5.9.99.

DataViews/CodeMetricsDialog.py file | annotate | diff | comparison | revisions
Debugger/BreakPointViewer.py file | annotate | diff | comparison | revisions
Debugger/VariablesViewer.py file | annotate | diff | comparison | revisions
Debugger/WatchPointViewer.py file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
E5Gui/E5LineEdit.py file | annotate | diff | comparison | revisions
E5Gui/E5MapWidget.py file | annotate | diff | comparison | revisions
E5Gui/E5ModelMenu.py file | annotate | diff | comparison | revisions
E5Gui/E5ModelToolBar.py file | annotate | diff | comparison | revisions
E5Gui/E5SideBar.py file | annotate | diff | comparison | revisions
E5Gui/E5TabWidget.py file | annotate | diff | comparison | revisions
E5Network/E5SslCertificatesDialog.py file | annotate | diff | comparison | revisions
E5Network/E5SslCertificatesInfoWidget.py file | annotate | diff | comparison | revisions
E5Network/E5SslErrorHandler.py file | annotate | diff | comparison | revisions
E5Network/E5SslInfoWidget.py file | annotate | diff | comparison | revisions
Globals/__init__.py file | annotate | diff | comparison | revisions
Graphics/PixmapDiagram.py file | annotate | diff | comparison | revisions
Graphics/SvgDiagram.py file | annotate | diff | comparison | revisions
Graphics/UMLGraphicsView.py file | annotate | diff | comparison | revisions
Helpviewer/AdBlock/AdBlockAccessHandler.py file | annotate | diff | comparison | revisions
Helpviewer/AdBlock/AdBlockRule.py file | annotate | diff | comparison | revisions
Helpviewer/AdBlock/AdBlockSubscription.py file | annotate | diff | comparison | revisions
Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListDelegate.py file | annotate | diff | comparison | revisions
Helpviewer/HelpBrowserWV.py file | annotate | diff | comparison | revisions
Helpviewer/HelpDocsInstaller.py file | annotate | diff | comparison | revisions
Helpviewer/Network/NetworkAccessManager.py file | annotate | diff | comparison | revisions
Helpviewer/OpenSearch/OpenSearchEngine.py file | annotate | diff | comparison | revisions
Helpviewer/Passwords/PasswordManager.py file | annotate | diff | comparison | revisions
Helpviewer/SiteInfo/SiteInfoDialog.py file | annotate | diff | comparison | revisions
Helpviewer/UrlBar/UrlBar.py file | annotate | diff | comparison | revisions
Helpviewer/VirusTotal/VirusTotalApi.py file | annotate | diff | comparison | revisions
IconEditor/IconEditorWindow.py file | annotate | diff | comparison | revisions
Network/IRC/IrcMessageEdit.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py file | annotate | diff | comparison | revisions
Plugins/WizardPlugins/QRegExpWizard/QRegExpWizardDialog.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationDialog.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/EditorHighlightersPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/EditorHighlightingStylesPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/HelpViewersPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/QtPage.py file | annotate | diff | comparison | revisions
Preferences/__init__.py file | annotate | diff | comparison | revisions
Project/CreateDialogCodeDialog.py file | annotate | diff | comparison | revisions
Project/LexerAssociationDialog.py file | annotate | diff | comparison | revisions
QScintilla/Editor.py file | annotate | diff | comparison | revisions
QScintilla/KeySequenceTranslator.py file | annotate | diff | comparison | revisions
QScintilla/Shell.py file | annotate | diff | comparison | revisions
Snapshot/SnapWidget.py file | annotate | diff | comparison | revisions
Snapshot/SnapshotFreehandGrabber.py file | annotate | diff | comparison | revisions
Snapshot/SnapshotRegionGrabber.py file | annotate | diff | comparison | revisions
SqlBrowser/SqlConnectionWidget.py file | annotate | diff | comparison | revisions
Toolbox/Startup.py file | annotate | diff | comparison | revisions
Tools/UIPreviewer.py file | annotate | diff | comparison | revisions
UI/Browser.py file | annotate | diff | comparison | revisions
UI/EmailDialog.py file | annotate | diff | comparison | revisions
UI/NumbersWidget.py file | annotate | diff | comparison | revisions
UI/Previewers/PreviewerQSS.py file | annotate | diff | comparison | revisions
UI/SymbolsWidget.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
Utilities/__init__.py file | annotate | diff | comparison | revisions
WebBrowser/AdBlock/AdBlockRule.py file | annotate | diff | comparison | revisions
WebBrowser/Download/DownloadItem.py file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyScript.py file | annotate | diff | comparison | revisions
WebBrowser/QtHelp/HelpDocsInstaller.py file | annotate | diff | comparison | revisions
WebBrowser/Tools/FilePrinter.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserPage.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserTabWidget.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserView.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserWindow.py file | annotate | diff | comparison | revisions
eric6_browser.py file | annotate | diff | comparison | revisions
eric6_configure.py file | annotate | diff | comparison | revisions
eric6_tray.py file | annotate | diff | comparison | revisions
--- a/DataViews/CodeMetricsDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/DataViews/CodeMetricsDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -12,7 +12,7 @@
 import os
 import fnmatch
 
-from PyQt5.QtCore import pyqtSlot, Qt, QLocale, qVersion
+from PyQt5.QtCore import pyqtSlot, Qt, QLocale
 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMenu, QHeaderView, \
     QTreeWidgetItem, QApplication
 
@@ -20,6 +20,7 @@
 from . import CodeMetrics
 
 import Utilities
+from Globals import qVersionTuple
 
 
 class CodeMetricsDialog(QDialog, Ui_CodeMetricsDialog):
@@ -235,7 +236,7 @@
         self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
         self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.resultList.header().setSectionResizeMode(
                 QHeaderView.Interactive)
             self.summaryList.header().setSectionResizeMode(
--- a/Debugger/BreakPointViewer.py	Sat May 13 13:46:05 2017 +0200
+++ b/Debugger/BreakPointViewer.py	Sat May 13 16:32:54 2017 +0200
@@ -9,13 +9,15 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSignal, Qt, qVersion, QItemSelectionModel, \
+from PyQt5.QtCore import pyqtSignal, Qt, QItemSelectionModel, \
     QSortFilterProxyModel
 from PyQt5.QtWidgets import QTreeView, QAbstractItemView, QHeaderView, QMenu, \
     QDialog
 
 from E5Gui.E5Application import e5App
 
+from Globals import qVersionTuple
+
 
 class BreakPointViewer(QTreeView):
     """
@@ -73,7 +75,7 @@
         header = self.header()
         header.setSortIndicator(0, Qt.AscendingOrder)
         header.setSortIndicatorShown(True)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             header.setSectionsClickable(True)
         else:
             header.setClickable(True)
--- a/Debugger/VariablesViewer.py	Sat May 13 13:46:05 2017 +0200
+++ b/Debugger/VariablesViewer.py	Sat May 13 16:32:54 2017 +0200
@@ -13,7 +13,7 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import Qt, QRegExp, qVersion, QCoreApplication
+from PyQt5.QtCore import Qt, QRegExp, QCoreApplication
 from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QAbstractItemView, \
     QMenu
 
@@ -23,6 +23,7 @@
 
 import Preferences
 import Utilities
+from Globals import qVersionTuple
 
 
 class VariableItem(QTreeWidgetItem):
@@ -378,7 +379,7 @@
         header = self.header()
         header.setSortIndicator(0, Qt.AscendingOrder)
         header.setSortIndicatorShown(True)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             header.setSectionsClickable(True)
         else:
             header.setClickable(True)
--- a/Debugger/WatchPointViewer.py	Sat May 13 13:46:05 2017 +0200
+++ b/Debugger/WatchPointViewer.py	Sat May 13 16:32:54 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import Qt, QModelIndex, qVersion, QItemSelectionModel, \
+from PyQt5.QtCore import Qt, QModelIndex, QItemSelectionModel, \
     QSortFilterProxyModel
 from PyQt5.QtWidgets import QTreeView, QAbstractItemView, QMenu, QHeaderView, \
     QDialog
@@ -18,6 +18,7 @@
 from E5Gui import E5MessageBox
 
 import Utilities
+from Globals import qVersionTuple
 
 
 class WatchPointViewer(QTreeView):
@@ -68,7 +69,7 @@
         header = self.header()
         header.setSortIndicator(0, Qt.AscendingOrder)
         header.setSortIndicatorShown(True)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             header.setSectionsClickable(True)
         else:
             header.setClickable(True)
Binary file Documentation/Help/source.qch has changed
--- a/E5Gui/E5LineEdit.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Gui/E5LineEdit.py	Sat May 13 16:32:54 2017 +0200
@@ -9,11 +9,14 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSignal, Qt, QEvent, qVersion
+from PyQt5.QtCore import pyqtSignal, Qt, QEvent
 from PyQt5.QtGui import QPainter, QPalette
 from PyQt5.QtWidgets import QLineEdit, QStyle, QWidget, QHBoxLayout, \
     QBoxLayout, QLayout, QApplication, QSpacerItem, QSizePolicy
-if qVersion() >= "5.0.0":
+
+from Globals import qVersionTuple
+
+if qVersionTuple() >= (5, 0, 0):
     from PyQt5.QtWidgets import QStyleOptionFrame
 else:
     from PyQt5.QtWidgets import QStyleOptionFrameV2 as QStyleOptionFrame
@@ -67,7 +70,7 @@
         
         self.setMinimumHeight(22)
         
-        if qVersion() < "4.7.0":
+        if qVersionTuple() < (4, 7, 0):
             self.__inactiveText = inactiveText
         else:
             self.setPlaceholderText(inactiveText)
@@ -154,7 +157,7 @@
         """
         super(E5LineEdit, self).paintEvent(evt)
         
-        if qVersion() < "4.7.0":
+        if qVersionTuple() < (4, 7, 0):
             if not self.text() and \
                self.__inactiveText and \
                not self.hasFocus():
@@ -262,7 +265,7 @@
         
         @return inactive text (string)
         """
-        if qVersion() < "4.7.0":
+        if qVersionTuple() < (4, 7, 0):
             return self.__inactiveText
         else:
             return self.placeholderText()
@@ -273,7 +276,7 @@
         
         @param inactiveText text to be shown on inactivity (string)
         """
-        if qVersion() < "4.7.0":
+        if qVersionTuple() < (4, 7, 0):
             self.__inactiveText = inactiveText
             self.update()
         else:
--- a/E5Gui/E5MapWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Gui/E5MapWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -9,10 +9,12 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import Qt, QSize, QRect, QCoreApplication, qVersion
+from PyQt5.QtCore import Qt, QSize, QRect, QCoreApplication
 from PyQt5.QtGui import QColor, QBrush, QPainter
 from PyQt5.QtWidgets import QWidget, QAbstractScrollArea
 
+from Globals import qVersionTuple
+
 
 class E5MapWidget(QWidget):
     """
@@ -219,7 +221,7 @@
         
         @param event reference to the wheel event (QWheelEvent)
         """
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             isVertical = event.angleDelta().x() == 0
         else:
             isVertical = event.orientation() == Qt.Vertical
--- a/E5Gui/E5ModelMenu.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Gui/E5ModelMenu.py	Sat May 13 16:32:54 2017 +0200
@@ -9,11 +9,12 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSignal, qVersion, Qt, QModelIndex, QPoint
+from PyQt5.QtCore import pyqtSignal, Qt, QModelIndex, QPoint
 from PyQt5.QtGui import QFontMetrics, QDrag, QPixmap
 from PyQt5.QtWidgets import QMenu, QAction, QApplication
 
 import UI.PixmapCache
+from Globals import qVersionTuple
 
 
 class E5ModelMenu(QMenu):
@@ -388,7 +389,7 @@
         drag = QDrag(self)
         drag.setMimeData(self.__model.mimeData([idx]))
         actionRect = self.actionGeometry(act)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             drag.setPixmap(self.grab(actionRect))
         else:
             drag.setPixmap(QPixmap.grabWidget(self, actionRect))
--- a/E5Gui/E5ModelToolBar.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Gui/E5ModelToolBar.py	Sat May 13 16:32:54 2017 +0200
@@ -9,10 +9,12 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSignal, qVersion, Qt, QModelIndex, QPoint, QEvent
+from PyQt5.QtCore import pyqtSignal, Qt, QModelIndex, QPoint, QEvent
 from PyQt5.QtGui import QDrag, QPixmap, QIcon
 from PyQt5.QtWidgets import QApplication, QToolBar, QToolButton
 
+from Globals import qVersionTuple
+
 
 class E5ModelToolBar(QToolBar):
     """
@@ -251,7 +253,7 @@
         drag = QDrag(self)
         drag.setMimeData(self.__model.mimeData([idx]))
         actionRect = self.actionGeometry(act)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             drag.setPixmap(self.grab(actionRect))
         else:
             drag.setPixmap(QPixmap.grabWidget(self, actionRect))
--- a/E5Gui/E5SideBar.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Gui/E5SideBar.py	Sat May 13 16:32:54 2017 +0200
@@ -10,13 +10,14 @@
 from __future__ import unicode_literals
 
 from PyQt5.QtCore import QEvent, QSize, Qt, QByteArray, QDataStream, \
-    QIODevice, QTimer, qVersion
+    QIODevice, QTimer
 from PyQt5.QtWidgets import QTabBar, QWidget, QStackedWidget, QBoxLayout, \
     QToolButton, QSizePolicy
 
 from E5Gui.E5Application import e5App
 
 import UI.PixmapCache
+from Globals import qVersionTuple
 
 
 class E5SideBar(QWidget):
@@ -254,7 +255,7 @@
                 elif self.isMinimized():
                     self.expand()
             elif evt.type() == QEvent.Wheel:
-                if qVersion() >= "5.0.0":
+                if qVersionTuple() >= (5, 0, 0):
                     delta = evt.angleDelta().y()
                 else:
                     delta = evt.delta()
--- a/E5Gui/E5TabWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Gui/E5TabWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -9,11 +9,12 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import Qt, QPoint, QMimeData, QByteArray, pyqtSignal, \
-    qVersion
+from PyQt5.QtCore import Qt, QPoint, QMimeData, QByteArray, pyqtSignal
 from PyQt5.QtGui import QDrag, QMovie
 from PyQt5.QtWidgets import QTabWidget, QTabBar, QApplication, QStyle, QLabel
 
+from Globals import qVersionTuple
+
 
 class E5WheelTabBar(QTabBar):
     """
@@ -36,7 +37,7 @@
         @param event reference to the wheel event (QWheelEvent)
         """
         try:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 delta = event.angleDelta().y()
             else:
                 delta = event.delta()
--- a/E5Network/E5SslCertificatesDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Network/E5SslCertificatesDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -10,7 +10,7 @@
 from __future__ import unicode_literals
 
 from PyQt5.QtCore import pyqtSlot, Qt, QByteArray, QFile, QFileInfo, \
-    QIODevice, qVersion
+    QIODevice
 from PyQt5.QtWidgets import QDialog, QTreeWidgetItem
 try:
     from PyQt5.QtNetwork import QSslCertificate, QSslSocket, \
@@ -26,6 +26,7 @@
 import Utilities
 import UI.PixmapCache
 import Globals
+from Globals import qVersionTuple
 
 
 class E5SslCertificatesDialog(QDialog, Ui_E5SslCertificatesDialog):
@@ -86,7 +87,7 @@
         @param cert certificate to insert (QSslCertificate)
         """
         # step 1: extract the info to be shown
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             organisation = Utilities.decodeString(
                 ", ".join(cert.subjectInfo(QSslCertificate.Organization)))
             commonName = Utilities.decodeString(
@@ -213,7 +214,7 @@
             pems = QByteArray()
             for cert in certs:
                 if cert in sCerts:
-                    if qVersion() >= "5.0.0":
+                    if qVersionTuple() >= (5, 0, 0):
                         commonStr = ", ".join(
                             cert.subjectInfo(QSslCertificate.CommonName))
                     else:
@@ -297,7 +298,7 @@
         @param cert certificate to insert (QSslCertificate)
         """
         # step 1: extract the info to be shown
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             organisation = Utilities.decodeString(
                 ", ".join(cert.subjectInfo(QSslCertificate.Organization)))
             commonName = Utilities.decodeString(
@@ -403,7 +404,7 @@
             caCerts = self.__getSystemCaCertificates()
             for cert in certs:
                 if cert in caCerts:
-                    if qVersion() >= "5.0.0":
+                    if qVersionTuple() >= (5, 0, 0):
                         commonStr = ", ".join(
                             cert.subjectInfo(QSslCertificate.CommonName))
                     else:
--- a/E5Network/E5SslCertificatesInfoWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Network/E5SslCertificatesInfoWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -13,13 +13,14 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import pyqtSlot, QCryptographicHash, QDateTime, qVersion
+from PyQt5.QtCore import pyqtSlot, QCryptographicHash, QDateTime
 from PyQt5.QtWidgets import QWidget
 from PyQt5.QtNetwork import QSslCertificate
 
 from .Ui_E5SslCertificatesInfoWidget import Ui_E5SslCertificatesInfoWidget
 
 import Utilities
+from Globals import qVersionTuple
 
 
 class E5SslCertificatesInfoWidget(QWidget, Ui_E5SslCertificatesInfoWidget):
@@ -51,12 +52,12 @@
         self.__chain = certificateChain[:]
         
         for cert in self.__chain:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 name = ", ".join(cert.subjectInfo(QSslCertificate.CommonName))
             else:
                 name = cert.subjectInfo(QSslCertificate.CommonName)
             if not name:
-                if qVersion() >= "5.0.0":
+                if qVersionTuple() >= (5, 0, 0):
                     name = ", ".join(
                         cert.subjectInfo(QSslCertificate.Organization))
                 else:
@@ -94,7 +95,7 @@
         self.expiredLabel.setStyleSheet(
             "QLabel { color : white; background-color : red; }")
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.subjectCommonNameLabel.setText(self.__certificateString(
                 ", ".join(certificate.subjectInfo(
                     QSslCertificate.CommonName))))
@@ -141,8 +142,8 @@
             str(certificate.digest(QCryptographicHash.Md5).toHex(),
                 encoding="ascii")))
         
-        if (qVersion() >= "5.0.0" and certificate.isBlacklisted()) or \
-           (qVersion() < "5.0.0" and not certificate.isValid()):
+        if (qVersionTuple() >= (5, 0, 0) and certificate.isBlacklisted()) or \
+           (qVersionTuple() < (5, 0, 0) and not certificate.isValid()):
             # something is wrong; indicate it to the user
             if self.__hasExpired(certificate.effectiveDate(),
                                  certificate.expiryDate()):
--- a/E5Network/E5SslErrorHandler.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Network/E5SslErrorHandler.py	Sat May 13 16:32:54 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import qVersion, QObject, QByteArray
+from PyQt5.QtCore import QObject, QByteArray
 from PyQt5.QtNetwork import QSslCertificate, QSslConfiguration, QSslSocket, \
     QSslError, QSsl
 
@@ -18,6 +18,7 @@
 import Preferences
 import Utilities
 import Globals
+from Globals import qVersionTuple
 
 
 class E5SslErrorHandler(QObject):
@@ -192,7 +193,7 @@
         """
         result = "<p>"
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             result += self.tr("Name: {0}")\
                 .format(Utilities.html_encode(Utilities.decodeString(
                     ", ".join(cert.subjectInfo(QSslCertificate.CommonName)))))
--- a/E5Network/E5SslInfoWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/E5Network/E5SslInfoWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -9,12 +9,13 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import qVersion, Qt, QUrl, QPoint
+from PyQt5.QtCore import Qt, QUrl, QPoint
 from PyQt5.QtWidgets import QMenu, QGridLayout, QLabel, QSizePolicy
 from PyQt5.QtNetwork import QSsl, QSslConfiguration, QSslCertificate
 
 import UI.PixmapCache
 import Utilities
+from Globals import qVersionTuple
 
 
 class E5SslInfoWidget(QMenu):
@@ -68,12 +69,12 @@
                 "Warning: this site is NOT carrying a certificate."))
             imageLabel.setPixmap(UI.PixmapCache.getPixmap("securityLow32.png"))
         else:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 valid = not cert.isBlacklisted()
             else:
                 valid = cert.isValid()
             if valid:
-                if qVersion() >= "5.0.0":
+                if qVersionTuple() >= (5, 0, 0):
                     txt = ", ".join(
                         cert.issuerInfo(QSslCertificate.CommonName))
                 else:
@@ -151,7 +152,7 @@
                 sslVersion = self.tr("unknown")
                 imageLabel.setPixmap(
                     UI.PixmapCache.getPixmap("securityLow32.png"))
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 if proto == QSsl.TlsV1_0:
                     sslVersion = "TLS 1.0"
                     imageLabel.setPixmap(
--- a/Globals/__init__.py	Sat May 13 13:46:05 2017 +0200
+++ b/Globals/__init__.py	Sat May 13 16:32:54 2017 +0200
@@ -15,9 +15,10 @@
 
 import sys
 import os
+import re
 
-from PyQt5.QtCore import (QDir, QLibraryInfo, QByteArray,
-                          QCoreApplication, QT_VERSION_STR)
+from PyQt5.QtCore import QDir, QLibraryInfo, QByteArray, QCoreApplication, \
+    QT_VERSION_STR, QT_VERSION
 
 # names of the various settings objects
 settingsNameOrganization = "Eric6"
@@ -318,6 +319,48 @@
 ###############################################################################
 
 
+def versionToTuple(version):
+    """
+    Module function to convert a version string into a tuple.
+    
+    Note: A version string consists of non-negative decimals separated by "."
+    optionally followed by a suffix. Suffix is everything after the last
+    decimal.
+    
+    @param version version string
+    @type str
+    @return version tuple without the suffix
+    @rtype tuple of int
+    """
+    versionParts = []
+    
+    # step 1: extract suffix
+    version = re.split(r"[^\d.]", version)[0]
+    for part in version.split("."):
+        versionParts.append(int(part))
+    
+    return tuple(versionParts)
+
+
+def qVersionTuple():
+    """
+    Module function to get the Qt version as a tuple.
+    
+    @return Qt version as a tuple
+    @rtype tuple of int
+    """
+    return (
+        (QT_VERSION & 0xff0000) >> 16,
+        (QT_VERSION & 0xff00) >> 8,
+        QT_VERSION & 0xff,
+    )
+
+
+###############################################################################
+## functions for extended string handling
+###############################################################################
+
+
 def strGroup(txt, sep, groupLen=4):
     """
     Module function to group a string into sub-strings separated by a
--- a/Graphics/PixmapDiagram.py	Sat May 13 13:46:05 2017 +0200
+++ b/Graphics/PixmapDiagram.py	Sat May 13 16:32:54 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import Qt, QSize, QEvent, qVersion
+from PyQt5.QtCore import Qt, QSize, QEvent
 from PyQt5.QtGui import QPalette, QImage, QPixmap, QPainter, QFont, QColor
 from PyQt5.QtWidgets import QLabel, QSizePolicy, QScrollArea, QAction, QMenu, \
     QToolBar
@@ -22,6 +22,7 @@
 import UI.Config
 
 import Preferences
+from Globals import qVersionTuple
 
 
 class PixmapDiagram(E5MainWindow):
@@ -187,7 +188,7 @@
         @param evt reference to the wheel event (QWheelEvent)
         """
         if evt.modifiers() & Qt.ControlModifier:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 delta = evt.angleDelta().y()
             else:
                 delta = evt.delta()
--- a/Graphics/SvgDiagram.py	Sat May 13 13:46:05 2017 +0200
+++ b/Graphics/SvgDiagram.py	Sat May 13 16:32:54 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import Qt, QSize, QEvent, qVersion
+from PyQt5.QtCore import Qt, QSize, QEvent
 from PyQt5.QtGui import QPalette, QPainter, QFont, QColor
 from PyQt5.QtWidgets import QSizePolicy, QScrollArea, QAction, QMenu, QToolBar
 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog
@@ -21,6 +21,7 @@
 import UI.Config
 
 import Preferences
+from Globals import qVersionTuple
 
 
 class SvgDiagram(E5MainWindow):
@@ -157,7 +158,7 @@
         @param evt reference to the wheel event (QWheelEvent)
         """
         if evt.modifiers() & Qt.ControlModifier:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 delta = evt.angleDelta().y()
             else:
                 delta = evt.delta()
--- a/Graphics/UMLGraphicsView.py	Sat May 13 13:46:05 2017 +0200
+++ b/Graphics/UMLGraphicsView.py	Sat May 13 16:32:54 2017 +0200
@@ -10,7 +10,7 @@
 from __future__ import unicode_literals
 
 from PyQt5.QtCore import pyqtSignal, Qt, QSignalMapper, QFileInfo, QEvent, \
-    QRectF, qVersion
+    QRectF
 from PyQt5.QtWidgets import QGraphicsView, QAction, QToolBar, QDialog
 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog
 
@@ -25,6 +25,7 @@
 import UI.PixmapCache
 
 import Preferences
+from Globals import qVersionTuple
 
 
 class UMLGraphicsView(E5GraphicsView):
@@ -601,7 +602,7 @@
         @param evt reference to the wheel event (QWheelEvent)
         """
         if evt.modifiers() & Qt.ControlModifier:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 delta = evt.angleDelta().y()
             else:
                 delta = evt.delta()
--- a/Helpviewer/AdBlock/AdBlockAccessHandler.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/AdBlock/AdBlockAccessHandler.py	Sat May 13 16:32:54 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import qVersion, QByteArray
+from PyQt5.QtCore import QByteArray
 from PyQt5.QtNetwork import QNetworkAccessManager
 
 from E5Gui import E5MessageBox
@@ -17,6 +17,8 @@
 from Helpviewer.Network.SchemeAccessHandler import SchemeAccessHandler
 from Helpviewer.Network.EmptyNetworkReply import EmptyNetworkReply
 
+from Globals import qVersionTuple
+
 
 class AdBlockAccessHandler(SchemeAccessHandler):
     """
@@ -40,7 +42,7 @@
         if url.path() != "subscribe":
             return None
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             from PyQt5.QtCore import QUrlQuery, QUrl
             title = QUrl.fromPercentEncoding(
                 QByteArray(QUrlQuery(url).queryItemValue("title").encode()))
--- a/Helpviewer/AdBlock/AdBlockRule.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/AdBlock/AdBlockRule.py	Sat May 13 16:32:54 2017 +0200
@@ -11,9 +11,11 @@
 
 import re
 
-from PyQt5.QtCore import Qt, QRegExp, QUrl, qVersion
+from PyQt5.QtCore import Qt, QRegExp, QUrl
 from PyQt5.QtNetwork import QNetworkRequest
 
+from Globals import qVersionTuple
+
 
 # Qt version < 4.8 has an issue; it will wrongly
 # count .co.uk (and others) as second-level domains
@@ -24,7 +26,7 @@
     @param url URL to extract domain from (QUrl)
     @return name of second level domain (string)
     """
-    if qVersion() >= "4.8.0":
+    if qVersionTuple() >= (4, 8, 0):
         topLevelDomain = url.topLevelDomain()
         urlHost = url.host()
         
--- a/Helpviewer/AdBlock/AdBlockSubscription.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/AdBlock/AdBlockSubscription.py	Sat May 13 16:32:54 2017 +0200
@@ -15,14 +15,14 @@
 import base64
 
 from PyQt5.QtCore import pyqtSignal, Qt, QObject, QByteArray, QDateTime, \
-    QUrl, QCryptographicHash, QFile, QIODevice, QTextStream, QDate, QTime, \
-    qVersion
+    QUrl, QCryptographicHash, QFile, QIODevice, QTextStream, QDate, QTime
 from PyQt5.QtNetwork import QNetworkReply
 
 from E5Gui import E5MessageBox
 
 import Utilities
 import Preferences
+from Globals import qVersionTuple
 
 
 class AdBlockSubscription(QObject):
@@ -113,7 +113,7 @@
         if url.path() != "subscribe":
             return
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             from PyQt5.QtCore import QUrlQuery
             urlQuery = QUrlQuery(url)
             self.__title = QUrl.fromPercentEncoding(
@@ -185,7 +185,7 @@
         if self.__lastUpdate.isValid():
             queryItems.append(("lastUpdate",
                                self.__lastUpdate.toString(Qt.ISODate)))
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             from PyQt5.QtCore import QUrlQuery
             query = QUrlQuery()
             query.setQueryItems(queryItems)
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListDelegate.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListDelegate.py	Sat May 13 16:32:54 2017 +0200
@@ -10,10 +10,13 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import Qt, QSize, QRect, qVersion
+from PyQt5.QtCore import Qt, QSize, QRect
 from PyQt5.QtGui import QFontMetrics, QPalette, QFont
 from PyQt5.QtWidgets import QStyle, QStyledItemDelegate, QApplication
-if qVersion() >= "5.0.0":
+
+from Globals import qVersionTuple
+
+if qVersionTuple() >= (5, 0, 0):
     from PyQt5.QtWidgets import QStyleOptionViewItem
 else:
     from PyQt5.QtWidgets import QStyleOptionViewItemV4 as QStyleOptionViewItem
--- a/Helpviewer/HelpBrowserWV.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/HelpBrowserWV.py	Sat May 13 16:32:54 2017 +0200
@@ -18,7 +18,7 @@
 
 from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, \
     QUrl, QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, \
-    QRect, QFile, QPoint, QByteArray, qVersion
+    QRect, QFile, QPoint, QByteArray
 from PyQt5.QtGui import QDesktopServices, QClipboard, QMouseEvent, QColor, \
     QPalette
 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication, QInputDialog, \
@@ -40,6 +40,7 @@
 import Preferences
 import UI.PixmapCache
 import Globals
+from Globals import qVersionTuple
 import Utilities
 
 try:
@@ -601,7 +602,7 @@
                 if cert in localCAList:
                     return True
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             for cert in certList:
                 if cert.isBlacklisted():
                     return False
@@ -1655,7 +1656,7 @@
 ##        if searchUrl.scheme() != "http":
 ##            return
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             from PyQt5.QtCore import QUrlQuery
             searchUrlQuery = QUrlQuery(searchUrl)
         searchEngines = {}
@@ -1670,18 +1671,18 @@
             elif type_ == "text":
                 if inputField == element:
                     value = "{searchTerms}"
-                if qVersion() >= "5.0.0":
+                if qVersionTuple() >= (5, 0, 0):
                     searchUrlQuery.addQueryItem(name, value)
                 else:
                     searchUrl.addQueryItem(name, value)
             elif type_ == "checkbox" or type_ == "radio":
                 if inputField.evaluateJavaScript("this.checked"):
-                    if qVersion() >= "5.0.0":
+                    if qVersionTuple() >= (5, 0, 0):
                         searchUrlQuery.addQueryItem(name, value)
                     else:
                         searchUrl.addQueryItem(name, value)
             elif type_ == "hidden":
-                if qVersion() >= "5.0.0":
+                if qVersionTuple() >= (5, 0, 0):
                     searchUrlQuery.addQueryItem(name, value)
                 else:
                     searchUrl.addQueryItem(name, value)
@@ -1696,7 +1697,7 @@
             
             options = selectField.findAll("option")
             value = options.at(selectedIndex).toPlainText()
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 searchUrlQuery.addQueryItem(name, value)
             else:
                 searchUrl.addQueryItem(name, value)
@@ -1713,7 +1714,7 @@
                 return
             
             if searchEngines[searchEngine] != "":
-                if qVersion() >= "5.0.0":
+                if qVersionTuple() >= (5, 0, 0):
                     searchUrlQuery.addQueryItem(
                         searchEngines[searchEngine], searchEngine)
                 else:
@@ -1733,14 +1734,14 @@
         if not ok:
             return
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             searchUrl.setQuery(searchUrlQuery)
         
         from .OpenSearch.OpenSearchEngine import OpenSearchEngine
         engine = OpenSearchEngine()
         engine.setName(engineName)
         engine.setDescription(engineName)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             engine.setSearchUrlTemplate(
                 searchUrl.toDisplayString(QUrl.FullyDecoded))
         else:
@@ -1872,7 +1873,7 @@
         
         @param evt reference to the wheel event (QWheelEvent)
         """
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             delta = evt.angleDelta().y()
         else:
             delta = evt.delta()
--- a/Helpviewer/HelpDocsInstaller.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/HelpDocsInstaller.py	Sat May 13 16:32:54 2017 +0200
@@ -12,12 +12,14 @@
 
 import os
 
-from PyQt5.QtCore import pyqtSignal, qVersion, QThread, Qt, QMutex, \
-    QDateTime, QDir, QLibraryInfo, QFileInfo
+from PyQt5.QtCore import pyqtSignal, QThread, Qt, QMutex, QDateTime, QDir, \
+    QLibraryInfo, QFileInfo
 from PyQt5.QtHelp import QHelpEngineCore
 
 from eric6config import getConfig
 
+from Globals import qVersionTuple
+
 
 class HelpDocsInstaller(QThread):
     """
@@ -134,7 +136,7 @@
                 docsPathList = QDir.fromNativeSeparators(docsPath).split("/")
                 docsPath = os.sep.join(
                     docsPathList[:-3] +
-                    ["Docs", "Qt-{0}".format(qVersion()[:3])])
+                    ["Docs", "Qt-{0}.{1}".format(*qVersionTuple())])
             docsPath = QDir(docsPath)
         else:
             # unsupported Qt version
--- a/Helpviewer/Network/NetworkAccessManager.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/Network/NetworkAccessManager.py	Sat May 13 16:32:54 2017 +0200
@@ -11,7 +11,7 @@
 
 import os
 
-from PyQt5.QtCore import pyqtSignal, QByteArray, qVersion
+from PyQt5.QtCore import pyqtSignal, QByteArray
 from PyQt5.QtWidgets import QDialog
 from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, \
     QNetworkReply
@@ -27,6 +27,7 @@
 
 import Preferences
 import Utilities
+from Globals import qVersionTuple
 
 
 class NetworkAccessManager(QNetworkAccessManager):
@@ -267,7 +268,7 @@
             diskCache = NetworkDiskCache(self)
             location = os.path.join(
                 Utilities.getConfigDir(), "browser", 'cache',
-                "{0}-Qt{1}".format(qWebKitVersion(), qVersion()))
+                "{0}-Qt{1}.{2}".format(qWebKitVersion(), *qVersionTuple()))
             size = Preferences.getHelp("DiskCacheSize") * 1024 * 1024
             diskCache.setCacheDirectory(location)
             diskCache.setMaximumCacheSize(size)
--- a/Helpviewer/OpenSearch/OpenSearchEngine.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/OpenSearch/OpenSearchEngine.py	Sat May 13 16:32:54 2017 +0200
@@ -13,7 +13,7 @@
 import json
 
 from PyQt5.QtCore import pyqtSignal, pyqtSlot, QLocale, QUrl, QByteArray, \
-    QBuffer, QIODevice, QObject, qVersion
+    QBuffer, QIODevice, QObject
 from PyQt5.QtGui import QImage
 from PyQt5.QtNetwork import QNetworkRequest, QNetworkAccessManager, \
     QNetworkReply
@@ -22,6 +22,7 @@
 
 import Preferences
 import Utilities
+from Globals import qVersionTuple
 
 
 class OpenSearchEngine(QObject):
@@ -179,7 +180,7 @@
             .encode("utf-8"))
         
         if self.__searchMethod != "post":
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 from PyQt5.QtCore import QUrlQuery
                 urlQuery = QUrlQuery(ret)
                 for parameter in self._searchParameters:
@@ -234,7 +235,7 @@
             searchTerm, self._suggestionsUrlTemplate).encode("utf-8")))
         
         if self.__searchMethod != "post":
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 from PyQt5.QtCore import QUrlQuery
                 urlQuery = QUrlQuery(ret)
                 for parameter in self._suggestionsParameters:
--- a/Helpviewer/Passwords/PasswordManager.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/Passwords/PasswordManager.py	Sat May 13 16:32:54 2017 +0200
@@ -12,7 +12,7 @@
 import os
 
 from PyQt5.QtCore import pyqtSignal, QObject, QByteArray, QUrl, \
-    QCoreApplication, QXmlStreamReader, qVersion
+    QCoreApplication, QXmlStreamReader
 from PyQt5.QtWidgets import QApplication
 from PyQt5.QtNetwork import QNetworkRequest
 from PyQt5.QtWebKit import QWebSettings
@@ -25,6 +25,7 @@
 import Utilities
 import Utilities.crypto
 import Preferences
+from Globals import qVersionTuple
 
 
 class PasswordManager(QObject):
@@ -437,7 +438,7 @@
         @return stripped URL (QUrl)
         """
         cleanUrl = QUrl(url)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             cleanUrl.setQuery("")
         else:
             cleanUrl.setQueryItems([])
@@ -466,7 +467,7 @@
         if boundary is not None:
             args = self.__extractMultipartQueryItems(data, boundary)
         else:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 from PyQt5.QtCore import QUrlQuery
                 argsUrl = QUrl.fromEncoded(
                     QByteArray(b"foo://bar.com/?" + QUrl.fromPercentEncoding(
--- a/Helpviewer/SiteInfo/SiteInfoDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/SiteInfo/SiteInfoDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -11,7 +11,7 @@
 
 import os
 
-from PyQt5.QtCore import pyqtSlot, QUrl, Qt, QFile, qVersion
+from PyQt5.QtCore import pyqtSlot, QUrl, Qt, QFile
 from PyQt5.QtGui import QPixmap, QCursor, QPainter, QColor, QBrush
 from PyQt5.QtWidgets import QDialog, QTreeWidgetItem, QGraphicsScene, QMenu, \
     QApplication, QListWidgetItem
@@ -29,6 +29,7 @@
 from ..Download.DownloadUtilities import dataString
 
 import UI.PixmapCache
+from Globals import qVersionTuple
 
 
 class SiteInfoDialog(QDialog, Ui_SiteInfoDialog):
@@ -108,8 +109,9 @@
         
         # populate the Security info and the Security tab
         if sslInfo and \
-           ((qVersion() >= "5.0.0" and not sslInfo[0].isBlacklisted()) or
-                (qVersion() < "5.0.0" and sslInfo[0].isValid())):
+           ((qVersionTuple() >= (5, 0, 0) and
+             not sslInfo[0].isBlacklisted()) or
+                (qVersionTuple() < (5, 0, 0) and sslInfo[0].isValid())):
             self.securityLabel.setStyleSheet(SiteInfoDialog.okStyle)
             self.securityLabel.setText('<b>Connection is encrypted.</b>')
             if SSL:
--- a/Helpviewer/UrlBar/UrlBar.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/UrlBar/UrlBar.py	Sat May 13 16:32:54 2017 +0200
@@ -13,7 +13,7 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, qVersion
+from PyQt5.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime
 from PyQt5.QtGui import QColor, QPalette, QLinearGradient, QIcon
 from PyQt5.QtWidgets import QDialog, QApplication
 try:
@@ -34,6 +34,7 @@
 import UI.PixmapCache
 import Preferences
 import Utilities
+from Globals import qVersionTuple
 
 
 class UrlBar(E5LineEdit):
@@ -187,14 +188,14 @@
                QSslCertificate is not None:
                 sslInfo = self.__browser.page().getSslCertificate()
                 if sslInfo is not None:
-                    if qVersion() >= "5.0.0":
+                    if qVersionTuple() >= (5, 0, 0):
                         org = Utilities.decodeString(", ".join(
                             sslInfo.subjectInfo(QSslCertificate.Organization)))
                     else:
                         org = Utilities.decodeString(
                             sslInfo.subjectInfo(QSslCertificate.Organization))
                     if org == "":
-                        if qVersion() >= "5.0.0":
+                        if qVersionTuple() >= (5, 0, 0):
                             cn = Utilities.decodeString(", ".join(
                                 sslInfo.subjectInfo(
                                     QSslCertificate.CommonName)))
@@ -208,7 +209,7 @@
                             org = self.tr("Unknown")
                     self.__sslLabel.setText(" {0} ".format(org))
                     self.__sslLabel.setVisible(True)
-                    if qVersion() >= "5.0.0":
+                    if qVersionTuple() >= (5, 0, 0):
                         valid = not sslInfo.isBlacklisted()
                     else:
                         valid = sslInfo.isValid()
--- a/Helpviewer/VirusTotal/VirusTotalApi.py	Sat May 13 13:46:05 2017 +0200
+++ b/Helpviewer/VirusTotal/VirusTotalApi.py	Sat May 13 16:32:54 2017 +0200
@@ -16,12 +16,13 @@
 
 import json
 
-from PyQt5.QtCore import QObject, QUrl, QByteArray, pyqtSignal, qVersion
+from PyQt5.QtCore import QObject, QUrl, QByteArray, pyqtSignal
 from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
 
 from E5Gui import E5MessageBox
 
 import Preferences
+from Globals import qVersionTuple
 
 
 class VirusTotalAPI(QObject):
@@ -268,7 +269,7 @@
             ("ip", ipAddress),
         ]
         url = QUrl(self.GetIpAddressReportUrl)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             from PyQt5.QtCore import QUrlQuery
             query = QUrlQuery()
             query.setQueryItems(queryItems)
@@ -330,7 +331,7 @@
             ("domain", domain),
         ]
         url = QUrl(self.GetDomainReportUrl)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             from PyQt5.QtCore import QUrlQuery
             query = QUrlQuery()
             query.setQueryItems(queryItems)
--- a/IconEditor/IconEditorWindow.py	Sat May 13 13:46:05 2017 +0200
+++ b/IconEditor/IconEditorWindow.py	Sat May 13 16:32:54 2017 +0200
@@ -12,7 +12,7 @@
 import os
 
 from PyQt5.QtCore import pyqtSignal, Qt, QSize, QSignalMapper, QFileInfo, \
-    QFile, QEvent, qVersion
+    QFile, QEvent
 from PyQt5.QtGui import QPalette, QImage, QImageReader, QImageWriter, \
     QKeySequence
 from PyQt5.QtWidgets import QScrollArea, QLabel, QDockWidget, QWhatsThis
@@ -28,6 +28,7 @@
 import UI.Config
 
 import Preferences
+from Globals import qVersionTuple
 
 
 class IconEditorWindow(E5MainWindow):
@@ -1352,7 +1353,7 @@
         @param evt reference to the wheel event (QWheelEvent)
         """
         if evt.modifiers() & Qt.ControlModifier:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 delta = evt.angleDelta().y()
             else:
                 delta = evt.delta()
--- a/Network/IRC/IrcMessageEdit.py	Sat May 13 13:46:05 2017 +0200
+++ b/Network/IRC/IrcMessageEdit.py	Sat May 13 16:32:54 2017 +0200
@@ -9,10 +9,12 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import Qt, qVersion
+from PyQt5.QtCore import Qt
 
 from E5Gui.E5LineEdit import E5LineEdit, E5ClearableLineEdit
 
+from Globals import qVersionTuple
+
 
 class IrcMessageEdit(E5ClearableLineEdit):
     """
@@ -75,7 +77,7 @@
         
         @param evt reference to the wheel event (QWheelEvent)
         """
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             delta = evt.angleDelta().y()
         else:
             delta = evt.delta()
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -17,8 +17,8 @@
 import re
 import collections
 
-from PyQt5.QtCore import pyqtSlot, qVersion, Qt, QDate, QProcess, QTimer, \
-    QRegExp, QSize, QPoint, QFileInfo
+from PyQt5.QtCore import pyqtSlot, Qt, QDate, QProcess, QTimer, QRegExp, \
+    QSize, QPoint, QFileInfo
 from PyQt5.QtGui import QCursor, QColor, QPixmap, QPainter, QPen, QBrush, \
     QIcon, QTextCursor
 from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QHeaderView, \
@@ -35,6 +35,7 @@
 import UI.PixmapCache
 import Preferences
 import Utilities
+from Globals import qVersionTuple
 
 COLORNAMES = ["blue", "darkgreen", "red", "green", "darkblue", "purple",
               "cyan", "olive", "magenta", "darkred", "darkmagenta",
@@ -243,7 +244,7 @@
         """
         self.__actionsMenu = QMenu()
         self.__actionsMenu.setTearOffEnabled(True)
-        if qVersion() >= "5.1.0":
+        if qVersionTuple() >= (5, 1, 0):
             self.__actionsMenu.setToolTipsVisible(True)
         else:
             self.__actionsMenu.hovered.connect(self.__actionsMenuHovered)
--- a/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -16,7 +16,7 @@
 
 import os
 
-from PyQt5.QtCore import pyqtSlot, qVersion, Qt, QProcess, QTimer, QSize
+from PyQt5.QtCore import pyqtSlot, Qt, QProcess, QTimer, QSize
 from PyQt5.QtGui import QTextCursor, QCursor
 from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QMenu, QHeaderView, \
     QTreeWidgetItem, QLineEdit, QToolTip
@@ -31,6 +31,7 @@
 
 import Preferences
 import UI.PixmapCache
+from Globals import qVersionTuple
 
 
 class HgStatusDialog(QWidget, Ui_HgStatusDialog):
@@ -129,7 +130,7 @@
         """
         self.__actionsMenu = QMenu()
         self.__actionsMenu.setTearOffEnabled(True)
-        if qVersion() >= "5.1.0":
+        if qVersionTuple() >= (5, 1, 0):
             self.__actionsMenu.setToolTipsVisible(True)
         else:
             self.__actionsMenu.hovered.connect(self.__actionsMenuHovered)
--- a/Plugins/WizardPlugins/QRegExpWizard/QRegExpWizardDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/Plugins/WizardPlugins/QRegExpWizard/QRegExpWizardDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -11,7 +11,7 @@
 
 import os
 
-from PyQt5.QtCore import QFileInfo, QRegExp, Qt, pyqtSlot, qVersion
+from PyQt5.QtCore import QFileInfo, QRegExp, Qt, pyqtSlot
 from PyQt5.QtGui import QClipboard, QTextCursor
 from PyQt5.QtWidgets import QWidget, QDialog, QApplication, QDialogButtonBox, \
     QVBoxLayout, QTableWidgetItem
@@ -25,6 +25,7 @@
 
 import Utilities
 import Preferences
+from Globals import qVersionTuple
 
 
 class QRegExpWizardWidget(QWidget, Ui_QRegExpWizardWidget):
@@ -81,7 +82,7 @@
         self.syntaxCombo.addItem("Unix Wildcard", QRegExp.WildcardUnix)
         self.syntaxCombo.addItem("Fixed String", QRegExp.FixedString)
         self.syntaxCombo.addItem("W3C XML Schema 1.1", QRegExp.W3CXmlSchema11)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.syntaxCombo.setCurrentIndex(1)
         
         self.saveButton = self.buttonBox.addButton(
@@ -646,8 +647,8 @@
                 istring, reVar, os.linesep)
         syntax = self.syntaxCombo.itemData(self.syntaxCombo.currentIndex())
         needPatternSyntax = True
-        if qVersion() < "5.0.0" and syntax == QRegExp.RegExp or \
-           qVersion() >= "5.0.0" and syntax == QRegExp.RegExp2:
+        if qVersionTuple() < (5, 0, 0) and syntax == QRegExp.RegExp or \
+           qVersionTuple() >= (5, 0, 0) and syntax == QRegExp.RegExp2:
             # default value selected
             needPatternSyntax = False
         if needPatternSyntax:
--- a/Preferences/ConfigurationDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/Preferences/ConfigurationDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -12,8 +12,7 @@
 import os
 import types
 
-from PyQt5.QtCore import QMetaObject, pyqtSignal, Qt, QRect, pyqtSlot, \
-    qVersion
+from PyQt5.QtCore import QMetaObject, pyqtSignal, Qt, QRect, pyqtSlot
 from PyQt5.QtGui import QPixmap
 from PyQt5.QtWidgets import QSizePolicy, QSpacerItem, QWidget, QTreeWidget, \
     QStackedWidget, QDialog, QSplitter, QScrollArea, QApplication, \
@@ -24,7 +23,7 @@
 from E5Gui import E5MessageBox
 from E5Gui.E5MainWindow import E5MainWindow
 
-from Globals import isMacPlatform
+from Globals import isMacPlatform, qVersionTuple
 
 import Preferences
 
@@ -341,7 +340,7 @@
                     [self.tr("VirusTotal Interface"), "virustotal.png",
                      "HelpVirusTotalPage", "0webBrowserPage", None],
                 })
-                if qVersion() >= "5.8.0":
+                if qVersionTuple() >= (5, 8, 0):
                     self.configItems.update({
                         "webBrowserSpellCheckingPage":
                         [self.tr("Spell checking"),
@@ -465,7 +464,7 @@
                  "HelpVirusTotalPage", None, None],
             }
             
-            if qVersion() >= "5.8.0":
+            if qVersionTuple() >= (5, 8, 0):
                 self.configItems.update({
                     "webBrowserSpellCheckingPage":
                     [self.tr("Spell checking"),
--- a/Preferences/ConfigurationPages/EditorHighlightersPage.py	Sat May 13 13:46:05 2017 +0200
+++ b/Preferences/ConfigurationPages/EditorHighlightersPage.py	Sat May 13 16:32:54 2017 +0200
@@ -13,13 +13,14 @@
 
 from pygments.lexers import get_all_lexers
 
-from PyQt5.QtCore import Qt, pyqtSlot, qVersion
+from PyQt5.QtCore import Qt, pyqtSlot
 from PyQt5.QtWidgets import QHeaderView, QTreeWidgetItem
 
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_EditorHighlightersPage import Ui_EditorHighlightersPage
 
 import Preferences
+from Globals import qVersionTuple
 
 
 class EditorHighlightersPage(ConfigurationPageBase, Ui_EditorHighlightersPage):
@@ -39,7 +40,7 @@
         self.editorLexerList.headerItem().setText(
             self.editorLexerList.columnCount(), "")
         header = self.editorLexerList.header()
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             header.setSectionResizeMode(QHeaderView.ResizeToContents)
         else:
             header.setResizeMode(QHeaderView.ResizeToContents)
--- a/Preferences/ConfigurationPages/EditorHighlightingStylesPage.py	Sat May 13 13:46:05 2017 +0200
+++ b/Preferences/ConfigurationPages/EditorHighlightingStylesPage.py	Sat May 13 16:32:54 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot, Qt, QFileInfo, QFile, QIODevice, qVersion
+from PyQt5.QtCore import pyqtSlot, Qt, QFileInfo, QFile, QIODevice
 from PyQt5.QtGui import QPalette, QFont
 from PyQt5.QtWidgets import QColorDialog, QFontDialog, QInputDialog, QMenu
 
@@ -19,6 +19,7 @@
 from E5Gui import E5MessageBox, E5FileDialog
 
 import Preferences
+from Globals import qVersionTuple
 
 try:
     MonospacedFontsOption = QFontDialog.MonospacedFonts
@@ -47,7 +48,7 @@
         self.setupUi(self)
         self.setObjectName("EditorHighlightingStylesPage")
         
-        if qVersion() < "5.0.0":
+        if qVersionTuple() < (5, 0, 0):
             self.monospacedButton.setChecked(False)
             self.monospacedButton.hide()
         
--- a/Preferences/ConfigurationPages/HelpViewersPage.py	Sat May 13 13:46:05 2017 +0200
+++ b/Preferences/ConfigurationPages/HelpViewersPage.py	Sat May 13 16:32:54 2017 +0200
@@ -9,14 +9,15 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import qVersion
 from PyQt5.QtWidgets import QButtonGroup
 try:
     from PyQt5 import QtWebKit      # __IGNORE_WARNING__
     WEBKIT_AVAILABLE = True
 except ImportError:
     WEBKIT_AVAILABLE = False
-if qVersion() < "5.6.0":
+
+from Globals import qVersionTuple
+if qVersionTuple() < (5, 6, 0):
     WEBENGINE_AVAILABLE = False
 else:
     try:
--- a/Preferences/ConfigurationPages/QtPage.py	Sat May 13 13:46:05 2017 +0200
+++ b/Preferences/ConfigurationPages/QtPage.py	Sat May 13 16:32:54 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot, qVersion
+from PyQt5.QtCore import pyqtSlot
 
 from E5Gui.E5PathPicker import E5PathPickerModes
 
@@ -17,6 +17,7 @@
 from .Ui_QtPage import Ui_QtPage
 
 import Preferences
+from Globals import qVersionTuple
 
 
 class QtPage(ConfigurationPageBase, Ui_QtPage):
@@ -37,7 +38,7 @@
             E5PathPickerModes.DirectoryShowFilesMode)
         
         # set initial values
-        if qVersion() < "5.0.0":
+        if qVersionTuple() < (5, 0, 0):
             self.qt4TransPicker.setText(
                 Preferences.getQt("Qt4TranslationsDir"))
         else:
@@ -56,7 +57,7 @@
         """
         Public slot to save the Qt configuration.
         """
-        if qVersion() < "5.0.0":
+        if qVersionTuple() < (5, 0, 0):
             Preferences.setQt("Qt4TranslationsDir", self.qt4TransPicker.text())
         else:
             Preferences.setQt("Qt5TranslationsDir", self.qt4TransPicker.text())
--- a/Preferences/__init__.py	Sat May 13 13:46:05 2017 +0200
+++ b/Preferences/__init__.py	Sat May 13 16:32:54 2017 +0200
@@ -29,7 +29,7 @@
 import sys
 
 from PyQt5.QtCore import QDir, QPoint, QLocale, QSettings, QFileInfo, \
-    QCoreApplication, QByteArray, QSize, QUrl, Qt, QLibraryInfo, qVersion
+    QCoreApplication, QByteArray, QSize, QUrl, Qt, QLibraryInfo
 from PyQt5.QtGui import QColor, QFont, QPalette
 from PyQt5.QtWidgets import QInputDialog, QApplication
 from PyQt5.QtNetwork import QNetworkRequest
@@ -49,7 +49,7 @@
 
 from Globals import settingsNameOrganization, settingsNameGlobal, \
     settingsNameRecent, isWindowsPlatform, findPythonInterpreters, \
-    getPyQt5ModulesDirectory
+    getPyQt5ModulesDirectory, qVersionTuple
 
 from Project.ProjectBrowserFlags import SourcesBrowserFlag, FormsBrowserFlag, \
     ResourcesBrowserFlag, TranslationsBrowserFlag, InterfacesBrowserFlag, \
@@ -2987,7 +2987,7 @@
     @param prefClass preferences class used as the storage area
     @return the requested setting (string)
     """
-    if qVersion() < "5.0.0":
+    if qVersionTuple() < (5, 0, 0):
         s = prefClass.settings.value(
             "Qt/Qt4TranslationsDir",
             prefClass.qtDefaults["Qt4TranslationsDir"])
@@ -2998,7 +2998,7 @@
     if s == "":
         s = os.getenv("QTTRANSLATIONSDIR", "")
     if s == "":
-        if qVersion() < "5.0.0":
+        if qVersionTuple() < (5, 0, 0):
             s = os.getenv("QT4TRANSLATIONSDIR", "")
         else:
             s = os.getenv("QT5TRANSLATIONSDIR", "")
--- a/Project/CreateDialogCodeDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/Project/CreateDialogCodeDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -13,7 +13,7 @@
 import xml.etree.ElementTree
 
 from PyQt5.QtCore import QMetaObject, QByteArray, QRegExp, Qt, pyqtSlot, \
-    QMetaMethod, qVersion, QSortFilterProxyModel
+    QMetaMethod, QSortFilterProxyModel
 from PyQt5.QtGui import QStandardItemModel, QBrush, QStandardItem
 from PyQt5.QtWidgets import QWidget, QDialog, QDialogButtonBox, QAction
 from PyQt5 import uic
@@ -27,6 +27,9 @@
 
 from eric6config import getConfig
 
+from Globals import qVersionTuple
+
+
 pyqtSignatureRole = Qt.UserRole + 1
 pythonSignatureRole = Qt.UserRole + 2
 rubySignatureRole = Qt.UserRole + 3
@@ -258,7 +261,7 @@
                 for index in range(metaObject.methodCount()):
                     metaMethod = metaObject.method(index)
                     if metaMethod.methodType() == QMetaMethod.Signal:
-                        if qVersion() >= "5.0.0":
+                        if qVersionTuple() >= (5, 0, 0):
                             itm2 = QStandardItem("on_{0}_{1}".format(
                                 name,
                                 bytes(metaMethod.methodSignature()).decode()))
@@ -267,7 +270,7 @@
                                 name, metaMethod.signature()))
                         itm.appendRow(itm2)
                         if self.__module is not None:
-                            if qVersion() >= "5.0.0":
+                            if qVersionTuple() >= (5, 0, 0):
                                 method = "on_{0}_{1}".format(
                                     name,
                                     bytes(metaMethod.methodSignature())
@@ -308,7 +311,7 @@
                         methNamesSig = ", ".join(parameterNamesList)
                         
                         if methNamesSig:
-                            if qVersion() >= "5.0.0":
+                            if qVersionTuple() >= (5, 0, 0):
                                 pythonSignature = \
                                     "on_{0}_{1}(self, {2})".format(
                                         name,
@@ -322,7 +325,7 @@
                                         metaMethod.signature().split("(")[0],
                                         methNamesSig)
                         else:
-                            if qVersion() >= "5.0.0":
+                            if qVersionTuple() >= (5, 0, 0):
                                 pythonSignature = "on_{0}_{1}(self)".format(
                                     name,
                                     bytes(metaMethod.methodSignature())
--- a/Project/LexerAssociationDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/Project/LexerAssociationDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -11,11 +11,13 @@
 
 import os
 
-from PyQt5.QtCore import Qt, pyqtSlot, qVersion
+from PyQt5.QtCore import Qt, pyqtSlot
 from PyQt5.QtWidgets import QHeaderView, QTreeWidgetItem, QDialog
 
 from .Ui_LexerAssociationDialog import Ui_LexerAssociationDialog
 
+from Globals import qVersionTuple
+
 
 class LexerAssociationDialog(QDialog, Ui_LexerAssociationDialog):
     """
@@ -34,7 +36,7 @@
         self.editorLexerList.headerItem().setText(
             self.editorLexerList.columnCount(), "")
         header = self.editorLexerList.header()
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             header.setSectionResizeMode(QHeaderView.ResizeToContents)
         else:
             header.setResizeMode(QHeaderView.ResizeToContents)
--- a/QScintilla/Editor.py	Sat May 13 13:46:05 2017 +0200
+++ b/QScintilla/Editor.py	Sat May 13 16:32:54 2017 +0200
@@ -18,7 +18,7 @@
 import difflib
 
 from PyQt5.QtCore import QDir, QTimer, QModelIndex, QFileInfo, pyqtSignal, \
-    pyqtSlot, QCryptographicHash, QEvent, QDateTime, QRegExp, Qt, qVersion
+    pyqtSlot, QCryptographicHash, QEvent, QDateTime, QRegExp, Qt
 from PyQt5.QtGui import QCursor, QPalette, QFont, QPixmap, QPainter
 from PyQt5.QtWidgets import QLineEdit, QActionGroup, QDialog, QInputDialog, \
     QApplication, QMenu
@@ -34,6 +34,7 @@
 import Preferences
 import Utilities
 from Utilities import MouseUtilities
+from Globals import qVersionTuple
 
 import UI.PixmapCache
 
@@ -6531,7 +6532,7 @@
         
         @param evt reference to the wheel event (QWheelEvent)
         """
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             delta = evt.angleDelta().y()
         else:
             delta = evt.delta()
--- a/QScintilla/KeySequenceTranslator.py	Sat May 13 13:46:05 2017 +0200
+++ b/QScintilla/KeySequenceTranslator.py	Sat May 13 16:32:54 2017 +0200
@@ -10,10 +10,11 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import qVersion
 from PyQt5.QtGui import QKeySequence
 from PyQt5.Qsci import QsciScintilla
 
+from Globals import qVersionTuple
+
 __all__ = ["s2qTranslate"]
 
 Scintilla2QKeySequence = {
@@ -108,10 +109,10 @@
     QsciScintilla.SCI_LOWERCASE: QKeySequence.UnknownKey,
     QsciScintilla.SCI_UPPERCASE: QKeySequence.UnknownKey,
 }
-if qVersion() >= "5.2.0":
+if qVersionTuple() >= (5, 2, 0):
     Scintilla2QKeySequence[QsciScintilla.SCI_LINEDELETE] = \
         QKeySequence.DeleteCompleteLine,
-if qVersion() >= "5.5.0":
+if qVersionTuple() >= (5, 5, 0):
     Scintilla2QKeySequence[QsciScintilla.SCI_DELETEBACK] = \
         QKeySequence.Backspace
 
--- a/QScintilla/Shell.py	Sat May 13 13:46:05 2017 +0200
+++ b/QScintilla/Shell.py	Sat May 13 16:32:54 2017 +0200
@@ -12,7 +12,7 @@
 import sys
 import re
 
-from PyQt5.QtCore import pyqtSignal, QFileInfo, Qt, QEvent, qVersion
+from PyQt5.QtCore import pyqtSignal, QFileInfo, Qt, QEvent
 from PyQt5.QtGui import QClipboard, QPalette, QFont
 from PyQt5.QtWidgets import QDialog, QInputDialog, QApplication, QMenu, \
     QWidget, QHBoxLayout, QVBoxLayout, QShortcut
@@ -24,8 +24,8 @@
 from .QsciScintillaCompat import QsciScintillaCompat
 
 import Preferences
-
 import Utilities
+from Globals import qVersionTuple
 
 import UI.PixmapCache
 
@@ -1000,7 +1000,7 @@
         @param evt reference to the wheel event (QWheelEvent)
         """
         if evt.modifiers() & Qt.ControlModifier:
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 delta = evt.angleDelta().y()
             else:
                 delta = evt.delta()
--- a/Snapshot/SnapWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/Snapshot/SnapWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -16,7 +16,7 @@
 import os
 
 from PyQt5.QtCore import pyqtSlot, QFile, QFileInfo, QTimer, QPoint, \
-    QMimeData, Qt, QEvent, QRegExp, QLocale, qVersion, PYQT_VERSION_STR
+    QMimeData, Qt, QEvent, QRegExp, QLocale, PYQT_VERSION_STR
 from PyQt5.QtGui import QImageWriter, QPixmap, QCursor, QDrag, QKeySequence
 from PyQt5.QtWidgets import QWidget, QApplication, QShortcut
 
@@ -27,6 +27,7 @@
 import UI.PixmapCache
 import Preferences
 import Globals
+from Globals import qVersionTuple
 
 
 class SnapWidget(QWidget, Ui_SnapWidget):
@@ -372,7 +373,7 @@
         
         if self.__mode == SnapWidget.ModeFullscreen:
             desktop = QApplication.desktop()
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 self.__snapshot = QApplication.screens()[0].grabWindow(
                     desktop.winId(), desktop.x(), desktop.y(),
                     desktop.width(), desktop.height())
@@ -386,7 +387,7 @@
             geom = desktop.screenGeometry(screenId)
             x = geom.x()
             y = geom.y()
-            if qVersion() >= "5.0.0":
+            if qVersionTuple() >= (5, 0, 0):
                 self.__snapshot = QApplication.screens()[0].grabWindow(
                     desktop.winId(), x, y, geom.width(), geom.height())
             else:
--- a/Snapshot/SnapshotFreehandGrabber.py	Sat May 13 13:46:05 2017 +0200
+++ b/Snapshot/SnapshotFreehandGrabber.py	Sat May 13 16:32:54 2017 +0200
@@ -9,12 +9,13 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSignal, Qt, QRect, QPoint, QTimer, QLocale, \
-    qVersion
+from PyQt5.QtCore import pyqtSignal, Qt, QRect, QPoint, QTimer, QLocale
 from PyQt5.QtGui import QPixmap, QColor, QRegion, QPainter, QPalette, \
     QPolygon, QPen, QBrush, QPaintEngine
 from PyQt5.QtWidgets import QWidget, QApplication, QToolTip
 
+from Globals import qVersionTuple
+
 
 def drawPolygon(painter, polygon, outline, fill=None):
     """
@@ -86,7 +87,7 @@
         self.__desktop = QApplication.desktop()
         x = self.__desktop.x()
         y = self.__desktop.y()
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.__pixmap = QApplication.screens()[0].grabWindow(
                 self.__desktop.winId(), x, y,
                 self.__desktop.width(), self.__desktop.height())
--- a/Snapshot/SnapshotRegionGrabber.py	Sat May 13 13:46:05 2017 +0200
+++ b/Snapshot/SnapshotRegionGrabber.py	Sat May 13 16:32:54 2017 +0200
@@ -9,12 +9,13 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSignal, Qt, QRect, QPoint, QTimer, QLocale, \
-    qVersion
+from PyQt5.QtCore import pyqtSignal, Qt, QRect, QPoint, QTimer, QLocale
 from PyQt5.QtGui import QPixmap, QColor, QRegion, QPainter, QPalette, \
     QPaintEngine, QPen, QBrush
 from PyQt5.QtWidgets import QWidget, QApplication, QToolTip
 
+from Globals import qVersionTuple
+
 
 def drawRect(painter, rect, outline, fill=None):
     """
@@ -114,7 +115,7 @@
         self.__desktop = QApplication.desktop()
         x = self.__desktop.x()
         y = self.__desktop.y()
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.__pixmap = QApplication.screens()[0].grabWindow(
                 self.__desktop.winId(), x, y,
                 self.__desktop.width(), self.__desktop.height())
--- a/SqlBrowser/SqlConnectionWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/SqlBrowser/SqlConnectionWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -9,11 +9,13 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSignal, Qt, qVersion
+from PyQt5.QtCore import pyqtSignal, Qt
 from PyQt5.QtWidgets import QWidget, QHeaderView, QTreeWidget, QVBoxLayout, \
     QTreeWidgetItem, QAction
 from PyQt5.QtSql import QSqlDatabase
 
+from Globals import qVersionTuple
+
 
 class SqlConnectionWidget(QWidget):
     """
@@ -42,7 +44,7 @@
         self.__connectionTree = QTreeWidget(self)
         self.__connectionTree.setObjectName("connectionTree")
         self.__connectionTree.setHeaderLabels([self.tr("Database")])
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.__connectionTree.header().setSectionResizeMode(
                 QHeaderView.Stretch)
         else:
--- a/Toolbox/Startup.py	Sat May 13 13:46:05 2017 +0200
+++ b/Toolbox/Startup.py	Sat May 13 16:32:54 2017 +0200
@@ -12,13 +12,13 @@
 import os
 import sys
 
-from PyQt5.QtCore import QTranslator, QLocale, QLibraryInfo, QDir, \
-    QTextCodec, qVersion
+from PyQt5.QtCore import QTranslator, QLocale, QLibraryInfo, QDir, QTextCodec
 from PyQt5.QtWidgets import QApplication
 
 from E5Gui.E5Application import E5Application
 
 import Globals
+from Globals import qVersionTuple
 
 import UI.PixmapCache
 
@@ -164,7 +164,7 @@
     
     global loaded_translators
     
-    if qVersion() < "5.0.0":
+    if qVersionTuple() < (5, 0, 0):
         # set the default encoding for tr()
         QTextCodec.setCodecForTr(QTextCodec.codecForName("utf-8"))
     
--- a/Tools/UIPreviewer.py	Sat May 13 13:46:05 2017 +0200
+++ b/Tools/UIPreviewer.py	Sat May 13 16:32:54 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import qVersion, QDir, QFileInfo, QEvent, QSize, Qt
+from PyQt5.QtCore import QDir, QFileInfo, QEvent, QSize, Qt
 from PyQt5.QtGui import QCursor, QKeySequence, QPixmap, QImageWriter, QPainter
 from PyQt5.QtWidgets import QSizePolicy, QSpacerItem, QWidget, QHBoxLayout, \
     QWhatsThis, QDialog, QScrollArea, qApp, QApplication, QStyleFactory, \
@@ -24,6 +24,7 @@
 import Preferences
 import UI.PixmapCache
 import UI.Config
+from Globals import qVersionTuple
 
 
 class UIPreviewer(E5MainWindow):
@@ -474,7 +475,7 @@
             ext = defaultExt
             fname.append(".{0}".format(defaultExt.lower()))
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             pix = self.mainWidget.grab()
         else:
             pix = QPixmap.grabWidget(self.mainWidget)
@@ -499,7 +500,7 @@
             return
         
         cb = QApplication.clipboard()
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             cb.setPixmap(self.mainWidget.grab())
         else:
             cb.setPixmap(QPixmap.grabWidget(self.mainWidget))
@@ -597,7 +598,7 @@
             marginX *= 2
             width = printer.width() - marginX * 2
             height = printer.height() - marginY * 2
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             img = self.mainWidget.grab().toImage()
         else:
             img = QPixmap.grabWidget(self.mainWidget).toImage()
--- a/UI/Browser.py	Sat May 13 13:46:05 2017 +0200
+++ b/UI/Browser.py	Sat May 13 16:32:54 2017 +0200
@@ -11,8 +11,8 @@
 
 import os
 
-from PyQt5.QtCore import QModelIndex, pyqtSignal, QUrl, Qt, qVersion, \
-    QCoreApplication, QItemSelectionModel, QElapsedTimer
+from PyQt5.QtCore import QModelIndex, pyqtSignal, QUrl, Qt, QCoreApplication, \
+    QItemSelectionModel, QElapsedTimer
 from PyQt5.QtGui import QDesktopServices
 from PyQt5.QtWidgets import QTreeView, QApplication, QMenu, QAbstractItemView
 
@@ -30,6 +30,7 @@
 import Preferences
 import Utilities
 import Utilities.MimeTypes
+from Globals import qVersionTuple
 
 
 class Browser(QTreeView):
@@ -165,7 +166,7 @@
         header = self.header()
         header.setSortIndicator(0, Qt.AscendingOrder)
         header.setSortIndicatorShown(True)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             header.setSectionsClickable(True)
         else:
             header.setClickable(True)
--- a/UI/EmailDialog.py	Sat May 13 13:46:05 2017 +0200
+++ b/UI/EmailDialog.py	Sat May 13 16:32:54 2017 +0200
@@ -14,7 +14,7 @@
 import smtplib
 import socket
 
-from PyQt5.QtCore import Qt, pyqtSlot, qVersion
+from PyQt5.QtCore import Qt, pyqtSlot
 from PyQt5.QtGui import QCursor
 from PyQt5.QtWidgets import QHeaderView, QLineEdit, QDialog, QInputDialog, \
     QApplication, QDialogButtonBox, QTreeWidgetItem
@@ -36,6 +36,8 @@
 from email.mime.multipart import MIMEMultipart
 from email.header import Header
 
+from Globals import qVersionTuple
+
 
 ############################################################
 ## This code is to work around a bug in the Python email  ##
@@ -99,7 +101,7 @@
         
         self.attachments.headerItem().setText(
             self.attachments.columnCount(), "")
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.attachments.header().setSectionResizeMode(
                 QHeaderView.Interactive)
         else:
--- a/UI/NumbersWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/UI/NumbersWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -9,8 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QAbstractTableModel, \
-    qVersion
+from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QAbstractTableModel
 from PyQt5.QtWidgets import QWidget, QHeaderView
 
 from E5Gui.E5Application import e5App
@@ -18,6 +17,7 @@
 from .Ui_NumbersWidget import Ui_NumbersWidget
 
 import UI.PixmapCache
+from Globals import qVersionTuple
 
 
 class BinaryModel(QAbstractTableModel):
@@ -201,7 +201,7 @@
         
         self.__model = BinaryModel(self)
         self.binTable.setModel(self.__model)
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.binTable.horizontalHeader().setSectionResizeMode(
                 QHeaderView.ResizeToContents)
         else:
--- a/UI/Previewers/PreviewerQSS.py	Sat May 13 13:46:05 2017 +0200
+++ b/UI/Previewers/PreviewerQSS.py	Sat May 13 16:32:54 2017 +0200
@@ -11,7 +11,6 @@
 
 import os
 
-from PyQt5.QtCore import qVersion
 from PyQt5.QtWidgets import QWidget, QMenu, QLabel, QHeaderView, \
     QListWidgetItem
 
@@ -19,6 +18,7 @@
 
 import Preferences
 import UI.PixmapCache
+from Globals import qVersionTuple
 
 
 class PreviewerQSS(QWidget, Ui_PreviewerQSS):
@@ -46,7 +46,7 @@
         self.__mdi.resize(160, 80)
         
         # tree and table widgets
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.tree.header().setSectionResizeMode(
                 QHeaderView.ResizeToContents)
             self.table.horizontalHeader().setSectionResizeMode(
--- a/UI/SymbolsWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/UI/SymbolsWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -22,7 +22,7 @@
 import unicodedata
 
 from PyQt5.QtCore import pyqtSlot, pyqtSignal, QAbstractTableModel, \
-    QModelIndex, Qt, qVersion, QItemSelectionModel, QLocale
+    QModelIndex, Qt, QItemSelectionModel, QLocale
 from PyQt5.QtGui import QColor
 from PyQt5.QtWidgets import QWidget, QHeaderView, QAbstractItemView
 
@@ -30,6 +30,7 @@
 
 import UI.PixmapCache
 import Preferences
+from Globals import qVersionTuple
 
 
 class SymbolsModel(QAbstractTableModel):
@@ -508,7 +509,7 @@
         self.symbolsTable.selectionModel().currentRowChanged.connect(
             self.__currentRowChanged)
         
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             self.symbolsTable.horizontalHeader().setSectionResizeMode(
                 QHeaderView.Fixed)
         else:
--- a/UI/UserInterface.py	Sat May 13 13:46:05 2017 +0200
+++ b/UI/UserInterface.py	Sat May 13 16:32:54 2017 +0200
@@ -27,12 +27,14 @@
 from PyQt5.Qsci import QSCINTILLA_VERSION_STR
 from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkAccessManager, \
     QNetworkRequest, QNetworkReply
+
+from Globals import qVersionTuple
 try:
     from PyQt5 import QtWebKit      # __IGNORE_WARNING__
     WEBKIT_AVAILABLE = True
 except ImportError:
     WEBKIT_AVAILABLE = False
-if qVersion() < "5.6.0":
+if qVersionTuple() < (5, 6, 0):
     WEBENGINE_AVAILABLE = False
 else:
     try:
@@ -3193,7 +3195,7 @@
                 Utilities.generateDistroInfo("\r\n"))
         
         url = QUrl("mailto:{0}".format(address))
-        if qVersion() >= "5.0.0":
+        if qVersionTuple() >= (5, 0, 0):
             from PyQt5.QtCore import QUrlQuery
             urlQuery = QUrlQuery(url)
             urlQuery.addQueryItem("subject", subject)
--- a/Utilities/__init__.py	Sat May 13 13:46:05 2017 +0200
+++ b/Utilities/__init__.py	Sat May 13 16:32:54 2017 +0200
@@ -65,7 +65,7 @@
 from Globals import (  # __IGNORE_WARNING__
     isWindowsPlatform, isLinuxPlatform, isMacPlatform, getConfigDir,
     setConfigDir, getPythonModulesDirectory, getPyQt5ModulesDirectory,
-    getQtBinariesPath, getPyQtToolsPath)
+    getQtBinariesPath, getPyQtToolsPath, qVersionTuple)
 
 from E5Gui.E5Application import e5App
 
@@ -1801,7 +1801,7 @@
         qVersion(), linesep, PYQT_VERSION_STR, linesep)
     info += "  sip {0}{1}  QScintilla {2}{3}".format(
         sip_version_str, linesep, QSCINTILLA_VERSION_STR, linesep)
-    if qVersion() >= "5.6.0":
+    if qVersionTuple() >= (5, 6, 0):
         try:
             from PyQt5 import QtWebEngineWidgets    # __IGNORE_WARNING__
             from WebBrowser.Tools import WebBrowserTools
--- a/WebBrowser/AdBlock/AdBlockRule.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/AdBlock/AdBlockRule.py	Sat May 13 16:32:54 2017 +0200
@@ -11,9 +11,11 @@
 
 import re
 
-from PyQt5.QtCore import qVersion, Qt, QRegExp
+from PyQt5.QtCore import Qt, QRegExp
 from PyQt5.QtWebEngineCore import QWebEngineUrlRequestInfo
 
+from Globals import qVersionTuple
+
 
 def toSecondLevelDomain(url):
     """
@@ -532,7 +534,7 @@
         match = (
             req.resourceType() ==
             QWebEngineUrlRequestInfo.ResourceTypeSubResource)
-        if qVersion() >= "5.7.0":
+        if qVersionTuple() >= (5, 7, 0):
             match = match or (
                 req.resourceType() ==
                 QWebEngineUrlRequestInfo.ResourceTypePluginResource)
--- a/WebBrowser/Download/DownloadItem.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/Download/DownloadItem.py	Sat May 13 16:32:54 2017 +0200
@@ -11,7 +11,7 @@
 
 import os
 
-from PyQt5.QtCore import pyqtSlot, pyqtSignal, qVersion, Qt, QTime, QUrl, \
+from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QTime, QUrl, \
     QStandardPaths, QFileInfo
 from PyQt5.QtGui import QPalette, QDesktopServices
 from PyQt5.QtWidgets import QWidget, QStyle, QDialog
@@ -27,6 +27,7 @@
 import UI.PixmapCache
 import Utilities.MimeTypes
 import Globals
+from Globals import qVersionTuple
 
 
 class DownloadItem(QWidget, Ui_DownloadItem):
@@ -129,10 +130,10 @@
         if self.__gettingFileName:
             return
         
-        if qVersion() >= "5.8.0":
+        if qVersionTuple() >= (5, 8, 0):
             savePage = self.__downloadItem.type() == \
                 QWebEngineDownloadItem.SavePage
-        elif qVersion() >= "5.7.0":
+        elif qVersionTuple() >= (5, 7, 0):
             savePage = self.__downloadItem.savePageFormat() != \
                 QWebEngineDownloadItem.UnknownSaveFormat
         else:
--- a/WebBrowser/GreaseMonkey/GreaseMonkeyScript.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/GreaseMonkey/GreaseMonkeyScript.py	Sat May 13 16:32:54 2017 +0200
@@ -10,7 +10,7 @@
 from __future__ import unicode_literals
 
 from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QUrl, QRegExp, \
-    QByteArray, QCryptographicHash, qVersion
+    QByteArray, QCryptographicHash
 from PyQt5.QtWebEngineWidgets import QWebEngineScript
 
 from .GreaseMonkeyJavaScript import bootstrap_js, values_js
@@ -19,6 +19,8 @@
 from ..Tools.DelayedFileWatcher import DelayedFileWatcher
 from ..WebBrowserPage import WebBrowserPage
 
+from Globals import qVersionTuple
+
 
 class GreaseMonkeyScript(QObject):
     """
@@ -328,7 +330,7 @@
             QByteArray(self.fullName().encode("utf-8")),
             QCryptographicHash.Md4).toHex()).decode("ascii")
         valuesScript = values_js.format(nspace)
-        if qVersion() < "5.8.0":
+        if qVersionTuple() < (5, 8, 0):
             runCheck = """
                 for (var value of {0}) {{
                     var re = new RegExp(value);
@@ -370,7 +372,7 @@
         @rtype QWebEngineScript
         @exception ValueError raised to indicate an unsupported start point
         """
-        if qVersion() < "5.8.0":
+        if qVersionTuple() < (5, 8, 0):
             if self.startAt() == GreaseMonkeyScript.DocumentStart:
                 injectionPoint = QWebEngineScript.DocumentCreation
             elif self.startAt() == GreaseMonkeyScript.DocumentEnd:
@@ -385,7 +387,7 @@
             bootstrap_js, self.__script
         ))
         script.setName(self.fullName())
-        if qVersion() < "5.8.0":
+        if qVersionTuple() < (5, 8, 0):
             script.setInjectionPoint(injectionPoint)
         script.setWorldId(WebBrowserPage.SafeJsWorld)
         script.setRunsOnSubFrames(not self.__noFrames)
@@ -401,7 +403,7 @@
         @return JavaScript script containing the list
         @rtype str
         """
-        if qVersion() >= "5.8.0":
+        if qVersionTuple() >= (5, 8, 0):
             script = ""
         else:
             patternList = []
--- a/WebBrowser/QtHelp/HelpDocsInstaller.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/QtHelp/HelpDocsInstaller.py	Sat May 13 16:32:54 2017 +0200
@@ -12,12 +12,14 @@
 
 import os
 
-from PyQt5.QtCore import pyqtSignal, qVersion, QThread, Qt, QMutex, \
-    QDateTime, QDir, QLibraryInfo, QFileInfo
+from PyQt5.QtCore import pyqtSignal, QThread, Qt, QMutex, QDateTime, QDir, \
+    QLibraryInfo, QFileInfo
 from PyQt5.QtHelp import QHelpEngineCore
 
 from eric6config import getConfig
 
+from Globals import qVersionTuple
+
 
 class HelpDocsInstaller(QThread):
     """
@@ -134,7 +136,7 @@
                 docsPathList = QDir.fromNativeSeparators(docsPath).split("/")
                 docsPath = os.sep.join(
                     docsPathList[:-3] +
-                    ["Docs", "Qt-{0}".format(qVersion()[:3])])
+                    ["Docs", "Qt-{0}.{1}".format(*qVersionTuple())])
             docsPath = QDir(docsPath)
         else:
             # unsupported Qt version
--- a/WebBrowser/Tools/FilePrinter.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/Tools/FilePrinter.py	Sat May 13 16:32:54 2017 +0200
@@ -14,10 +14,11 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import qVersion, QFile, QStandardPaths, QProcess
+from PyQt5.QtCore import QFile, QStandardPaths, QProcess
 from PyQt5.QtPrintSupport import QPrinter, QPrintEngine
 
 import Globals
+from Globals import qVersionTuple
 
 
 _FilePrintJobs = []
@@ -171,7 +172,7 @@
         argsList.append(fileName)
         
         self.__process = QProcess()
-        if qVersion() < "5.6.0":
+        if qVersionTuple() < (5, 6, 0):
             self.__process.error.connect(self.__processError)
         else:
             self.__process.errorOccurred.connect(self.__processError)
--- a/WebBrowser/WebBrowserPage.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/WebBrowserPage.py	Sat May 13 16:32:54 2017 +0200
@@ -14,7 +14,7 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import pyqtSlot, qVersion, QUrl, QTimer, QEventLoop, QPoint
+from PyQt5.QtCore import pyqtSlot, QUrl, QTimer, QEventLoop, QPoint
 from PyQt5.QtGui import QDesktopServices
 from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineSettings, \
     QWebEngineScript
@@ -27,13 +27,14 @@
 from .Tools.WebHitTestResult import WebHitTestResult
 
 import Preferences
+from Globals import qVersionTuple
 
 
 class WebBrowserPage(QWebEnginePage):
     """
     Class implementing an enhanced web page.
     """
-    if qVersion() >= "5.7.0":
+    if qVersionTuple() >= (5, 7, 0):
         # SafeJsWorld = QWebEngineScript.ApplicationWorld
         SafeJsWorld = QWebEngineScript.MainWorld
     else:
@@ -203,7 +204,7 @@
             ended
         @type function
         """
-        if qVersion() >= "5.7.0" and worldId > -1:
+        if qVersionTuple() >= (5, 7, 0) and worldId > -1:
             if callback is None:
                 QWebEnginePage.runJavaScript(self, script, worldId)
             else:
--- a/WebBrowser/WebBrowserTabWidget.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/WebBrowserTabWidget.py	Sat May 13 16:32:54 2017 +0200
@@ -12,7 +12,7 @@
 import os
 
 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QDir, QFile, \
-    QFileDevice, QTemporaryFile, qVersion
+    QFileDevice, QTemporaryFile
 from PyQt5.QtGui import QIcon, QPixmap, QPainter
 from PyQt5.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, \
     QDialog, QApplication
@@ -33,6 +33,7 @@
 import Utilities
 import Preferences
 import Globals
+from Globals import qVersionTuple
 
 from eric6config import getConfig
 
@@ -185,21 +186,21 @@
             self.tr('Close All'), self.closeAllBrowsers)
         self.__tabContextMenu.addSeparator()
         # TODO: re-check this once printing on Windows is reliable
-##        if qVersion() >= "5.8.0" or (
-##                not Globals.isWindowsPlatform() and qVersion() < "5.7.0"):
+##        if qVersionTuple() >= (5, 8, 0) or (
+##            not Globals.isWindowsPlatform() and qVersionTuple() < (5, 7, 0)):
         if not Globals.isWindowsPlatform() and (
-                qVersion() < "5.7.0" or qVersion() >= "5.8.0"):
+                qVersionTuple() < (5, 7, 0) or qVersionTuple() >= (5, 8, 0)):
             self.__tabContextMenu.addAction(
                 UI.PixmapCache.getIcon("printPreview.png"),
                 self.tr('Print Preview'), self.__tabContextMenuPrintPreview)
         # TODO: re-check this once printing on Windows is reliable
-##        if qVersion() >= "5.8.0" or (
-##                not Globals.isWindowsPlatform() or qVersion() >= "5.7.0"):
-        if not Globals.isWindowsPlatform() and qVersion() >= "5.7.0":
+##        if qVersionTuple() >= (5, 8, 0) or (
+##            not Globals.isWindowsPlatform() or qVersionTuple() >= (5, 7, 0)):
+        if not Globals.isWindowsPlatform() and qVersionTuple() >= (5, 7, 0):
             self.__tabContextMenu.addAction(
                 UI.PixmapCache.getIcon("print.png"),
                 self.tr('Print'), self.__tabContextMenuPrint)
-        if Globals.isLinuxPlatform() or qVersion() >= "5.7.0":
+        if Globals.isLinuxPlatform() or qVersionTuple() >= (5, 7, 0):
             self.__tabContextMenu.addAction(
                 UI.PixmapCache.getIcon("printPdf.png"),
                 self.tr('Print as PDF'), self.__tabContextMenuPrintPdf)
@@ -816,7 +817,7 @@
         
         preview = QPrintPreviewDialog(printer, self)
         preview.resize(800, 750)
-        if qVersion() >= "5.8.0":
+        if qVersionTuple() >= (5, 8, 0):
             preview.paintRequested.connect(
                 lambda p: self.__printPreviewRequested(p, browser))
         else:
--- a/WebBrowser/WebBrowserView.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/WebBrowserView.py	Sat May 13 16:32:54 2017 +0200
@@ -17,7 +17,7 @@
 import os
 
 from PyQt5.QtCore import pyqtSignal, QUrl, QFileInfo, Qt, QTimer, QEvent, \
-    QPoint, QDateTime, qVersion, QStandardPaths
+    QPoint, QDateTime, QStandardPaths
 from PyQt5.QtGui import QDesktopServices, QClipboard, QIcon, \
     QContextMenuEvent, QPixmap
 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication
@@ -38,6 +38,7 @@
 import Preferences
 import UI.PixmapCache
 import Utilities
+from Globals import qVersionTuple
 
 
 class WebBrowserView(QWebEngineView):
@@ -122,7 +123,7 @@
         self.__inspector = None
         WebInspector.registerView(self)
         
-        if qVersion() >= "5.8.0":
+        if qVersionTuple() >= (5, 8, 0):
             if self.parentWidget() is not None:
                 self.parentWidget().installEventFilter(self)
             
@@ -342,7 +343,7 @@
         """
         Public slot to clear the current selection.
         """
-        if qVersion() >= "5.7.0":
+        if qVersionTuple() >= (5, 7, 0):
             self.triggerPageAction(QWebEnginePage.Unselect)
         else:
             self.page().runJavaScript(
@@ -525,11 +526,11 @@
         @type WebHitTestResult
         """
         spellCheckActionCount = 0
-        if qVersion() >= "5.7.0":
+        if qVersionTuple() >= (5, 7, 0):
             contextMenuData = self.page().contextMenuData()
             hitTest.updateWithContextMenuData(contextMenuData)
             
-            if qVersion() >= "5.8.0" and \
+            if qVersionTuple() >= (5, 8, 0) and \
                bool(contextMenuData.misspelledWord()):
                 boldFont = menu.font()
                 boldFont.setBold(True)
@@ -1391,7 +1392,7 @@
         @rtype bool
         """
         # find the render widget receiving events for the web page
-        if qVersion() < "5.8.0":
+        if qVersionTuple() < (5, 8, 0):
             if obj is self and evt.type() == QEvent.ChildAdded:
                 child = evt.child()
                 if child and child.inherits(
@@ -1704,7 +1705,7 @@
         if url.isEmpty():
             return
         
-        if qVersion() >= "5.8.0":
+        if qVersionTuple() >= (5, 8, 0):
             # since Qt 5.8.0
             fileName, savePageFormat = self.__getSavePageFileNameAndFormat()
             if fileName:
--- a/WebBrowser/WebBrowserWindow.py	Sat May 13 13:46:05 2017 +0200
+++ b/WebBrowser/WebBrowserWindow.py	Sat May 13 16:32:54 2017 +0200
@@ -18,7 +18,7 @@
 import sys
 
 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, \
-    QUrl, QTextCodec, QProcess, QEvent, qVersion
+    QUrl, QTextCodec, QProcess, QEvent
 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics
 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \
     QComboBox, QLabel, QMenu, QToolButton, QLineEdit, QApplication, \
@@ -44,6 +44,7 @@
 
 import Utilities
 import Globals
+from Globals import qVersionTuple
 
 import UI.PixmapCache
 import UI.Config
@@ -744,9 +745,9 @@
         self.__actions.append(self.exportBookmarksAct)
         
         # TODO: re-check this once printing on Windows is reliable
-##        if qVersion() >= "5.8.0" or (
-##                not Globals.isWindowsPlatform() or qVersion() >= "5.7.0"):
-        if not Globals.isWindowsPlatform() and qVersion() >= "5.7.0":
+##        if qVersionTuple() >= (5, 8, 0) or (
+##            not Globals.isWindowsPlatform() or qVersionTuple() >= (5, 7, 0)):
+        if not Globals.isWindowsPlatform() and qVersionTuple() >= (5, 7, 0):
             self.printAct = E5Action(
                 self.tr('Print'),
                 UI.PixmapCache.getIcon("print.png"),
@@ -764,7 +765,7 @@
         else:
             self.printAct = None
         
-        if Globals.isLinuxPlatform() or qVersion() >= "5.7.0":
+        if Globals.isLinuxPlatform() or qVersionTuple() >= (5, 7, 0):
             self.printPdfAct = E5Action(
                 self.tr('Print as PDF'),
                 UI.PixmapCache.getIcon("printPdf.png"),
@@ -784,10 +785,10 @@
             self.printPdfAct = None
         
         # TODO: re-check this once printing on Windows is reliable
-##        if qVersion() >= "5.8.0" or (
-##                not Globals.isWindowsPlatform() and qVersion() < "5.7.0"):
+##        if qVersionTuple() >= (5, 8, 0) or (
+##            not Globals.isWindowsPlatform() and qVersionTuple() < (5, 7, 0)):
         if not Globals.isWindowsPlatform() and (
-                qVersion() < "5.7.0" or qVersion() >= "5.8.0"):
+                qVersionTuple() < (5, 7, 0) or qVersionTuple() >= (5, 8, 0)):
             self.printPreviewAct = E5Action(
                 self.tr('Print Preview'),
                 UI.PixmapCache.getIcon("printPreview.png"),
@@ -2868,7 +2869,7 @@
                 profile.setHttpCacheType(QWebEngineProfile.MemoryHttpCache)
                 profile.setHttpCacheMaximumSize(0)
         
-        if qVersion() >= "5.8.0":
+        if qVersionTuple() >= (5, 8, 0):
             profile.setSpellCheckEnabled(
                 Preferences.getWebBrowser("SpellCheckEnabled"))
             profile.setSpellCheckLanguages(
@@ -4240,7 +4241,7 @@
                 cls._webProfile.setPersistentCookiesPolicy(
                     QWebEngineProfile.AllowPersistentCookies)
             
-            if qVersion() >= "5.8.0":
+            if qVersionTuple() >= (5, 8, 0):
                 cls._webProfile.setSpellCheckEnabled(
                     Preferences.getWebBrowser("SpellCheckEnabled"))
                 cls._webProfile.setSpellCheckLanguages(
--- a/eric6_browser.py	Sat May 13 13:46:05 2017 +0200
+++ b/eric6_browser.py	Sat May 13 16:32:54 2017 +0200
@@ -30,10 +30,10 @@
 import sys
 import os
 
-MIN_QT_VERSION = "5.6.0"
+from Globals import qVersionTuple
 
-from PyQt5.QtCore import qVersion
-if qVersion() < MIN_QT_VERSION:
+
+if qVersionTuple() < (5, 6, 0):
     from PyQt5.QtCore import QTimer
     from PyQt5.QtWidgets import QApplication
     from E5Gui import E5MessageBox
@@ -41,8 +41,8 @@
     QTimer.singleShot(0, lambda: E5MessageBox.critical(
         None,
         "eric6 Web Browser",
-        "You need at least Qt Version {0} to execute the web browser."
-          .format(MIN_QT_VERSION)))
+        "You need at least Qt Version 5.6.0 to execute the web browser.")
+    )
     app.exec_()
     sys.exit(100)
 
--- a/eric6_configure.py	Sat May 13 13:46:05 2017 +0200
+++ b/eric6_configure.py	Sat May 13 16:32:54 2017 +0200
@@ -37,8 +37,8 @@
                           settingsDir)
         sys.argv.remove(arg)
 
-from PyQt5.QtCore import qVersion
-if qVersion() < "5.6.0":
+from Globals import qVersionTuple
+if qVersionTuple() < (5, 6, 0):
     WEBENGINE_AVAILABLE = False
 else:
     try:
--- a/eric6_tray.py	Sat May 13 13:46:05 2017 +0200
+++ b/eric6_tray.py	Sat May 13 16:32:54 2017 +0200
@@ -42,8 +42,8 @@
                           SettingsDir)
         sys.argv.remove(arg)
 
-from PyQt5.QtCore import qVersion
-if qVersion() < "5.6.0":
+from Globals import qVersionTuple
+if qVersionTuple() < (5, 6, 0):
     WEBENGINE_AVAILABLE = False
 else:
     try:

eric ide

mercurial