Addon Manager: Add GUI for enabling/disabling addons

This commit is contained in:
Chris Hennes
2022-02-13 22:30:59 -06:00
parent ec90b7f954
commit ff67ebce8a
4 changed files with 106 additions and 4 deletions

View File

@@ -96,6 +96,8 @@ class PackageDetails(QWidget):
lambda: self.check_for_update.emit(self.repo)
)
self.ui.buttonChangeBranch.clicked.connect(self.change_branch_clicked)
self.ui.buttonEnable.clicked.connect(self.enable_clicked)
self.ui.buttonDisable.clicked.connect(self.disable_clicked)
if HAS_QTWEBENGINE:
self.ui.webView.loadStarted.connect(self.load_started)
self.ui.webView.loadProgress.connect(self.load_progress)
@@ -166,6 +168,7 @@ class PackageDetails(QWidget):
def display_repo_status(self, status):
repo = self.repo
self.set_change_branch_button_state()
self.set_disable_button_state()
if status != AddonManagerRepo.UpdateStatus.NOT_INSTALLED:
version = repo.installed_version
@@ -361,6 +364,16 @@ class PackageDetails(QWidget):
self.ui.labelWarningInfo.setStyleSheet(
"color:" + utils.warning_color_string()
)
elif repo.is_disabled():
self.ui.labelWarningInfo.show()
self.ui.labelWarningInfo.setText(
"<h2>"
+ translate("AddonsInstaller", "WARNING: This addon is currently installed, but disabled. Use the 'enable' button to re-enable.")
+ "</h2>"
)
self.ui.labelWarningInfo.setStyleSheet(
"color:" + utils.warning_color_string()
)
else:
self.ui.labelWarningInfo.hide()
@@ -423,6 +436,17 @@ class PackageDetails(QWidget):
# branches, if there are any besides the one we are on: show the button
self.ui.buttonChangeBranch.show()
def set_disable_button_state(self):
self.ui.buttonEnable.hide()
self.ui.buttonDisable.hide()
status = self.repo.status()
if status != AddonManagerRepo.UpdateStatus.NOT_INSTALLED:
disabled = self.repo.is_disabled()
if disabled:
self.ui.buttonEnable.show()
else:
self.ui.buttonDisable.show()
def show_workbench(self, repo: AddonManagerRepo) -> None:
"""loads information of a given workbench"""
url = utils.get_readme_html_url(repo)
@@ -582,6 +606,34 @@ class PackageDetails(QWidget):
change_branch_dialog.branch_changed.connect(self.branch_changed)
change_branch_dialog.exec()
def enable_clicked(self) -> None:
self.repo.enable()
self.set_disable_button_state()
self.update_status.emit(self.repo)
self.ui.labelWarningInfo.show()
self.ui.labelWarningInfo.setText(
"<h3>"
+ translate("AddonsInstaller", "This Addon will be enabled next time you restart FreeCAD.")
+ "</h3>"
)
self.ui.labelWarningInfo.setStyleSheet(
"color:" + utils.bright_color_string()
)
def disable_clicked(self) -> None:
self.repo.disable()
self.set_disable_button_state()
self.update_status.emit(self.repo)
self.ui.labelWarningInfo.show()
self.ui.labelWarningInfo.setText(
"<h3>"
+ translate("AddonsInstaller", "This Addon will be disabled next time you restart FreeCAD.")
+ "</h3>"
)
self.ui.labelWarningInfo.setStyleSheet(
"color:" + utils.attention_color_string()
)
def branch_changed(self, name: str) -> None:
QMessageBox.information(
self,
@@ -704,6 +756,16 @@ class Ui_PackageDetails(object):
self.layoutDetailsBackButton.addWidget(self.buttonExecute)
self.buttonDisable = QPushButton(PackageDetails)
self.buttonDisable.setObjectName("buttonDisable")
self.layoutDetailsBackButton.addWidget(self.buttonDisable)
self.buttonEnable = QPushButton(PackageDetails)
self.buttonEnable.setObjectName("buttonEnable")
self.layoutDetailsBackButton.addWidget(self.buttonEnable)
self.verticalLayout_2.addLayout(self.layoutDetailsBackButton)
self.labelPackageDetails = QLabel(PackageDetails)
@@ -795,6 +857,12 @@ class Ui_PackageDetails(object):
self.buttonChangeBranch.setText(
QCoreApplication.translate("AddonsInstaller", "Change Branch", None)
)
self.buttonEnable.setText(
QCoreApplication.translate("AddonsInstaller", "Enable", None)
)
self.buttonDisable.setText(
QCoreApplication.translate("AddonsInstaller", "Disable", None)
)
self.buttonBack.setToolTip(
QCoreApplication.translate(
"AddonsInstaller", "Return to package list", None