diff --git a/resources/images/advanced.svg b/resources/images/advanced.svg index 561a15b303..ef868e36b1 100644 --- a/resources/images/advanced.svg +++ b/resources/images/advanced.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/ams_1_tray.svg b/resources/images/ams_1_tray.svg index 6d9c7b3f28..d46cb35b07 100644 --- a/resources/images/ams_1_tray.svg +++ b/resources/images/ams_1_tray.svg @@ -1,5 +1 @@ - - - - - + \ No newline at end of file diff --git a/resources/images/ams_4_tray.svg b/resources/images/ams_4_tray.svg index 379dcdf991..779383ed27 100644 --- a/resources/images/ams_4_tray.svg +++ b/resources/images/ams_4_tray.svg @@ -1,8 +1 @@ - - - - - - - - + \ No newline at end of file diff --git a/resources/images/custom-gcode_advanced.svg b/resources/images/custom-gcode_advanced.svg index 561a15b303..e363a28d13 100644 --- a/resources/images/custom-gcode_advanced.svg +++ b/resources/images/custom-gcode_advanced.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/four_slot_ams_item.svg b/resources/images/four_slot_ams_item.svg index b42e94a6ca..8b1f7f787b 100644 --- a/resources/images/four_slot_ams_item.svg +++ b/resources/images/four_slot_ams_item.svg @@ -1,5 +1 @@ - - - - - + \ No newline at end of file diff --git a/resources/images/four_slot_ams_item_dark.svg b/resources/images/four_slot_ams_item_dark.svg index 1d788268ff..8b1f7f787b 100644 --- a/resources/images/four_slot_ams_item_dark.svg +++ b/resources/images/four_slot_ams_item_dark.svg @@ -1,12 +1 @@ - - - - - - - - - - - - + \ No newline at end of file diff --git a/resources/images/lock_hover.svg b/resources/images/lock_hover.svg index b25ba1cfdc..7abfb97480 100644 --- a/resources/images/lock_hover.svg +++ b/resources/images/lock_hover.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/lock_normal.svg b/resources/images/lock_normal.svg index e585aba3f6..7abfb97480 100644 --- a/resources/images/lock_normal.svg +++ b/resources/images/lock_normal.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/obj_variable_layer_height.svg b/resources/images/obj_variable_layer_height.svg new file mode 100644 index 0000000000..801d3e4ad2 --- /dev/null +++ b/resources/images/obj_variable_layer_height.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/page_down.svg b/resources/images/page_down.svg index 077526b5a7..7a9b362b61 100644 --- a/resources/images/page_down.svg +++ b/resources/images/page_down.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/resources/images/page_up.svg b/resources/images/page_up.svg index 3a801242b2..d500df39a8 100644 --- a/resources/images/page_up.svg +++ b/resources/images/page_up.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/resources/images/param_advanced.svg b/resources/images/param_advanced.svg index 86d13f71a7..d5bbb99a94 100644 --- a/resources/images/param_advanced.svg +++ b/resources/images/param_advanced.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/reset_gray.svg b/resources/images/reset_gray.svg index 9e5578903e..dea3f8dcc5 100644 --- a/resources/images/reset_gray.svg +++ b/resources/images/reset_gray.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/resources/images/revert_btn.svg b/resources/images/revert_btn.svg index 763a86ff76..ffcc5535f2 100644 --- a/resources/images/revert_btn.svg +++ b/resources/images/revert_btn.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/single_slot_ams_item.svg b/resources/images/single_slot_ams_item.svg index a1f94f84fc..edd4698500 100644 --- a/resources/images/single_slot_ams_item.svg +++ b/resources/images/single_slot_ams_item.svg @@ -1,12 +1 @@ - - - - - - - - - - - - + \ No newline at end of file diff --git a/resources/images/single_slot_ams_item_dark.svg b/resources/images/single_slot_ams_item_dark.svg index b259df0329..edd4698500 100644 --- a/resources/images/single_slot_ams_item_dark.svg +++ b/resources/images/single_slot_ams_item_dark.svg @@ -1,15 +1 @@ - - - - - - - - 第 1 层 - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/tab_multi_active.svg b/resources/images/tab_multi_active.svg index dc776469e5..a005848cee 100644 --- a/resources/images/tab_multi_active.svg +++ b/resources/images/tab_multi_active.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/resources/images/toolbar_double_directional_arrow.svg b/resources/images/toolbar_double_directional_arrow.svg index 4cc9b2ecb3..b2b52621a0 100644 --- a/resources/images/toolbar_double_directional_arrow.svg +++ b/resources/images/toolbar_double_directional_arrow.svg @@ -1,8 +1 @@ - - - - - - - - + \ No newline at end of file diff --git a/resources/images/toolbar_reset.svg b/resources/images/toolbar_reset.svg index ad78b43e15..ffcc5535f2 100644 --- a/resources/images/toolbar_reset.svg +++ b/resources/images/toolbar_reset.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/toolbar_reset_hover.svg b/resources/images/toolbar_reset_hover.svg index ad78b43e15..ffcc5535f2 100644 --- a/resources/images/toolbar_reset_hover.svg +++ b/resources/images/toolbar_reset_hover.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/toolbar_reset_zero.svg b/resources/images/toolbar_reset_zero.svg index 10be9c46fc..07ce4a5fd2 100644 --- a/resources/images/toolbar_reset_zero.svg +++ b/resources/images/toolbar_reset_zero.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/toolbar_reset_zero_hover.svg b/resources/images/toolbar_reset_zero_hover.svg index 10be9c46fc..07ce4a5fd2 100644 --- a/resources/images/toolbar_reset_zero_hover.svg +++ b/resources/images/toolbar_reset_zero_hover.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/undo.svg b/resources/images/undo.svg index 763a86ff76..ffcc5535f2 100644 --- a/resources/images/undo.svg +++ b/resources/images/undo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 0c1cdad36c..00d15ddadd 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -240,6 +240,10 @@ void GLCanvas3D::LayersEditing::show_tooltip_information(const GLCanvas3D& canva caption_max += GImGui->Style.WindowPadding.x + imgui.scaled(1); float scale = canvas.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0}); // ORCA: Dont add padding @@ -8869,6 +8873,10 @@ float GLCanvas3D::_show_assembly_tooltip_information(float caption_max, float x, caption_max += imgui->calc_text_size(": "sv).x + 35.f; float scale = get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index e2085cbd46..11cd00cdc8 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -216,8 +216,8 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ }; auto optgroup = std::make_shared(m_og->ctrl_parent(), _(cat.first), &m_current_config, false, extra_column); - optgroup->label_width = 15; - optgroup->sidetext_width = 5; + optgroup->label_width = 20; // ORCA match label width with sidebar + optgroup->sidetext_width = Field::def_width_thinner(); optgroup->set_config_category_and_type(GUI::from_u8(group_category), Preset::TYPE_PRINT); std::weak_ptr weak_optgroup(optgroup); @@ -246,7 +246,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ for (auto& opt : cat.second) { Option option = optgroup->get_option(opt.name); - option.opt.width = 18; + option.opt.width = Field::def_width_wider(); // ORCA match parameter box width if (is_extruders_cat) option.opt.max = wxGetApp().extruders_edited_cnt(); optgroup->append_single_option_line(option); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp index cda8e1e09c..fdc2e0ab0a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp @@ -802,6 +802,10 @@ void GLGizmoBrimEars::show_tooltip_information(float x, float y) caption_max += m_imgui->calc_text_size(": "sv).x + 35.f; float scale = m_parent.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0}); // ORCA: Dont add padding diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index e0c24dc87f..efe9a22a40 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -224,6 +224,8 @@ GLGizmoCut3D::GLGizmoCut3D(GLCanvas3D& parent, const std::string& icon_filename, {"Width" , _u8L("Width")}, {"Flap Angle" , _u8L("Flap Angle")}, {"Groove Angle" , _u8L("Groove Angle")}, + {"Cut position" , _u8L("Cut position")}, // ORCA + {"Build Volume" , _u8L("Build Volume")}, // ORCA }; // update_connector_shape(); @@ -660,10 +662,11 @@ bool GLGizmoCut3D::render_reset_button(const std::string& label_id, const std::s const ImGuiStyle &style = ImGui::GetStyle(); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, {1, style.ItemSpacing.y}); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0); // ORCA match button style ImGui::PushStyleColor(ImGuiCol_Button, {0.25f, 0.25f, 0.25f, 0.0f}); - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, {0.4f, 0.4f, 0.4f, 1.0f}); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, {0.4f, 0.4f, 0.4f, 1.0f}); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, {0, 0, 0, 0}); // ORCA match button style + ImGui::PushStyleColor(ImGuiCol_ButtonActive, {0, 0, 0, 0}); // ORCA match button style const bool revert = m_imgui->button(wxString(ImGui::RevertBtn) + "##" + wxString::FromUTF8(label_id)); @@ -672,7 +675,7 @@ bool GLGizmoCut3D::render_reset_button(const std::string& label_id, const std::s if (ImGui::IsItemHovered()) m_imgui->tooltip(tooltip.c_str(), ImGui::GetFontSize() * 20.0f); - ImGui::PopStyleVar(); + ImGui::PopStyleVar(2); // ORCA return revert; } @@ -2254,7 +2257,7 @@ void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors, flo render_flip_plane_button(m_connectors_editing && connectors.empty()); m_imgui->text(m_labels_map["Type"]); - ImGuiWrapper::push_radio_style(); + ImGuiWrapper::push_radio_style(m_parent.get_scale()); // ORCA bool type_changed = render_connect_type_radio_button(CutConnectorType::Plug); type_changed |= render_connect_type_radio_button(CutConnectorType::Dowel); type_changed |= render_connect_type_radio_button(CutConnectorType::Snap); @@ -2334,18 +2337,14 @@ void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors, flo void GLGizmoCut3D::render_build_size() { - double koef = m_imperial_units ? GizmoObjectManipulation::mm_to_in : 1.0; - wxString unit_str = " " + (m_imperial_units ? _L("in") : _L("mm")); - - Vec3d tbb_sz = m_transformed_bounding_box.size(); - wxString size = "X: " + double_to_string(tbb_sz.x() * koef, 2) + unit_str + - ", Y: " + double_to_string(tbb_sz.y() * koef, 2) + unit_str + - ", Z: " + double_to_string(tbb_sz.z() * koef, 2) + unit_str; + double koef = m_imperial_units ? GizmoObjectManipulation::mm_to_in : 1.0; + wxString unit_str = m_imperial_units ? _L("in") : _L("mm"); + Vec3d tbb_sz = m_transformed_bounding_box.size() * koef; // ORCA ImGui::AlignTextToFramePadding(); m_imgui->text(_L("Build Volume")); - ImGui::SameLine(); - m_imgui->text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, size); + ImGui::SameLine(m_label_width); + ImGui::Text("%.2f x %.2f x %.2f %s", tbb_sz.x(), tbb_sz.y(), tbb_sz.z(), unit_str.ToUTF8().data()); // ORCA use regular text color and simplify format } void GLGizmoCut3D::reset_cut_plane() @@ -2650,8 +2649,8 @@ void GLGizmoCut3D::render_cut_plane_input_window(CutConnectors &connectors, floa render_build_size(); ImGui::AlignTextToFramePadding(); - m_imgui->text(_L("Cut position") + ": "); - ImGui::SameLine(); + m_imgui->text(_L("Cut position")); + ImGui::SameLine(m_label_width); render_move_center_input(Z); ImGui::SameLine(); @@ -2933,6 +2932,10 @@ void GLGizmoCut3D::show_tooltip_information(float x, float y) caption_max += m_imgui->calc_text_size(std::string_view{": "}).x + 35.f; float scale = m_parent.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0}); // ORCA: Dont add padding diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index 094917f6df..41f82a6738 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -1535,7 +1535,7 @@ void GLGizmoEmboss::draw_text_input() float width = ImGui::GetContentRegionAvailWidth(); const ImVec2& padding = style.FramePadding; ImVec2 icon_pos(width - m_gui_cfg->icon_width - scrollbar_width + padding.x, - cursor.y - m_gui_cfg->icon_width - scrollbar_height - 2*padding.y); + cursor.y - 2 * m_gui_cfg->icon_width - scrollbar_height - 2*padding.y); // ORCA fix vertical position ImGui::SetCursorPos(icon_pos); draw(get_icon(m_icons, IconType::exclamation, IconState::hovered)); @@ -1646,7 +1646,7 @@ void GLGizmoEmboss::draw_font_list_line() bool exist_change_in_font = m_style_manager.is_font_changed(); const std::string& font_text = m_gui_cfg->translations.font; if (exist_change_in_font || !exist_stored_style) - ImGuiWrapper::text_colored(ImGuiWrapper::COL_ORCA, font_text); + ImGuiWrapper::text_colored(ImGuiWrapper::COL_MODIFIED, font_text); // ORCA match color else ImGuiWrapper::text(font_text); @@ -1673,7 +1673,8 @@ void GLGizmoEmboss::draw_font_list_line() EmbossStyle &style = m_style_manager.get_style(); if (exist_change_in_font) { ImGui::SameLine(ImGui::GetStyle().WindowPadding.x); - if (draw_button(m_icons, IconType::undo)) { + auto r_icon = get_icon(m_icons, IconType::undo, IconState::hovered); + if (Slic3r::GUI::button(r_icon, r_icon, r_icon)) { // ORCA draw bottom with same orange color const EmbossStyle *stored_style = m_style_manager.get_stored_style(); style.path = stored_style->path; @@ -1848,7 +1849,7 @@ void GLGizmoEmboss::draw_model_type() ModelVolumeType type = m_volume->type(); //TRN EmbossOperation - ImGuiWrapper::push_radio_style(); + ImGuiWrapper::push_radio_style(m_parent.get_scale()); // ORCA if (ImGui::RadioButton(_u8L("Join").c_str(), type == part)) new_type = part; else if (ImGui::IsItemHovered()) @@ -2405,7 +2406,7 @@ bool GLGizmoEmboss::revertible(const std::string &name, ImGui::AlignTextToFramePadding(); bool changed = exist_change(value, default_value); if (changed || default_value == nullptr) - ImGuiWrapper::text_colored(ImGuiWrapper::COL_ORCA, name); + ImGuiWrapper::text_colored(ImGuiWrapper::COL_MODIFIED, name); // ORCA Match color else ImGuiWrapper::text(name); @@ -2414,7 +2415,8 @@ bool GLGizmoEmboss::revertible(const std::string &name, ImGuiWindow *window = ImGui::GetCurrentWindow(); float prev_x = window->DC.CursorPosPrevLine.x; ImGui::SameLine(undo_offset); // change cursor postion - if (draw_button(m_icons, IconType::undo)) { + auto r_icon = get_icon(m_icons, IconType::undo, IconState::hovered); + if (Slic3r::GUI::button(r_icon, r_icon, r_icon)) { // ORCA draw bottom with same orange color value = *default_value; // !! Fix to detect change of value after revert of float-slider @@ -2717,7 +2719,8 @@ void GLGizmoEmboss::draw_advanced() else if (draw_button(icons, IconType::align_horizontal_right)) { align.first=FontProp::HorizontalAlign::right; is_change = true; } else if (ImGui::IsItemHovered()) m_imgui->tooltip(_CTX_utf8(L_CONTEXT("Right", "Alignment"), "Alignment"), m_gui_cfg->max_tooltip_width); - ImGui::SameLine(); + ImGui::SameLine(0, ImGui::GetStyle().ItemSpacing.x * 2.f); // ORCA use wider spacing for separation between horizontal / vertical alignment + if (align.second==FontProp::VerticalAlign::top) draw(get_icon(icons, IconType::align_vertical_top, IconState::hovered)); else if (draw_button(icons, IconType::align_vertical_top)) { align.second=FontProp::VerticalAlign::top; is_change = true; } else if (ImGui::IsItemHovered()) m_imgui->tooltip(_CTX_utf8(L_CONTEXT("Top", "Alignment"), "Alignment"), m_gui_cfg->max_tooltip_width); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index f216c444a3..02f1b4be5f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -479,6 +479,10 @@ void GLGizmoFdmSupports::show_tooltip_information(float caption_max, float x, fl caption_max += m_imgui->calc_text_size(std::string_view{": "}).x + 15.f; float scale = m_parent.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0}); // ORCA: Dont add padding diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp index bc7e72ab18..054fed1b9c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp @@ -88,6 +88,10 @@ void GLGizmoFuzzySkin::show_tooltip_information(float caption_max, float x, floa caption_max += m_imgui->calc_text_size(std::string_view{": "}).x + 15.f; float scale = m_parent.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0}); // ORCA: Dont add padding diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp index a6be7afee6..233e4d941b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp @@ -2231,6 +2231,10 @@ void GLGizmoMeasure::show_tooltip_information(float caption_max, float x, float caption_max += m_imgui->calc_text_size(": "sv).x + 35.f; float scale = m_parent.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, { 0, 0 }); // ORCA: Dont add padding diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 8211cb5aa8..0c21a3ade6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -287,6 +287,10 @@ void GLGizmoMmuSegmentation::show_tooltip_information(float caption_max, float x caption_max += m_imgui->calc_text_size(std::string_view{": "}).x + 15.f; float scale = m_parent.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0}); // ORCA: Dont add padding diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp index e5f9988351..ebfc84ba65 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp @@ -436,7 +436,8 @@ bool reset_button(const IconManager::VIcons &icons) //btn_label += ImGui::RevertButton; //return ImGui::Button((btn_label + "##" + label_id).c_str()); - return draw_clickable(icons, IconType::reset_value); + auto icon = get_icon(icons, IconType::reset_value, IconState::hovered); + return clickable(icon, icon); // ORCA use orange color for both states } } // namespace @@ -1666,7 +1667,9 @@ void GLGizmoSVG::draw_depth() void GLGizmoSVG::draw_size() { ImGui::AlignTextToFramePadding(); - ImGuiWrapper::text(m_gui_cfg->translations.size); + bool can_reset = m_scale_width.has_value() || m_scale_height.has_value(); + ImVec4 text_color = can_reset ? ImGuiWrapper::COL_MODIFIED : ImGui::GetStyleColorVec4(ImGuiCol_Text); // ORCA use modified color on text + ImGuiWrapper::text_colored(text_color, m_gui_cfg->translations.size); if (ImGui::IsItemHovered()){ size_t count_points = 0; for (const auto &s : m_volume_shape.shapes_with_ids) @@ -1770,7 +1773,7 @@ void GLGizmoSVG::draw_size() // reset button - bool can_reset = m_scale_width.has_value() || m_scale_height.has_value(); + //bool can_reset = m_scale_width.has_value() || m_scale_height.has_value(); // ORCA update variable above if condition change if (can_reset) { if (reset_button(m_icons)) { new_relative_scale = Vec3d(1./m_scale_width.value_or(1.f), 1./m_scale_height.value_or(1.f), 1.); @@ -1838,7 +1841,8 @@ void GLGizmoSVG::draw_distance() ScopeGuard sg([imgui = m_imgui]() { imgui->disabled_end(); }); ImGui::AlignTextToFramePadding(); - ImGuiWrapper::text(m_gui_cfg->translations.distance); + ImVec4 text_color = m_distance.has_value() ? ImGuiWrapper::COL_MODIFIED : ImGui::GetStyleColorVec4(ImGuiCol_Text); // ORCA use modified color on text + ImGuiWrapper::text_colored(text_color, m_gui_cfg->translations.distance); ImGui::SameLine(m_gui_cfg->input_offset); ImGui::SetNextItemWidth(m_gui_cfg->input_width); @@ -1881,7 +1885,8 @@ void GLGizmoSVG::draw_distance() void GLGizmoSVG::draw_rotation() { ImGui::AlignTextToFramePadding(); - ImGuiWrapper::text(m_gui_cfg->translations.rotation); + ImVec4 text_color = m_angle.has_value() ? ImGuiWrapper::COL_MODIFIED : ImGui::GetStyleColorVec4(ImGuiCol_Text); // ORCA use modified color on text + ImGuiWrapper::text_colored(text_color, m_gui_cfg->translations.rotation); ImGui::SameLine(m_gui_cfg->input_offset); ImGui::SetNextItemWidth(m_gui_cfg->input_width); @@ -2001,7 +2006,7 @@ void GLGizmoSVG::draw_model_type() ModelVolumeType type = m_volume->type(); //TRN EmbossOperation - ImGuiWrapper::push_radio_style(); + ImGuiWrapper::push_radio_style(m_parent.get_scale()); //ORCA if (ImGui::RadioButton(_u8L("Join").c_str(), type == part)) new_type = part; else if (ImGui::IsItemHovered()) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index 6a8317e132..9a42bc2585 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -109,6 +109,10 @@ void GLGizmoSeam::show_tooltip_information(float caption_max, float x, float y) caption_max += m_imgui->calc_text_size(std::string_view{": "}).x + 35.f; float scale = m_parent.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0}); // ORCA: Dont add padding diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 4ac3d56a0c..04e65fc88a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -251,22 +251,22 @@ bool GLGizmosManager::init_icon_textures() ImTextureID texture_id; icon_list.clear(); - if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/toolbar_reset.svg", 14, 14, texture_id)) + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/toolbar_reset.svg", 16, 16, texture_id)) icon_list.insert(std::make_pair((int)IC_TOOLBAR_RESET, texture_id)); else return false; - if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/toolbar_reset_hover.svg", 14, 14, texture_id)) + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/toolbar_reset_hover.svg", 16, 16, texture_id)) icon_list.insert(std::make_pair((int)IC_TOOLBAR_RESET_HOVER, texture_id)); else return false; - if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/toolbar_reset_zero.svg", 14, 14, texture_id)) + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/toolbar_reset_zero.svg", 16, 16, texture_id)) icon_list.insert(std::make_pair((int) IC_TOOLBAR_RESET_ZERO, texture_id)); else return false; - if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/toolbar_reset_zero_hover.svg", 14, 14, texture_id)) + if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/toolbar_reset_zero_hover.svg", 16, 16, texture_id)) icon_list.insert(std::make_pair((int) IC_TOOLBAR_RESET_ZERO_HOVER, texture_id)); else return false; diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index 41b3816a8c..cbf7e4d6ab 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -644,8 +644,12 @@ bool GizmoObjectManipulation::reset_button(ImGuiWrapper *imgui_wrapper, float ca ImTextureID normal_id = m_glcanvas.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_RESET); ImTextureID hover_id = m_glcanvas.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_RESET_HOVER); - float font_size = ImGui::GetFontSize(); - ImVec2 button_size = ImVec2(font_size, font_size); + float scale = m_glcanvas.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 + ImVec2 button_size = ImVec2(16 * scale, 16 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); @@ -661,8 +665,12 @@ bool GizmoObjectManipulation::reset_zero_button(ImGuiWrapper *imgui_wrapper, flo ImTextureID normal_id = m_glcanvas.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_RESET_ZERO); ImTextureID hover_id = m_glcanvas.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_RESET_ZERO_HOVER); - float font_size = ImGui::GetFontSize() * 1.1; - ImVec2 button_size = ImVec2(font_size, font_size); + float scale = m_glcanvas.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 + ImVec2 button_size = ImVec2(16 * scale, 16 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); @@ -719,6 +727,10 @@ void GizmoObjectManipulation::show_move_tooltip_information(ImGuiWrapper *imgui_ caption_max += imgui_wrapper->calc_text_size(": "sv).x + 35.f; float scale = m_glcanvas.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, ImGui::GetStyle().FramePadding.y}); @@ -747,6 +759,10 @@ void GizmoObjectManipulation::show_rotate_tooltip_information(ImGuiWrapper *imgu caption_max += imgui_wrapper->calc_text_size(": "sv).x + 35.f; float scale = m_glcanvas.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, ImGui::GetStyle().FramePadding.y}); @@ -775,6 +791,10 @@ void GizmoObjectManipulation::show_scale_tooltip_information(ImGuiWrapper *imgui caption_max += imgui_wrapper->calc_text_size(": "sv).x + 35.f; float scale = m_glcanvas.get_scale(); + #ifdef WIN32 + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float) dpi / (float) DPI_DEFAULT; + #endif // WIN32 ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, ImGui::GetStyle().FramePadding.y}); diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index a0cdc558b2..f4a7adfd22 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -181,6 +181,7 @@ const ImVec4 ImGuiWrapper::COL_WINDOW_BG_DARK = { 45 / 255.f, 45 / 255.f, 49 const ImVec4 ImGuiWrapper::COL_TOOLBAR_BG = { 250 / 255.f, 250 / 255.f, 250 / 255.f, 1.f }; // ORCA color matches with toolbar_background.png const ImVec4 ImGuiWrapper::COL_TOOLBAR_BG_DARK = { 57 / 255.f, 60 / 255.f, 66 / 255.f, 1.f }; // ORCA color matches with toolbar_background_dark.png const ImVec4 ImGuiWrapper::COL_ORCA = to_ImVec4(ColorRGBA::ORCA()); +const ImVec4 ImGuiWrapper::COL_MODIFIED = { 253.f / 255.f, 111.f / 255.f, 40.f / 255.f, 1}; // ORCA same color with m_color_label_modified int ImGuiWrapper::TOOLBAR_WINDOW_FLAGS = ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove @@ -1111,11 +1112,12 @@ bool ImGuiWrapper::slider_float(const char* label, float* v, float v_min, float const ImGuiStyle& style = ImGui::GetStyle(); if (show_edit_btn) { ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, { 1, style.ItemSpacing.y }); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0); // ORCA match edit button style ImGui::SameLine(); std::wstring btn_name = ImGui::SliderFloatEditBtnIcon + boost::nowide::widen(str_label); ImGui::PushStyleColor(ImGuiCol_Button, { 0.25f, 0.25f, 0.25f, 0.0f }); - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 0.5f, 0.5f, 0.5f, 1.0f }); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, { 0.5f, 0.5f, 0.5f, 1.0f }); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, {0, 0, 0, 0 }); // ORCA match edit button style + ImGui::PushStyleColor(ImGuiCol_ButtonActive, {0, 0, 0, 0 }); // ORCA match edit button style if (ImGui::Button(into_u8(btn_name).c_str())) { ImGui::SetKeyboardFocusHere(-1); this->set_requires_extra_frame(); @@ -1124,7 +1126,7 @@ bool ImGuiWrapper::slider_float(const char* label, float* v, float v_min, float if (ImGui::IsItemHovered()) this->tooltip(into_u8(_L("Edit")).c_str(), max_tooltip_width); - ImGui::PopStyleVar(); + ImGui::PopStyleVar(2); // ORCA } if (label_visible) { @@ -2685,18 +2687,22 @@ void ImGuiWrapper::pop_combo_style() ImGui::PopStyleColor(7); } -void ImGuiWrapper::push_radio_style() +void ImGuiWrapper::push_radio_style(const float scale) { + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(1.5f, 1.5f) * scale); // ORCA ensure icon size stays consistent if (m_is_dark_mode) { - ImGui::PushStyleColor(ImGuiCol_CheckMark, to_ImVec4(decode_color_to_float_array("#00675b"))); // ORCA use orca color for radio buttons + ImGui::PushStyleColor(ImGuiCol_CheckMark, to_ImVec4(decode_color_to_float_array("#009688"))); // ORCA use orca color for radio buttons + ImGui::PushStyleColor(ImGuiCol_Border , to_ImVec4(decode_color_to_float_array("#949494"))); // ORCA match border color } else { ImGui::PushStyleColor(ImGuiCol_CheckMark, to_ImVec4(decode_color_to_float_array("#009688"))); // ORCA use orca color for radio buttons + ImGui::PushStyleColor(ImGuiCol_Border , to_ImVec4(decode_color_to_float_array("#7C8282"))); // ORCA match border color } } void ImGuiWrapper::pop_radio_style() { - ImGui::PopStyleColor(1); + ImGui::PopStyleColor(2); + ImGui::PopStyleVar(1); } void ImGuiWrapper::init_font(bool compress) diff --git a/src/slic3r/GUI/ImGuiWrapper.hpp b/src/slic3r/GUI/ImGuiWrapper.hpp index d950ccded2..21ca91013b 100644 --- a/src/slic3r/GUI/ImGuiWrapper.hpp +++ b/src/slic3r/GUI/ImGuiWrapper.hpp @@ -347,6 +347,7 @@ public: static const ImVec4 COL_SEPARATOR; static const ImVec4 COL_SEPARATOR_DARK; static const ImVec4 COL_ORCA; + static const ImVec4 COL_MODIFIED; //BBS static void on_change_color_mode(bool is_dark); @@ -364,7 +365,7 @@ public: static void pop_button_disable_style(); static void push_combo_style(const float scale); static void pop_combo_style(); - static void push_radio_style(); + static void push_radio_style(const float scale); static void pop_radio_style(); //BBS diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 14f1e86b44..a7d2f711bf 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -213,7 +213,7 @@ void ObjectDataViewModelNode::set_variable_height_icon(VaryHeightIndicator vari_ if (m_variable_height == vari_height) return; m_variable_height = vari_height; - m_variable_height_icon = m_variable_height == hiUnVariable ? m_empty_bmp : create_scaled_bitmap("toolbar_variable_layer_height", nullptr, 20); + m_variable_height_icon = m_variable_height == hiUnVariable ? m_empty_bmp : create_scaled_bitmap("obj_variable_layer_height"); } void ObjectDataViewModelNode::set_action_icon(bool enable) @@ -311,9 +311,9 @@ void ObjectDataViewModelNode::msw_rescale() m_action_icon = create_scaled_bitmap(m_action_icon_name); if (m_printable != piUndef) - m_printable_icon = create_scaled_bitmap(m_printable == piPrintable ? "obj_printable" : "obj_unprintable"); + m_printable_icon = create_scaled_bitmap(m_printable == piPrintable ? "check_on" : "check_off_focused"); - m_variable_height_icon = m_variable_height == hiUnVariable ? m_empty_bmp : create_scaled_bitmap("toolbar_variable_layer_height", nullptr, 20); + m_variable_height_icon = m_variable_height == hiUnVariable ? m_empty_bmp : create_scaled_bitmap("obj_variable_layer_height"); if (!m_opt_categories.empty()) update_settings_digest_bitmaps(); diff --git a/src/slic3r/GUI/ParamsPanel.cpp b/src/slic3r/GUI/ParamsPanel.cpp index 6b87f6be61..fb625a7724 100644 --- a/src/slic3r/GUI/ParamsPanel.cpp +++ b/src/slic3r/GUI/ParamsPanel.cpp @@ -259,8 +259,16 @@ ParamsPanel::ParamsPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, c m_tips_arrow = new ScalableButton(m_top_panel, wxID_ANY, "tips_arrow"); m_tips_arrow->Hide(); - m_title_view = new Label(m_top_panel, Label::Body_12, _L("Advance")); // ORCA match size with advanced toggle on tab.cpp m_static_title + m_mode_icon = new ScalableButton(m_top_panel, wxID_ANY, "advanced"); // ORCA + m_mode_icon->Bind(wxEVT_BUTTON, [this](wxCommandEvent e) { + m_mode_view->SetValue(!m_mode_view->GetValue()); + wxCommandEvent evt(wxEVT_TOGGLEBUTTON, m_mode_view->GetId()); // ParamsPanel::OnToggled(evt) + evt.SetEventObject(m_mode_view); + m_mode_view->wxEvtHandler::ProcessEvent(evt); + }); + m_mode_icon->SetToolTip(_L("Show/Hide advanced parameters")); m_mode_view = new SwitchButton(m_top_panel, wxID_ABOUT); + m_mode_view->SetToolTip(_L("Show/Hide advanced parameters")); // BBS: new layout //m_search_btn = new ScalableButton(m_top_panel, wxID_ANY, "search", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); @@ -394,23 +402,16 @@ void ParamsPanel::create_layout() if (m_top_panel) { m_mode_sizer = new wxBoxSizer( wxHORIZONTAL ); - m_mode_sizer->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); - m_mode_sizer->Add(m_process_icon, 0, wxALIGN_CENTER); - m_mode_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); - m_mode_sizer->Add( m_title_label, 0, wxALIGN_CENTER ); - m_mode_sizer->AddStretchSpacer(2); - m_mode_sizer->Add(m_mode_region, 0, wxALIGN_CENTER); - m_mode_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); - m_mode_sizer->Add(m_tips_arrow, 0, wxALIGN_CENTER); - m_mode_sizer->AddStretchSpacer(12); - m_mode_sizer->Add( m_title_view, 0, wxALIGN_CENTER ); - m_mode_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); - m_mode_sizer->Add(m_mode_view, 0, wxALIGN_CENTER); - m_mode_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing() * 6)); // ORCA using spacer prevents shaky mode_view when tips_arrow highlighting mode_region instead using AddStretchSpacer - m_mode_sizer->Add(m_setting_btn, 0, wxALIGN_CENTER); - m_mode_sizer->AddSpacer(FromDIP(SidebarProps::IconSpacing())); - m_mode_sizer->Add(m_compare_btn, 0, wxALIGN_CENTER); - m_mode_sizer->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); + m_mode_sizer->Add(m_process_icon, 0, wxALIGN_CENTER | wxLEFT , FromDIP(SidebarProps::TitlebarMargin())); + m_mode_sizer->Add(m_title_label , 0, wxALIGN_CENTER | wxLEFT , FromDIP(SidebarProps::ElementSpacing())); + m_mode_sizer->Add(m_mode_region , 0, wxALIGN_CENTER | wxLEFT , FromDIP(SidebarProps::WideSpacing())); + m_mode_sizer->Add(m_tips_arrow , 0, wxALIGN_CENTER | wxLEFT , FromDIP(SidebarProps::ElementSpacing())); + m_mode_sizer->AddSpacer(FromDIP(SidebarProps::IconSpacing())); // ensure there is spacing after control when sidebar has less width + m_mode_sizer->AddStretchSpacer(); + m_mode_sizer->Add(m_mode_icon , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::ElementSpacing())); + m_mode_sizer->Add(m_mode_view , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); + m_mode_sizer->Add(m_setting_btn , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); + m_mode_sizer->Add(m_compare_btn , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::TitlebarMargin())); //m_mode_sizer->Add( m_search_btn, 0, wxALIGN_CENTER ); //m_mode_sizer->AddSpacer(16); m_mode_sizer->SetMinSize(-1, FromDIP(30)); @@ -690,6 +691,7 @@ void ParamsPanel::msw_rescale() m_mode_sizer->SetMinSize(-1, 3 * em_unit(this)); if (m_mode_region) ((SwitchButton* )m_mode_region)->Rescale(); + if (m_mode_icon) m_mode_icon->msw_rescale(); if (m_mode_view) ((SwitchButton* )m_mode_view)->Rescale(); for (auto tab : {m_tab_print, m_tab_print_plate, m_tab_print_object, m_tab_print_part, m_tab_print_layer, m_tab_filament, m_tab_printer}) { @@ -791,10 +793,10 @@ void ParamsPanel::delete_subwindows() m_mode_view = nullptr; } - if (m_title_view) + if (m_mode_icon) // ORCA m_title_view replacement { - delete m_title_view; - m_title_view = nullptr; + delete m_mode_icon; + m_mode_icon = nullptr; } if (m_search_btn) diff --git a/src/slic3r/GUI/ParamsPanel.hpp b/src/slic3r/GUI/ParamsPanel.hpp index 24003b5783..36ed957cc4 100644 --- a/src/slic3r/GUI/ParamsPanel.hpp +++ b/src/slic3r/GUI/ParamsPanel.hpp @@ -84,7 +84,7 @@ class ParamsPanel : public wxPanel SwitchButton* m_mode_region { nullptr }; ScalableButton *m_tips_arrow{nullptr}; bool m_tips_arror_blink{false}; - wxStaticText* m_title_view { nullptr }; + ScalableButton* m_mode_icon { nullptr }; // ORCA SwitchButton* m_mode_view { nullptr }; //wxBitmapButton* m_search_button { nullptr }; wxStaticLine* m_staticline_print { nullptr }; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 1d5c6f508a..b994c375d1 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -936,7 +936,7 @@ public: Bind(wxEVT_PAINT, [this](wxPaintEvent& evt) { wxPaintDC dc(this); - dc.SetPen(wxColour("#EEEEEE")); + dc.SetPen(StateColor::darkModeColorFor(wxColour("#DBDBDB"))); // ORCA match popup border color dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.DrawRoundedRectangle(0, 0, GetSize().x, GetSize().y, 0); }); @@ -1636,8 +1636,8 @@ Sidebar::Sidebar(Plater *parent) h_sizer_title->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); h_sizer_title->Add(p->m_text_printer_settings, 0, wxALIGN_CENTER); h_sizer_title->AddStretchSpacer(); - h_sizer_title->Add(p->m_printer_connect , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20)); // used larger margin to prevent accidental clicks - h_sizer_title->Add(p->m_printer_bbl_sync, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20)); // used larger margin to prevent accidental clicks + h_sizer_title->Add(p->m_printer_connect , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks + h_sizer_title->Add(p->m_printer_bbl_sync, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks h_sizer_title->Add(p->m_printer_setting, 0, wxALIGN_CENTER); h_sizer_title->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); h_sizer_title->SetMinSize(-1, 3 * em); @@ -1654,10 +1654,7 @@ Sidebar::Sidebar(Plater *parent) // add printer title scrolled_sizer->Add(p->m_panel_printer_title, 0, wxEXPAND | wxALL, 0); p->m_panel_printer_title->Bind(wxEVT_LEFT_UP, [this] (auto & e) { - if (p->m_panel_printer_content->GetMaxHeight() == 0) - p->m_panel_printer_content->SetMaxSize({-1, -1}); - else - p->m_panel_printer_content->SetMaxSize({-1, 0}); + p->m_panel_printer_content->Show(!p->m_panel_printer_content->IsShown()); m_scrolled_sizer->Layout(); }); @@ -1987,16 +1984,7 @@ Sidebar::Sidebar(Plater *parent) if (e.GetPosition().x > (p->m_flushing_volume_btn->IsShown() ? p->m_flushing_volume_btn->GetPosition().x : (p->m_bpButton_add_filament->GetPosition().x - FromDIP(30)))) // ORCA exclude area of del button from titlebar collapse/expand feature to fix undesired collapse when user spams del filament button return; - if (p->m_panel_filament_content->GetMaxHeight() == 0) { - p->m_panel_filament_content->SetMaxSize({-1, FromDIP(174)}); - auto min_size = p->m_panel_filament_content->GetSizer()->GetMinSize(); - if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) - min_size.y = p->m_panel_filament_content->GetMaxHeight(); - p->m_panel_filament_content->SetMinSize({-1, min_size.y}); - } else { - p->m_panel_filament_content->SetMinSize({-1, 0}); - p->m_panel_filament_content->SetMaxSize({-1, 0}); - } + p->m_panel_filament_content->Show(!p->m_panel_filament_content->IsShown()); m_scrolled_sizer->Layout(); }); @@ -2038,7 +2026,7 @@ Sidebar::Sidebar(Plater *parent) })); bSizer39->Add(p->m_flushing_volume_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); - bSizer39->Hide(p->m_flushing_volume_btn); + bSizer39->Hide(p->m_flushing_volume_btn); // ORCA Ensure button is hidden on launch while 1 filament exist ScalableButton* add_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "add_filament"); add_btn->SetToolTip(_L("Add one filament")); @@ -2058,12 +2046,8 @@ Sidebar::Sidebar(Plater *parent) bSizer39->Add(del_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::IconSpacing())); bSizer39->Add(add_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::IconSpacing())); // ORCA Moved add button after delete button to prevent add button position change when remove icon automatically hidden - bSizer39->AddSpacer(FromDIP(20)); - if (p->combos_filament.size() <= 1) { // ORCA Fix Flushing button and Delete filament button not hidden on launch while only 1 filament exist - bSizer39->Hide(p->m_flushing_volume_btn); - //bSizer39->Hide(p->m_bpButton_del_filament); // ORCA: Hide delete filament button if there is only one filament - } + bSizer39->Hide(p->m_bpButton_del_filament); // ORCA Ensure button is hidden on launch while 1 filament exist ams_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 16); // ORCA match icon size with other icons as 16x16 @@ -2075,7 +2059,7 @@ Sidebar::Sidebar(Plater *parent) ams_btn->Bind(wxEVT_UPDATE_UI, &Sidebar::update_sync_ams_btn_enable, this); p->m_bpButton_ams_filament = ams_btn; - bSizer39->Add(ams_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::IconSpacing())); + bSizer39->Add(ams_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::WideSpacing())); //bSizer39->Add(FromDIP(10), 0, 0, 0, 0 ); ScalableButton* set_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "settings"); @@ -2088,7 +2072,7 @@ Sidebar::Sidebar(Plater *parent) }); p->m_bpButton_set_filament = set_btn; - bSizer39->Add(set_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::IconSpacing())); + bSizer39->Add(set_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::WideSpacing())); bSizer39->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); // add filament content diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 2ff3e567b8..5f70657e5f 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -121,7 +121,8 @@ public: static int TitlebarMargin(){ return 8 ;} // Use as side margins on titlebar. Has less margin on sides to create separation with its content static int ContentMargin() { return 12;} // Use as side margins contents of title static int ContentMarginV(){ return 9 ;} // Use as vertical margins contents of title - static int IconSpacing() { return 10;} // Use on main elements + static int IconSpacing() { return 10;} // Use on main elements in same group of controls + static int WideSpacing() { return 18;} // Use between main elements / control groups for separation or preventing accidental clicks important static int ElementSpacing(){ return 5 ;} // Use if elements has relation between them like edit button for combo box etc. }; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index b98bb91ec3..377ae13c3f 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -380,20 +380,23 @@ void Tab::create_preset_tab() m_top_sizer->Add(m_undo_to_sys_btn, 0, wxALIGN_CENTER_VERTICAL); m_top_sizer->AddSpacer(FromDIP(SidebarProps::IconSpacing())); #endif - m_top_sizer->Add(m_btn_save_preset, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); + m_top_sizer->Add(m_btn_save_preset , 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); m_top_sizer->Add(m_btn_delete_preset, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); - m_top_sizer->Add(m_btn_search, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); - m_top_sizer->Add(m_search_item, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::ContentMargin())); + m_top_sizer->Add(m_btn_search , 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::WideSpacing())); + m_top_sizer->Add(m_search_item , 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::ContentMargin())); if (dynamic_cast(this) == nullptr) { - m_static_title = new Label(m_top_panel, Label::Body_12, _L("Advance")); - m_static_title->Wrap( -1 ); - // BBS: open this tab by select first - m_static_title->Bind(wxEVT_LEFT_UP, [this](auto& e) { - restore_last_select_item(); + m_mode_icon = new ScalableButton(m_top_panel, wxID_ANY, "advanced"); // ORCA + m_mode_icon->SetToolTip(_L("Show/Hide advanced parameters")); + m_mode_icon->Bind(wxEVT_BUTTON, [this](wxCommandEvent e) { + m_mode_view->SetValue(!m_mode_view->GetValue()); + wxCommandEvent evt(wxEVT_TOGGLEBUTTON, m_mode_view->GetId()); // ParamsPanel::OnToggled(evt) + evt.SetEventObject(m_mode_view); + m_mode_view->wxEvtHandler::ProcessEvent(evt); }); - m_top_sizer->Add(m_static_title, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); + m_top_sizer->Add(m_mode_icon, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::WideSpacing())); m_mode_view = new SwitchButton(m_top_panel, wxID_ABOUT); + m_mode_view->SetToolTip(_L("Show/Hide advanced parameters")); m_top_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); m_top_sizer->Add( m_mode_view, 0, wxALIGN_CENTER_VERTICAL); } diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 824ef2df9f..96b35b26e1 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -141,7 +141,7 @@ protected: //BBS: GUI refactor wxPanel* m_top_panel; - wxStaticText* m_static_title; + ScalableButton* m_mode_icon; // ORCA m_static_title replacement wxBoxSizer* m_main_sizer; wxBoxSizer* m_top_sizer; wxBoxSizer* m_top_left_sizer; diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index bc6918d7ec..129eec9c61 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -2731,10 +2731,11 @@ void AMSPreview::doRender(wxDC &dc) //single slot else if (m_amsinfo.cans.size() == 1) { auto iter = m_amsinfo.cans[0]; - dc.SetPen(wxPen(*wxTRANSPARENT_PEN)); - dc.SetBrush(StateColor::darkModeColorFor(AMS_CONTROL_DEF_BLOCK_BK_COLOUR)); - wxSize rec_size = wxSize(FromDIP(16), FromDIP(24)); - dc.DrawRoundedRectangle((size.x - rec_size.x) / 2, (size.y - rec_size.y) / 2, rec_size.x, rec_size.y, FromDIP(2)); + // ORCA dont add additional background. four tray already doesnt use one + //dc.SetPen(wxPen(*wxTRANSPARENT_PEN)); + //dc.SetBrush(StateColor::darkModeColorFor(AMS_CONTROL_DEF_BLOCK_BK_COLOUR)); + //wxSize rec_size = wxSize(FromDIP(16), FromDIP(24)); + //dc.DrawRoundedRectangle((size.x - rec_size.x) / 2, (size.y - rec_size.y) / 2, rec_size.x, rec_size.y, FromDIP(2)); if (iter.material_cols.size() > 1) { int fleft = (size.x - AMS_ITEM_CUBE_SIZE.x) / 2;