Files
UnrealEngineUWP/Engine/Source/Editor/GraphEditor/Public/SGraphPinComboBox.h
Jamie Dale a569f6b356 Fixed code relying on SLATE_TEXT_ATTRIBUTE for STextBlock.
UETOOL-213 - Minimize Slate FString -> FText conversion (remove SLATE_TEXT_ATTRIBUTE)

This fixes any editor/engine specific code that was passing text to Slate as FString rather than FText.

[CL 2399803 by Jamie Dale in Main branch]
2015-01-07 09:52:40 -05:00

61 lines
1.9 KiB
C++

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#pragma once
/** A delegate type invoked when a selection changes somewhere. */
DECLARE_DELEGATE_RetVal_OneParam(FString, FGetComboItemDisplayString, int32);
//Class implementation to create combo box
class GRAPHEDITOR_API SPinComboBox : public SCompoundWidget
{
public:
typedef SListView< TSharedPtr<int32> > SComboList;
typedef TSlateDelegates< TSharedPtr<int32> >::FOnSelectionChanged FOnSelectionChanged;
SLATE_BEGIN_ARGS( SPinComboBox ){}
SLATE_ATTRIBUTE( TArray< TSharedPtr<int32> >, ComboItemList )
SLATE_ATTRIBUTE( FString, VisibleText )
SLATE_EVENT( FOnSelectionChanged, OnSelectionChanged )
SLATE_EVENT( FGetComboItemDisplayString, OnGetDisplayName )
SLATE_END_ARGS()
//Construct combo box using combo button and combo list
void Construct( const FArguments& InArgs );
//Function to return currently selected string
const TSharedPtr<int32> GetSelectedItem()
{
return CurrentSelection.Pin();
}
private:
//Function to set the newly selected item
void OnSelectionChangedInternal( TSharedPtr<int32> NewSelection, ESelectInfo::Type SelectInfo );
//Get string to display
FText OnGetVisibleTextInternal() const
{
return FText::FromString(VisibleText.Get());
}
// Function to create each row of the combo widget
TSharedRef<ITableRow> OnGenerateComboWidget( TSharedPtr<int32> InComboIndex, const TSharedRef<STableViewBase>& OwnerTable );
FText GetRowString(int32 RowIndex) const
{
return FText::FromString(OnGetDisplayName.Execute(RowIndex));
}
private:
/** List of items in our combo box. Only generated once as combo items dont change at runtime */
TArray< TSharedPtr<int32> > ComboItemList;
TAttribute< FString > VisibleText;
TSharedPtr< SComboButton > ComboButton;
TSharedPtr< SComboList > ComboList;
FOnSelectionChanged OnSelectionChanged;
TWeakPtr<int32> CurrentSelection;
FGetComboItemDisplayString OnGetDisplayName;
};