ENH:change Color Arrangement ui

jira: nojira
Change-Id: I77f84675da0b4fe7069c76c14668026fc3d8932a
This commit is contained in:
Mack 2024-10-15 18:49:20 +08:00 committed by lane.wei
parent 6b5a0c2d17
commit 785b8c7b2f
1 changed files with 16 additions and 20 deletions

View File

@ -4633,14 +4633,20 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
////BBS Color Arrangement Recommendation ////BBS Color Arrangement Recommendation
auto config = wxGetApp().plater()->get_partplate_list().get_current_fff_print().config(); auto config = wxGetApp().plater()->get_partplate_list().get_current_fff_print().config();
auto stats_by_extruder = wxGetApp().plater()->get_partplate_list().get_current_fff_print().statistics_by_extruder();
auto filament_map_mode = config.filament_map_mode.value; auto filament_map_mode = config.filament_map_mode.value;
auto is_auto = filament_map_mode == FilamentMapMode::fmmAuto; bool has_tips = true;
if (filament_map_mode == FilamentMapMode::fmmAuto) {
float saved_flush_weight = stats_by_extruder.stats_by_single_extruder.filament_flush_weight - stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight;
int saved_filament_changed_time = stats_by_extruder.stats_by_single_extruder.filament_change_count - stats_by_extruder.stats_by_multi_extruder_auto.filament_change_count;
if (!(saved_flush_weight > EPSILON || saved_filament_changed_time > 0)) has_tips = false;
}
// BBS AMS containers // BBS AMS containers
float line_height = ImGui::GetFrameHeight(); float line_height = ImGui::GetFrameHeight();
int AMS_filament_max_num = std::max(m_left_extruder_filament.size(), m_right_extruder_filament.size()); int AMS_filament_max_num = std::max(m_left_extruder_filament.size(), m_right_extruder_filament.size());
float three_words_width = imgui.calc_text_size("ABC").x; float three_words_width = imgui.calc_text_size("ABC").x;
float ams_item_height = std::ceil(AMS_filament_max_num / 4.0f) * (three_words_width * 1.6f + line_height) + line_height * 2; float ams_item_height = std::ceil(AMS_filament_max_num / 4.0f) * (three_words_width * 1.6f + line_height) + line_height * 2;
float AMS_container_height = ams_item_height + line_height * (is_auto ? 6 : 7); float AMS_container_height = ams_item_height + line_height * (has_tips ? 6 : 4);
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImVec4(1.f, 1.f, 1.f, 1.0f)); ImGui::PushStyleColor(ImGuiCol_ChildBg, ImVec4(1.f, 1.f, 1.f, 1.0f));
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(.15f, .18f, .19f, 1.0f)); ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(.15f, .18f, .19f, 1.0f));
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(window_padding * 3, 0)); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(window_padding * 3, 0));
@ -4649,7 +4655,6 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
ImGui::BeginChild("#AMS", ImVec2(0, AMS_container_height), true, ImGuiWindowFlags_AlwaysUseWindowPadding); ImGui::BeginChild("#AMS", ImVec2(0, AMS_container_height), true, ImGuiWindowFlags_AlwaysUseWindowPadding);
{ {
float available_width = ImGui::GetContentRegionAvail().x; float available_width = ImGui::GetContentRegionAvail().x;
float available_height = ImGui::GetContentRegionAvail().y;
float half_width = available_width * 0.49f; float half_width = available_width * 0.49f;
float spacing = 18.0f * m_scale; float spacing = 18.0f * m_scale;
@ -4669,7 +4674,7 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
child_begin_draw_list->AddRectFilled(cursor_pos, ImVec2(cursor_pos.x + half_width, cursor_pos.y + line_height), IM_COL32(0, 0, 0, 20)); child_begin_draw_list->AddRectFilled(cursor_pos, ImVec2(cursor_pos.x + half_width, cursor_pos.y + line_height), IM_COL32(0, 0, 0, 20));
ImGui::BeginChild("#LeftAMS", ImVec2(half_width, ams_item_height), false, ImGuiWindowFlags_AlwaysUseWindowPadding); ImGui::BeginChild("#LeftAMS", ImVec2(half_width, ams_item_height), false, ImGuiWindowFlags_AlwaysUseWindowPadding);
{ {
imgui.text(_u8L("Left")); imgui.text(_u8L("Left extruder"));
ImGui::Dummy({window_padding, window_padding}); ImGui::Dummy({window_padding, window_padding});
int index = 1; int index = 1;
for (const auto &extruder_filament : m_left_extruder_filament) { for (const auto &extruder_filament : m_left_extruder_filament) {
@ -4684,7 +4689,7 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
child_begin_draw_list->AddRectFilled(cursor_pos, ImVec2(cursor_pos.x + half_width, cursor_pos.y + line_height), IM_COL32(0, 0, 0, 20)); child_begin_draw_list->AddRectFilled(cursor_pos, ImVec2(cursor_pos.x + half_width, cursor_pos.y + line_height), IM_COL32(0, 0, 0, 20));
ImGui::BeginChild("#RightAMS", ImVec2(half_width, ams_item_height), false, ImGuiWindowFlags_AlwaysUseWindowPadding); ImGui::BeginChild("#RightAMS", ImVec2(half_width, ams_item_height), false, ImGuiWindowFlags_AlwaysUseWindowPadding);
{ {
imgui.text(_u8L("Right")); imgui.text(_u8L("Right extruder"));
ImGui::Dummy({window_padding, window_padding}); ImGui::Dummy({window_padding, window_padding});
int index = 1; int index = 1;
for (const auto &extruder_filament : m_right_extruder_filament) { for (const auto &extruder_filament : m_right_extruder_filament) {
@ -4697,27 +4702,15 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
ImGui::PopStyleColor(1); ImGui::PopStyleColor(1);
ImGui::PopStyleVar(1); ImGui::PopStyleVar(1);
ImGui::Dummy({window_padding, window_padding}); ImGui::Dummy({window_padding, window_padding});
link_text(_u8L("Customize Arrangement"));
auto stats_by_extruder = wxGetApp().plater()->get_partplate_list().get_current_fff_print().statistics_by_extruder();
if (filament_map_mode == fmmAuto) { if (filament_map_mode == fmmAuto) {
// imgui.text(from_u8((boost::format(_u8L("Info by multi extruder : %1%g filament and %2% filament changes")) %
// stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight % stats_by_extruder.stats_by_multi_extruder_auto.filament_change_count).str()));
// imgui.text(from_u8((boost::format(_u8L("Info by single extruder : %1%g filament and %2% filament changes")) %
// stats_by_extruder.stats_by_single_extruder.filament_flush_weight % stats_by_extruder.stats_by_single_extruder.filament_change_count).str()));
float saved_flush_weight = stats_by_extruder.stats_by_single_extruder.filament_flush_weight - stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight; float saved_flush_weight = stats_by_extruder.stats_by_single_extruder.filament_flush_weight - stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight;
int saved_filament_changed_time = stats_by_extruder.stats_by_single_extruder.filament_change_count - stats_by_extruder.stats_by_multi_extruder_auto.filament_change_count; int saved_filament_changed_time = stats_by_extruder.stats_by_single_extruder.filament_change_count - stats_by_extruder.stats_by_multi_extruder_auto.filament_change_count;
if (saved_flush_weight > EPSILON || saved_filament_changed_time > 0) { if (saved_flush_weight > EPSILON || saved_filament_changed_time > 0) {
imgui.text(_u8L("This arrangement would be optimal.")); imgui.text(_u8L("This arrangement would be optimal."));
imgui.text(from_u8((boost::format(_u8L("It will save %1%g filament and %2% filament changes")) % saved_flush_weight % saved_filament_changed_time).str())); imgui.text(from_u8((boost::format(_u8L("Save %1%g filament and %2% changes than one-extruder printer.")) % saved_flush_weight % saved_filament_changed_time).str()));
} }
} else if (filament_map_mode == fmmManual) { } else if (filament_map_mode == fmmManual) {
// imgui.text(from_u8((boost::format(_u8L("Info by manual mode : %1%g filament and %2% filament changes")) %
// stats_by_extruder.stats_by_multi_extruder_manual.filament_flush_weight % stats_by_extruder.stats_by_multi_extruder_manual.filament_change_count).str()));
// imgui.text(from_u8((boost::format(_u8L("Info by auto mode : %1%g filament and %2% filament changes")) %
// stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight % stats_by_extruder.stats_by_multi_extruder_auto.filament_change_count).str()));
ImVec4 orangeColor = ImVec4(1.0f, 0.5f, 0.0f, 1.0f); ImVec4 orangeColor = ImVec4(1.0f, 0.5f, 0.0f, 1.0f);
ImGui::PushStyleColor(ImGuiCol_Text, orangeColor); ImGui::PushStyleColor(ImGuiCol_Text, orangeColor);
float more_cost = stats_by_extruder.stats_by_multi_extruder_manual.filament_flush_weight - stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight; float more_cost = stats_by_extruder.stats_by_multi_extruder_manual.filament_flush_weight - stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight;
@ -4725,18 +4718,21 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
if (more_cost > EPSILON || more_time > 0) { if (more_cost > EPSILON || more_time > 0) {
imgui.text(_u8L("This arrangement is not optimal.")); imgui.text(_u8L("This arrangement is not optimal."));
imgui.text(from_u8((boost::format(_u8L("It will cost %1%g filament and %2% filament changes more than\nthe optiomal arrangrement.")) %more_cost % more_time).str())); imgui.text(from_u8((boost::format(_u8L("Cost %1%g filament and %2% changes more than optimal arrangement.")) %more_cost % more_time).str()));
} else { } else {
float saved_flush_weight = stats_by_extruder.stats_by_single_extruder.filament_flush_weight - stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight; float saved_flush_weight = stats_by_extruder.stats_by_single_extruder.filament_flush_weight - stats_by_extruder.stats_by_multi_extruder_auto.filament_flush_weight;
int saved_filament_changed_time = stats_by_extruder.stats_by_single_extruder.filament_change_count - stats_by_extruder.stats_by_multi_extruder_auto.filament_change_count; int saved_filament_changed_time = stats_by_extruder.stats_by_single_extruder.filament_change_count - stats_by_extruder.stats_by_multi_extruder_auto.filament_change_count;
if (saved_flush_weight > EPSILON || saved_filament_changed_time > 0) { if (saved_flush_weight > EPSILON || saved_filament_changed_time > 0) {
imgui.text(_u8L("This arrangement would be optimal.")); imgui.text(_u8L("This arrangement would be optimal."));
imgui.text(from_u8((boost::format(_u8L("It will save %1%g filament and %2% filament changes")) % saved_flush_weight % saved_filament_changed_time).str())); imgui.text(from_u8((boost::format(_u8L("Save %1%g filament and %2% changes than one-extruder printer.")) % saved_flush_weight % saved_filament_changed_time).str()));
} }
} }
ImGui::PopStyleColor(1); ImGui::PopStyleColor(1);
} }
ImGui::Dummy({window_padding, window_padding});
link_text(_u8L("Customize Arrangement"));
ImGui::EndChild(); ImGui::EndChild();
} }
ImGui::PopStyleColor(2); ImGui::PopStyleColor(2);