Files
UnrealEngineUWP/Engine/Source/Editor/Sequencer/Private/SequencerUtilities.cpp
Ben Marsh 20bf0eb6a1 Updating copyright notices to 2017 (copying from //Tasks/UE4/Dev-Copyright-2017).
#rb none
#lockdown Nick.Penwarden

[CL 3226823 by Ben Marsh in Main branch]
2016-12-08 08:52:44 -05:00

94 lines
2.6 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#include "SequencerUtilities.h"
#include "Misc/Paths.h"
#include "Layout/Margin.h"
#include "Fonts/SlateFontInfo.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "Widgets/SBoxPanel.h"
#include "Widgets/Images/SImage.h"
#include "Widgets/Text/STextBlock.h"
#include "Widgets/Input/SComboButton.h"
#include "EditorStyleSet.h"
static EVisibility GetRolloverVisibility(TAttribute<bool> HoverState, TWeakPtr<SComboButton> WeakComboButton)
{
TSharedPtr<SComboButton> ComboButton = WeakComboButton.Pin();
if (HoverState.Get() || ComboButton->IsOpen())
{
return EVisibility::SelfHitTestInvisible;
}
else
{
return EVisibility::Collapsed;
}
}
TSharedRef<SWidget> FSequencerUtilities::MakeAddButton(FText HoverText, FOnGetContent MenuContent, const TAttribute<bool>& HoverState)
{
FSlateFontInfo SmallLayoutFont( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Regular.ttf"), 8 );
TSharedRef<STextBlock> ComboButtonText = SNew(STextBlock)
.Text(HoverText)
.Font(SmallLayoutFont)
.ColorAndOpacity( FSlateColor::UseForeground() );
TSharedRef<SComboButton> ComboButton =
SNew(SComboButton)
.HasDownArrow(false)
.ButtonStyle(FEditorStyle::Get(), "HoverHintOnly")
.ForegroundColor( FSlateColor::UseForeground() )
.OnGetMenuContent(MenuContent)
.ContentPadding(FMargin(5, 2))
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.ButtonContent()
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
.VAlign(VAlign_Center)
.Padding(FMargin(0,0,2,0))
[
SNew(SImage)
.ColorAndOpacity( FSlateColor::UseForeground() )
.Image(FEditorStyle::GetBrush("Plus"))
]
+ SHorizontalBox::Slot()
.VAlign(VAlign_Center)
.AutoWidth()
[
ComboButtonText
]
];
TAttribute<EVisibility> Visibility = TAttribute<EVisibility>::Create(TAttribute<EVisibility>::FGetter::CreateStatic(GetRolloverVisibility, HoverState, TWeakPtr<SComboButton>(ComboButton)));
ComboButtonText->SetVisibility(Visibility);
return ComboButton;
}
FName FSequencerUtilities::GetUniqueName( FName CandidateName, const TArray<FName>& ExistingNames )
{
FString CandidateNameString = CandidateName.ToString();
FString BaseNameString = CandidateNameString;
if ( CandidateNameString.Len() >= 3 && CandidateNameString.Right(3).IsNumeric() )
{
BaseNameString = CandidateNameString.Left( CandidateNameString.Len() - 3 );
}
FName UniqueName = FName(*BaseNameString);
int32 NameIndex = 1;
while ( ExistingNames.Contains( UniqueName ) )
{
UniqueName = FName( *FString::Printf(TEXT("%s%i"), *BaseNameString, NameIndex ) );
NameIndex++;
}
return UniqueName;
}