// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved. #include "UMGPrivatePCH.h" #define LOCTEXT_NAMESPACE "UMG" ///////////////////////////////////////////////////// // UMultiLineEditableTextBox UMultiLineEditableTextBox::UMultiLineEditableTextBox(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { ForegroundColor = FLinearColor::Black; BackgroundColor = FLinearColor::White; ReadOnlyForegroundColor = FLinearColor::Black; // HACK Special font initialization hack since there are no font assets yet for slate. Font = FSlateFontInfo(TEXT("Slate/Fonts/Roboto-Bold.ttf"), 12); SMultiLineEditableTextBox::FArguments Defaults; WidgetStyle = *Defaults._Style; TextStyle = *Defaults._TextStyle; } void UMultiLineEditableTextBox::ReleaseSlateResources(bool bReleaseChildren) { Super::ReleaseSlateResources(bReleaseChildren); MyEditableTextBlock.Reset(); } TSharedRef UMultiLineEditableTextBox::RebuildWidget() { FString FontPath = FPaths::GameContentDir() / Font.FontName.ToString(); if ( !FPaths::FileExists(FontPath) ) { FontPath = FPaths::EngineContentDir() / Font.FontName.ToString(); } MyEditableTextBlock = SNew(SMultiLineEditableTextBox) .Style(&WidgetStyle) .TextStyle(&TextStyle) .Font(FSlateFontInfo(FontPath, Font.Size)) .Justification(Justification) .ForegroundColor(ForegroundColor) .BackgroundColor(BackgroundColor) .ReadOnlyForegroundColor(ReadOnlyForegroundColor) // .MinDesiredWidth(MinimumDesiredWidth) // .Padding(Padding) // .IsCaretMovedWhenGainFocus(IsCaretMovedWhenGainFocus) // .SelectAllTextWhenFocused(SelectAllTextWhenFocused) // .RevertTextOnEscape(RevertTextOnEscape) // .ClearKeyboardFocusOnCommit(ClearKeyboardFocusOnCommit) // .SelectAllTextOnCommit(SelectAllTextOnCommit) // .OnTextChanged(BIND_UOBJECT_DELEGATE(FOnTextChanged, HandleOnTextChanged)) // .OnTextCommitted(BIND_UOBJECT_DELEGATE(FOnTextCommitted, HandleOnTextCommitted)) ; return MyEditableTextBlock.ToSharedRef(); } void UMultiLineEditableTextBox::SynchronizeProperties() { Super::SynchronizeProperties(); MyEditableTextBlock->SetText(Text); // MyEditableTextBlock->SetHintText(HintText); // MyEditableTextBlock->SetIsReadOnly(IsReadOnly); // MyEditableTextBlock->SetIsPassword(IsPassword); // MyEditableTextBlock->SetColorAndOpacity(ColorAndOpacity); // TODO UMG Complete making all properties settable on SMultiLineEditableTextBox } FText UMultiLineEditableTextBox::GetText() const { if ( MyEditableTextBlock.IsValid() ) { return MyEditableTextBlock->GetText(); } return Text; } void UMultiLineEditableTextBox::SetText(FText InText) { Text = InText; if ( MyEditableTextBlock.IsValid() ) { MyEditableTextBlock->SetText(Text); } } void UMultiLineEditableTextBox::SetError(FText InError) { if ( MyEditableTextBlock.IsValid() ) { MyEditableTextBlock->SetError(InError); } } void UMultiLineEditableTextBox::HandleOnTextChanged(const FText& Text) { OnTextChanged.Broadcast(Text); } void UMultiLineEditableTextBox::HandleOnTextCommitted(const FText& Text, ETextCommit::Type CommitMethod) { OnTextCommitted.Broadcast(Text, CommitMethod); } void UMultiLineEditableTextBox::PostLoad() { Super::PostLoad(); if ( GetLinkerUE4Version() < VER_UE4_DEPRECATE_UMG_STYLE_ASSETS ) { if ( Style_DEPRECATED != nullptr ) { const FEditableTextBoxStyle* StylePtr = Style_DEPRECATED->GetStyle(); if ( StylePtr != nullptr ) { WidgetStyle = *StylePtr; } Style_DEPRECATED = nullptr; } } } #if WITH_EDITOR const FSlateBrush* UMultiLineEditableTextBox::GetEditorIcon() { return FUMGStyle::Get().GetBrush("Widget.MultiLineEditableTextBox"); } const FText UMultiLineEditableTextBox::GetPaletteCategory() { return LOCTEXT("Input", "Input"); } #endif ///////////////////////////////////////////////////// #undef LOCTEXT_NAMESPACE