3
0

ScriptCanvasStatisticsDialog.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 <QAbstractItemModel>
  11. #include <QDialog>
  12. #include <QSortFilterProxyModel>
  13. #include <AzFramework/Asset/AssetCatalogBus.h>
  14. #include <AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.h>
  15. #include <AzToolsFramework/AssetBrowser/AssetBrowserEntry.h>
  16. #include <AzToolsFramework/AssetBrowser/Search/Filter.h>
  17. #include <AzQtComponents/Components/StyledDockWidget.h>
  18. #include <GraphCanvas/Widgets/GraphCanvasTreeModel.h>
  19. #include <GraphCanvas/Widgets/GraphCanvasTreeItem.h>
  20. #include <Editor/View/Widgets/NodePalette/NodePaletteModel.h>
  21. #include <Editor/View/Widgets/StatisticsDialog/NodeUsageTreeItem.h>
  22. #include <ScriptCanvas/Core/Core.h>
  23. #endif
  24. namespace Ui
  25. {
  26. class ScriptCanvasStatisticsDialog;
  27. }
  28. namespace ScriptCanvasEditor
  29. {
  30. class ScriptCanvasAssetNodeUsageFilterModel
  31. : public QSortFilterProxyModel
  32. {
  33. public:
  34. AZ_CLASS_ALLOCATOR(ScriptCanvasAssetNodeUsageFilterModel, AZ::SystemAllocator);
  35. ScriptCanvasAssetNodeUsageFilterModel();
  36. bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const;
  37. void SetFilter(const QString& filterName);
  38. void SetNodeTypeFilter(const ScriptCanvas::NodeTypeIdentifier& nodeType);
  39. private:
  40. QString m_filter;
  41. QRegExp m_regex;
  42. ScriptCanvas::NodeTypeIdentifier m_nodeIdentifier;
  43. };
  44. class StatisticsDialog
  45. : public QDialog
  46. , AzFramework::AssetCatalogEventBus::Handler
  47. , public NodePaletteModelNotificationBus::Handler
  48. {
  49. Q_OBJECT
  50. public:
  51. AZ_CLASS_ALLOCATOR(StatisticsDialog, AZ::SystemAllocator);
  52. StatisticsDialog(const NodePaletteModel& nodePaletteModel, AzToolsFramework::AssetBrowser::AssetBrowserFilterModel* scriptCanvasAssetModel, QWidget* widget = nullptr);
  53. ~StatisticsDialog();
  54. void InitStatisticsWindow();
  55. void ResetModel();
  56. // AssetSystemBus
  57. //! Called by the AssetCatalog when an asset has been modified
  58. void OnCatalogAssetChanged(const AZ::Data::AssetId& assetId) override;
  59. void OnCatalogAssetAdded(const AZ::Data::AssetId& /*assetId*/) override;
  60. //! Called by the AssetProcessor when an asset in the cache has been removed.
  61. void OnCatalogAssetRemoved(const AZ::Data::AssetId& assetId, const AZ::Data::AssetInfo& assetInfo) override;
  62. ////
  63. // NodePaletteModelNotificationBus
  64. void OnAssetModelRepopulated() override;
  65. void OnAssetNodeAdded(NodePaletteModelInformation* modelInformation) override;
  66. void OnAssetNodeRemoved(NodePaletteModelInformation* modelInformation) override;
  67. ////
  68. void OnScriptCanvasAssetClicked(const QModelIndex& modelIndex);
  69. void showEvent(QShowEvent* showEvent) override;
  70. public slots:
  71. void OnSelectionCleared();
  72. void OnItemSelected(const GraphCanvas::GraphCanvasTreeItem* treeItem);
  73. void OnFilterUpdated(const QString& filterText);
  74. void OnScriptCanvasAssetRowsInserted(QModelIndex modelIndex, int first, int last);
  75. private:
  76. void TraverseTree(QModelIndex index = QModelIndex());
  77. void ProcessAsset(const AzToolsFramework::AssetBrowser::AssetBrowserEntry* entry);
  78. const NodePaletteModel& m_nodePaletteModel;
  79. AZStd::unique_ptr<Ui::ScriptCanvasStatisticsDialog> m_ui;
  80. NodePaletteNodeUsageRootItem* m_treeRoot;
  81. AzToolsFramework::AssetBrowser::AssetBrowserFilterModel* m_scriptCanvasAssetBrowserModel;
  82. ScriptCanvasAssetNodeUsageTreeItemRoot* m_scriptCanvasAssetTreeRoot;
  83. GraphCanvas::GraphCanvasTreeModel* m_scriptCanvasAssetTree;
  84. ScriptCanvasAssetNodeUsageFilterModel* m_scriptCanvasAssetFilterModel;
  85. AZStd::unordered_map< ScriptCanvas::NodeTypeIdentifier, GraphCanvas::GraphCanvasTreeItem* > m_leafMap;
  86. };
  87. }