Files
UnrealEngineUWP/Engine/Source/Programs/LiveCodingConsole/Private/SLogWidget.h
Ryan Durand 9ef3748747 Updating copyrights for Engine Programs.
#rnx
#rb none
#jira none

#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869242 in //Fortnite/Release-12.00/... via CL 10869536
#ROBOMERGE-BOT: FORTNITE (Main -> Dev-EngineMerge) (v613-10869866)

[CL 10870955 by Ryan Durand in Main branch]
2019-12-26 23:01:54 -05:00

70 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "SlateCore.h"
#include "Widgets/SCompoundWidget.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "Widgets/SWidget.h"
#include "Widgets/SCompoundWidget.h"
#include "Framework/Text/BaseTextLayoutMarshaller.h"
#include "Widgets/Input/SMultiLineEditableTextBox.h"
#include "Widgets/Input/SEditableTextBox.h"
#include "Widgets/Views/STableViewBase.h"
#include "Widgets/Views/STableRow.h"
class FLogWidgetTextLayoutMarshaller : public FBaseTextLayoutMarshaller
{
public:
FLogWidgetTextLayoutMarshaller();
virtual ~FLogWidgetTextLayoutMarshaller();
// ITextLayoutMarshaller
virtual void SetText(const FString& SourceString, FTextLayout& TargetTextLayout) override;
virtual void GetText(FString& TargetString, const FTextLayout& SourceTextLayout) override;
void Clear();
void AppendLine(const FSlateColor& Color, const FString& Line);
int32 GetNumLines() const;
private:
FTextBlockStyle DefaultStyle;
TArray<TSharedRef<FString>> Lines;
FTextLayout* TextLayout;
};
class SLogWidget : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(SLogWidget) { }
SLATE_END_ARGS()
SLogWidget();
~SLogWidget();
void Construct( const FArguments& InArgs );
void Clear();
void ScrollToEnd();
void AppendLine(const FSlateColor& Color, const FString& Text);
protected:
struct FLine
{
FSlateColor Color;
FString Text;
};
FEditableTextBoxStyle Style;
FCriticalSection CriticalSection;
TArray<FLine> QueuedLines;
TSharedPtr<FLogWidgetTextLayoutMarshaller> MessagesTextMarshaller;
TSharedPtr<SMultiLineEditableTextBox> MessagesTextBox;
bool bIsUserScrolledX;
bool bIsUserScrolledY;
void OnScrollX(float ScrollOffset);
void OnScrollY(float ScrollOffset);
EActiveTimerReturnType OnTimerElapsed(double CurrentTime, float DeltaTime);
};