Files
UnrealEngineUWP/Engine/Plugins/Runtime/ModelViewViewModel/Source/ModelViewViewModelBlueprint/Public/Extensions/MVVMBlueprintViewExtension.h
graham lewis d582333dac Add designer preview entries to MVVM panel extension.
UMVVMBlueprintViewExtension:
- Added virtual OnPreviewContentChanged function.

UMVVMWidgetBlueprintExtension_View:
- Added GetAllBlueprintExtensions function.

FBlueprintViewDesignerExtension:
- New designer extension which overrides PreviewContentChanged and calls OnPreviewContentChanged on each UMVVMBlueprintViewExtension.

FBlueprintViewDesignerExtensionFactory:
- New designer extension factory which creates a FBlueprintViewDesignerExtension.

UMVVMBlueprintViewExtension_PanelWidget:
- Added NumDesignerPreviewEntries property.
- Added static CreateDesignerPreviewEntries function which clears panels children then adds specified number of entries.
- Overrides OnPreviewContentChanged which calls CreateDesignerPreviewEntries using the preview panel widget.

FModelViewViewModelEditorModule:
- Adds PanelWidgetExtensionFactory on module startup and removes on shutdown.

FMVVMPanelWidgetExtensionCustomizationExtender:
- Added "Num Designer Preview Entries" property row.
- Calls UMVVMBlueprintViewExtension_PanelWidget::CreateDesignerPreviewEntries when entry class, slot template or "Num Designer Preview Entries" properties change.

#jira UE-213718
[REVIEW] [at]zahra.nikbakht, [at]editor-ui-systems, [at]chris.gagnon
#rb Vincent.Gauthier, zahra.nikbakht

[CL 34032917 by graham lewis in ue5-main branch]
2024-05-31 11:11:52 -04:00

43 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "MVVMBlueprintViewCompilerInterface.h"
#include "MVVMBlueprintViewExtension.generated.h"
class UMVVMViewClass;
class UWidgetBlueprintGeneratedClass;
/**
* An extension class to define MVVM-related properties and behaviour. When WBP compiled, this information is copied
* into UMVVMViewClassExtension. This class provides a hook into the MVVM compiler and partially exposes it for injecting
* user-defined behaviour at compile-time.
*/
UCLASS(MinimalAPI)
class UMVVMBlueprintViewExtension : public UObject
{
GENERATED_BODY()
public:
//~ Functions to be overriden in a user-defined UMVVMViewBlueprintMyWidgetExtension class
virtual TArray<UE::MVVM::Compiler::FBlueprintViewUserWidgetProperty> AddProperties()
{
return TArray<UE::MVVM::Compiler::FBlueprintViewUserWidgetProperty>();
};
virtual TArray<UE::MVVM::Compiler::FBlueprintViewUserWidgetWidgetProperty> AddWidgetProperties()
{
return TArray<UE::MVVM::Compiler::FBlueprintViewUserWidgetWidgetProperty>();
};
virtual void Precompile(UE::MVVM::Compiler::IMVVMBlueprintViewPrecompile* Compiler, UWidgetBlueprintGeneratedClass* Class) {}
virtual void Compile(UE::MVVM::Compiler::IMVVMBlueprintViewCompile* Compiler, UWidgetBlueprintGeneratedClass* Class, UMVVMViewClass* ViewExtension) {}
virtual bool WidgetRenamed(FName OldName, FName NewName)
{
return false;
}
virtual void OnPreviewContentChanged(TSharedRef<SWidget> NewContent) {}
};