Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_reload_from_disk

This commit is contained in:
Enrico Turri 2019-09-17 08:18:20 +02:00
commit 1624b634dd
2 changed files with 36 additions and 0 deletions

View file

@ -168,6 +168,23 @@ bool ObjectSettings::update_settings_list()
return true;
}
bool ObjectSettings::add_missed_options(DynamicPrintConfig* config_to, const DynamicPrintConfig& config_from)
{
bool is_added = false;
if (wxGetApp().plater()->printer_technology() == ptFFF)
{
if (config_to->has("fill_density") && !config_to->has("fill_pattern"))
{
if (config_from.option<ConfigOptionPercent>("fill_density")->value == 100) {
config_to->set_key_value("fill_pattern", config_from.option("fill_pattern")->clone());
is_added = true;
}
}
}
return is_added;
}
void ObjectSettings::update_config_values(DynamicPrintConfig* config)
{
const auto objects_model = wxGetApp().obj_list()->GetModel();
@ -185,6 +202,12 @@ void ObjectSettings::update_config_values(DynamicPrintConfig* config)
auto load_config = [this, config, &main_config]()
{
/* Additional check for overrided options.
* There is a case, when some options should to be added,
* to avoid check loop in the next configuration update
*/
bool is_added = add_missed_options(config, main_config);
// load checked values from main_config to config
config->apply_only(main_config, config->keys(), true);
// Initialize UI components with the config values.
@ -192,6 +215,14 @@ void ObjectSettings::update_config_values(DynamicPrintConfig* config)
og->reload_config();
// next config check
update_config_values(config);
if (is_added) {
wxTheApp->CallAfter([this]() {
wxWindowUpdateLocker noUpdates(m_parent);
update_settings_list();
m_parent->Layout();
});
}
};
auto get_field = [this](const t_config_option_key & opt_key, int opt_index)

View file

@ -48,6 +48,11 @@ public:
~ObjectSettings() {}
bool update_settings_list();
/* Additional check for override options: Add options, if its needed.
* Example: if Infill is set to 100%, and Fill Pattern is missed in config_to,
* we should add fill_pattern to avoid endless loop in update
*/
bool add_missed_options(DynamicPrintConfig *config_to, const DynamicPrintConfig &config_from);
void update_config_values(DynamicPrintConfig*config);
void UpdateAndShow(const bool show) override;
void msw_rescale();