Fix double wizard on incompatible bundle, for real this time
This commit is contained in:
parent
b205daa437
commit
eebb9e3fe7
@ -185,8 +185,11 @@ bool GUI_App::on_init_inner()
|
|||||||
|
|
||||||
app_conf_exists = app_config->exists();
|
app_conf_exists = app_config->exists();
|
||||||
// load settings
|
// load settings
|
||||||
if (app_config->exists())
|
app_conf_exists = app_config->exists();
|
||||||
|
if (app_conf_exists) {
|
||||||
app_config->load();
|
app_config->load();
|
||||||
|
}
|
||||||
|
|
||||||
app_config->set("version", SLIC3R_VERSION);
|
app_config->set("version", SLIC3R_VERSION);
|
||||||
app_config->save();
|
app_config->save();
|
||||||
|
|
||||||
@ -249,9 +252,13 @@ bool GUI_App::on_init_inner()
|
|||||||
if (once) {
|
if (once) {
|
||||||
once = false;
|
once = false;
|
||||||
|
|
||||||
|
PresetUpdater::UpdateResult updater_result;
|
||||||
try {
|
try {
|
||||||
if (!preset_updater->config_update()) {
|
updater_result = preset_updater->config_update();
|
||||||
|
if (updater_result == PresetUpdater::R_INCOMPAT_EXIT) {
|
||||||
mainframe->Close();
|
mainframe->Close();
|
||||||
|
} else if (updater_result == PresetUpdater::R_INCOMPAT_CONFIGURED) {
|
||||||
|
app_conf_exists = true;
|
||||||
}
|
}
|
||||||
} catch (const std::exception &ex) {
|
} catch (const std::exception &ex) {
|
||||||
show_error(nullptr, from_u8(ex.what()));
|
show_error(nullptr, from_u8(ex.what()));
|
||||||
|
@ -567,9 +567,9 @@ void PresetUpdater::slic3r_update_notify()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PresetUpdater::config_update() const
|
PresetUpdater::UpdateResult PresetUpdater::config_update() const
|
||||||
{
|
{
|
||||||
if (! p->enabled_config_update) { return true; }
|
if (! p->enabled_config_update) { return R_NOOP; }
|
||||||
|
|
||||||
auto updates = p->get_config_updates();
|
auto updates = p->get_config_updates();
|
||||||
if (updates.incompats.size() > 0) {
|
if (updates.incompats.size() > 0) {
|
||||||
@ -603,15 +603,15 @@ bool PresetUpdater::config_update() const
|
|||||||
p->perform_updates(std::move(updates));
|
p->perform_updates(std::move(updates));
|
||||||
GUI::ConfigWizard wizard(nullptr, GUI::ConfigWizard::RR_DATA_INCOMPAT);
|
GUI::ConfigWizard wizard(nullptr, GUI::ConfigWizard::RR_DATA_INCOMPAT);
|
||||||
if (! wizard.run(GUI::wxGetApp().preset_bundle, this)) {
|
if (! wizard.run(GUI::wxGetApp().preset_bundle, this)) {
|
||||||
return false;
|
return R_INCOMPAT_EXIT;
|
||||||
}
|
}
|
||||||
GUI::wxGetApp().load_current_presets();
|
GUI::wxGetApp().load_current_presets();
|
||||||
|
return R_INCOMPAT_CONFIGURED;
|
||||||
} else {
|
} else {
|
||||||
BOOST_LOG_TRIVIAL(info) << "User wants to exit Slic3r, bye...";
|
BOOST_LOG_TRIVIAL(info) << "User wants to exit Slic3r, bye...";
|
||||||
return false;
|
return R_INCOMPAT_EXIT;
|
||||||
}
|
}
|
||||||
}
|
} else if (updates.updates.size() > 0) {
|
||||||
else if (updates.updates.size() > 0) {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << boost::format("Update of %1% bundles available. Asking for confirmation ...") % updates.updates.size();
|
BOOST_LOG_TRIVIAL(info) << boost::format("Update of %1% bundles available. Asking for confirmation ...") % updates.updates.size();
|
||||||
|
|
||||||
std::vector<GUI::MsgUpdateConfig::Update> updates_msg;
|
std::vector<GUI::MsgUpdateConfig::Update> updates_msg;
|
||||||
@ -633,14 +633,16 @@ bool PresetUpdater::config_update() const
|
|||||||
auto *app_config = GUI::wxGetApp().app_config;
|
auto *app_config = GUI::wxGetApp().app_config;
|
||||||
GUI::wxGetApp().preset_bundle->load_presets(*app_config);
|
GUI::wxGetApp().preset_bundle->load_presets(*app_config);
|
||||||
GUI::wxGetApp().load_current_presets();
|
GUI::wxGetApp().load_current_presets();
|
||||||
|
return R_UPDATE_INSTALLED;
|
||||||
} else {
|
} else {
|
||||||
BOOST_LOG_TRIVIAL(info) << "User refused the update";
|
BOOST_LOG_TRIVIAL(info) << "User refused the update";
|
||||||
|
return R_UPDATE_REJECT;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
BOOST_LOG_TRIVIAL(info) << "No configuration updates available.";
|
BOOST_LOG_TRIVIAL(info) << "No configuration updates available.";
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return R_NOOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PresetUpdater::install_bundles_rsrc(std::vector<std::string> bundles, bool snapshot) const
|
void PresetUpdater::install_bundles_rsrc(std::vector<std::string> bundles, bool snapshot) const
|
||||||
|
@ -28,9 +28,17 @@ public:
|
|||||||
// If version check is enabled, check if chaced online slic3r version is newer, notify if so.
|
// If version check is enabled, check if chaced online slic3r version is newer, notify if so.
|
||||||
void slic3r_update_notify();
|
void slic3r_update_notify();
|
||||||
|
|
||||||
|
enum UpdateResult {
|
||||||
|
R_NOOP,
|
||||||
|
R_INCOMPAT_EXIT,
|
||||||
|
R_INCOMPAT_CONFIGURED,
|
||||||
|
R_UPDATE_INSTALLED,
|
||||||
|
R_UPDATE_REJECT,
|
||||||
|
};
|
||||||
|
|
||||||
// If updating is enabled, check if updates are available in cache, if so, ask about installation.
|
// If updating is enabled, check if updates are available in cache, if so, ask about installation.
|
||||||
// A false return value implies Slic3r should exit due to incompatibility of configuration.
|
// A false return value implies Slic3r should exit due to incompatibility of configuration.
|
||||||
bool config_update() const;
|
UpdateResult config_update() const;
|
||||||
|
|
||||||
// "Update" a list of bundles from resources (behaves like an online update).
|
// "Update" a list of bundles from resources (behaves like an online update).
|
||||||
void install_bundles_rsrc(std::vector<std::string> bundles, bool snapshot = true) const;
|
void install_bundles_rsrc(std::vector<std::string> bundles, bool snapshot = true) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user