further formatting changes for viewport ui

Signed-off-by: hultonha <hultonha@amazon.co.uk>
This commit is contained in:
hultonha
2021-07-21 14:13:34 +01:00
parent ec3e1f98c1
commit 0b4e8b468f
17 changed files with 86 additions and 73 deletions
@@ -6,7 +6,6 @@
*
*/
#include <AzToolsFramework/ViewportUi/Button.h>
namespace AzToolsFramework::ViewportUi::Internal
@@ -28,7 +28,7 @@ namespace AzToolsFramework::ViewportUi::Internal
AZStd::string m_icon; //!< The icon for this button, string path to an image.
AZStd::string m_name; //!< The name displayed as a label next to the button's icon.
State m_state = State::Deselected;
ButtonId m_buttonId;
State m_state = State::Deselected;
ButtonId m_buttonId;
};
} // namespace AzToolsFramework::ViewportUi::Internal
@@ -1,5 +1,3 @@
#pragma once
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
@@ -8,6 +6,8 @@
*
*/
#pragma once
#include <AzToolsFramework/ViewportUi/ViewportUiRequestBus.h>
namespace AzToolsFramework::ViewportUi::Internal
@@ -10,9 +10,7 @@
namespace AzToolsFramework::ViewportUi::Internal
{
TextField::TextField(
const AZStd::string& labelText, const AZStd::string& fieldText,
TextFieldValidationType validationType)
TextField::TextField(const AZStd::string& labelText, const AZStd::string& fieldText, TextFieldValidationType validationType)
: m_labelText(labelText)
, m_fieldText(fieldText)
, m_validationType(validationType)
@@ -19,16 +19,17 @@ namespace AzToolsFramework::ViewportUi::Internal
{
public:
TextField(
const AZStd::string& labelText = "", const AZStd::string& fieldText = "",
const AZStd::string& labelText = "",
const AZStd::string& fieldText = "",
TextFieldValidationType validationType = TextFieldValidationType::String);
~TextField() = default;
void ConnectEventHandler(AZ::Event<AZStd::string>::Handler& handler);
//! Default text for the text field. Will be cast to same type as m_validationType.
AZStd::string m_fieldText;
AZStd::string m_fieldText;
AZStd::string m_labelText;
TextFieldValidationType m_validationType; //<! The type of validator for this text edit.
TextFieldValidationType m_validationType; //!< The type of validator for this text edit.
TextFieldId m_textFieldId;
ViewportUiElementId m_viewportId;
AZ::Event<AZStd::string> m_textEditedEvent;
@@ -6,7 +6,6 @@
*
*/
#include <AzToolsFramework/ViewportUi/ButtonGroup.h>
#include <AzToolsFramework/ViewportUi/ViewportUiCluster.h>
@@ -6,7 +6,6 @@
*
*/
#include <AzCore/std/smart_ptr/make_shared.h>
#include <AzFramework/Viewport/ViewportScreen.h>
#include <AzToolsFramework/Viewport/ViewportMessages.h>
@@ -6,15 +6,19 @@
*
*/
#include <AzCore/Console/IConsole.h>
#include <AzToolsFramework/ViewportUi/ViewportUiDisplayLayout.h>
#include <QtWidgets/QWidget>
#include <QWidget>
namespace AzToolsFramework::ViewportUi::Internal
{
AZ_CVAR(
int, ViewportUiDisplayLayoutSpacing, 5, nullptr, AZ::ConsoleFunctorFlags::Null,
int,
ViewportUiDisplayLayoutSpacing,
5,
nullptr,
AZ::ConsoleFunctorFlags::Null,
"The spacing between elements attached to the Viewport UI Display Layout");
ViewportUiDisplayLayout::ViewportUiDisplayLayout(QWidget* parent)
@@ -27,7 +31,7 @@ namespace AzToolsFramework::ViewportUi::Internal
setSpacing(ViewportUiDisplayLayoutSpacing);
// create a 3x2 map of sub layouts which will stack widgets according to their mapped alignment
m_internalLayouts = AZStd::unordered_map<Qt::Alignment, QBoxLayout*> {
m_internalLayouts = AZStd::unordered_map<Qt::Alignment, QBoxLayout*>{
CreateSubLayout(new QVBoxLayout(), 0, 0, Qt::AlignTop | Qt::AlignLeft),
CreateSubLayout(new QVBoxLayout(), 1, 0, Qt::AlignBottom | Qt::AlignLeft),
CreateSubLayout(new QVBoxLayout(), 0, 1, Qt::AlignTop),
@@ -45,8 +49,7 @@ namespace AzToolsFramework::ViewportUi::Internal
}
// find the corresponding sub layout for the alignment and add the widget
if (auto layoutForAlignment = m_internalLayouts.find(alignment);
layoutForAlignment != m_internalLayouts.end())
if (auto layoutForAlignment = m_internalLayouts.find(alignment); layoutForAlignment != m_internalLayouts.end())
{
// place the widget before or after the invisible spacer
// depending on the layout alignment
@@ -97,7 +100,7 @@ namespace AzToolsFramework::ViewportUi::Internal
// without this, alignment and resizing within the sublayouts becomes difficult
layout->addStretch(1);
addLayout(layout, row, column, /*rowSpan=*/ 1, /*colSpan=*/ 1, alignment);
addLayout(layout, row, column, /*rowSpan=*/1, /*colSpan=*/1, alignment);
return { alignment, layout };
}
@@ -9,8 +9,9 @@
#pragma once
#include <AzCore/std/containers/unordered_map.h>
#include <QGridLayout>
#include <QBoxLayout>
#include <QGridLayout>
#include <QPointer>
namespace AzToolsFramework::ViewportUi::Internal
@@ -33,8 +34,7 @@ namespace AzToolsFramework::ViewportUi::Internal
private:
//! Create a sub-layout to add to the grid of layouts.
//! @return A pair of the new layout along with its alignment on the grid.
AZStd::pair<Qt::Alignment, QBoxLayout*> CreateSubLayout(
QBoxLayout* layout, int row, int column, Qt::Alignment alignment);
AZStd::pair<Qt::Alignment, QBoxLayout*> CreateSubLayout(QBoxLayout* layout, int row, int column, Qt::Alignment alignment);
//! A mapping of each sub-layout to its corresponding alignment on the grid.
AZStd::unordered_map<Qt::Alignment, QBoxLayout*> m_internalLayouts;
@@ -6,12 +6,11 @@
*
*/
#include <AzCore/std/smart_ptr/make_shared.h>
#include <AzToolsFramework/ViewportUi/Button.h>
#include <AzToolsFramework/ViewportUi/ButtonGroup.h>
#include <AzToolsFramework/ViewportUi/ViewportUiManager.h>
#include <AzToolsFramework/ViewportUi/ViewportUiDisplay.h>
#include <AzToolsFramework/ViewportUi/ViewportUiManager.h>
namespace AzToolsFramework::ViewportUi
{
@@ -114,7 +113,8 @@ namespace AzToolsFramework::ViewportUi
return ButtonId(0);
}
const ButtonId ViewportUiManager::CreateSwitcherButton(const SwitcherId switcherId, const AZStd::string& icon, const AZStd::string& name)
const ButtonId ViewportUiManager::CreateSwitcherButton(
const SwitcherId switcherId, const AZStd::string& icon, const AZStd::string& name)
{
if (auto switcherIt = m_switcherButtonGroups.find(switcherId); switcherIt != m_switcherButtonGroups.end())
{
@@ -146,8 +146,7 @@ namespace AzToolsFramework::ViewportUi
}
}
static void SetViewportUiElementVisible(
Internal::ViewportUiDisplay* ui, ViewportUiElementId id, bool visible)
static void SetViewportUiElementVisible(Internal::ViewportUiDisplay* ui, ViewportUiElementId id, bool visible)
{
if (visible)
{
@@ -186,11 +185,9 @@ namespace AzToolsFramework::ViewportUi
}
const TextFieldId ViewportUiManager::CreateTextField(
const AZStd::string& labelText, const AZStd::string& textFieldDefaultText,
TextFieldValidationType validationType)
const AZStd::string& labelText, const AZStd::string& textFieldDefaultText, TextFieldValidationType validationType)
{
auto textField = AZStd::make_shared<Internal::TextField>(
labelText, textFieldDefaultText, validationType);
auto textField = AZStd::make_shared<Internal::TextField>(labelText, textFieldDefaultText, validationType);
m_viewportUi->AddTextField(textField);
return RegisterNewTextField(textField);
@@ -206,8 +203,7 @@ namespace AzToolsFramework::ViewportUi
}
}
void ViewportUiManager::RegisterTextFieldCallback(
TextFieldId textFieldId, AZ::Event<AZStd::string>::Handler& handler)
void ViewportUiManager::RegisterTextFieldCallback(TextFieldId textFieldId, AZ::Event<AZStd::string>::Handler& handler)
{
if (auto textFieldIt = m_textFields.find(textFieldId); textFieldIt != m_textFields.end())
{
@@ -234,7 +230,6 @@ namespace AzToolsFramework::ViewportUi
}
}
void ViewportUiManager::CreateComponentModeBorder(const AZStd::string& borderTitle)
{
m_viewportUi->CreateComponentModeBorder(borderTitle);
@@ -248,8 +243,7 @@ namespace AzToolsFramework::ViewportUi
void ViewportUiManager::PressButton(ClusterId clusterId, ButtonId buttonId)
{
// Find cluster using ID and cluster map
if (auto clusterIt = m_clusterButtonGroups.find(clusterId);
clusterIt != m_clusterButtonGroups.end())
if (auto clusterIt = m_clusterButtonGroups.find(clusterId); clusterIt != m_clusterButtonGroups.end())
{
clusterIt->second->PressButton(buttonId);
}
@@ -305,7 +299,7 @@ namespace AzToolsFramework::ViewportUi
SwitcherId ViewportUiManager::RegisterNewSwitcher(AZStd::shared_ptr<Internal::ButtonGroup>& buttonGroup)
{
SwitcherId newId = SwitcherId(m_switcherButtonGroups.size() + 1);
m_switcherButtonGroups.insert({newId, buttonGroup});
m_switcherButtonGroups.insert({ newId, buttonGroup });
return newId;
}
@@ -18,7 +18,7 @@ namespace AzToolsFramework::ViewportUi
{
class ButtonGroup;
class ViewportUiDisplay;
}
} // namespace Internal
class ViewportUiManager : public ViewportUiRequestBus::Handler
{
@@ -65,8 +65,12 @@ namespace AzToolsFramework::ViewportUi::Internal
// resize to fit new action with minimum extra space
resize(minimumSizeHint());
const AZStd::function<void()>& callback = [this, button]() { m_buttonGroup->PressButton(button->m_buttonId); };
const AZStd::function<void(QAction*)>& updateCallback = [button](QAction* action) {
const AZStd::function<void()>& callback = [this, button]()
{
m_buttonGroup->PressButton(button->m_buttonId);
};
const AZStd::function<void(QAction*)>& updateCallback = [button](QAction* action)
{
action->setChecked(button->m_state == Button::State::Selected);
};
@@ -78,9 +82,13 @@ namespace AzToolsFramework::ViewportUi::Internal
// register the action
m_widgetCallbacks.AddWidget(
action, [updateCallback](QPointer<QObject> object) { updateCallback(static_cast<QAction*>(object.data())); });
action,
[updateCallback](QPointer<QObject> object)
{
updateCallback(static_cast<QAction*>(object.data()));
});
m_buttonActionMap.insert({button->m_buttonId, action});
m_buttonActionMap.insert({ button->m_buttonId, action });
}
void ViewportUiSwitcher::RemoveButton(ButtonId buttonId)
@@ -121,9 +129,12 @@ namespace AzToolsFramework::ViewportUi::Internal
// Check if it is the first active mode to be set
bool initialActiveMode = (m_activeButtonId == ButtonId(0));
// Change the toolbutton's name and icon to that button
// Change the tool button's name and icon to that button
const AZStd::vector<Button*> buttons = m_buttonGroup->GetButtons();
auto found = [buttonId](Button* button) { return (button->m_buttonId == buttonId); };
auto found = [buttonId](Button* button)
{
return (button->m_buttonId == buttonId);
};
if (auto buttonIt = AZStd::find_if(buttons.begin(), buttons.end(), found); buttonIt != buttons.end())
{
@@ -8,11 +8,11 @@
#pragma once
#include <AzToolsFramework/ViewportUi/Button.h>
#include <AzCore/std/containers/unordered_map.h>
#include <AzCore/std/smart_ptr/shared_ptr.h>
#include <AzToolsFramework/ViewportUi/Button.h>
#include <AzToolsFramework/ViewportUi/ViewportUiWidgetCallbacks.h>
#include <functional>
#include <QPointer>
#include <QToolBar>
#include <QToolButton>
@@ -6,7 +6,6 @@
*
*/
#include "ViewportUiTextField.h"
#include <AzCore/Console/IConsole.h>
@@ -16,7 +15,11 @@
namespace AzToolsFramework::ViewportUi::Internal
{
AZ_CVAR(
int, ViewportUiTextFieldLength, 35, nullptr, AZ::ConsoleFunctorFlags::Null,
int,
ViewportUiTextFieldLength,
35,
nullptr,
AZ::ConsoleFunctorFlags::Null,
"The pixel length of the text field part of a ViewportUiTextField");
ViewportUiTextField::ViewportUiTextField(AZStd::shared_ptr<TextField> textField)
@@ -56,11 +59,14 @@ namespace AzToolsFramework::ViewportUi::Internal
m_lineEdit.setValidator(m_validator);
connect(&m_lineEdit, &QLineEdit::textEdited, &m_lineEdit, [textField](QString text) {
// convert the text using toLocal8Bit().data() as recommended by Qt, then emit signal
textField->m_fieldText = text.toLocal8Bit().data();
textField->m_textEditedEvent.Signal(textField->m_fieldText);
});
connect(
&m_lineEdit, &QLineEdit::textEdited, &m_lineEdit,
[textField](QString text)
{
// convert the text using toLocal8Bit().data() as recommended by Qt, then emit signal
textField->m_fieldText = text.toLocal8Bit().data();
textField->m_textEditedEvent.Signal(textField->m_fieldText);
});
}
void ViewportUiTextField::Update()
@@ -7,7 +7,10 @@
*/
#pragma once
#include <AzCore/std/smart_ptr/shared_ptr.h>
#include <AzToolsFramework/ViewportUi/TextField.h>
#include <QLabel>
#include <QLineEdit>
#include <QWidget>
@@ -17,13 +20,10 @@ AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option")
#include <QVBoxLayout>
AZ_POP_DISABLE_WARNING
#include <AzCore/std/smart_ptr/shared_ptr.h>
namespace AzToolsFramework::ViewportUi::Internal
{
//! Helper class for a widget that holds and manages multiple LabelTextFields.
class ViewportUiTextField
: public QWidget
class ViewportUiTextField : public QWidget
{
Q_OBJECT
@@ -34,9 +34,9 @@ namespace AzToolsFramework::ViewportUi::Internal
void Update();
private:
QLabel m_label; //<! The text label.
QLineEdit m_lineEdit; //<! The editable text field.
QValidator* m_validator; //<! The validator for the line edit text.
AZStd::shared_ptr<TextField> m_textField; //<! Reference to the text field data struct.
QLabel m_label; //!< The text label.
QLineEdit m_lineEdit; //!< The editable text field.
QValidator* m_validator; //!< The validator for the line edit text.
AZStd::shared_ptr<TextField> m_textField; //!< Reference to the text field data struct.
};
} // namespace AzToolsFramework::ViewportUi::Internal
@@ -6,13 +6,11 @@
*
*/
#include "ViewportUiWidgetCallbacks.h"
namespace AzToolsFramework::ViewportUi::Internal
{
void ViewportUiWidgetCallbacks::AddWidget(
QPointer<QObject> widget, const AZStd::function<void(QPointer<QObject>)>& updateCallback)
void ViewportUiWidgetCallbacks::AddWidget(QPointer<QObject> widget, const AZStd::function<void(QPointer<QObject>)>& updateCallback)
{
if (widget.isNull())
{
@@ -40,7 +38,7 @@ namespace AzToolsFramework::ViewportUi::Internal
{
// if widget exists on the manager, register the callback
auto callBackWidget = AZStd::find(m_widgets.begin(), m_widgets.end(), widget);
AZ_Assert(callBackWidget != m_widgets.end(), "Unable to register a callback for an unregistered widget.")
AZ_Assert(callBackWidget != m_widgets.end(), "Unable to register a callback for an unregistered widget.");
if (callBackWidget != m_widgets.end())
{
@@ -58,8 +56,7 @@ namespace AzToolsFramework::ViewportUi::Internal
RemoveWidget(widget);
}
// check if the widget has not been deleted externally
else if (auto callback = m_updateCallbacks.find(widget);
callback != m_updateCallbacks.end())
else if (auto callback = m_updateCallbacks.find(widget); callback != m_updateCallbacks.end())
{
callback->second(widget);
}
@@ -9,12 +9,12 @@
#pragma once
#include <AzCore/Memory/Memory.h>
#include <AzCore/std/function/function_template.h>
#include <AzCore/std/containers/unordered_map.h>
#include <QPointer>
#include <QObject>
#include <QMetaMethod>
#include <AzCore/std/function/function_template.h>
#include <QMetaMethod>
#include <QObject>
#include <QPointer>
namespace AzToolsFramework::ViewportUi::Internal
{
@@ -30,7 +30,8 @@ namespace AzToolsFramework::ViewportUi::Internal
//! Must call ViewportUiWidgetCallbacks::Update to execute the callback.
void RegisterUpdateCallback(QPointer<QObject> widget, const AZStd::function<void(QPointer<QObject>)>& callback);
void Update();
const AZStd::vector<QPointer<QObject>>& GetWidgets() const { return m_widgets; }
const AZStd::vector<QPointer<QObject>>& GetWidgets() const;
protected:
//! A map of all update callbacks and their respective widgets.
@@ -38,4 +39,9 @@ namespace AzToolsFramework::ViewportUi::Internal
AZStd::unordered_map<QObject*, AZStd::function<void(QPointer<QObject>)>> m_updateCallbacks;
AZStd::vector<QPointer<QObject>> m_widgets;
};
inline const AZStd::vector<QPointer<QObject>>& ViewportUiWidgetCallbacks::GetWidgets() const
{
return m_widgets;
}
} // namespace AzToolsFramework::ViewportUi::Internal