ArticyXImporter
ArticyXImporter for Unreal Engine
Loading...
Searching...
No Matches
SArticyObjectTileView.h
1// Copyright (c) 2023 articy Software GmbH & Co. KG. All rights reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Styling/SlateBrush.h"
7#include "Widgets/SCompoundWidget.h"
8#include "ArticyObject.h"
9#include "Widgets/Layout/SBorder.h"
10#include "ArticyBaseTypes.h"
11#include "Widgets/Images/SImage.h"
12#include "Widgets/Text/STextBlock.h"
13#include "Framework/Commands/UIAction.h"
14
15DECLARE_DELEGATE_OneParam(FOnArticyIdChanged, const FArticyId&);
16
22class ARTICYEDITOR_API SArticyObjectTileView : public SCompoundWidget
23{
24public:
25 SLATE_BEGIN_ARGS(SArticyObjectTileView)
26 : _LabelVisibility(EVisibility::Visible)
27 , _OnMouseDoubleClick()
28 , _ThumbnailSize(FVector2D(48.f, 48.f))
29 , _ThumbnailPadding(FMargin(2.f))
30 , _bIsReadOnly(false)
31 {}
32 SLATE_ATTRIBUTE(FArticyId, ArticyIdToDisplay)
33 SLATE_ATTRIBUTE(EVisibility, LabelVisibility)
34 SLATE_EVENT(FPointerEventHandler, OnMouseDoubleClick)
35 SLATE_EVENT(FOnArticyIdChanged, OnArticyIdChanged)
36 SLATE_ARGUMENT(FVector2D, ThumbnailSize)
37 SLATE_ARGUMENT(FMargin, ThumbnailPadding)
38 SLATE_ATTRIBUTE(bool, bIsReadOnly)
39 SLATE_ARGUMENT(FUIAction, CopyAction)
40 SLATE_ARGUMENT(FUIAction, PasteAction)
41 SLATE_END_ARGS()
42
43
50 void Construct(const FArguments& InArgs);
51
61 virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime) override;
62
70 void Update(const FArticyId& NewArticyId);
71
72private:
73 TAttribute<FArticyId> ArticyIdToDisplay;
74 FOnArticyIdChanged OnArticyIdChanged;
75 FOnArticyIdChanged OnArticyIdPasted;
76 FPointerEventHandler OnMouseDoubleClick;
77 TAttribute<EVisibility> LabelVisibility;
78 FVector2D ThumbnailSize;
79 FMargin ThumbnailPadding;
80 TAttribute<bool> bIsReadOnly;
81 FUIAction CopyAction;
82 FUIAction PasteAction;
83
84 mutable FArticyId CachedArticyId;
85 mutable TWeakObjectPtr<UArticyObject> CachedArticyObject;
86
87 TSharedPtr<SImage> PreviewImage;
88 TSharedPtr<STextBlock> DisplayNameTextBlock;
89 TSharedPtr<SBorder> WidgetContainerBorder;
90
91 mutable FSlateBrush PreviewBrush;
92 const FSlateBrush* TypeImage = nullptr;
93 TSharedPtr<FTextBlockStyle> EntityNameTextStyle;
94 bool bHasPreviewImage = false;
95
96private:
104 void OnContextMenuOpening(class FMenuBuilder& Builder) const;
105
115 virtual FReply OnMouseButtonUp(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
116
126 virtual FReply OnMouseButtonDown(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
127
133 void UpdateWidget();
134
140 virtual FText OnGetEntityName() const;
141
147 virtual const FSlateBrush* OnGetEntityImage() const;
148
154 EVisibility OnHasPreviewImage() const;
155
161 virtual FSlateColor OnGetArticyObjectColor() const;
162
168 const FSlateBrush* GetTypeImage() const;
169};
A widget for displaying Articy objects in a tile view.
Definition SArticyObjectTileView.h:23
virtual void Tick(const FGeometry &AllottedGeometry, const double InCurrentTime, const float InDeltaTime) override
Ticks the widget for updates.
Definition SArticyObjectTileView.cpp:178
void Construct(const FArguments &InArgs)
Constructs the widget.
Definition SArticyObjectTileView.cpp:61
void Update(const FArticyId &NewArticyId)
Updates the widget with a new Articy ID.
Definition SArticyObjectTileView.cpp:29
Definition ArticyBaseTypes.h:18