From a373b73748a679d7221dfdaa10db774313be4915 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sat, 10 Feb 2024 14:54:50 -0500 Subject: [PATCH] Addon Manager: Preference to hide unlicensed --- src/Mod/AddonManager/AddonManagerOptions.ui | 16 ++++++++++++++++ .../addonmanager_preferences_defaults.json | 3 +++ src/Mod/AddonManager/package_list.py | 18 ++++++++++++++++-- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/Mod/AddonManager/AddonManagerOptions.ui b/src/Mod/AddonManager/AddonManagerOptions.ui index 3bd3b7e591..8d4ecb45e9 100644 --- a/src/Mod/AddonManager/AddonManagerOptions.ui +++ b/src/Mod/AddonManager/AddonManagerOptions.ui @@ -90,6 +90,22 @@ installed addons will be checked for available updates + + + + Hide Addons without a license + + + true + + + HideUnlicensed + + + Addons + + + diff --git a/src/Mod/AddonManager/addonmanager_preferences_defaults.json b/src/Mod/AddonManager/addonmanager_preferences_defaults.json index 99a953bc55..07d16d0e15 100644 --- a/src/Mod/AddonManager/addonmanager_preferences_defaults.json +++ b/src/Mod/AddonManager/addonmanager_preferences_defaults.json @@ -14,6 +14,9 @@ "HideNewerFreeCADRequired": true, "HideObsolete": true, "HidePy2": true, + "HideNonOSIApproved": false, + "HideNonFSFFreeLibre": false, + "HideUnlicensed": false, "KnownPythonVersions": "[]", "LastCacheUpdate": "never", "MacroCacheUpdateFrequency": 7, diff --git a/src/Mod/AddonManager/package_list.py b/src/Mod/AddonManager/package_list.py index 849aa1d457..8d8f8a07a8 100644 --- a/src/Mod/AddonManager/package_list.py +++ b/src/Mod/AddonManager/package_list.py @@ -96,8 +96,11 @@ class PackageList(QtWidgets.QWidget): self.item_filter.setHidePy2(pref.GetBool("HidePy2", True)) self.item_filter.setHideObsolete(pref.GetBool("HideObsolete", True)) self.item_filter.setHideNonOSIApproved(pref.GetBool("HideNonOSIApproved", True)) - self.item_filter.setHideNonFSFLibre(pref.GetBool("HideNonFSFFreeLibre", True)) - self.item_filter.setHideNewerFreeCADRequired(pref.GetBool("HideNewerFreeCADRequired", True)) + self.item_filter.setHideNonFSFLibre(pref.GetBool("HideNonFSFFreeLibre", False)) + self.item_filter.setHideNewerFreeCADRequired( + pref.GetBool("HideNewerFreeCADRequired", False) + ) + self.item_filter.setHideUnlicensed(pref.GetBool("HideUnlicensed", False)) def on_listPackages_clicked(self, index: QtCore.QModelIndex): """Determine what addon was selected and emit the itemSelected signal with it as @@ -473,6 +476,7 @@ class PackageListFilter(QtCore.QSortFilterProxyModel): self.hide_py2 = False self.hide_non_OSI_approved = False self.hide_non_FSF_libre = False + self.hide_unlicensed = False self.hide_newer_freecad_required = False def setPackageFilter( @@ -509,6 +513,11 @@ class PackageListFilter(QtCore.QSortFilterProxyModel): self.hide_non_FSF_libre = hide self.invalidateFilter() + def setHideUnlicensed(self, hide: bool) -> None: + """Sets whether to hide addons without a specified license""" + self.hide_unlicensed = hide + self.invalidateFilter() + def setHideNewerFreeCADRequired(self, hide_nfr: bool) -> None: """Sets whether to hide packages that have indicated they need a newer version of FreeCAD than the one currently running.""" @@ -559,6 +568,11 @@ class PackageListFilter(QtCore.QSortFilterProxyModel): if self.hide_obsolete and data.obsolete: return False + if self.hide_unlicensed: + if not data.license or data.license in ["UNLICENSED", "UNLICENCED"]: + FreeCAD.Console.PrintLog(f"Hiding {data.name} because it has no license set\n") + return False + # If it is not an OSI-approved license, check to see if we are hiding those if self.hide_non_OSI_approved or self.hide_non_FSF_libre: if not data.license: