diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp
index 2d2fbd8d7..0296fb154 100644
--- a/src/slic3r/GUI/ConfigWizard.cpp
+++ b/src/slic3r/GUI/ConfigWizard.cpp
@@ -1445,9 +1445,11 @@ bool PageDownloader::on_finish_downloader() const
return downloader->on_finish();
}
-bool DownloaderUtils::Worker::perform_register()
+bool DownloaderUtils::Worker::perform_register(const std::string& path_override/* = {}*/)
{
boost::filesystem::path aux_dest (GUI::into_u8(path_name()));
+ if (!path_override.empty())
+ aux_dest = boost::filesystem::path(path_override);
boost::system::error_code ec;
boost::filesystem::path chosen_dest = boost::filesystem::absolute(aux_dest, ec);
if(ec)
diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp
index 17c9fb25f..c7c6e5152 100644
--- a/src/slic3r/GUI/ConfigWizard_private.hpp
+++ b/src/slic3r/GUI/ConfigWizard_private.hpp
@@ -430,7 +430,6 @@ class Worker : public wxBoxSizer
bool perform_registration_linux { false };
#endif // __linux__
- bool perform_register();
void deregister();
public:
@@ -445,7 +444,7 @@ public:
void set_path_name(const std::string& name);
bool on_finish();
-
+ bool perform_register(const std::string& path_override = {});
#ifdef __linux__
bool get_perform_registration_linux() { return perform_registration_linux; }
#endif // __linux__
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index b00688059..69167c9fd 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -79,6 +79,7 @@
#include "DesktopIntegrationDialog.hpp"
#include "SendSystemInfoDialog.hpp"
#include "Downloader.hpp"
+#include "ConfigWizard_private.hpp"
#include "BitmapCache.hpp"
#include "Notebook.hpp"
@@ -1010,7 +1011,6 @@ std::string GUI_App::check_older_app_config(Semver current_version, bool backup)
return {};
BOOST_LOG_TRIVIAL(info) << "last app config file used: " << older_data_dir_path;
// ask about using older data folder
-
InfoDialog msg(nullptr
, format_wxstr(_L("You are opening %1% version %2%."), SLIC3R_APP_NAME, SLIC3R_VERSION)
, backup ?
@@ -1155,12 +1155,16 @@ bool GUI_App::on_init_inner()
std::string older_data_dir_path;
if (m_app_conf_exists) {
- if (app_config->orig_version().valid() && app_config->orig_version() < *Semver::parse(SLIC3R_VERSION))
+ if (app_config->orig_version().valid() && app_config->orig_version() < *Semver::parse(SLIC3R_VERSION)) {
// Only copying configuration if it was saved with a newer slicer than the one currently running.
older_data_dir_path = check_older_app_config(app_config->orig_version(), true);
+ m_last_app_conf_lower_version = true;
+ }
} else {
// No AppConfig exists, fresh install. Always try to copy from an alternate location, don't make backup of the current configuration.
older_data_dir_path = check_older_app_config(Semver(), false);
+ if (!older_data_dir_path.empty())
+ m_last_app_conf_lower_version = true;
}
#ifdef _MSW_DARK_MODE
@@ -3078,6 +3082,29 @@ void GUI_App::show_desktop_integration_dialog()
#endif //__linux__
}
+void GUI_App::show_downloader_registration_dialog()
+{
+ InfoDialog msg(nullptr
+ , format_wxstr(_L("Welcome to %1% version %2%."), SLIC3R_APP_NAME, SLIC3R_VERSION)
+ , format_wxstr(_L(
+ "Do you wish to register downloads from Printables.com"
+ "\nfor this %1% %2% executable?"
+ "\n\nDownloads can be registered for only 1 executable at time."
+ ), SLIC3R_APP_NAME, SLIC3R_VERSION)
+ , true, wxYES_NO);
+ if (msg.ShowModal() == wxID_YES) {
+ auto downloader = new DownloaderUtils::Worker(nullptr);
+ downloader->perform_register(app_config->get("url_downloader_dest"));
+#ifdef __linux__
+ if (downloader->get_perform_registration_linux())
+ DesktopIntegrationDialog::perform_desktop_integration(true);
+#endif // __linux__
+ } else {
+ app_config->set("downloader_url_registered", "0");
+ }
+}
+
+
#if ENABLE_THUMBNAIL_GENERATOR_DEBUG
void GUI_App::gcode_thumbnails_debug()
{
@@ -3225,7 +3252,13 @@ bool GUI_App::config_wizard_startup()
run_wizard(ConfigWizard::RR_DATA_LEGACY);
return true;
+ }
+#ifndef __APPLE__
+ else if (is_editor() && m_last_app_conf_lower_version && app_config->get("downloader_url_registered") == "1") {
+ show_downloader_registration_dialog();
+ return true;
}
+#endif
return false;
}
diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp
index 70d72d5e3..1a58bd809 100644
--- a/src/slic3r/GUI/GUI_App.hpp
+++ b/src/slic3r/GUI/GUI_App.hpp
@@ -122,6 +122,7 @@ private:
bool m_initialized { false };
bool m_post_initialized { false };
bool m_app_conf_exists{ false };
+ bool m_last_app_conf_lower_version{ false };
EAppMode m_app_mode{ EAppMode::Editor };
bool m_is_recreating_gui{ false };
#ifdef __linux__
@@ -343,6 +344,7 @@ public:
bool may_switch_to_SLA_preset(const wxString& caption);
bool run_wizard(ConfigWizard::RunReason reason, ConfigWizard::StartPage start_page = ConfigWizard::SP_WELCOME);
void show_desktop_integration_dialog();
+ void show_downloader_registration_dialog();
#if ENABLE_THUMBNAIL_GENERATOR_DEBUG
// temporary and debug only -> extract thumbnails from selected gcode and save them as png files