Files
UnrealEngine/Engine/Plugins/Animation/LiveLink/Source/LiveLinkEditor/Private/LiveLinkClientPanel.h
2025-05-18 13:04:45 +08:00

86 lines
2.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "EditorUndoClient.h"
#include "LiveLinkPanelController.h"
#include "Templates/SharedPointer.h"
#include "UObject/GCObject.h"
#include "Widgets/SCompoundWidget.h"
namespace ESelectInfo { enum Type : int; }
namespace ETextCommit { enum Type : int; }
struct FPropertyChangedEvent;
template <typename ItemType> class STreeView;
class ITableRow;
class FLiveLinkClient;
struct FLiveLinkSourceUIEntry;
struct FLiveLinkSubjectUIEntry;
class FMenuBuilder;
class FUICommandList;
class SLiveLinkDataView;
class ULiveLinkSourceFactory;
class SLiveLinkSourceListView;
class STableViewBase;
class LIVELINKEDITOR_API SLiveLinkClientPanel : public SCompoundWidget, public FGCObject, public FEditorUndoClient
{
SLATE_BEGIN_ARGS(SLiveLinkClientPanel) {}
SLATE_END_ARGS()
virtual ~SLiveLinkClientPanel() override;
void Construct(const FArguments& Args, FLiveLinkClient* InClient);
// FGCObject interface
virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
virtual FString GetReferencerName() const override
{
return TEXT("SLiveLinkClientPanel");
}
// End of FGCObject interface
// FEditorUndoClient interface
virtual void PostUndo(bool bSuccess) override;
virtual void PostRedo(bool bSuccess) override;
// End FEditorUndoClient interface
private:
// Controls whether the editor performance throttling warning should be visible
EVisibility ShowEditorPerformanceThrottlingWarning() const;
// Handle disabling of editor performance throttling
FReply DisableEditorPerformanceThrottling();
// Return the message count text
FText GetMessageCountText() const;
// Return the occurrence count and last time occurred text
FText GetSelectedMessageOccurrenceText() const;
int32 GetDetailWidgetIndex() const;
// Handler for the subject tree context menu opening
TSharedPtr<SWidget> OnOpenVirtualSubjectContextMenu();
// Returns whether the panel is in read only mode or not.
bool IsInReadOnlyMode() const;
/** Get widget visibility according to whether the panel is in read-only mode. */
EVisibility GetVisibilityBasedOnReadOnly() const;
private:
// Handles callback connections between the sources, subjects and details views
TSharedPtr<FLiveLinkPanelController> PanelController;
// Pointer to the livelink client
FLiveLinkClient* Client = nullptr;
// Map to cover
TMap<TObjectPtr<UClass>, TObjectPtr<UObject>> DetailsPanelEditorObjects;
// Details index
int32 DetailWidgetIndex = -1;
};