diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py
index fac36dc128..5073d1bd7f 100644
--- a/src/Mod/AddonManager/AddonManager.py
+++ b/src/Mod/AddonManager/AddonManager.py
@@ -111,32 +111,64 @@ class CommandAddonManager:
def Activated(self) -> None:
# display first use dialog if needed
- readWarningParameter = FreeCAD.ParamGet(
- "User parameter:BaseApp/Preferences/Addons"
- )
- readWarning = readWarningParameter.GetBool("readWarning", False)
- newReadWarningParameter = FreeCAD.ParamGet(
- "User parameter:Plugins/addonsRepository"
- )
- readWarning |= newReadWarningParameter.GetBool("readWarning", False)
+ pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons")
+ readWarning = pref.GetBool("readWarning2022", False)
+
if not readWarning:
- if (
- QtWidgets.QMessageBox.warning(
- None,
- "FreeCAD",
- translate(
- "AddonsInstaller",
- "The addons that can be installed here are not "
- "officially part of FreeCAD, and are not reviewed "
- "by the FreeCAD team. Make sure you know what you "
- "are installing!",
- ),
- QtWidgets.QMessageBox.Cancel | QtWidgets.QMessageBox.Ok,
- )
- != QtWidgets.QMessageBox.StandardButton.Cancel
- ):
- readWarningParameter.SetBool("readWarning", True)
+ warning_dialog = FreeCADGui.PySideUic.loadUi(
+ os.path.join(os.path.dirname(__file__), "first_run.ui")
+ )
+ autocheck = pref.GetBool("AutoCheck", False)
+ download_macros = pref.GetBool("DownloadMacros", False)
+ proxy_string = pref.GetString("ProxyUrl", "")
+ if pref.GetBool("NoProxyCheck", True):
+ proxy_option = 0
+ elif pref.GetBool("SystemProxyCheck", False):
+ proxy_option = 1
+ elif pref.GetBool("UserProxyCheck", False):
+ proxy_option = 2
+
+ def toggle_proxy_list(option: int):
+ if option == 2:
+ warning_dialog.lineEditProxy.show()
+ else:
+ warning_dialog.lineEditProxy.hide()
+
+ warning_dialog.checkBoxAutoCheck.setChecked(autocheck)
+ warning_dialog.checkBoxDownloadMacroMetadata.setChecked(download_macros)
+ warning_dialog.comboBoxProxy.setCurrentIndex(proxy_option)
+ toggle_proxy_list(proxy_option)
+ if proxy_option == 2:
+ warning_dialog.lineEditProxy.setText(proxy_string)
+
+ warning_dialog.comboBoxProxy.currentIndexChanged.connect(toggle_proxy_list)
+
+ warning_dialog.labelWarning.setStyleSheet(
+ f"color:{utils.warning_color_string()};font-weight:bold;"
+ )
+
+ if warning_dialog.exec() == QtWidgets.QDialog.Accepted:
readWarning = True
+ pref.SetBool("readWarning2022", True)
+ pref.SetBool("AutoCheck", warning_dialog.checkBoxAutoCheck.isChecked())
+ pref.SetBool(
+ "DownloadMacros",
+ warning_dialog.checkBoxDownloadMacroMetadata.isChecked(),
+ )
+ selected_proxy_option = warning_dialog.comboBoxProxy.currentIndex()
+ if selected_proxy_option == 0:
+ pref.SetBool("NoProxyCheck", True)
+ pref.SetBool("SystemProxyCheck", False)
+ pref.SetBool("UserProxyCheck", False)
+ elif selected_proxy_option == 1:
+ pref.SetBool("NoProxyCheck", False)
+ pref.SetBool("SystemProxyCheck", True)
+ pref.SetBool("UserProxyCheck", False)
+ else:
+ pref.SetBool("NoProxyCheck", False)
+ pref.SetBool("SystemProxyCheck", False)
+ pref.SetBool("UserProxyCheck", True)
+ pref.SetString("ProxyUrl", warning_dialog.lineEditProxy.text())
if readWarning:
self.launch()
@@ -384,9 +416,11 @@ class CommandAddonManager:
self.activate_table_widgets,
self.populate_macros,
self.update_metadata_cache,
- self.load_macro_metadata,
self.check_updates,
]
+ pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons")
+ if pref.GetBool("DownloadMacros", False):
+ self.startup_sequence.append(self.load_macro_metadata)
self.current_progress_region = 0
self.number_of_progress_regions = len(self.startup_sequence)
self.do_next_startup_phase()
@@ -870,7 +904,6 @@ class CommandAddonManager:
self.dialog.labelStatusInfo.hide()
self.dialog.progressBar.hide()
self.dialog.buttonPauseUpdate.hide()
- self.dialog.labelUpdateInProgress.hide()
self.packageList.ui.lineEditFilter.setFocus()
def show_progress_widgets(self) -> None:
@@ -878,7 +911,6 @@ class CommandAddonManager:
self.dialog.progressBar.show()
self.dialog.buttonPauseUpdate.show()
self.dialog.labelStatusInfo.show()
- self.dialog.labelUpdateInProgress.show()
def update_progress_bar(self, current_value: int, max_value: int) -> None:
"""Update the progress bar, showing it if it's hidden"""
diff --git a/src/Mod/AddonManager/AddonManagerOptions.ui b/src/Mod/AddonManager/AddonManagerOptions.ui
index e022702023..33970bb76c 100644
--- a/src/Mod/AddonManager/AddonManagerOptions.ui
+++ b/src/Mod/AddonManager/AddonManagerOptions.ui
@@ -6,8 +6,8 @@
0
0
- 390
- 628
+ 388
+ 621
@@ -35,6 +35,19 @@ installed addons will be checked for available updates
+ -
+
+
+ Download Macro metadata (approximately 10MB)
+
+
+ DownloadMacros
+
+
+ Addons
+
+
+
-
-
diff --git a/src/Mod/AddonManager/CMakeLists.txt b/src/Mod/AddonManager/CMakeLists.txt
index de711853f1..9ef2819ea1 100644
--- a/src/Mod/AddonManager/CMakeLists.txt
+++ b/src/Mod/AddonManager/CMakeLists.txt
@@ -13,6 +13,7 @@ SET(AddonManager_SRCS
addonmanager_workers.py
AddonManager.ui
AddonManagerOptions.ui
+ first_run.ui
compact_view.py
expanded_view.py
package_list.py
diff --git a/src/Mod/AddonManager/addonmanager_utilities.py b/src/Mod/AddonManager/addonmanager_utilities.py
index c7f516b9ef..a0cd0236fe 100644
--- a/src/Mod/AddonManager/addonmanager_utilities.py
+++ b/src/Mod/AddonManager/addonmanager_utilities.py
@@ -300,4 +300,15 @@ def fix_relative_links(text, base_url):
return new_text
+def warning_color_string() -> str:
+ warningColorString = "rgb(255,0,0)"
+ if hasattr(QtWidgets.QApplication.instance(), "styleSheet"):
+ # Qt 5.9 doesn't give a QApplication instance, so can't give the stylesheet info
+ if "dark" in QtWidgets.QApplication.instance().styleSheet().lower():
+ warningColorString = "rgb(255,50,50)"
+ else:
+ warningColorString = "rgb(200,0,0)"
+ return warningColorString
+
+
# @}
diff --git a/src/Mod/AddonManager/first_run.ui b/src/Mod/AddonManager/first_run.ui
new file mode 100644
index 0000000000..4daf95476c
--- /dev/null
+++ b/src/Mod/AddonManager/first_run.ui
@@ -0,0 +1,144 @@
+
+
+ Dialog
+
+
+ Qt::WindowModal
+
+
+
+ 0
+ 0
+ 398
+ 237
+
+
+
+ Welcome to the Addon Manager
+
+
+
-
+
+
+ The addons that can be installed here are not officially part of FreeCAD, and are not reviewed by the FreeCAD team. Make sure you know what you are installing!
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Download Settings
+
+
+
+ -
+
+
+ Automatically check installed Addons for updates
+
+
+
+ -
+
+
+ Download Macro metadata (approximately 10MB)
+
+
+
+ -
+
+
-
+
+
-
+
+ No proxy
+
+
+ -
+
+ System proxy
+
+
+ -
+
+ User-defined proxy:
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ These and other settings are available in the FreeCAD Preferences window.
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+