LiveLoggingWindowSession.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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 <QAbstractListModel>
  11. #include <AzCore/UserSettings/UserSettings.h>
  12. #include <AzFramework/Network/IRemoteTools.h>
  13. #include <AzToolsFramework/Entity/EditorEntityContextBus.h>
  14. #include <Editor/View/Widgets/LoggingPanel/LoggingWindowSession.h>
  15. #include <Editor/View/Widgets/LoggingPanel/LiveWindowSession/LiveLoggingDataAggregator.h>
  16. #endif
  17. namespace ScriptCanvasEditor
  18. {
  19. class TargetManagerModel
  20. : public QAbstractListModel
  21. {
  22. public:
  23. AZ_CLASS_ALLOCATOR(TargetManagerModel, AZ::SystemAllocator);
  24. TargetManagerModel();
  25. // QAbstractItemModel
  26. int rowCount(const QModelIndex& parent = QModelIndex()) const override;
  27. QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
  28. ////
  29. void TargetJoinedNetwork(AzFramework::RemoteToolsEndpointInfo info);
  30. void TargetLeftNetwork(AzFramework::RemoteToolsEndpointInfo info);
  31. AzFramework::RemoteToolsEndpointInfo FindTargetInfoForRow(int row);
  32. int GetRowForTarget(AZ::u32 targetId);
  33. private:
  34. void ScrapeTargetInfo();
  35. AZStd::vector<AzFramework::RemoteToolsEndpointInfo> m_targetInfo;
  36. };
  37. class LiveLoggingUserSettings
  38. : public AZ::UserSettings
  39. {
  40. public:
  41. static AZStd::intrusive_ptr<LiveLoggingUserSettings> FindSettingsInstance();
  42. AZ_RTTI(LiveLoggingUserSettings, "{2E32C949-5766-480D-B569-781BE9166B2E}", AZ::UserSettings);
  43. AZ_CLASS_ALLOCATOR(LiveLoggingUserSettings, AZ::SystemAllocator);
  44. static void Reflect(AZ::ReflectContext* reflectContext);
  45. LiveLoggingUserSettings() = default;
  46. void SetAutoCaptureEnabled(bool enabled);
  47. bool IsAutoCaptureEnabled() const;
  48. void SetLiveUpdates(bool enabled);
  49. bool IsLiveUpdating() const;
  50. private:
  51. bool m_isAutoCaptureEnabled = true;
  52. bool m_enableLiveUpdates = true;
  53. };
  54. class LiveLoggingWindowSession
  55. : public LoggingWindowSession
  56. , public ScriptCanvas::Debugger::ServiceNotificationsBus::Handler
  57. {
  58. Q_OBJECT
  59. public:
  60. AZ_CLASS_ALLOCATOR(LiveLoggingWindowSession, AZ::SystemAllocator);
  61. LiveLoggingWindowSession(QWidget* parent = nullptr);
  62. ~LiveLoggingWindowSession() override;
  63. // AzFramework::TargetManagerClient
  64. void DesiredTargetChanged(AZ::u32 newId, AZ::u32 oldId);
  65. void DesiredTargetConnected(bool connected);
  66. void TargetJoinedNetwork(AzFramework::RemoteToolsEndpointInfo info);
  67. void TargetLeftNetwork(AzFramework::RemoteToolsEndpointInfo info);
  68. ////
  69. // ScriptCavnas::Debugger::ServiceNotificationsBus
  70. void Connected(ScriptCanvas::Debugger::Target& target) override;
  71. ////
  72. protected:
  73. void OnCaptureButtonPressed() override;
  74. void OnPlaybackButtonPressed() override;
  75. void OnOptionsButtonPressed() override;
  76. void OnTargetChanged(int currentIndex) override;
  77. private:
  78. void OnAutoCaptureToggled(bool checked);
  79. void OnLiveUpdateToggled(bool checked);
  80. void StartDataCapture();
  81. void StopDataCapture();
  82. void ConfigureScriptTarget(ScriptCanvas::Debugger::ScriptTarget& captureInfo);
  83. void SetIsCapturing(bool isCapturing);
  84. TargetManagerModel* m_targetManagerModel;
  85. bool m_encodeStaticEntities;
  86. bool m_isCapturing;
  87. LiveLoggingDataAggregator m_liveDataAggregator;
  88. ScriptCanvas::Debugger::Target m_targetConfiguration;
  89. AZStd::intrusive_ptr<LiveLoggingUserSettings> m_userSettings;
  90. };
  91. }