12#include "CoreMinimal.h"
14#include "Widgets/WSButtonBase.h"
15#include "Widgets/Modern/WSModernCard.h"
16#include "Widgets/Basic/WSIcon.h"
17#include "Widgets/Basic/WSText.h"
18#include "Components/HorizontalBox.h"
19#include "Components/Image.h"
20#include "Components/InvalidationBox.h"
21#include "Components/Overlay.h"
22#include "Components/ScaleBox.h"
23#include "Components/Spacer.h"
24#include "Components/VerticalBox.h"
25#include "WSModernButton.generated.h"
27UENUM(BlueprintType, META=(
28 Tooltip =
"The location of the icon in conjunction to the widget.",
30 DeprecationMessage =
"Use EWSPlacement instead.")
32enum class EPlacement : uint8
34 Left UMETA(DisplayName=
"Left"),
35 Right UMETA(DisplayName=
"Right"),
36 Top UMETA(DisplayName=
"Top"),
37 Bottom UMETA(DisplayName=
"Bottom"),
39 IconPlacement_Max UMETA(Hidden),
42UENUM(BlueprintType, META=(
43 Tooltip =
"The overall style of the button.",
44 ScriptName=
"ButtonStyling")
46enum class EButtonStyle : uint8
48 Solid UMETA(DisplayName=
"Solid"),
49 Line UMETA(DisplayName=
"Outline"),
50 Content UMETA(DisplayName=
"Content"),
52 ButtonStyle_Max UMETA(Hidden),
55UENUM(BlueprintType, META=(
56 Tooltip =
"The style of the buttons content.")
58enum class EButtonContentStyle : uint8
60 IconWithLabel UMETA(DisplayName=
"Text + Icon"),
61 Label UMETA(DisplayName=
"Text"),
62 Icon UMETA(DisplayName=
"Icon"),
64 ButtonStyle_Max UMETA(Hidden),
80 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category =
"Widget Studio")
81 EButtonContentStyle ContentStyle;
84 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Widget Studio", Meta = (EditCondition = "ContentStyle != EButtonContentStyle::Icon"))
88 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Widget Studio", Meta = (EditCondition = "ContentStyle != EButtonContentStyle::Label"))
95 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Widget Studio", Meta = (EditCondition = "ContentStyle != EButtonContentStyle::Label"))
96 UTexture2D* CustomIcon;
99 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Widget Studio", Meta = (MultiLine = true))
107 UPROPERTY(EditAnywhere, Category = "Widget Studio")
108 bool bIsCheckedStateLocked;
111 const EButtonContentStyle InContentStyle = EButtonContentStyle::Label,
112 const
bool bInIsCheckedStateLocked = false,
113 const FText InText = FText().FromString("New Option"),
114 const EIconItem InIcon = EIconItem::Heart,
115 UTexture2D* InCustomIcon =
nullptr
118 bIsCheckedStateLocked = bInIsCheckedStateLocked;
119 ContentStyle = InContentStyle;
122 CustomIcon = InCustomIcon;
136 virtual TSharedRef<SWidget> RebuildWidget()
override;
137 virtual int32 NativePaint(
const FPaintArgs& Args,
const FGeometry& AllottedGeometry,
const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId,
const FWidgetStyle& InWidgetStyle,
bool bParentEnabled)
const override;
138 virtual void SynchronizeProperties()
override;
139 virtual void InitializeStyling()
override;
140 virtual void UpdateStyling()
override;
143 void UpdateContentPositionsAndStyling()
const;
146 const float BaseDropShadowOpacity = .15;
153 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
154 UInvalidationBox* Retainer =
nullptr;
156 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
157 USizeBox* SizeBox =
nullptr;
159 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
160 UOverlay* Overlay =
nullptr;
162 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
163 UOverlay* BackgroundOverlay =
nullptr;
165 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
166 UOverlay* ContentOverlay =
nullptr;
168 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
169 UScaleBox* BackgroundScaleBox =
nullptr;
171 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
172 UImage* DropShadow =
nullptr;
174 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
175 UImage* Background =
nullptr;
177 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
178 UHorizontalBox* HorizontalContent =
nullptr;
180 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
181 UVerticalBox* VerticalContent =
nullptr;
183 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
186 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
187 USpacer* SpacerItem =
nullptr;
189 UPROPERTY(BlueprintReadOnly, Category =
"Widgets")
197 UPROPERTY(EditAnywhere, Category =
"Widget Studio", Meta = (InLineCategoryProperty))
198 EButtonContentStyle ContentStyle = EButtonContentStyle::Label;
201 UPROPERTY(EditAnywhere, Category =
"Widget Studio", Meta = (EditCondition=
"ContentStyle != EButtonContentStyle::Icon", EditConditionHides))
202 FText Text = FText().FromString(
"Button");
205 UPROPERTY(EditAnywhere, Category =
"Widget Studio", Meta = (EditCondition=
"ContentStyle != EButtonContentStyle::Icon", EditConditionHides))
210 ETextJustify::Center,
213 ETextWrappingPolicy::DefaultWrapping);
216 UPROPERTY(EditAnywhere, Category =
"Widget Studio", Meta = (EditCondition=
"ContentStyle != EButtonContentStyle::Label", EditConditionHides))
217 EIconItem Icon = EIconItem::Heart;
223 UPROPERTY(EditAnywhere, Category =
"Widget Studio", Meta = (EditCondition=
"ContentStyle != EButtonContentStyle::Label", EditConditionHides))
224 UTexture2D* CustomIcon;
230 UPROPERTY(EditAnywhere, Category =
"Widget Studio", Meta = (EditCondition=
"ContentStyle == EButtonContentStyle::IconWithLabel", EditConditionHides))
231 EWSPlacement IconPlacement = EWSPlacement::Left;
234 UPROPERTY(EditAnywhere, Category =
"Widget Studio", Meta = (EditCondition=
"ContentStyle != EButtonContentStyle::Label", EditConditionHides))
238 UPROPERTY(EditAnywhere, Category =
"Widget Studio", Meta = (EditCondition=
"ContentStyle != EButtonContentStyle::Icon", EditConditionHides))
239 TEnumAsByte<EHorizontalAlignment> ContentAlignment = HAlign_Center;
244 UPROPERTY(EditAnywhere, Category =
"Widget Studio|Color")
245 EPalette StandardBackgroundColor = EPalette::TertiaryBackground;
248 UPROPERTY(EditAnywhere, Category =
"Widget Studio|Color")
249 EPalette CheckedBackgroundColor = EPalette::PrimaryAccent;
252 UPROPERTY(EditAnywhere, Category =
"Widget Studio|Color")
253 EPalette StandardContentColor = EPalette::PrimaryContent;
256 UPROPERTY(EditAnywhere, Category =
"Widget Studio|Color")
257 EPalette CheckedContentColor = EPalette::TertiaryBackground;
262 UPROPERTY(EditAnywhere, Category =
"Widget Studio|Style")
263 EButtonStyle ButtonStyle = EButtonStyle::Solid;
266 UPROPERTY(EditAnywhere, Category =
"Widget Studio|Style")
267 float ContentPadding = 10;
270 UPROPERTY(EditAnywhere, Category =
"Widget Studio|Style", Meta = (EditCondition=
"ButtonStyle != EButtonStyle::Content", EditConditionHides))
271 ECornerStyle CornerStyle = ECornerStyle::Rounded;
274 UPROPERTY(EditAnywhere, Category =
"Widget Studio|Style", Meta = (EditCondition=
"ButtonStyle != EButtonStyle::Content", EditConditionHides))
275 EShadowStyle ShadowStyle = EShadowStyle::Small;
282 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Text")
283 bool IsTextValid()
const;
286 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Text")
287 FText GetText()
const;
290 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Text")
295 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Icon")
296 bool IsIconValid()
const;
299 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Icon")
300 EIconItem GetIcon()
const;
303 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Icon")
307 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Icon")
308 bool IsIconColoredByPalette()
const;
311 UFUNCTION(BlueprintGetter, Category=
"Widget Studio|Helper")
312 bool IsUsingCustomIcon()
const;
315 UFUNCTION(BlueprintGetter, Category=
"Widget Studio|Helper")
316 UTexture2D* GetCustomIcon()
const;
320 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Color")
321 EPalette GetStandardBackgroundColor()
const;
324 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Color")
325 EPalette GetCheckedBackgroundColor()
const;
328 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Color")
329 EPalette GetStandardContentColor()
const;
332 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Color")
333 EPalette GetCheckedContentColor()
const;
336 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Style")
337 EWSPlacement GetIconPlacement()
const;
340 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Style")
341 ECornerStyle GetCornerStyle()
const;
344 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Style")
345 EButtonStyle GetButtonStyle()
const;
348 UFUNCTION(BlueprintGetter, Category =
"Widget Studio|Helper|Style")
349 EButtonContentStyle GetContentStyle()
const;
358 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Text")
359 void SetText(FText NewText);
365 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Text")
372 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier")
373 void SetAlignment(TEnumAsByte<EHorizontalAlignment> NewAlignment);
380 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Icon")
381 void SetIcon(EIconItem NewIcon);
387 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Icon")
394 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Icon")
395 void SetIconPlacement(EWSPlacement NewIconPlacement);
401 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Icon")
402 void SetColorIconByPalette(
bool NewState);
408 UFUNCTION(BlueprintSetter, Category=
"Widget Studio|Modifier")
409 void SetCustomIcon(UTexture2D* NewCustomIcon);
412 UFUNCTION(BlueprintSetter, Category=
"Widget Studio|Modifier")
413 void ClearCustomIcon();
420 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Color")
421 void SetStandardBackgroundColor(EPalette NewColor);
427 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Color")
428 void SetCheckedBackgroundColor(EPalette NewColor);
434 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Color")
435 void SetStandardContentColor(EPalette NewColor);
441 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Color")
442 void SetCheckedContentColor(EPalette NewColor);
449 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Style")
450 void SetCornerStyle(ECornerStyle NewCornerStyle);
456 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Style")
457 void SetButtonStyle(EButtonStyle NewButtonStyle);
463 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier|Style")
464 void SetContentStyle(EButtonContentStyle NewContentStyle);
470 UFUNCTION(BlueprintSetter, Category =
"Widget Studio|Modifier")
A custom text widget setup to work with the Typography Styling.
Definition: WSText.h:92
Struct with font weight, size, and letter spacing.
Definition: WSTypography.h:23
The settings for the Widget Studio Icon Widget.
Definition: WSIcon.h:27
The settings for the Widget Studio Text.
Definition: WSText.h:23