Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuSanka <yusanka@gmail.com>2019-08-22 11:25:19 +0300
committerYuSanka <yusanka@gmail.com>2019-08-22 11:25:19 +0300
commitea4f76ea801260b49f7861278b220f9cc68c3f77 (patch)
treefa43a76db4da5751a4fbbc553b698c416c55acc8 /src/slic3r/GUI/GUI_ObjectSettings.cpp
parent463783e092e1905eb8ea4e76560dbd931c41a9c8 (diff)
Implemented update for overridden options on sidebar
Diffstat (limited to 'src/slic3r/GUI/GUI_ObjectSettings.cpp')
-rw-r--r--src/slic3r/GUI/GUI_ObjectSettings.cpp43
1 files changed, 35 insertions, 8 deletions
diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp
index ab20b702c..0279904b4 100644
--- a/src/slic3r/GUI/GUI_ObjectSettings.cpp
+++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp
@@ -168,13 +168,26 @@ bool ObjectSettings::update_settings_list()
return true;
}
-void ObjectSettings::update_config_values(DynamicPrintConfig*config)
+void ObjectSettings::update_config_values(DynamicPrintConfig* config)
{
- auto load_config = [this, config]()
+ const auto objects_model = wxGetApp().obj_list()->GetModel();
+ const auto item = wxGetApp().obj_list()->GetSelection();
+ const auto printer_technology = wxGetApp().plater()->printer_technology();
+ const bool is_object_settings = objects_model->GetItemType(objects_model->GetParent(item)) == itObject;
+
+ // update config values according to configuration hierarchy
+ DynamicPrintConfig main_config = printer_technology == ptFFF ?
+ wxGetApp().preset_bundle->prints.get_edited_preset().config :
+ wxGetApp().preset_bundle->sla_prints.get_edited_preset().config;
+
+ auto load_config = [this, config, &main_config]()
{
+ // load checked values from main_config to config
+ config->apply_only(main_config, config->keys(), true);
+
for (auto og : m_og_settings)
- og->reload_config();
- update_config_values(config);
+ og->reload_config(); // load new config values to accorded fields
+ update_config_values(config); // next config che
};
auto get_field = [this](const t_config_option_key & opt_key)
@@ -188,11 +201,25 @@ void ObjectSettings::update_config_values(DynamicPrintConfig*config)
return field;
};
- ConfigManipulation config_manipulation(parent(), load_config, get_field, nullptr);
+ ConfigManipulation config_manipulation(load_config, get_field, nullptr, config);
+
+ if (!is_object_settings)
+ {
+ const int obj_idx = objects_model->GetObjectIdByItem(item);
+ assert(obj_idx >= 0);
+ DynamicPrintConfig* obj_config = &wxGetApp().model().objects[obj_idx]->config;
+
+ main_config.apply(*obj_config, true);
+ printer_technology == ptFFF ? config_manipulation.update_print_fff_config(&main_config) :
+ config_manipulation.update_print_sla_config(&main_config) ;
+ }
+
+ main_config.apply(*config, true);
+ printer_technology == ptFFF ? config_manipulation.update_print_fff_config(&main_config) :
+ config_manipulation.update_print_sla_config(&main_config) ;
- wxGetApp().plater()->printer_technology() == ptFFF ?
- config_manipulation.update_print_fff_options(config) :
- config_manipulation.update_print_sla_options(config) ;
+ printer_technology == ptFFF ? config_manipulation.toggle_print_fff_options(&main_config) :
+ config_manipulation.toggle_print_sla_options(&main_config) ;
}
void ObjectSettings::UpdateAndShow(const bool show)