diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 0a911b2298..4e343939c1 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1346,7 +1346,7 @@ bool GUI_App::on_init_inner() mainframe->select_tab(size_t(0)); sidebar().obj_list()->init_objects(); // propagate model objects to object list -// update_mode(); // !!! do that later + update_mode(); // mode sizer doesn't exist anymore, so we came update mode here, before load_current_presets SetTopWindow(mainframe); plater_->init_notification_manager(); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index c2e428d1e5..45426990e4 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -691,7 +691,7 @@ void ConfigOptionsGroup::Hide() void ConfigOptionsGroup::Show(const bool show) { - sizer->ShowItems(show); + if (sizer) sizer->ShowItems(show); #if 0//#ifdef __WXGTK__ m_panel->Show(show); m_grid_sizer->Show(show); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 7dbc4db19a..b6f4296c32 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -929,6 +929,7 @@ void Tab::update_mode() m_mode_sizer->SetMode(m_mode); update_visibility(); + update_sla_prusa_specific_visibility(); update_changed_tree_ui(); } @@ -2947,15 +2948,15 @@ void TabPrinter::build_sla() // FIXME: This should be on one line in the UI optgroup->append_single_option_line("display_mirror_x"); optgroup->append_single_option_line("display_mirror_y"); -/* + optgroup = page->new_optgroup(L("Tilt")); line = { L("Tilt time"), "" }; line.append_option(optgroup->get_option("fast_tilt_time")); line.append_option(optgroup->get_option("slow_tilt_time")); line.append_option(optgroup->get_option("high_viscosity_tilt_time")); optgroup->append_line(line); - optgroup->append_single_option_line("area_fill"); -*/ +// optgroup->append_single_option_line("area_fill"); + optgroup = page->new_optgroup(L("Corrections")); line = Line{ m_config->def()->get("relative_correction")->full_label, "" }; for (auto& axis : { "X", "Y", "Z" }) { @@ -3631,8 +3632,15 @@ void TabPrinter::update_fff() toggle_options(); } +bool Tab::is_prusa_printer() const +{ + std::string printer_model = m_preset_bundle->printers.get_edited_preset().config.opt_string("printer_model"); + return printer_model == "SL1" || printer_model == "SL1S" || printer_model == "M1"; +} + void TabPrinter::update_sla() -{ ; } +{ +} void Tab::update_ui_items_related_on_parent_preset(const Preset* selected_preset_parent) { @@ -3744,6 +3752,7 @@ void Tab::load_current_preset() m_opt_status_value = (m_presets->get_selected_preset_parent() ? osSystemValue : 0) | osInitValue; init_options_list(); update_visibility(); + update_sla_prusa_specific_visibility(); update_changed_ui(); } #if 0 @@ -4098,6 +4107,7 @@ void Tab::activate_selected_page(std::function throw_if_canceled) this->compatible_widget_reload(m_compatible_prints); } + update_sla_prusa_specific_visibility(); update_changed_ui(); update_description_lines(); toggle_options(); @@ -5011,6 +5021,17 @@ bool TabPrinter::apply_extruder_cnt_from_cache() return false; } +void TabPrinter::update_sla_prusa_specific_visibility() +{ + if (m_active_page && m_active_page->title() == "General") { + auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(), [](const ConfigOptionsGroupShp og) { return og->title == "Tilt"; }); + if (og_it != m_active_page->m_optgroups.end()) { + og_it->get()->Show(m_mode == comExpert && !is_prusa_printer()); + Layout(); + } + } +} + bool Tab::validate_custom_gcodes() { if (m_type != Preset::TYPE_FILAMENT && @@ -5398,11 +5419,22 @@ void TabSLAMaterial::build() build_preset_description_line(optgroup.get()); page = add_options_page(L("Material printing profile"), "note"); + +#if 1 optgroup = page->new_optgroup(L("Material printing profile")); -// option = optgroup->get_option("material_print_speed"); -// optgroup->append_single_option_line(option); + optgroup->append_single_option_line("material_print_speed"); + + optgroup = page->new_optgroup(L("Tilt")); optgroup->append_single_option_line("area_fill"); +#else + optgroup = page->new_optgroup(L("Material printing profile")); + option = optgroup->get_option("material_print_speed"); + optgroup->append_single_option_line(option); + + optgroup->append_single_option_line("area_fill"); +#endif + build_tilt_group(page); } @@ -5529,6 +5561,25 @@ void TabSLAMaterial::update() wxGetApp().mainframe->on_config_changed(m_config); } +void TabSLAMaterial::update_sla_prusa_specific_visibility() +{ + if (m_active_page && m_active_page->title() == "Material printing profile") { + for (auto& title : { "", "Tilt profiles" }) { + auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(), + [title](const ConfigOptionsGroupShp og) { return og->title == title; }); + if (og_it != m_active_page->m_optgroups.end()) + og_it->get()->Show(m_mode == comExpert && is_prusa_printer()); + } + + auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(), + [](const ConfigOptionsGroupShp og) { return og->title == "Material printing profile"; }); + if (og_it != m_active_page->m_optgroups.end()) + og_it->get()->Show(m_mode >= comAdvanced && !is_prusa_printer()); + + Layout(); + } +} + static void add_options_into_line(ConfigOptionsGroupShp &optgroup, const std::vector> &prefixes, const std::string &optkey, diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index faf4e2b86d..de872e7be0 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -380,6 +380,7 @@ public: void update_mode(); void update_mode_markers(); void update_visibility(); + virtual void update_sla_prusa_specific_visibility() {} virtual void msw_rescale(); virtual void sys_color_changed(); Field* get_field(const t_config_option_key& opt_key, int opt_index = -1) const; @@ -409,11 +410,11 @@ public: static bool validate_custom_gcode(const wxString& title, const std::string& gcode); bool validate_custom_gcodes(); bool validate_custom_gcodes_was_shown{ false }; + bool is_prusa_printer() const; void edit_custom_gcode(const t_config_option_key& opt_key); virtual const std::string& get_custom_gcode(const t_config_option_key& opt_key); virtual void set_custom_gcode(const t_config_option_key& opt_key, const std::string& value); - protected: void create_line_with_widget(ConfigOptionsGroup* optgroup, const std::string& opt_key, const std::string& path, widget_t widget); wxSizer* compatible_widget_create(wxWindow* parent, PresetDependencies &deps); @@ -562,6 +563,7 @@ public: wxSizer* create_bed_shape_widget(wxWindow* parent); void cache_extruder_cnt(const DynamicPrintConfig* config = nullptr); bool apply_extruder_cnt_from_cache(); + void update_sla_prusa_specific_visibility() override; }; class TabSLAMaterial : public Tab @@ -583,6 +585,7 @@ public: void toggle_options() override; void update() override; bool supports_printer_technology(const PrinterTechnology tech) const override { return tech == ptSLA; } + void update_sla_prusa_specific_visibility() override; }; class TabSLAPrint : public Tab