From 8bc581d6624e87a73ef556ccec2b9ed2db5c67c0 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Thu, 15 Jun 2023 15:42:24 +0800 Subject: [PATCH] FIX: object table setting toggle line Change-Id: I77f40d5563ca22d292ffa3ace67284766a4fa87e --- src/slic3r/GUI/GUI_ObjectTable.cpp | 10 +++++----- src/slic3r/GUI/GUI_ObjectTableSettings.cpp | 23 +++++++++++++++++++--- src/slic3r/GUI/OptionsGroup.cpp | 8 +++++++- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 4f436070d..e7e3aac0d 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -2699,7 +2699,7 @@ ObjectTablePanel::ObjectTablePanel( wxWindow* parent, wxWindowID id, const wxPoi SetSize(wxSize(-1, FromDIP(450))); SetMinSize(wxSize(-1, FromDIP(450))); - SetMaxSize(wxSize(-1, FromDIP(450))); + //SetMaxSize(wxSize(-1, FromDIP(450))); //m_search_line = new wxTextCtrl(this, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER); @@ -2769,7 +2769,7 @@ ObjectTablePanel::ObjectTablePanel( wxWindow* parent, wxWindowID id, const wxPoi m_top_sizer->Add(m_object_grid, 1, wxEXPAND,0); m_top_sizer->Add(m_line_left, 0, wxEXPAND, 0); - m_top_sizer->Add(m_side_window,0,0,0); + m_top_sizer->Add(m_side_window, 0, wxEXPAND, 0); //wxBoxSizer * page_sizer = new wxBoxSizer(wxHORIZONTAL); @@ -3418,9 +3418,9 @@ void ObjectTableDialog::OnSize(wxSizeEvent& event) SetMinSize(wxSize(GetSize().x, -1)); SetSize(wxSize(GetSize().x, -1)); - m_obj_panel->SetSize(wxSize(-1, GetSize().y)); - m_obj_panel->SetMinSize(wxSize(-1, GetSize().y)); - m_obj_panel->SetMaxSize(wxSize(-1, GetSize().y)); + //m_obj_panel->SetSize(wxSize(-1, GetSize().y)); + //m_obj_panel->SetMinSize(wxSize(-1, GetSize().y)); + //m_obj_panel->SetMaxSize(wxSize(-1, GetSize().y)); event.Skip(); } diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index 37d4f4dc2..9cb98f1de 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -290,10 +290,16 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ if (field) field->toggle(toggle); }; - ConfigManipulation config_manipulation(nullptr, toggle_field, nullptr, nullptr, &m_current_config); + auto toggle_line = [this, optgroup](const t_config_option_key & opt_key, bool toggle) + { + Line* line = optgroup->get_line(opt_key); + if (line) line->toggle_visible = toggle; + }; + ConfigManipulation config_manipulation(nullptr, toggle_field, toggle_line, nullptr, &m_current_config); printer_technology == ptFFF ? config_manipulation.toggle_print_fff_options(&m_current_config) : config_manipulation.toggle_print_sla_options(&m_current_config) ; + optgroup->update_visibility(wxGetApp().get_mode()); } //if (!categories.empty()) { @@ -383,15 +389,26 @@ void ObjectTableSettings::update_config_values(bool is_object, ModelObject* obje if (field) field->toggle(toggle); }; + auto toggle_line = [this](const t_config_option_key &opt_key, bool toggle) { + for (auto og : m_og_settings) { + Line *line = og->get_line(opt_key); + if (line) { line->toggle_visible = toggle; break; } + } + }; - ConfigManipulation config_manipulation(nullptr, toggle_field, nullptr, nullptr, &m_current_config); + ConfigManipulation config_manipulation(nullptr, toggle_field, toggle_line, nullptr, &m_current_config); printer_technology == ptFFF ? config_manipulation.update_print_fff_config(&main_config) : config_manipulation.update_print_sla_config(&main_config) ; printer_technology == ptFFF ? config_manipulation.toggle_print_fff_options(&main_config) : config_manipulation.toggle_print_sla_options(&main_config) ; - + for (auto og : m_og_settings) { + og->update_visibility(wxGetApp().get_mode()); + } + m_parent->Layout(); + m_parent->Fit(); + m_parent->GetParent()->Layout(); t_config_option_keys diff_keys; for (const t_config_option_key &opt_key : main_config.keys()) { const ConfigOption *this_opt = main_config.option(opt_key); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 8ae2aad0f..df5a79656 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -793,8 +793,14 @@ bool ConfigOptionsGroup::update_visibility(ConfigOptionMode mode) int coef = 0; int hidden_row_cnt = 0; const int cols = m_grid_sizer->GetCols(); + Line * line = &m_lines.front(); + size_t line_opt_end = line->get_options().size(); for (auto opt_mode : m_options_mode) { - const bool show = opt_mode <= mode; + const bool show = opt_mode <= mode && line->toggle_visible; + if (--line_opt_end == 0) { + ++line; + line_opt_end = line->get_options().size(); + } if (!show) { hidden_row_cnt++; for (int i = 0; i < cols; ++i)