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-09-16 11:49:51 +0300
committerYuSanka <yusanka@gmail.com>2019-09-16 11:49:51 +0300
commit6850d9d6c4d10aab733d9960b7fed3687f2b3d49 (patch)
tree3578aea02c6b91b37b83e45f63314f6110f5e7ff
parentd86cf1e116ef98c35933320a97cabeeb7d1f6074 (diff)
Duplicate of https://github.com/prusa3d/PrusaSlicer/commit/284355d3786d80687a37067d1083d6f70963aa5fversion_2.1.0
-rw-r--r--src/slic3r/GUI/GUI_ObjectSettings.cpp35
-rw-r--r--src/slic3r/GUI/GUI_ObjectSettings.hpp5
2 files changed, 38 insertions, 2 deletions
diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp
index c90e1e4ed..adb549617 100644
--- a/src/slic3r/GUI/GUI_ObjectSettings.cpp
+++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp
@@ -116,7 +116,7 @@ bool ObjectSettings::update_settings_list()
auto optgroup = std::make_shared<ConfigOptionsGroup>(m_og->ctrl_parent(), _(cat.first), config, false, extra_column);
optgroup->label_width = 15;
- optgroup->sidetext_width = 5.5;
+ optgroup->sidetext_width = 5;
optgroup->m_on_change = [this, config](const t_config_option_key& opt_id, const boost::any& value) {
this->update_config_values(config);
@@ -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)
@@ -241,4 +272,4 @@ void ObjectSettings::msw_rescale()
}
} //namespace GUI
-} //namespace Slic3r \ No newline at end of file
+} //namespace Slic3r
diff --git a/src/slic3r/GUI/GUI_ObjectSettings.hpp b/src/slic3r/GUI/GUI_ObjectSettings.hpp
index 61d90600b..76adc945b 100644
--- a/src/slic3r/GUI/GUI_ObjectSettings.hpp
+++ b/src/slic3r/GUI/GUI_ObjectSettings.hpp
@@ -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();