ENH:Optimize interface display in "sync ams" dialog

jira: none
Change-Id: I51e8a55491112653e8e55eed0d6c93c6a37dcbe0
(cherry picked from commit a7ad6dfac4fdd013193680a728a90775e6bdf7a3)
This commit is contained in:
zhou.xu 2025-02-14 09:29:26 +08:00 committed by Noisyfox
parent 1fdc6e5dac
commit b683661a45
4 changed files with 61 additions and 32 deletions

View file

@ -0,0 +1,3 @@
<svg width="19" height="20" viewBox="0 0 19 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.9742 9.65669C13.2353 9.91782 13.2353 10.3401 12.9742 10.5984L7.64038 15.935C7.37924 16.1961 6.95698 16.1961 6.69863 15.935C6.44027 15.6739 6.43749 15.2516 6.69863 14.9933L11.5602 10.1317L6.69585 5.26742C6.43472 5.00628 6.43472 4.58403 6.69585 4.32567C6.95698 4.06731 7.37924 4.06454 7.6376 4.32567L12.9742 9.65669Z" fill="#00AE42"/>
</svg>

After

Width:  |  Height:  |  Size: 449 B

View file

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.5084 13.1962C10.2472 13.4574 9.82496 13.4574 9.5666 13.1962L4.23003 7.86242C3.9689 7.60129 3.9689 7.17903 4.23003 6.92068C4.49116 6.66232 4.91342 6.65954 5.17178 6.92068L10.0333 11.7822L14.8976 6.9179C15.1588 6.65676 15.581 6.65676 15.8394 6.9179C16.0977 7.17903 16.1005 7.60129 15.8394 7.85965L10.5084 13.1962Z" fill="#00AE42"/>
</svg>

After

Width:  |  Height:  |  Size: 446 B

View file

@ -328,6 +328,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;
}
@ -387,6 +389,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() == '#') {
@ -470,6 +485,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) {
@ -582,14 +602,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()]);
@ -708,23 +721,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);
@ -1033,21 +1044,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();
@ -1250,15 +1256,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"));
@ -1278,6 +1289,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"));
@ -1378,11 +1390,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);
}
}

View file

@ -114,7 +114,7 @@ protected:
std::unique_ptr<Worker> m_worker;
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;