From 5ca1477d93e9b4bcaa81ed27d2752099471aee55 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sat, 12 Feb 2022 15:29:15 -0600 Subject: [PATCH] Addon Manager: Make branch switching scarier --- src/Mod/AddonManager/AddonManagerOptions.ui | 28 +++++++++++++++++++++ src/Mod/AddonManager/change_branch.py | 14 ++++++++++- src/Mod/AddonManager/package_details.py | 26 +++++++++++++++---- 3 files changed, 62 insertions(+), 6 deletions(-) diff --git a/src/Mod/AddonManager/AddonManagerOptions.ui b/src/Mod/AddonManager/AddonManagerOptions.ui index cbf06be88e..882b8783ec 100644 --- a/src/Mod/AddonManager/AddonManagerOptions.ui +++ b/src/Mod/AddonManager/AddonManagerOptions.ui @@ -284,6 +284,34 @@ of the line after a space (e.g. https://github.com/FreeCAD/FreeCAD master). + + + + + 0 + 0 + + + + Advanced Options + + + + + + Show option to change branches (Requires GitPython) + + + ShowBranchSwitcher + + + Addons + + + + + + diff --git a/src/Mod/AddonManager/change_branch.py b/src/Mod/AddonManager/change_branch.py index 7cca58a274..a5143bc674 100644 --- a/src/Mod/AddonManager/change_branch.py +++ b/src/Mod/AddonManager/change_branch.py @@ -96,6 +96,18 @@ class ChangeBranchDialog(QtWidgets.QWidget): # This is the one we are already on... just return return + result = QtWidgets.QMessageBox.critical( + self, + translate("AddonsInstaller", "DANGER: Developer feature"), + translate( + "AddonsInstaller", + "DANGER: Switching branches is intended for developers and beta testers, and may result in broken, non-backwards compatible documents, instability, crashes, and/or the premature heat death of the universe. Are you sure you want to continue?", + ), + QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.Cancel, + QtWidgets.QMessageBox.Cancel, + ) + if result == QtWidgets.QMessageBox.Cancel: + return if self.item_model.repo.is_dirty(): result = QtWidgets.QMessageBox.critical( self, @@ -107,7 +119,7 @@ class ChangeBranchDialog(QtWidgets.QWidget): QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.Cancel, QtWidgets.QMessageBox.Cancel, ) - if result == QtWidgets.QMessageBox.Cancel: + if result == QtWidgets.QMessageBox.Cancel: return if isinstance(ref, git.TagReference): diff --git a/src/Mod/AddonManager/package_details.py b/src/Mod/AddonManager/package_details.py index 40627cfb39..2e49cf0e0e 100644 --- a/src/Mod/AddonManager/package_details.py +++ b/src/Mod/AddonManager/package_details.py @@ -200,7 +200,10 @@ class PackageDetails(QWidget): if repo.metadata: installed_version_string += ( "" - + translate("AddonsInstaller", "On branch {}, update available to version").format(repo.branch) + + translate( + "AddonsInstaller", + "On branch {}, update available to version", + ).format(repo.branch) + " " ) installed_version_string += repo.metadata.Version @@ -234,12 +237,18 @@ class PackageDetails(QWidget): if detached_head: installed_version_string += ( - translate("AddonsInstaller", "Git tag '{}' checked out, no updates possible").format(branch) + translate( + "AddonsInstaller", + "Git tag '{}' checked out, no updates possible", + ).format(branch) + "." ) else: installed_version_string += ( - translate("AddonsInstaller", "This is the latest version available for branch {}").format(branch) + translate( + "AddonsInstaller", + "This is the latest version available for branch {}", + ).format(branch) + "." ) elif status == AddonManagerRepo.UpdateStatus.PENDING_RESTART: @@ -341,7 +350,7 @@ class PackageDetails(QWidget): self.ui.labelWarningInfo.show() self.ui.labelWarningInfo.setText( "

" - + translate("AddonsInstaller", "WARNING: This addon requires FreeCAD ") + + translate("AddonsInstaller", "WARNING: This addon requires FreeCAD ") + required_version + "

" ) @@ -362,7 +371,9 @@ class PackageDetails(QWidget): # it's possible that this package actually provides versions of itself # for newer and older versions - first_supported_version = self.repo.metadata.getFirstSupportedFreeCADVersion() + first_supported_version = ( + self.repo.metadata.getFirstSupportedFreeCADVersion() + ) if first_supported_version is not None: required_version = first_supported_version.split(".") fc_major = int(FreeCAD.Version()[0]) @@ -381,6 +392,11 @@ class PackageDetails(QWidget): self.ui.buttonChangeBranch.hide() + pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") + show_switcher = pref.GetBool("ShowBranchSwitcher", False) + if not show_switcher: + return + # Is this repo installed? If not, return. if self.repo.status() == AddonManagerRepo.UpdateStatus.NOT_INSTALLED: return