From daa26ff0afbb36831be2febab6ab5fa591a2e47a Mon Sep 17 00:00:00 2001 From: aaronayres35 <36972686+aaronayres35@users.noreply.github.com> Date: Wed, 7 Oct 2020 08:12:00 -0500 Subject: [PATCH] using horizontalAdvance instead of width when possible to avoid deprecation warnings (#715) --- pyface/ui/qt4/code_editor/code_widget.py | 7 ++++++- pyface/ui/qt4/code_editor/find_widget.py | 7 ++++++- pyface/ui/qt4/code_editor/gutters.py | 14 +++++++++++--- pyface/ui/qt4/code_editor/replace_widget.py | 7 ++++++- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/pyface/ui/qt4/code_editor/code_widget.py b/pyface/ui/qt4/code_editor/code_widget.py index ee44cf940..ce6c5ed97 100644 --- a/pyface/ui/qt4/code_editor/code_widget.py +++ b/pyface/ui/qt4/code_editor/code_widget.py @@ -473,7 +473,12 @@ def sizeHint(self): style = self.style() opt = QtGui.QStyleOptionHeader() font_metrics = QtGui.QFontMetrics(self.document().defaultFont()) - width = font_metrics.width(" ") * 80 + # QFontMetrics.width() is deprecated and Qt docs suggest using + # horizontalAdvance() instead, but is only available since Qt 5.11 + if QtCore.__version_info__ >= (5, 11): + width = font_metrics.horizontalAdvance(" ") * 80 + else: + width = font_metrics.width(" ") * 80 width += self.line_number_widget.sizeHint().width() width += self.status_widget.sizeHint().width() width += style.pixelMetric(QtGui.QStyle.PM_ScrollBarExtent, opt, self) diff --git a/pyface/ui/qt4/code_editor/find_widget.py b/pyface/ui/qt4/code_editor/find_widget.py index 4aa9d0726..597cb3cab 100644 --- a/pyface/ui/qt4/code_editor/find_widget.py +++ b/pyface/ui/qt4/code_editor/find_widget.py @@ -19,7 +19,12 @@ def __init__(self, parent): super(FindWidget, self).__init__(parent) self.adv_code_widget = weakref.ref(parent) - self.button_size = self.fontMetrics().width("Replace All") + 20 + # QFontMetrics.width() is deprecated and Qt docs suggest using + # horizontalAdvance() instead, but is only available since Qt 5.11 + if QtCore.__version_info__ >= (5, 11): + self.button_size = self.fontMetrics().horizontalAdvance("Replace All") + 20 + else: + self.button_size = self.fontMetrics().width("Replace All") + 20 form_layout = QtGui.QFormLayout() form_layout.addRow("Fin&d", self._create_find_control()) diff --git a/pyface/ui/qt4/code_editor/gutters.py b/pyface/ui/qt4/code_editor/gutters.py index 278bdd520..67c68f65e 100644 --- a/pyface/ui/qt4/code_editor/gutters.py +++ b/pyface/ui/qt4/code_editor/gutters.py @@ -96,9 +96,17 @@ def digits_width(self): ndigits = max( self.min_char_width, int(math.floor(math.log10(nlines) + 1)) ) - width = max( - self.fontMetrics().width("0" * ndigits) + 3, self.min_width - ) + # QFontMetrics.width() is deprecated and Qt docs suggest using + # horizontalAdvance() instead, but is only available since Qt 5.11 + if QtCore.__version_info__ >= (5, 11): + width = max( + self.fontMetrics().horizontalAdvance("0" * ndigits) + 3, + self.min_width + ) + else: + width = max( + self.fontMetrics().width("0" * ndigits) + 3, self.min_width + ) return width def sizeHint(self): diff --git a/pyface/ui/qt4/code_editor/replace_widget.py b/pyface/ui/qt4/code_editor/replace_widget.py index 8b2547677..3a1b90514 100644 --- a/pyface/ui/qt4/code_editor/replace_widget.py +++ b/pyface/ui/qt4/code_editor/replace_widget.py @@ -21,7 +21,12 @@ def __init__(self, parent): super(FindWidget, self).__init__(parent) self.adv_code_widget = weakref.ref(parent) - self.button_size = self.fontMetrics().width("Replace All") + 20 + # QFontMetrics.width() is deprecated and Qt docs suggest using + # horizontalAdvance() instead, but is only available since Qt 5.11 + if QtCore.__version_info__ >= (5, 11): + self.button_size = self.fontMetrics().horizontalAdvance("Replace All") + 20 + else: + self.button_size = self.fontMetrics().width("Replace All") + 20 form_layout = QtGui.QFormLayout() form_layout.addRow("Fin&d", self._create_find_control())