Addon Manager: Make branch switching scarier
This commit is contained in:
@@ -284,6 +284,34 @@ of the line after a space (e.g. https://github.com/FreeCAD/FreeCAD master).</str
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="advanced">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Advanced Options</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="Gui::PrefCheckBox" name="guiprefcheckboxShowBranchSwitcher">
|
||||
<property name="text">
|
||||
<string>Show option to change branches (Requires GitPython)</string>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<string>ShowBranchSwitcher</string>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<string>Addons</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -200,7 +200,10 @@ class PackageDetails(QWidget):
|
||||
if repo.metadata:
|
||||
installed_version_string += (
|
||||
"<b>"
|
||||
+ 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(
|
||||
"<h1>"
|
||||
+ translate("AddonsInstaller", "WARNING: This addon requires FreeCAD ")
|
||||
+ translate("AddonsInstaller", "WARNING: This addon requires FreeCAD ")
|
||||
+ required_version
|
||||
+ "</h1>"
|
||||
)
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user