Files
UnrealEngineUWP/Engine/Source/Editor/GraphEditor/Public/SGraphPinComboBox.h
Michael Schoell 6a5d80e78f On Blueprint enum pins, tooltips will appear when hovering over items in the drop down menu.
Fixed localization display issue for enums in the UI.

#jira UE-12504 - Node enum drop down boxes should utilize tooltips for each value

[CL 2580309 by Michael Schoell in Main branch]
2015-06-08 15:29:57 -04:00

71 lines
2.2 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(FText, 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_EVENT( FGetComboItemDisplayString, OnGetTooltip )
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 OnGetDisplayName.Execute(RowIndex);
}
/** Callback for Slate to retrieve the tooltip */
FText GetRowTooltip(int32 RowIndex) const
{
return OnGetTooltip.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;
/** Delegate for finding the tooltip */
FGetComboItemDisplayString OnGetTooltip;
};