From f554750f8e073e0f7044218ebf8ee88c5390b89b Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 25 Feb 2024 17:33:07 -0600 Subject: [PATCH] Addon Manager: Add UI for setting Score source --- src/Mod/AddonManager/AddonManagerOptions.ui | 30 +++++++++++++++++++ .../addonmanager_workers_startup.py | 9 ++++-- src/Mod/AddonManager/package_list.py | 5 +--- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/Mod/AddonManager/AddonManagerOptions.ui b/src/Mod/AddonManager/AddonManagerOptions.ui index 8eb3575c98..66bf262816 100644 --- a/src/Mod/AddonManager/AddonManagerOptions.ui +++ b/src/Mod/AddonManager/AddonManagerOptions.ui @@ -316,6 +316,36 @@ installed addons will be checked for available updates + + + + + + Score source URL + + + + + + + + 0 + 0 + + + + AddonScoreURL + + + Addons + + + The URL for the Addon Score data (see documentation for formatting and hosting details). + + + + + diff --git a/src/Mod/AddonManager/addonmanager_workers_startup.py b/src/Mod/AddonManager/addonmanager_workers_startup.py index 70efa358b5..64b65cb5ea 100644 --- a/src/Mod/AddonManager/addonmanager_workers_startup.py +++ b/src/Mod/AddonManager/addonmanager_workers_startup.py @@ -23,7 +23,7 @@ # *************************************************************************** """ Worker thread classes for Addon Manager startup """ - +import datetime import hashlib import json import os @@ -966,7 +966,7 @@ class GetAddonScoreWorker(QtCore.QThread): FreeCAD.Console.PrintError( translate( "AddonsInstaller", - "Failed to get Addon score from {} -- sorting by score will fail\n", + "Failed to get Addon score from '{}' -- sorting by score will fail\n", ).format(self.url) ) return @@ -976,7 +976,10 @@ class GetAddonScoreWorker(QtCore.QThread): FreeCAD.Console.PrintWarning("Running score generation in TEST mode...\n") json_result = {} for addon in self.addons: - json_result[addon.url] = len(addon.display_name) + if addon.macro: + json_result[addon.name] = len(addon.macro.comment) if addon.macro.comment else 0 + else: + json_result[addon.url] = len(addon.description) if addon.description else 0 for addon in self.addons: score = None diff --git a/src/Mod/AddonManager/package_list.py b/src/Mod/AddonManager/package_list.py index 6cb5d64c91..e5a7494b6b 100644 --- a/src/Mod/AddonManager/package_list.py +++ b/src/Mod/AddonManager/package_list.py @@ -387,12 +387,9 @@ class PackageListItemDelegate(QtWidgets.QStyledItemDelegate): return translate("AddonsInstaller", "Updated ") + time_string return "" elif self.sort_order == SortOptions.Score: - return translate("AddonsInstaller", "Score: ") + str(len(addon.display_name)) + return translate("AddonsInstaller", "Score: ") + str(addon.score) return "" - def _set_sort_string_expanded(self, addon: Addon, label: QtWidgets.QLabel) -> None: - pass - def _get_compact_description(self, addon: Addon) -> str: if addon.metadata: trimmed_text = addon.metadata.description