From 3e0d5f7a308d51377c0e050da3454c6c2f0553ec Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Sun, 4 Feb 2024 14:13:21 +0800 Subject: [PATCH] ENH:upgrade tips for gizmo tool Jira: STUDIO-6167 Change-Id: I3890bff060c1a507ea3a3831930d24301ab19dc6 --- src/slic3r/GUI/GLCanvas3D.cpp | 5 +++++ src/slic3r/GUI/GLToolbar.cpp | 4 ++-- src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp | 6 +++++- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 6 +++++- src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp | 6 +++++- src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp | 7 +++++++ src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 6 +++++- src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp | 6 +++++- src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp | 6 +++++- src/slic3r/GUI/Gizmos/GLGizmoText.cpp | 6 +++++- 10 files changed, 49 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 88bac4efb..25325a04d 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -6234,6 +6234,8 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "splitobjects"; item.icon_filename = m_is_dark ? "split_objects_dark.svg" : "split_objects.svg"; item.tooltip = _utf8(L("Split to objects")); + item.additional_tooltip = _u8L("Please select single object\n.") + + _u8L("And it is valid when there are at least two parts in object or stl has at least two meshes."); item.sprite_id++; item.left.render_callback = nullptr; item.left.action_callback = [this]() { @@ -6252,6 +6254,8 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "splitvolumes"; item.icon_filename = m_is_dark ? "split_parts_dark.svg" : "split_parts.svg"; item.tooltip = _utf8(L("Split to parts")); + item.additional_tooltip = _u8L("Please select single object\n.") + + _u8L("And it is valid when importing an stl with at least two meshes."); item.sprite_id++; item.left.action_callback = [this]() { if (m_canvas != nullptr) { @@ -6268,6 +6272,7 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "layersediting"; item.icon_filename = m_is_dark ? "toolbar_variable_layer_height_dark.svg" : "toolbar_variable_layer_height.svg"; item.tooltip = _utf8(L("Variable layer height")); + item.additional_tooltip = _u8L("Please select single object."); item.sprite_id++; item.left.action_callback = [this]() { if (m_canvas != nullptr) { diff --git a/src/slic3r/GUI/GLToolbar.cpp b/src/slic3r/GUI/GLToolbar.cpp index e38a644cf..87f76f561 100644 --- a/src/slic3r/GUI/GLToolbar.cpp +++ b/src/slic3r/GUI/GLToolbar.cpp @@ -528,11 +528,11 @@ std::string GLToolbar::get_tooltip() const if (item->is_hovered()) { tooltip = item->get_tooltip(); - if (!item->is_pressed()) + if (!item->is_enabled()) { const std::string& additional_tooltip = item->get_additional_tooltip(); if (!additional_tooltip.empty()) - tooltip += "\n" + additional_tooltip; + tooltip += ":\n" + additional_tooltip; break; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp index 67119dc8d..664708e49 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp @@ -445,7 +445,11 @@ bool GLGizmoAdvancedCut::on_init() std::string GLGizmoAdvancedCut::on_get_name() const { - return (_(L("Cut"))).ToUTF8().data(); + if (!on_is_activable() && m_state == EState::Off) { + return _u8L("Cut") + _u8L(":\n") + _u8L("Please select single object."); + } else { + return _u8L("Cut"); + } } void GLGizmoAdvancedCut::on_load(cereal::BinaryInputArchive &ar) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 82075cfce..ff9c83361 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -72,7 +72,11 @@ void GLGizmoFdmSupports::on_opening() std::string GLGizmoFdmSupports::on_get_name() const { - return _u8L("Supports Painting"); + if (!on_is_activable() && m_state == EState::Off) { + return _u8L("Supports Painting") + _u8L(":\n") + _u8L("Please select single object."); + } else { + return _u8L("Supports Painting"); + } } bool GLGizmoFdmSupports::on_init() diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp index 4ad8136bb..79c3758ec 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp @@ -39,7 +39,11 @@ CommonGizmosDataID GLGizmoFlatten::on_get_requirements() const std::string GLGizmoFlatten::on_get_name() const { - return _u8L("Lay on face"); + if (!on_is_activable() && m_state == EState::Off) { + return _u8L("Lay on face") + _u8L(":\n") + _u8L("Please select single object."); + } else { + return _u8L("Lay on face"); + } } bool GLGizmoFlatten::on_is_activable() const diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp index 3c01c524e..b232ef329 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp @@ -93,6 +93,13 @@ bool GLGizmoMeshBoolean::on_init() std::string GLGizmoMeshBoolean::on_get_name() const { + if (!on_is_activable() && m_state == EState::Off) { + if (!m_parent.get_selection().is_single_full_instance()) { + return _u8L("Mesh Boolean") + _u8L(":\n") + _u8L("Please right click to assembly these objects."); + } else if (m_parent.get_selection().get_volume_idxs().size() <= 1){ + return _u8L("Mesh Boolean") + _u8L(":\n") + _u8L("Please add at least one more object and select them together,\nthen right click to assembly these objects."); + } + } return _u8L("Mesh Boolean"); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 841b8b04f..1c546a4a6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -43,7 +43,11 @@ void GLGizmoMmuSegmentation::on_shutdown() std::string GLGizmoMmuSegmentation::on_get_name() const { - return _u8L("Color Painting"); + if (!on_is_activable() && m_state == EState::Off) { + return _u8L("Color Painting") + _u8L(":\n") + _u8L("Please select single object."); + } else { + return _u8L("Color Painting"); + } } bool GLGizmoMmuSegmentation::on_is_selectable() const diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index c27ec0622..77826a73d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -57,7 +57,11 @@ GLGizmoSeam::GLGizmoSeam(GLCanvas3D& parent, const std::string& icon_filename, u std::string GLGizmoSeam::on_get_name() const { - return _u8L("Seam painting"); + if (!on_is_activable() && m_state == EState::Off) { + return _u8L("Seam painting") + _u8L(":\nPlease select single object."); + } else { + return _u8L("Seam painting"); + } } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index 7ffe28304..6f1154a5f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -138,7 +138,11 @@ void GLGizmoSimplify::add_simplify_suggestion_notification( std::string GLGizmoSimplify::on_get_name() const { - return _u8L("Simplify"); + if (!on_is_activable()) { + return _u8L("Simplify") + _u8L(":\n") + _u8L("Please select single object."); + } else { + return _u8L("Simplify"); + } } void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limit) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index bedf66067..985354105 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -355,7 +355,11 @@ CommonGizmosDataID GLGizmoText::on_get_requirements() const std::string GLGizmoText::on_get_name() const { - return _u8L("Text shape"); + if (!on_is_activable() && m_state == EState::Off) { + return _u8L("Text shape") + _u8L(":\n") + _u8L("Please select single object."); + } else { + return _u8L("Text shape"); + } } bool GLGizmoText::on_is_activable() const