You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
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]
80 lines
2.7 KiB
C++
80 lines
2.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "Blueprint/UserWidget.h"
|
|
#include "Bindings/MVVMCompiledBindingLibraryCompiler.h"
|
|
#include "MVVMBlueprintViewExtension.h"
|
|
#include "Components/PanelSlot.h"
|
|
#include "MVVMViewBlueprintPanelWidgetExtension.generated.h"
|
|
|
|
class UMVVMBlueprintView;
|
|
class UMVVMViewClass;
|
|
class UMVVMViewPanelWidgetClassExtension;
|
|
class UUserWidget;
|
|
class UWidgetBlueprintGeneratedClass;
|
|
|
|
namespace UE::MVVM
|
|
{
|
|
class FMVVMPanelWidgetExtensionCustomizationExtender;
|
|
}
|
|
|
|
namespace UE::MVVM::Compiler
|
|
{
|
|
class IMVVMBlueprintViewPrecompile;
|
|
class IMVVMBlueprintViewCompile;
|
|
struct FBlueprintViewUserWidgetProperty;
|
|
}
|
|
|
|
UCLASS()
|
|
class MODELVIEWVIEWMODELBLUEPRINT_API UMVVMBlueprintViewExtension_PanelWidget : public UMVVMBlueprintViewExtension
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
//~ Begin UMVVMBlueprintViewExtension overrides
|
|
virtual TArray<UE::MVVM::Compiler::FBlueprintViewUserWidgetProperty> AddProperties() override;
|
|
virtual TArray<UE::MVVM::Compiler::FBlueprintViewUserWidgetWidgetProperty> AddWidgetProperties() override;
|
|
virtual void Precompile(UE::MVVM::Compiler::IMVVMBlueprintViewPrecompile* Compiler, UWidgetBlueprintGeneratedClass* Class) override;
|
|
virtual void Compile(UE::MVVM::Compiler::IMVVMBlueprintViewCompile* Compiler, UWidgetBlueprintGeneratedClass* Class, UMVVMViewClass* ViewExtension) override;
|
|
virtual bool WidgetRenamed(FName OldName, FName NewName) override;
|
|
virtual void OnPreviewContentChanged(TSharedRef<SWidget> NewContent) override;
|
|
//~ End UMVVMBlueprintViewExtension overrides
|
|
|
|
FGuid GetEntryViewModelId() const
|
|
{
|
|
return EntryViewModelId;
|
|
}
|
|
|
|
private:
|
|
const UMVVMBlueprintView* GetEntryWidgetBlueprintView(const UUserWidget* EntryUserWidget) const;
|
|
|
|
static void RefreshDesignerPreviewEntries(UPanelWidget* PanelWidget, TSubclassOf<UUserWidget> EntryWidgetClass, UPanelSlot* SlotTemplate, int32 NumDesignerPreviewEntries, bool bFullRebuild);
|
|
|
|
private:
|
|
UPROPERTY()
|
|
FName WidgetName;
|
|
|
|
UPROPERTY()
|
|
FGuid EntryViewModelId;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "EntryClass", meta = (AllowPrivateAccess = "true"))
|
|
TSubclassOf<UUserWidget> EntryWidgetClass;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, Category = "Slot", meta = (AllowPrivateAccess = "true"))
|
|
TObjectPtr<UPanelSlot> SlotObj;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "NumDesignerPreviewEntries", meta = (AllowPrivateAccess = "true", ClampMin = 0, ClampMax = 20))
|
|
int32 NumDesignerPreviewEntries = 3;
|
|
|
|
UPROPERTY()
|
|
FName PanelPropertyName;
|
|
|
|
UPROPERTY()
|
|
TObjectPtr<UMVVMViewPanelWidgetClassExtension> ExtensionObj;
|
|
|
|
UE::MVVM::FCompiledBindingLibraryCompiler::FFieldPathHandle WidgetPathHandle;
|
|
|
|
friend UE::MVVM::FMVVMPanelWidgetExtensionCustomizationExtender;
|
|
};
|