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 @@
-
\ 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;