ENH:Optimize interface display in "sync ams" dialog

jira: none
Change-Id: I51e8a55491112653e8e55eed0d6c93c6a37dcbe0
This commit is contained in:
zhou.xu 2025-02-14 09:29:26 +08:00 committed by lane.wei
parent 908ac599fc
commit a7ad6dfac4
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

@ -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);
}
}

View File

@ -114,7 +114,7 @@ protected:
std::shared_ptr<PrintJob> 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;