From 9ae74916b64001d791810703f0c9b995f0f90519 Mon Sep 17 00:00:00 2001 From: Ulices Date: Fri, 24 Jan 2025 12:48:46 +0000 Subject: [PATCH] AddonManager: open addon's location directory (#19209) * AddonManager: open addon's location directory * AddonManager: account for macros when setting addon location --- src/Mod/AddonManager/Addon.py | 3 +++ .../Widgets/addonmanager_widget_package_details_view.py | 8 ++++---- .../addonmanager_package_details_controller.py | 8 ++++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Mod/AddonManager/Addon.py b/src/Mod/AddonManager/Addon.py index a8f1b51a0d79..7266dba998f1 100644 --- a/src/Mod/AddonManager/Addon.py +++ b/src/Mod/AddonManager/Addon.py @@ -150,6 +150,9 @@ class ResolutionFailed(RuntimeError): # The location of the Mod directory: overridden by testing code mod_directory = fci.DataPaths().mod_dir + # The location of the Macro directory: overridden by testing code + macro_directory = fci.DataPaths().macro_dir + def __init__( self, name: str, diff --git a/src/Mod/AddonManager/Widgets/addonmanager_widget_package_details_view.py b/src/Mod/AddonManager/Widgets/addonmanager_widget_package_details_view.py index 0927fde4ccc9..0ce79da1064f 100644 --- a/src/Mod/AddonManager/Widgets/addonmanager_widget_package_details_view.py +++ b/src/Mod/AddonManager/Widgets/addonmanager_widget_package_details_view.py @@ -111,7 +111,7 @@ def _setup_ui(self): self.location_label = QtWidgets.QLabel(self) self.url_label = QtWidgets.QLabel(self) self.url_label.setOpenExternalLinks(True) - self.location_label.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) + self.location_label.setOpenExternalLinks(True) self.vertical_layout.addWidget(self.button_bar) self.vertical_layout.addWidget(self.message_label) self.vertical_layout.addWidget(self.location_label) @@ -121,10 +121,10 @@ def _setup_ui(self): def set_location(self, location: Optional[str]): if location is not None: + location_path = os.path.normpath(location) text = ( - translate("AddonsInstaller", "Installation location") - + ": " - + os.path.normpath(location) + f"{translate('AddonsInstaller', 'Installation location')}: " + f'{location_path}' ) self.location_label.setText(text) self.location_label.show() diff --git a/src/Mod/AddonManager/addonmanager_package_details_controller.py b/src/Mod/AddonManager/addonmanager_package_details_controller.py index e13d6a006bc1..9d84e8055d72 100644 --- a/src/Mod/AddonManager/addonmanager_package_details_controller.py +++ b/src/Mod/AddonManager/addonmanager_package_details_controller.py @@ -114,7 +114,11 @@ def show_repo(self, repo: Addon) -> None: elif repo.macro: update_info.version = repo.macro.version self.ui.set_update_available(update_info) - self.ui.set_location(os.path.join(self.addon.mod_directory, self.addon.name)) + self.ui.set_location( + self.addon.macro_directory + if repo.repo_type == Addon.Kind.MACRO + else os.path.join(self.addon.mod_directory, self.addon.name) + ) self.ui.set_disabled(self.addon.is_disabled()) self.ui.allow_running(repo.repo_type == Addon.Kind.MACRO) self.ui.allow_disabling(repo.repo_type != Addon.Kind.MACRO) @@ -125,7 +129,7 @@ def show_repo(self, repo: Addon) -> None: if repo.status() == Addon.Status.UNCHECKED: self.ui.button_bar.check_for_update.show() self.ui.button_bar.check_for_update.setText( - translate("AddonsInstaller", "Check for " "update") + translate("AddonsInstaller", "Check for update") ) self.ui.button_bar.check_for_update.setEnabled(True) if not self.update_check_thread: