Check unsaved changes before opening of the ConfigWizard

This commit is contained in:
YuSanka 2021-09-01 13:48:07 +02:00
parent d0e37aada8
commit 20453f412b
6 changed files with 13 additions and 12 deletions

View file

@ -240,7 +240,6 @@ PresetsConfigSubstitutions PresetBundle::load_presets(AppConfig &config, Forward
if (! errors_cummulative.empty()) if (! errors_cummulative.empty())
throw Slic3r::RuntimeError(errors_cummulative); throw Slic3r::RuntimeError(errors_cummulative);
// ysToDo : set prefered filament or sla_material (relates to print technology) and force o use of preffered printer model if it was added
this->load_selections(config, preferred_selection); this->load_selections(config, preferred_selection);
return substitutions; return substitutions;

View file

@ -2082,10 +2082,10 @@ std::vector<std::pair<unsigned int, std::string>> GUI_App::get_selected_presets(
// This is called when closing the application, when loading a config file or when starting the config wizard // This is called when closing the application, when loading a config file or when starting the config wizard
// to notify the user whether he is aware that some preset changes will be lost. // to notify the user whether he is aware that some preset changes will be lost.
bool GUI_App::check_and_save_current_preset_changes(const wxString& header) bool GUI_App::check_and_save_current_preset_changes(const wxString& header, const wxString& caption)
{ {
if (/*this->plater()->model().objects.empty() && */has_current_preset_changes()) { if (/*this->plater()->model().objects.empty() && */has_current_preset_changes()) {
UnsavedChangesDialog dlg(header); UnsavedChangesDialog dlg(header, caption);
if (wxGetApp().app_config->get("default_action_on_close_application") == "none" && dlg.ShowModal() == wxID_CANCEL) if (wxGetApp().app_config->get("default_action_on_close_application") == "none" && dlg.ShowModal() == wxID_CANCEL)
return false; return false;
@ -2334,10 +2334,13 @@ bool GUI_App::run_wizard(ConfigWizard::RunReason reason, ConfigWizard::StartPage
{ {
wxCHECK_MSG(mainframe != nullptr, false, "Internal error: Main frame not created / null"); wxCHECK_MSG(mainframe != nullptr, false, "Internal error: Main frame not created / null");
if (reason == ConfigWizard::RR_USER) if (reason == ConfigWizard::RR_USER) {
if (PresetUpdater::UpdateResult result = preset_updater->config_update(app_config->orig_version(), PresetUpdater::UpdateParams::FORCED_BEFORE_WIZARD); wxString header = _L("Updates to Configuration Wizard may cause an another preset selection and lost of preset modification as a result.\n"
result == PresetUpdater::R_ALL_CANCELED) "So, check unsaved changes and save them if necessary.") + "\n";
if (!check_and_save_current_preset_changes(header, _L("ConfigWizard is opening")) ||
preset_updater->config_update(app_config->orig_version(), PresetUpdater::UpdateParams::FORCED_BEFORE_WIZARD) == PresetUpdater::R_ALL_CANCELED)
return false; return false;
}
if (! m_wizard) { if (! m_wizard) {
wxBusyCursor wait; wxBusyCursor wait;

View file

@ -247,7 +247,7 @@ public:
bool has_current_preset_changes() const; bool has_current_preset_changes() const;
void update_saved_preset_from_current_preset(); void update_saved_preset_from_current_preset();
std::vector<std::pair<unsigned int, std::string>> get_selected_presets() const; std::vector<std::pair<unsigned int, std::string>> get_selected_presets() const;
bool check_and_save_current_preset_changes(const wxString& header = wxString()); bool check_and_save_current_preset_changes(const wxString& header = wxString(), const wxString& caption = wxString());
bool check_print_host_queue(); bool check_print_host_queue();
bool checked_tab(Tab* tab); bool checked_tab(Tab* tab);
void load_current_presets(bool check_printer_presets = true); void load_current_presets(bool check_printer_presets = true);

View file

@ -636,8 +636,7 @@ PlaterPresetComboBox::~PlaterPresetComboBox()
static void run_wizard(ConfigWizard::StartPage sp) static void run_wizard(ConfigWizard::StartPage sp)
{ {
if (wxGetApp().check_and_save_current_preset_changes()) wxGetApp().run_wizard(ConfigWizard::RR_USER, sp);
wxGetApp().run_wizard(ConfigWizard::RR_USER, sp);
} }
void PlaterPresetComboBox::OnSelect(wxCommandEvent &evt) void PlaterPresetComboBox::OnSelect(wxCommandEvent &evt)

View file

@ -752,8 +752,8 @@ std::vector<std::string> DiffViewCtrl::selected_options()
// UnsavedChangesDialog // UnsavedChangesDialog
//------------------------------------------ //------------------------------------------
UnsavedChangesDialog::UnsavedChangesDialog(const wxString& header) UnsavedChangesDialog::UnsavedChangesDialog(const wxString& header, const wxString& caption/* = wxString()*/)
: DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, _L("PrusaSlicer is closing: Unsaved Changes"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) : DPIDialog(static_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, (caption.IsEmpty() ? _L("PrusaSlicer is closing") : caption) + ": " + _L("Unsaved Changes"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
{ {
m_app_config_key = "default_action_on_close_application"; m_app_config_key = "default_action_on_close_application";

View file

@ -263,7 +263,7 @@ class UnsavedChangesDialog : public DPIDialog
std::vector<std::pair<std::string, Preset::Type>> names_and_types; std::vector<std::pair<std::string, Preset::Type>> names_and_types;
public: public:
UnsavedChangesDialog(const wxString& header); UnsavedChangesDialog(const wxString& header, const wxString& caption = wxString());
UnsavedChangesDialog(Preset::Type type, PresetCollection* dependent_presets, const std::string& new_selected_preset); UnsavedChangesDialog(Preset::Type type, PresetCollection* dependent_presets, const std::string& new_selected_preset);
~UnsavedChangesDialog() {} ~UnsavedChangesDialog() {}