Revert "Merge branch 'dk_master_desktop_integration' into master_27x"

This reverts commit 4b50c41799c867047a510a2a06f3c8e75a6b9dac, reversing
changes made to b9d8b8ce72cc6f32c35a87bfe5a6e5dd21c37c18.
This commit is contained in:
Lukas Matena 2024-03-31 07:38:08 +02:00
parent a50dae532a
commit d421f5b1f8
4 changed files with 44 additions and 65 deletions

View File

@ -1473,11 +1473,12 @@ PageDownloader::PageDownloader(ConfigWizard* parent)
boldfont.SetWeight(wxFONTWEIGHT_BOLD);
append_spacer(VERTICAL_SPACING);
auto* box_allow_downloads = new wxCheckBox(this, wxID_ANY, _L("Allow built-in downloader"));
// TODO: Do we want it like this? The downloader is allowed for very first time the wizard is run.
bool box_allow_value = (app_config->has("downloader_url_registered") ? app_config->get_bool("downloader_url_registered") : true);
box_allow_downloads->SetValue(box_allow_value);
append(box_allow_downloads);
append(box_allow_downloads);
// append info line with link on printables.com
{
@ -1517,13 +1518,13 @@ PageDownloader::PageDownloader(ConfigWizard* parent)
));
}
#if defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#ifdef __linux__
append_text(wxString::Format(_L(
"On Linux systems the process of registration also creates desktop integration files for this version of application."
)));
#endif //(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#endif
box_allow_downloads->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& event) { this->m_downloader->allow(event.IsChecked()); });
box_allow_downloads->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& event) { this->m_downloader->allow(event.IsChecked()); });
m_downloader = new DownloaderUtils::Worker(this);
append(m_downloader);
@ -1581,7 +1582,7 @@ bool DownloaderUtils::Worker::perform_register(const std::string& path_override/
#elif __APPLE__
// Apple registers for custom url in info.plist thus it has to be already registered since build.
// The url will always trigger opening of prusaslicer and we have to check that user has allowed it. (GUI_App::MacOpenURL is the triggered method)
#elif defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#else
// the performation should be called later during desktop integration
perform_registration_linux = true;
#endif
@ -1599,7 +1600,7 @@ void DownloaderUtils::Worker::deregister()
key_full = key_string;
#elif __APPLE__
// TODO
#elif defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#else
BOOST_LOG_TRIVIAL(debug) << "DesktopIntegrationDialog::undo_downloader_registration";
DesktopIntegrationDialog::undo_downloader_registration();
perform_registration_linux = false;
@ -2407,9 +2408,7 @@ void ConfigWizard::priv::load_pages()
btn_finish->Enable(any_fff_selected || any_sla_selected || custom_printer_selected || custom_printer_in_bundle);
index->add_page(page_update);
#if !defined(__linux__) || (defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION))
index->add_page(page_downloader);
#endif
index->add_page(page_reload_from_disk);
#ifdef _WIN32
index->add_page(page_files_association);
@ -2776,12 +2775,12 @@ void ConfigWizard::priv::on_3rdparty_install(const VendorProfile *vendor, bool i
bool ConfigWizard::priv::on_bnt_finish()
{
wxBusyCursor wait;
#if !defined(__linux__) || (defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION))
if (!page_downloader->on_finish_downloader()) {
index->go_to(page_downloader);
return false;
}
#endif
/* If some printers were added/deleted, but related MaterialPage wasn't activated,
* than last changes wouldn't be updated for filaments/materials.
* SO, do that before check_and_install_missing_materials()
@ -3064,14 +3063,14 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese
if ((check_unsaved_preset_changes = install_bundles.size() > 0))
header = _L_PLURAL("A new vendor was installed and one of its printers will be activated", "New vendors were installed and one of theirs printers will be activated", install_bundles.size());
#if defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#ifdef __linux__
// Desktop integration on Linux
BOOST_LOG_TRIVIAL(debug) << "ConfigWizard::priv::apply_config integrate_desktop" << page_welcome->integrate_desktop() << " perform_registration_linux " << page_downloader->m_downloader->get_perform_registration_linux();
if (page_welcome->integrate_desktop())
DesktopIntegrationDialog::perform_desktop_integration();
if (page_downloader->m_downloader->get_perform_registration_linux())
DesktopIntegrationDialog::perform_downloader_desktop_integration();
#endif //(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#endif
// Decide whether to create snapshot based on run_reason and the reset profile checkbox
bool snapshot = true;
@ -3405,9 +3404,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent)
p->add_page(p->page_update = new PageUpdate(this));
#if !defined(__linux__) || (defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION))
p->add_page(p->page_downloader = new PageDownloader(this));
#endif
p->add_page(p->page_reload_from_disk = new PageReloadFromDisk(this));
#ifdef _WIN32
p->add_page(p->page_files_association = new PageFilesAssociation(this));

View File

@ -2987,7 +2987,13 @@ void GUI_App::MacOpenFiles(const wxArrayString &fileNames)
void GUI_App::MacOpenURL(const wxString& url)
{
start_download(into_u8(url));
if (app_config && !app_config->get_bool("downloader_url_registered"))
{
notification_manager()->push_notification(NotificationType::URLNotRegistered);
BOOST_LOG_TRIVIAL(error) << "Recieved command to open URL, but it is not allowed in app configuration. URL: " << url;
return;
}
start_download(boost::nowide::narrow(url));
}
#endif /* __APPLE */
@ -3158,9 +3164,6 @@ void GUI_App::show_desktop_integration_dialog()
void GUI_App::show_downloader_registration_dialog()
{
#if defined(__linux__) && !defined(SLIC3R_DESKTOP_INTEGRATION)
return;
#endif
InfoDialog msg(nullptr
, format_wxstr(_L("Welcome to %1% version %2%."), SLIC3R_APP_NAME, SLIC3R_VERSION)
, format_wxstr(_L(
@ -3172,10 +3175,10 @@ void GUI_App::show_downloader_registration_dialog()
if (msg.ShowModal() == wxID_YES) {
auto downloader_worker = new DownloaderUtils::Worker(nullptr);
downloader_worker->perform_register(app_config->get("url_downloader_dest"));
#if defined(__linux__)
#ifdef __linux__
if (downloader_worker->get_perform_registration_linux())
DesktopIntegrationDialog::perform_downloader_desktop_integration();
#endif //(__linux__)
#endif // __linux__
} else {
app_config->set("downloader_url_registered", "0");
}
@ -3555,27 +3558,14 @@ void GUI_App::start_download(std::string url)
BOOST_LOG_TRIVIAL(error) << "Could not start URL download: plater is nullptr.";
return;
}
// Windows register and deregister executable path to registry - cant get here when not registered
// Apple registers via info.plist attached to exectable - might get here
// Linux registers via desktop integration file - might get here only if such file was created outside Slicer.
// Desktop integration is limited with SLIC3R_DESKTOP_INTEGRATION (cmake option).
#if defined(__APPLE__) || (defined(__linux__) && !defined(SLIC3R_DESKTOP_INTEGRATION))
if (app_config && app_config->get_bool("downloader_url_registered")) {
notification_manager()->push_notification(NotificationType::URLNotRegistered);
BOOST_LOG_TRIVIAL(error) << "Recieved command to open URL, but it is not allowed in app configuration. URL: " << url;
return;
}
#endif //defined(__APPLE__) || (defined(__linux__) && !defined(SLIC3R_DESKTOP_INTEGRATION))
//lets always init so if the download dest folder was changed, new dest is used
boost::filesystem::path dest_folder(app_config->get("url_downloader_dest"));
if (dest_folder.empty() || !boost::filesystem::is_directory(dest_folder)) {
std::string msg = _u8L("Could not start URL download. Destination folder is not set. Please choose destination folder in Configuration Wizard.");
BOOST_LOG_TRIVIAL(error) << msg;
show_error(nullptr, msg);
return;
}
boost::filesystem::path dest_folder(app_config->get("url_downloader_dest"));
if (dest_folder.empty() || !boost::filesystem::is_directory(dest_folder)) {
std::string msg = _u8L("Could not start URL download. Destination folder is not set. Please choose destination folder in Configuration Wizard.");
BOOST_LOG_TRIVIAL(error) << msg;
show_error(nullptr, msg);
return;
}
m_downloader->init(dest_folder);
m_downloader->start_download(url);
}

View File

@ -126,7 +126,7 @@ enum class NotificationType
ExportOngoing,
// Progressbar of download from prusaslicer:// url
URLDownload,
// MacOS and Linux flatpack (SLIC3R_DESKTOP_INTEGRATION = 0) specific - PS comes forward even when downloader is not allowed
// MacOS specific - PS comes forward even when downloader is not allowed
URLNotRegistered,
// Config file was detected during startup, open wifi config dialog via hypertext
WifiConfigFileDetected

View File

@ -1,11 +1,11 @@
///|/ Copyright (c) Prusa Research 2018 - 2023 Oleksandra Iushchenko @YuSanka, David Kocík @kocikdav, Vojtěch Bubník @bubnikv, Pavel Mikuš @Godrak, Enrico Turri @enricoturri1966, Lukáš Matěna @lukasmatena, Vojtěch Král @vojtechkral
///|/
///|/ ported from lib/Slic3r/GUI/Preferences.pm:
///|/ Copyright (c) Prusa Research 2016 - 2018 Vojtěch Bubník @bubnikv
///|/ Copyright (c) Slic3r 2013 - 2014 Alessandro Ranellucci @alranel
///|/
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
///|/
///|/ Copyright (c) Prusa Research 2018 - 2023 Oleksandra Iushchenko @YuSanka, David Kocík @kocikdav, Vojtěch Bubník @bubnikv, Pavel Mikuš @Godrak, Enrico Turri @enricoturri1966, Lukáš Matěna @lukasmatena, Vojtěch Král @vojtechkral
///|/
///|/ ported from lib/Slic3r/GUI/Preferences.pm:
///|/ Copyright (c) Prusa Research 2016 - 2018 Vojtěch Bubník @bubnikv
///|/ Copyright (c) Slic3r 2013 - 2014 Alessandro Ranellucci @alranel
///|/
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
///|/
#include "Preferences.hpp"
#include "OptionsGroup.hpp"
#include "GUI_App.hpp"
@ -28,13 +28,9 @@
#ifdef WIN32
#include <wx/msw/registry.h>
#endif // WIN32
#if defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#ifdef __linux__
#include "DesktopIntegrationDialog.hpp"
#endif //(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#if defined(__linux__) && !defined(SLIC3R_DESKTOP_INTEGRATION)
#include "NotificationManager.hpp"
#endif //(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
#endif //__linux__
namespace Slic3r {
@ -134,10 +130,10 @@ void PreferencesDialog::show(const std::string& highlight_opt_key /*= std::strin
if (wxGetApp().is_editor()) {
auto app_config = get_app_config();
#if !defined(__linux__) || (defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION))
downloader->set_path_name(app_config->get("url_downloader_dest"));
downloader->allow(!app_config->has("downloader_url_registered") || app_config->get_bool("downloader_url_registered"));
#endif
for (const std::string& opt_key : {"suppress_hyperlinks", "downloader_url_registered"})
m_optgroup_other->set_value(opt_key, app_config->get_bool(opt_key));
@ -644,17 +640,15 @@ void PreferencesDialog::build()
//L("If enabled, the descriptions of configuration parameters in settings tabs wouldn't work as hyperlinks. "
// "If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks."),
app_config->get_bool("suppress_hyperlinks"));
#if !defined(__linux__) || (defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION))
append_bool_option(m_optgroup_other, "downloader_url_registered",
L("Allow downloads from Printables.com"),
L("If enabled, PrusaSlicer will be allowed to download from Printables.com"),
app_config->get_bool("downloader_url_registered"));
#endif
activate_options_tab(m_optgroup_other);
#if !defined(__linux__) || (defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION))
create_downloader_path_sizer();
#endif
create_settings_font_widget();
#if ENABLE_ENVIRONMENT_MAP
@ -759,18 +753,16 @@ void PreferencesDialog::update_ctrls_alignment()
void PreferencesDialog::accept(wxEvent&)
{
#if !defined(__linux__) || (defined(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION))
if(wxGetApp().is_editor()) {
if (const auto it = m_values.find("downloader_url_registered"); it != m_values.end())
downloader->allow(it->second == "1");
if (!downloader->on_finish())
return;
#if defined(__linux__)
#ifdef __linux__
if( downloader->get_perform_registration_linux())
DesktopIntegrationDialog::perform_downloader_desktop_integration();
#endif
#endif // __linux__
}
#endif
std::vector<std::string> options_to_recreate_GUI = { "no_defaults", "tabs_as_menu", "sys_menu_enabled", "font_pt_size", "suppress_round_corners" };