diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 8d781f35cb..1a181a3fde 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1215,18 +1215,19 @@ void add_correct_opts_to_diff(const std::string &opt_key, t_config_option_keys& } // list of options with vector variable, which is independent from number of extruders -static const std::vector independent_from_extruder_number_options = { +static const std::set independent_from_extruder_number_options = { "bed_shape", - "thumbnails", + "compatible_printers", + "compatible_prints", "filament_ramming_parameters", "gcode_substitutions", - "compatible_prints", - "compatible_printers" + "post_process", + "thumbnails", }; bool PresetCollection::is_independent_from_extruder_number_option(const std::string& opt_key) { - return std::find(independent_from_extruder_number_options.begin(), independent_from_extruder_number_options.end(), opt_key) != independent_from_extruder_number_options.end(); + return independent_from_extruder_number_options.find(opt_key) != independent_from_extruder_number_options.end(); } // Use deep_diff to correct return of changed options, considering individual options for each extruder. diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 3e99d0cf1b..d9ddf5e89b 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -1001,10 +1001,18 @@ bool OptionsGroup::launch_browser(const std::string& path_end) return wxGetApp().open_browser_with_warning_dialog(OptionsGroup::get_url(path_end), wxGetApp().mainframe->m_tabpanel); } +// list of options, which doesn't have a related filed +static const std::set options_without_field = { + "compatible_printers", + "compatible_prints", + "bed_shape", + "filament_ramming_parameters", + "gcode_substitutions", +}; + bool OptionsGroup::is_option_without_field(const std::string& opt_key) { - return opt_key!= "thumbnails" // "thumbnails" has related field - && PresetCollection::is_independent_from_extruder_number_option(opt_key); + return options_without_field.find(opt_key) != options_without_field.end(); } diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index 594632a226..6ad4af3a17 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -117,7 +117,7 @@ void OptionsSearcher::append_options(DynamicPrintConfig* config, Preset::Type ty int cnt = 0; - if ( (type == Preset::TYPE_SLA_MATERIAL || type == Preset::TYPE_PRINTER || type == Preset::TYPE_PRINT) && opt_key != "bed_shape" && opt_key != "thumbnails") + if ( type != Preset::TYPE_FILAMENT && !PresetCollection::is_independent_from_extruder_number_option(opt_key) ) switch (config->option(opt_key)->type()) { case coInts: change_opt_key(opt_key, config, cnt); break; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 30c48420f3..fd1c0cf3ca 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -647,7 +647,7 @@ void Tab::init_options_list() m_options_list.clear(); for (const std::string& opt_key : m_config->keys()) - emplace_option(opt_key); + emplace_option(opt_key, m_type != Preset::TYPE_FILAMENT && !PresetCollection::is_independent_from_extruder_number_option(opt_key)); } template @@ -677,44 +677,14 @@ void Tab::emplace_option(const std::string& opt_key, bool respect_vec_values/* = m_options_list.emplace(opt_key, m_opt_status_value); } -void TabPrint::init_options_list() -{ - m_options_list.clear(); - - for (const std::string& opt_key : m_config->keys()) - emplace_option(opt_key, true); -} - void TabPrinter::init_options_list() { - m_options_list.clear(); + Tab::init_options_list(); - for (const std::string& opt_key : m_config->keys()) - { - if (opt_key == "bed_shape" || opt_key == "thumbnails") { - m_options_list.emplace(opt_key, m_opt_status_value); - continue; - } - emplace_option(opt_key, true); - } if (m_printer_technology == ptFFF) m_options_list.emplace("extruders_count", m_opt_status_value); } -void TabSLAMaterial::init_options_list() -{ - m_options_list.clear(); - - for (const std::string& opt_key : m_config->keys()) - { - if (opt_key == "compatible_prints" || opt_key == "compatible_printers") { - m_options_list.emplace(opt_key, m_opt_status_value); - continue; - } - emplace_option(opt_key, true); - } -} - void Tab::get_sys_and_mod_flags(const std::string& opt_key, bool& sys_page, bool& modified_page) { auto opt = m_options_list.find(opt_key); diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 70c16a0235..59f4927bf1 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -417,7 +417,6 @@ public: void toggle_options() override; void update() override; void clear_pages() override; - void init_options_list() override; bool supports_printer_technology(const PrinterTechnology tech) const override { return tech == ptFFF; } wxSizer* create_manage_substitution_widget(wxWindow* parent); wxSizer* create_substitutions_widget(wxWindow* parent); @@ -522,7 +521,6 @@ public: void build() override; void toggle_options() override; void update() override; - void init_options_list() override; bool supports_printer_technology(const PrinterTechnology tech) const override { return tech == ptSLA; } };