diff --git a/resources/images/advanced_option3.svg b/resources/images/advanced_option3.svg new file mode 100644 index 000000000..055fe1ed0 --- /dev/null +++ b/resources/images/advanced_option3.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/advanced_option4.svg b/resources/images/advanced_option4.svg new file mode 100644 index 000000000..ac831d06f --- /dev/null +++ b/resources/images/advanced_option4.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 495f2d1c0..b8ab2ff92 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -326,6 +326,8 @@ bool SyncAmsInfoDialog::is_need_show() if (m_colormap_btn) { update_panel_status(mode); update_when_change_map_mode(mode); + update_plate_combox(); + update_swipe_button_state(); } return true; } @@ -385,6 +387,19 @@ void SyncAmsInfoDialog::update_when_change_map_mode(int idx) Fit(); } +void SyncAmsInfoDialog::update_plate_combox() +{ + if (m_combobox_plate) { + m_combobox_plate->Clear(); + for (size_t i = 0; i < m_plate_number_choices_str.size(); i++) { m_combobox_plate->Append(m_plate_number_choices_str[i]); } + auto iter = std::find(m_plate_choices.begin(), m_plate_choices.end(), m_specify_plate_idx); + if (iter != m_plate_choices.end()) { + auto index = iter - m_plate_choices.begin(); + m_combobox_plate->SetSelection(index); + } + } +} + wxColour SyncAmsInfoDialog::decode_ams_color(const std::string &color_str) { auto temp_str = color_str; if (temp_str.front() == '#') { @@ -468,6 +483,11 @@ void SyncAmsInfoDialog::show_color_panel(bool flag, bool update_layout) void SyncAmsInfoDialog::update_more_setting(bool layout) { + if (!m_expand_more_settings) { + m_advanced_options_icon->SetBitmap(create_scaled_bitmap("advanced_option3", this, 18)); + } else { + m_advanced_options_icon->SetBitmap(create_scaled_bitmap("advanced_option4", this, 18)); + } show_sizer(m_append_color_sizer, m_expand_more_settings); show_sizer(m_merge_color_sizer, m_expand_more_settings); if (layout) { @@ -580,14 +600,7 @@ void SyncAmsInfoDialog::add_two_image_control() m_choose_plate_sizer->AddSpacer(FromDIP(10)); m_combobox_plate = new ComboBox(m_two_thumbnail_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(50), -1), 0, NULL, wxCB_READONLY); - for (size_t i = 0; i < m_plate_number_choices_str.size(); i++) { - m_combobox_plate->Append(m_plate_number_choices_str[i]); - } - auto iter = std::find(m_plate_choices.begin(), m_plate_choices.end(), m_specify_plate_idx); - if (iter != m_plate_choices.end()) { - auto index = iter - m_plate_choices.begin(); - m_combobox_plate->SetSelection(index); - } + m_combobox_plate->Bind(wxEVT_COMBOBOX, [this](auto &e) { if (e.GetSelection() < m_plate_choices.size()) { update_when_change_plate(m_plate_choices[e.GetSelection()]); @@ -706,23 +719,21 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) : auto &bSizer = m_sizer_main; { // content check_empty_project(); - if (m_is_empty_project == false) { - //use map mode - m_mode_combox_sizer = new wxBoxSizer(wxHORIZONTAL); - m_colormap_btn = new CapsuleButton(this, PageType::ptColorMap, _L("Mapping"), true); - m_override_btn = new CapsuleButton(this, PageType::ptOverride, _L("Overwriting"), false); - m_mode_combox_sizer->AddSpacer(FromDIP(25)); - m_mode_combox_sizer->AddStretchSpacer(); - m_mode_combox_sizer->Add(m_colormap_btn, 0, wxALIGN_CENTER | wxEXPAND | wxALL, FromDIP(2)); - m_mode_combox_sizer->AddSpacer(FromDIP(8)); - m_mode_combox_sizer->Add(m_override_btn, 0, wxALIGN_CENTER | wxEXPAND | wxALL, FromDIP(2)); - m_mode_combox_sizer->AddStretchSpacer(); + //use map mode + m_mode_combox_sizer = new wxBoxSizer(wxHORIZONTAL); + m_colormap_btn = new CapsuleButton(this, PageType::ptColorMap, _L("Mapping"), true); + m_override_btn = new CapsuleButton(this, PageType::ptOverride, _L("Overwriting"), false); + m_mode_combox_sizer->AddSpacer(FromDIP(25)); + m_mode_combox_sizer->AddStretchSpacer(); + m_mode_combox_sizer->Add(m_colormap_btn, 0, wxALIGN_CENTER | wxEXPAND | wxALL, FromDIP(2)); + m_mode_combox_sizer->AddSpacer(FromDIP(8)); + m_mode_combox_sizer->Add(m_override_btn, 0, wxALIGN_CENTER | wxEXPAND | wxALL, FromDIP(2)); + m_mode_combox_sizer->AddStretchSpacer(); - m_colormap_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this); // update_when_change_map_mode(e.GetSelection()); - m_override_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this); + m_colormap_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this); // update_when_change_map_mode(e.GetSelection()); + m_override_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this); - bSizer->Add(m_mode_combox_sizer, FromDIP(0), wxEXPAND | wxALIGN_LEFT | wxTOP, FromDIP(10)); - } + bSizer->Add(m_mode_combox_sizer, FromDIP(0), wxEXPAND | wxALIGN_LEFT | wxTOP, FromDIP(10)); } m_basic_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); @@ -1031,21 +1042,16 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) : advanced_options_title->SetFont(::Label::Body_13); advanced_options_title->SetForegroundColour(wxColour(38, 46, 48)); - m_advanced_options_icon = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("advanced_option1", this, 18), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18))); - sizer_advanced_options_title->Add(0, 0, 1, wxEXPAND, 0); sizer_advanced_options_title->Add(advanced_options_title, 0, wxALIGN_CENTER, 0); - sizer_advanced_options_title->Add(m_advanced_options_icon, 0, wxALIGN_CENTER, 0); advanced_options_title->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { SetCursor(wxCURSOR_HAND); }); advanced_options_title->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { SetCursor(wxCURSOR_ARROW); }); advanced_options_title->Bind(wxEVT_LEFT_DOWN, [this](auto &e) { if (m_options_other->IsShown()) { m_options_other->Hide(); - m_advanced_options_icon->SetBitmap(create_scaled_bitmap("advanced_option1", this, 18)); } else { m_options_other->Show(); - m_advanced_options_icon->SetBitmap(create_scaled_bitmap("advanced_option2", this, 18)); } Layout(); Fit(); @@ -1246,15 +1252,20 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) : add_two_image_control(); wxBoxSizer * more_setting_sizer = new wxBoxSizer(wxVERTICAL); - m_more_setting_tips = new wxStaticText(this, wxID_ANY, _L("Advanced settings >")); + wxBoxSizer * advace_setting_sizer = new wxBoxSizer(wxHORIZONTAL); + m_more_setting_tips = new wxStaticText(this, wxID_ANY, _L("Advanced settings")); m_more_setting_tips->SetForegroundColour(wxColour(0, 174, 100)); m_more_setting_tips->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { m_expand_more_settings = !m_expand_more_settings; update_more_setting(); }); - more_setting_sizer->Add(m_more_setting_tips, 0, wxALIGN_LEFT | wxTOP, FromDIP(4)); + advace_setting_sizer->Add(m_more_setting_tips, 0, wxALIGN_LEFT | wxTOP, FromDIP(4)); + m_advanced_options_icon = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("advanced_option3", this, 18), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18))); + advace_setting_sizer->Add(m_advanced_options_icon, 0, wxALIGN_LEFT | wxTOP, FromDIP(4)); + more_setting_sizer->Add(advace_setting_sizer, 0, wxALIGN_LEFT, FromDIP(0)); m_append_color_sizer = new wxBoxSizer(wxHORIZONTAL); + m_append_color_sizer->AddSpacer(FromDIP(10)); m_append_color_checkbox = new ::CheckBox(this, wxID_ANY); //m_append_color_checkbox->SetForegroundColour(wxColour(107, 107, 107, 100)); m_append_color_checkbox->SetValue(wxGetApp().app_config->get_bool("enable_append_color_by_sync_ams")); @@ -1274,6 +1285,7 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) : more_setting_sizer->Add(m_append_color_sizer, 0, wxALIGN_LEFT | wxTOP, FromDIP(4)); m_merge_color_sizer = new wxBoxSizer(wxHORIZONTAL); + m_merge_color_sizer->AddSpacer(FromDIP(10)); m_merge_color_checkbox = new ::CheckBox(this, wxID_ANY); //m_merge_color_checkbox->SetForegroundColour(wxColour(107, 107, 107, 100)); m_merge_color_checkbox->SetValue(wxGetApp().app_config->get_bool("enable_merge_color_by_sync_ams")); @@ -1374,11 +1386,20 @@ void SyncAmsInfoDialog::check_empty_project() GUI::PartPlate * curr_plate = GUI::wxGetApp().plater()->get_partplate_list().get_selected_plate(); m_is_empty_project = true; m_plate_number_choices_str.clear(); + m_plate_choices.clear(); for (size_t i = 0; i < plate_list.get_plate_count(); i++) { auto temp_plate = GUI::wxGetApp().plater()->get_partplate_list().get_plate(i); if (!temp_plate->get_objects_on_this_plate().empty()) { if (m_is_empty_project) { m_is_empty_project = false; } - m_plate_number_choices_str.Add(i < 10 ? ("0" + std::to_wstring(i + 1)) : std::to_wstring(i)); + if (i < 9) { + m_plate_number_choices_str.Add("0" + std::to_wstring(i + 1)); + } + else if (i == 9) { + m_plate_number_choices_str.Add("10"); + } + else { + m_plate_number_choices_str.Add(std::to_wstring(i + 1)); + } m_plate_choices.emplace_back(i); } } diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.hpp b/src/slic3r/GUI/SyncAmsInfoDialog.hpp index 2be9f9f63..734e2de80 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.hpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.hpp @@ -114,7 +114,7 @@ protected: std::shared_ptr m_print_job; wxScrolledWindow * m_sw_print_failed_info{nullptr}; wxHyperlinkCtrl * m_hyperlink{nullptr}; - wxStaticBitmap * m_advanced_options_icon{nullptr}; + ScalableBitmap * rename_editable{nullptr}; ScalableBitmap * rename_editable_light{nullptr}; ScalableBitmap * ams_mapping_help_icon{nullptr}; @@ -295,6 +295,7 @@ private: wxBoxSizer *create_sizer_thumbnail(wxButton *image_button, bool left); void update_when_change_plate(int); void update_when_change_map_mode(int); + void update_plate_combox(); void update_map_when_change_map_mode(); wxColour decode_ams_color(const std::string &color); void update_when_change_map_mode(wxCommandEvent &e); @@ -344,6 +345,7 @@ private: CapsuleButton * m_colormap_btn = nullptr; CapsuleButton * m_override_btn = nullptr; wxStaticText * m_more_setting_tips = nullptr; + wxStaticBitmap * m_advanced_options_icon{nullptr}; wxBoxSizer * m_append_color_sizer = nullptr; CheckBox* m_append_color_checkbox = nullptr; wxStaticText * m_append_color_text = nullptr;