Hasareej cluster tooltips (#1181)

EditorTransformComponent Cluster Tooltips
This commit is contained in:
Hasareej
2021-06-11 10:07:17 +01:00
committed by GitHub
parent 01847ef6dd
commit 0cee5150c7
8 changed files with 64 additions and 0 deletions
@@ -136,6 +136,13 @@ namespace AzToolsFramework
static const char* const s_duplicateUndoRedoDesc = s_duplicateTitle;
static const char* const s_deleteUndoRedoDesc = s_deleteTitle;
static const char* const TransformModeClusterTranslateTooltip = "Switch to translate mode";
static const char* const TransformModeClusterRotateTooltip = "Switch to rotate mode";
static const char* const TransformModeClusterScaleTooltip = "Switch to scale mode";
static const char* const SpaceClusterWorldTooltip = "Toggle world space lock";
static const char* const SpaceClusterParentTooltip = "Toggle parent space lock";
static const char* const SpaceClusterLocalTooltip = "Toggle local space lock";
static const AZ::Color s_fadedXAxisColor = AZ::Color(AZ::u8(200), AZ::u8(127), AZ::u8(127), AZ::u8(255));
static const AZ::Color s_fadedYAxisColor = AZ::Color(AZ::u8(127), AZ::u8(190), AZ::u8(127), AZ::u8(255));
static const AZ::Color s_fadedZAxisColor = AZ::Color(AZ::u8(120), AZ::u8(120), AZ::u8(180), AZ::u8(255));
@@ -2460,6 +2467,17 @@ namespace AzToolsFramework
m_rotateButtonId = RegisterClusterButton(m_transformModeClusterId, "Translate");
m_scaleButtonId = RegisterClusterButton(m_transformModeClusterId, "Scale");
// set button tooltips
ViewportUi::ViewportUiRequestBus::Event(
ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::SetClusterButtonTooltip, m_transformModeClusterId,
m_translateButtonId, TransformModeClusterTranslateTooltip);
ViewportUi::ViewportUiRequestBus::Event(
ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::SetClusterButtonTooltip, m_transformModeClusterId,
m_rotateButtonId, TransformModeClusterRotateTooltip);
ViewportUi::ViewportUiRequestBus::Event(
ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::SetClusterButtonTooltip, m_transformModeClusterId,
m_scaleButtonId, TransformModeClusterScaleTooltip);
auto onButtonClicked = [this](ViewportUi::ButtonId buttonId)
{
if (buttonId == m_translateButtonId)
@@ -2498,6 +2516,17 @@ namespace AzToolsFramework
m_spaceCluster.m_parentButtonId = RegisterClusterButton(m_spaceCluster.m_spaceClusterId, "Parent");
m_spaceCluster.m_localButtonId = RegisterClusterButton(m_spaceCluster.m_spaceClusterId, "Local");
// set button tooltips
ViewportUi::ViewportUiRequestBus::Event(
ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::SetClusterButtonTooltip,
m_spaceCluster.m_spaceClusterId, m_spaceCluster.m_worldButtonId, SpaceClusterWorldTooltip);
ViewportUi::ViewportUiRequestBus::Event(
ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::SetClusterButtonTooltip,
m_spaceCluster.m_spaceClusterId, m_spaceCluster.m_parentButtonId, SpaceClusterParentTooltip);
ViewportUi::ViewportUiRequestBus::Event(
ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::SetClusterButtonTooltip,
m_spaceCluster.m_spaceClusterId, m_spaceCluster.m_localButtonId, SpaceClusterLocalTooltip);
auto onButtonClicked = [this](ViewportUi::ButtonId buttonId)
{
if (buttonId == m_spaceCluster.m_localButtonId)
@@ -163,6 +163,17 @@ namespace AzToolsFramework::ViewportUi::Internal
}
}
void ViewportUiCluster::SetButtonTooltip(const ButtonId buttonId, const AZStd::string& tooltip)
{
// get the action corresponding to the buttonId
if (auto actionEntry = m_buttonActionMap.find(buttonId); actionEntry != m_buttonActionMap.end())
{
// update the tooltip
auto action = actionEntry->second;
action->setToolTip(QString((tooltip).c_str()));
}
}
ViewportUiWidgetCallbacks ViewportUiCluster::GetWidgetCallbacks()
{
return m_widgetCallbacks;
@@ -41,6 +41,8 @@ namespace AzToolsFramework::ViewportUi::Internal
void Update();
//! Adds a locked overlay to the button's icon.
void SetButtonLocked(ButtonId buttonId, bool isLocked);
//! Updates the button's tooltip to the passed string.
void SetButtonTooltip(ButtonId buttonId, const AZStd::string& tooltip);
//! Returns the widget manager.
ViewportUiWidgetCallbacks GetWidgetCallbacks();
@@ -108,6 +108,14 @@ namespace AzToolsFramework::ViewportUi::Internal
}
}
void ViewportUiDisplay::SetClusterButtonTooltip(const ViewportUiElementId clusterId, const ButtonId buttonId, const AZStd::string& tooltip)
{
if (auto viewportUiCluster = qobject_cast<ViewportUiCluster*>(GetViewportUiElement(clusterId).get()))
{
viewportUiCluster->SetButtonTooltip(buttonId, tooltip);
}
}
void ViewportUiDisplay::RemoveClusterButton(ViewportUiElementId clusterId, ButtonId buttonId)
{
if (auto cluster = qobject_cast<ViewportUiCluster*>(GetViewportUiElement(clusterId).get()))
@@ -59,6 +59,7 @@ namespace AzToolsFramework::ViewportUi::Internal
void AddCluster(AZStd::shared_ptr<ButtonGroup> buttonGroup, Alignment align);
void AddClusterButton(ViewportUiElementId clusterId, Button* button);
void SetClusterButtonLocked(ViewportUiElementId clusterId, ButtonId buttonId, bool isLocked);
void SetClusterButtonTooltip(ViewportUiElementId clusterId, ButtonId buttonId, const AZStd::string& tooltip);
void RemoveClusterButton(ViewportUiElementId clusterId, ButtonId buttonId);
void UpdateCluster(const ViewportUiElementId clusterId);
@@ -77,6 +77,16 @@ namespace AzToolsFramework::ViewportUi
}
}
void ViewportUiManager::SetClusterButtonTooltip(const ClusterId clusterId, const ButtonId buttonId, const AZStd::string& tooltip)
{
if (auto clusterIt = m_clusterButtonGroups.find(clusterId); clusterIt != m_clusterButtonGroups.end())
{
auto cluster = clusterIt->second;
m_viewportUi->SetClusterButtonTooltip(cluster->GetViewportUiElementId(), buttonId, tooltip);
UpdateButtonGroupUi(cluster.get());
}
}
void ViewportUiManager::RegisterClusterEventHandler(const ClusterId clusterId, AZ::Event<ButtonId>::Handler& handler)
{
if (auto clusterIt = m_clusterButtonGroups.find(clusterId); clusterIt != m_clusterButtonGroups.end())
@@ -36,6 +36,7 @@ namespace AzToolsFramework::ViewportUi
void SetClusterActiveButton(ClusterId clusterId, ButtonId buttonId) override;
void SetSwitcherActiveButton(SwitcherId switcherId, ButtonId buttonId) override;
void SetClusterButtonLocked(ClusterId clusterId, ButtonId buttonId, bool isLocked) override;
void SetClusterButtonTooltip(ClusterId clusterId, ButtonId buttonId, const AZStd::string& tooltip) override;
const ButtonId CreateClusterButton(ClusterId clusterId, const AZStd::string& icon) override;
const ButtonId CreateSwitcherButton(
SwitcherId switcherId, const AZStd::string& icon, const AZStd::string& name = AZStd::string()) override;
@@ -67,6 +67,8 @@ namespace AzToolsFramework::ViewportUi
virtual void SetSwitcherActiveButton(SwitcherId clusterId, ButtonId buttonId) = 0;
//! Adds a locked overlay to the cluster button's icon.
virtual void SetClusterButtonLocked(ClusterId clusterId, ButtonId buttonId, bool isLocked) = 0;
//! Updates/sets the cluster button's tooltip to the passed string.
virtual void SetClusterButtonTooltip(ClusterId clusterId, ButtonId buttonId, const AZStd::string& tooltip) = 0;
//! Registers a new button onto a cluster.
virtual const ButtonId CreateClusterButton(const ClusterId clusterId, const AZStd::string& icon) = 0;
//! Registers a new button onto a switcher.