From f45481ae3620a93d079fd2bb4d4a26de8f5e87f0 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Mon, 20 Dec 2021 10:13:29 -0600 Subject: [PATCH] Addon Manager: Support Qt 5.9 QRegularExpression was not added until Qt 5.12 -- add support for using QRegExp in cases when QRegularExpression is not present. --- src/Mod/AddonManager/package_list.py | 40 ++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/Mod/AddonManager/package_list.py b/src/Mod/AddonManager/package_list.py index 6028552c45..771e453bc7 100644 --- a/src/Mod/AddonManager/package_list.py +++ b/src/Mod/AddonManager/package_list.py @@ -109,7 +109,10 @@ class PackageList(QWidget): """filter name and description by the regex specified by text_filter""" if text_filter: - test_regex = QRegularExpression(text_filter) + if hasattr(self.item_filter, "setFilterRegularExpression"): # Added in Qt 5.12 + test_regex = QRegularExpression(text_filter) + else: + test_regex = QRegExp(text_filter) if test_regex.isValid(): self.ui.labelFilterValidity.setToolTip( translate("AddonsInstaller", "Filter is valid") @@ -125,7 +128,10 @@ class PackageList(QWidget): self.ui.labelFilterValidity.show() else: self.ui.labelFilterValidity.hide() - self.item_filter.setFilterRegularExpression(text_filter) + if hasattr(self.item_filter, "setFilterRegularExpression"): # Added in Qt 5.12 + self.item_filter.setFilterRegularExpression(text_filter) + else: + self.item_filter.setFilterRegExp(text_filter) def set_view_style(self, style: ListDisplayStyle) -> None: self.item_model.layoutAboutToBeChanged.emit() @@ -452,16 +458,28 @@ class PackageListFilter(QSortFilterProxyModel): name = data.display_name desc = data.description - re = self.filterRegularExpression() - if re.isValid(): - re.setPatternOptions(QRegularExpression.CaseInsensitiveOption) - if re.match(name).hasMatch(): - return True - if re.match(desc).hasMatch(): - return True - return False + if hasattr(self, "filterRegularExpression"): # Added in Qt 5.12 + re = self.filterRegularExpression() + if re.isValid(): + re.setPatternOptions(QRegularExpression.CaseInsensitiveOption) + if re.match(name).hasMatch(): + return True + if re.match(desc).hasMatch(): + return True + return False + else: + return False else: - return False + re = self.filterRegExp() + if re.isValid(): + re.setCaseSensitivity(Qt.CaseInsensitive) + if re.indexIn(name) != -1: + return True + if re.indexIn(desc) != -1: + return True + return False + else: + return False class Ui_PackageList(object):