From 0ec927b82e918a638531e0224459b4a03ff748e3 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 28 May 2020 00:11:16 +0200 Subject: [PATCH] ShaderNode/NodeEditor: Replace QVBoxLayout by QFormLayout --- src/ShaderNode/DataModels/Cast.hpp | 2 +- src/ShaderNode/DataModels/Cast.inl | 8 ++------ src/ShaderNode/DataModels/InputValue.cpp | 4 ++-- src/ShaderNode/DataModels/InputValue.hpp | 2 +- src/ShaderNode/DataModels/SampleTexture.cpp | 4 ++-- src/ShaderNode/DataModels/SampleTexture.hpp | 2 +- src/ShaderNode/DataModels/ShaderNode.cpp | 10 ++++++---- src/ShaderNode/DataModels/ShaderNode.hpp | 7 +++++-- src/ShaderNode/DataModels/ShaderNode.inl | 9 ++++++++- src/ShaderNode/DataModels/VecValue.hpp | 2 +- src/ShaderNode/DataModels/VecValue.inl | 7 ++----- src/ShaderNode/Widgets/MainWindow.cpp | 2 +- src/ShaderNode/Widgets/NodeEditor.hpp | 4 ++-- src/ShaderNode/Widgets/NodeEditor.inl | 2 +- 14 files changed, 35 insertions(+), 30 deletions(-) diff --git a/src/ShaderNode/DataModels/Cast.hpp b/src/ShaderNode/DataModels/Cast.hpp index 19d6363af..3c90f7e99 100644 --- a/src/ShaderNode/DataModels/Cast.hpp +++ b/src/ShaderNode/DataModels/Cast.hpp @@ -18,7 +18,7 @@ class CastVec : public ShaderNode CastVec(ShaderGraph& graph); ~CastVec() = default; - void BuildNodeEdition(QVBoxLayout* layout) override; + void BuildNodeEdition(QFormLayout* layout) override; Nz::ShaderAst::ExpressionPtr GetExpression(Nz::ShaderAst::ExpressionPtr* expressions, std::size_t count) const override; diff --git a/src/ShaderNode/DataModels/Cast.inl b/src/ShaderNode/DataModels/Cast.inl index 5c0600833..bf852a5c0 100644 --- a/src/ShaderNode/DataModels/Cast.inl +++ b/src/ShaderNode/DataModels/Cast.inl @@ -10,14 +10,12 @@ ShaderNode(graph) } template -void CastVec::BuildNodeEdition(QVBoxLayout* layout) +void CastVec::BuildNodeEdition(QFormLayout* layout) { ShaderNode::BuildNodeEdition(layout); if constexpr (ComponentDiff > 0) { - QFormLayout* formLayout = new QFormLayout; - for (std::size_t i = 0; i < ComponentDiff; ++i) { QDoubleSpinBox* spinbox = new QDoubleSpinBox; @@ -30,10 +28,8 @@ void CastVec::BuildNodeEdition(QVBoxLayout* layout) UpdateOutput(); }); - formLayout->addRow(QString::fromUtf8(&s_vectorComponents[FromComponents + i], 1), spinbox); + layout->addRow(QString::fromUtf8(&s_vectorComponents[FromComponents + i], 1), spinbox); } - - layout->addLayout(formLayout); } } diff --git a/src/ShaderNode/DataModels/InputValue.cpp b/src/ShaderNode/DataModels/InputValue.cpp index 810c2862e..9962a101b 100644 --- a/src/ShaderNode/DataModels/InputValue.cpp +++ b/src/ShaderNode/DataModels/InputValue.cpp @@ -64,7 +64,7 @@ void InputValue::OnInputListUpdate() } } -void InputValue::BuildNodeEdition(QVBoxLayout* layout) +void InputValue::BuildNodeEdition(QFormLayout* layout) { ShaderNode::BuildNodeEdition(layout); @@ -83,7 +83,7 @@ void InputValue::BuildNodeEdition(QVBoxLayout* layout) for (const auto& inputEntry : GetGraph().GetInputs()) inputSelection->addItem(QString::fromStdString(inputEntry.name)); - layout->addWidget(inputSelection); + layout->addRow(tr("Input"), inputSelection); } Nz::ShaderAst::ExpressionPtr InputValue::GetExpression(Nz::ShaderAst::ExpressionPtr* /*expressions*/, std::size_t count) const diff --git a/src/ShaderNode/DataModels/InputValue.hpp b/src/ShaderNode/DataModels/InputValue.hpp index 84b7d6393..0170221f5 100644 --- a/src/ShaderNode/DataModels/InputValue.hpp +++ b/src/ShaderNode/DataModels/InputValue.hpp @@ -17,7 +17,7 @@ class InputValue : public ShaderNode InputValue(ShaderGraph& graph); ~InputValue() = default; - void BuildNodeEdition(QVBoxLayout* layout) override; + void BuildNodeEdition(QFormLayout* layout) override; Nz::ShaderAst::ExpressionPtr GetExpression(Nz::ShaderAst::ExpressionPtr* /*expressions*/, std::size_t count) const override; diff --git a/src/ShaderNode/DataModels/SampleTexture.cpp b/src/ShaderNode/DataModels/SampleTexture.cpp index 7209a69b5..2ec25b2be 100644 --- a/src/ShaderNode/DataModels/SampleTexture.cpp +++ b/src/ShaderNode/DataModels/SampleTexture.cpp @@ -112,7 +112,7 @@ bool SampleTexture::ComputePreview(QPixmap& pixmap) return true; } -void SampleTexture::BuildNodeEdition(QVBoxLayout* layout) +void SampleTexture::BuildNodeEdition(QFormLayout* layout) { ShaderNode::BuildNodeEdition(layout); @@ -130,7 +130,7 @@ void SampleTexture::BuildNodeEdition(QVBoxLayout* layout) for (const auto& textureEntry : GetGraph().GetTextures()) textureSelection->addItem(QString::fromStdString(textureEntry.name)); - layout->addWidget(textureSelection); + layout->addRow(tr("Texture"), textureSelection); } Nz::ShaderAst::ExpressionPtr SampleTexture::GetExpression(Nz::ShaderAst::ExpressionPtr* expressions, std::size_t count) const diff --git a/src/ShaderNode/DataModels/SampleTexture.hpp b/src/ShaderNode/DataModels/SampleTexture.hpp index 738047712..fc2550f80 100644 --- a/src/ShaderNode/DataModels/SampleTexture.hpp +++ b/src/ShaderNode/DataModels/SampleTexture.hpp @@ -17,7 +17,7 @@ class SampleTexture : public ShaderNode SampleTexture(ShaderGraph& graph); ~SampleTexture() = default; - void BuildNodeEdition(QVBoxLayout* layout) override; + void BuildNodeEdition(QFormLayout* layout) override; Nz::ShaderAst::ExpressionPtr GetExpression(Nz::ShaderAst::ExpressionPtr* /*expressions*/, std::size_t count) const override; diff --git a/src/ShaderNode/DataModels/ShaderNode.cpp b/src/ShaderNode/DataModels/ShaderNode.cpp index 1221d1df6..9daad003b 100644 --- a/src/ShaderNode/DataModels/ShaderNode.cpp +++ b/src/ShaderNode/DataModels/ShaderNode.cpp @@ -1,21 +1,23 @@ #include #include +#include +#include #include -#include ShaderNode::ShaderNode(ShaderGraph& graph) : m_previewSize(64, 64), m_pixmapLabel(nullptr), m_graph(graph), +m_forceVariable(false), m_isPreviewEnabled(false) { m_pixmapLabel = new QLabel; m_pixmapLabel->setStyleSheet("background-color: rgba(0,0,0,0)"); } -void ShaderNode::BuildNodeEdition(QVBoxLayout* layout) +void ShaderNode::BuildNodeEdition(QFormLayout* layout) { - QCheckBox* checkbox = new QCheckBox(tr("Enable preview")); + QCheckBox* checkbox = new QCheckBox; checkbox->setCheckState((m_isPreviewEnabled) ? Qt::Checked : Qt::Unchecked); connect(checkbox, &QCheckBox::stateChanged, [&](int state) @@ -23,7 +25,7 @@ void ShaderNode::BuildNodeEdition(QVBoxLayout* layout) EnablePreview(state == Qt::Checked); }); - layout->addWidget(checkbox); + layout->addRow(tr("Enable preview"), checkbox); } void ShaderNode::EnablePreview(bool enable) diff --git a/src/ShaderNode/DataModels/ShaderNode.hpp b/src/ShaderNode/DataModels/ShaderNode.hpp index 3cf16ea06..6d64c33bd 100644 --- a/src/ShaderNode/DataModels/ShaderNode.hpp +++ b/src/ShaderNode/DataModels/ShaderNode.hpp @@ -10,7 +10,7 @@ #include class QLabel; -class QVBoxLayout; +class QFormLayout; class ShaderGraph; class ShaderNode : public QtNodes::NodeDataModel @@ -18,13 +18,14 @@ class ShaderNode : public QtNodes::NodeDataModel public: ShaderNode(ShaderGraph& graph); - virtual void BuildNodeEdition(QVBoxLayout* layout); + virtual void BuildNodeEdition(QFormLayout* layout); void EnablePreview(bool enable); virtual Nz::ShaderAst::ExpressionPtr GetExpression(Nz::ShaderAst::ExpressionPtr* expressions, std::size_t count) const = 0; inline ShaderGraph& GetGraph(); inline const ShaderGraph& GetGraph() const; + inline const std::string& GetVariableName() const; void SetPreviewSize(const Nz::Vector2i& size); @@ -41,7 +42,9 @@ class ShaderNode : public QtNodes::NodeDataModel Nz::Vector2i m_previewSize; QLabel* m_pixmapLabel; std::optional m_pixmap; + std::string m_variableName; ShaderGraph& m_graph; + bool m_forceVariable; bool m_isPreviewEnabled; }; diff --git a/src/ShaderNode/DataModels/ShaderNode.inl b/src/ShaderNode/DataModels/ShaderNode.inl index 7f80d00ff..d1a92bf73 100644 --- a/src/ShaderNode/DataModels/ShaderNode.inl +++ b/src/ShaderNode/DataModels/ShaderNode.inl @@ -1,6 +1,5 @@ #include - inline ShaderGraph& ShaderNode::GetGraph() { return m_graph; @@ -11,9 +10,17 @@ inline const ShaderGraph& ShaderNode::GetGraph() const return m_graph; } +inline const std::string& ShaderNode::GetVariableName() const +{ + return m_variableName; +} + inline void ShaderNode::SetPreviewSize(const Nz::Vector2i& size) { m_previewSize = size; if (m_isPreviewEnabled) + { UpdatePreview(); + embeddedWidgetSizeUpdated(); + } } diff --git a/src/ShaderNode/DataModels/VecValue.hpp b/src/ShaderNode/DataModels/VecValue.hpp index 27df2757f..ad190f8b1 100644 --- a/src/ShaderNode/DataModels/VecValue.hpp +++ b/src/ShaderNode/DataModels/VecValue.hpp @@ -27,7 +27,7 @@ class VecValue : public ShaderNode std::shared_ptr outData(QtNodes::PortIndex port) override; - void BuildNodeEdition(QVBoxLayout* layout) override; + void BuildNodeEdition(QFormLayout* layout) override; Nz::ShaderAst::ExpressionPtr GetExpression(Nz::ShaderAst::ExpressionPtr* expressions, std::size_t count) const override; diff --git a/src/ShaderNode/DataModels/VecValue.inl b/src/ShaderNode/DataModels/VecValue.inl index 8f9212631..f576bbb4e 100644 --- a/src/ShaderNode/DataModels/VecValue.inl +++ b/src/ShaderNode/DataModels/VecValue.inl @@ -68,11 +68,10 @@ std::shared_ptr VecValue::outData(QtNodes::PortIndex po } template -void VecValue::BuildNodeEdition(QVBoxLayout* layout) +void VecValue::BuildNodeEdition(QFormLayout* layout) { ShaderNode::BuildNodeEdition(layout); - QFormLayout* formLayout = new QFormLayout; for (std::size_t i = 0; i < ComponentCount; ++i) { QDoubleSpinBox* spinbox = new QDoubleSpinBox; @@ -87,10 +86,8 @@ void VecValue::BuildNodeEdition(QVBoxLayout* layout) UpdatePreview(); }); - formLayout->addRow(QString::fromUtf8(&s_vectorComponents[i], 1), spinbox); + layout->addRow(QString::fromUtf8(&s_vectorComponents[i], 1), spinbox); } - - layout->addLayout(formLayout); } template diff --git a/src/ShaderNode/Widgets/MainWindow.cpp b/src/ShaderNode/Widgets/MainWindow.cpp index 580e5b506..6f3d8a5f4 100644 --- a/src/ShaderNode/Widgets/MainWindow.cpp +++ b/src/ShaderNode/Widgets/MainWindow.cpp @@ -48,7 +48,7 @@ m_shaderGraph(graph) { if (node) { - m_nodeEditor->UpdateContent(node->caption(), [node](QVBoxLayout* layout) + m_nodeEditor->UpdateContent(node->caption(), [node](QFormLayout* layout) { node->BuildNodeEdition(layout); }); diff --git a/src/ShaderNode/Widgets/NodeEditor.hpp b/src/ShaderNode/Widgets/NodeEditor.hpp index 65e73c107..1bdb36c77 100644 --- a/src/ShaderNode/Widgets/NodeEditor.hpp +++ b/src/ShaderNode/Widgets/NodeEditor.hpp @@ -4,7 +4,7 @@ #define NAZARA_SHADERNODES_NODEEDITOR_HPP #include -#include +#include #include #include @@ -19,7 +19,7 @@ class NodeEditor : public QWidget template void UpdateContent(QString nodeName, F&& callback); private: - QVBoxLayout* m_layout; + QFormLayout* m_layout; }; #include diff --git a/src/ShaderNode/Widgets/NodeEditor.inl b/src/ShaderNode/Widgets/NodeEditor.inl index a7f916889..3c26b8fe8 100644 --- a/src/ShaderNode/Widgets/NodeEditor.inl +++ b/src/ShaderNode/Widgets/NodeEditor.inl @@ -6,7 +6,7 @@ void NodeEditor::UpdateContent(QString nodeName, F&& callback) { Clear(); - m_layout = new QVBoxLayout; + m_layout = new QFormLayout; setLayout(m_layout); QLabel* label = new QLabel(nodeName);