Addon Manager: Preference to hide unlicensed

This commit is contained in:
Chris Hennes
2024-02-10 14:54:50 -05:00
parent 1056b7b0ca
commit a373b73748
3 changed files with 35 additions and 2 deletions

View File

@@ -90,6 +90,22 @@ installed addons will be checked for available updates
</item>
</layout>
</item>
<item>
<widget class="Gui::PrefCheckBox" name="guiprefcheckboxhideunlicensed">
<property name="text">
<string>Hide Addons without a license</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>HideUnlicensed</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Addons</cstring>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefCheckBox" name="guiprefcheckboxhidenonfsf">
<property name="text">

View File

@@ -14,6 +14,9 @@
"HideNewerFreeCADRequired": true,
"HideObsolete": true,
"HidePy2": true,
"HideNonOSIApproved": false,
"HideNonFSFFreeLibre": false,
"HideUnlicensed": false,
"KnownPythonVersions": "[]",
"LastCacheUpdate": "never",
"MacroCacheUpdateFrequency": 7,

View File

@@ -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: