3
0

VariableConfigurationWidget.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #if !defined(Q_MOC_RUN)
  10. #include <AzCore/PlatformDef.h>
  11. #include <QAbstractListModel>
  12. #include <QAbstractItemView>
  13. #include <QListView>
  14. #include <QVBoxLayout>
  15. #include <QHeaderView>
  16. #include <QTimer>
  17. #include <QSortFilterProxyModel>
  18. #include <QStandardItemModel>
  19. #include <QFocusEvent>
  20. #include <QMenu>
  21. #include <AzCore/Component/EntityId.h>
  22. #include <AzCore/Component/ComponentApplicationBus.h>
  23. #include <AzCore/Component/Entity.h>
  24. #include <AzCore/std/containers/vector.h>
  25. #include <AzCore/Casting/numeric_cast.h>
  26. #include <AzToolsFramework/API/ToolsApplicationAPI.h>
  27. #include <AzQtComponents/Components/StyledDialog.h>
  28. #include <GraphCanvas/Editor/AssetEditorBus.h>
  29. #include <GraphCanvas/Components/GraphCanvasPropertyBus.h>
  30. #include <GraphCanvas/Components/SceneBus.h>
  31. #include <GraphCanvas/Components/Nodes/NodeBus.h>
  32. #include <GraphCanvas/Components/Nodes/NodeTitleBus.h>
  33. #include <GraphCanvas/Widgets/GraphCanvasTreeItem.h>
  34. #include <GraphCanvas/Widgets/GraphCanvasTreeModel.h>
  35. #include <ScriptCanvas/Bus/RequestBus.h>
  36. #include <ScriptCanvas/Variable/VariableBus.h>
  37. #include <ScriptCanvas/Variable/GraphVariable.h>
  38. #include <Editor/View/Widgets/VariablePanel/VariablePaletteTableView.h>
  39. #include <Editor/View/Widgets/VariablePanel/GraphVariablesTableView.h>
  40. #endif
  41. class QAction;
  42. class QLineEdit;
  43. class QPushButton;
  44. namespace Ui
  45. {
  46. class VariableConfigurationWidget;
  47. }
  48. namespace ScriptCanvasEditor
  49. {
  50. class VariableConfigurationWidget
  51. : public AzQtComponents::StyledDialog
  52. , public AzToolsFramework::EditorEvents::Bus::Handler
  53. {
  54. Q_OBJECT
  55. public:
  56. AZ_CLASS_ALLOCATOR(VariableConfigurationWidget, AZ::SystemAllocator);
  57. VariableConfigurationWidget
  58. ( const ScriptCanvas::ScriptCanvasId& scriptCanvasId
  59. , const VariablePaletteRequests::VariableConfigurationInput& input
  60. , QWidget* parent = nullptr);
  61. ~VariableConfigurationWidget();
  62. void PopulateVariablePalette(const AZStd::unordered_set< AZ::Uuid >& objectTypes);
  63. // AzToolsFramework::EditorEvents::Bus
  64. void OnEscape() override;
  65. ////
  66. // QWidget
  67. void focusOutEvent(QFocusEvent* focusEvent) override;
  68. ////
  69. AZ::Uuid GetSelectedType() const;
  70. AZStd::string GetSlotName() const;
  71. void SetSlotName(AZStd::string);
  72. const ScriptCanvas::ScriptCanvasId& GetActiveScriptCanvasId() const;
  73. public Q_SLOTS:
  74. void OnCreateVariable(ScriptCanvas::Data::Type varType);
  75. Q_SIGNALS:
  76. void OnVariableSelectionChanged(const AZStd::vector<AZ::EntityId>& variableIds);
  77. private:
  78. void ShowVariablePalette();
  79. void FocusOnSearchFilter();
  80. void ClearFilter();
  81. void UpdateFilter();
  82. void OnReturnPressed();
  83. void OnQuickFilterChanged(const QString& text);
  84. void OnNameChanged(const QString& text);
  85. void OnContextMenuRequested(const QPoint& pos);
  86. AZStd::vector< AZStd::unique_ptr<AZ::Entity> > m_propertyHelpers;
  87. ScriptCanvas::ScriptCanvasId m_scriptCanvasId;
  88. AZ::EntityId m_graphCanvasGraphId;
  89. AZ::Uuid m_selectedType;
  90. AZStd::string m_slotName;
  91. const VariablePaletteRequests::VariableConfigurationInput& m_input;
  92. AZStd::unique_ptr<Ui::VariableConfigurationWidget> ui;
  93. QTimer m_filterTimer;
  94. };
  95. }