2014-03-14 14:13:41 -04:00
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
2014-10-14 22:50:06 -04:00
# include "SlateBasics.h"
2014-03-14 14:13:41 -04:00
# include "EditorStyle.h"
# include "SProfileVisualizer.h"
# include "TaskGraphInterfaces.h"
# include "STaskGraph.h"
# include "SGraphBar.h"
# include "SBarVisualizer.h"
# include "SEventsTree.h"
void SProfileVisualizer : : Construct ( const FArguments & InArgs )
{
ProfileData = InArgs . _ProfileData ;
ProfilerType = InArgs . _ProfilerType ;
const FSlateBrush * ContentAreaBrush = FEditorStyle : : GetBrush ( " Docking.Tab " , " .ContentAreaBrush " ) ;
ChildSlot
[
SAssignNew ( MainSplitter , SSplitter )
. Orientation ( Orient_Vertical )
+ SSplitter : : Slot ( )
. Value ( 1.0f )
[
SNew ( SBorder )
. Visibility ( EVisibility : : Visible )
. BorderImage ( ContentAreaBrush )
[
SAssignNew ( BarVisualizer , SBarVisualizer )
. ProfileData ( ProfileData )
. OnBarGraphSelectionChanged ( this , & SProfileVisualizer : : RouteBarGraphSelectionChanged )
. OnBarGraphExpansionChanged ( this , & SProfileVisualizer : : RouteBarGraphExpansionChanged )
. OnBarEventSelectionChanged ( this , & SProfileVisualizer : : RouteBarEventSelectionChanged )
. OnBarGraphContextMenu ( this , & SProfileVisualizer : : OnBarGraphContextMenu )
]
]
+ SSplitter : : Slot ( )
. Value ( 1.0f )
[
SNew ( SBorder )
. Visibility ( EVisibility : : Visible )
. BorderImage ( ContentAreaBrush )
[
SAssignNew ( EventsTree , SEventsTree )
. ProfileData ( ProfileData )
. OnEventSelectionChanged ( this , & SProfileVisualizer : : RouteEventSelectionChanged )
]
]
] ;
// Attempt to choose initial data set to display in the tree view
EventsTree - > HandleBarGraphExpansionChanged ( ProfileData ) ;
}
TSharedRef < SWidget > SProfileVisualizer : : MakeMainMenu ( )
{
FMenuBarBuilder MenuBuilder ( NULL ) ;
{
// File
MenuBuilder . AddPullDownMenu (
NSLOCTEXT ( " TaskGraph " , " FileMenu " , " File " ) ,
NSLOCTEXT ( " TaskGraph " , " FileMenu_ToolTip " , " Open the file menu " ) ,
FNewMenuDelegate : : CreateSP ( this , & SProfileVisualizer : : FillFileMenu ) ) ;
// Apps
MenuBuilder . AddPullDownMenu (
NSLOCTEXT ( " TaskGraph " , " AppMenu " , " Window " ) ,
NSLOCTEXT ( " TaskGraph " , " AppMenu_ToolTip " , " Open the summoning menu " ) ,
FNewMenuDelegate : : CreateSP ( this , & SProfileVisualizer : : FillAppMenu ) ) ;
// Help
MenuBuilder . AddPullDownMenu (
NSLOCTEXT ( " TaskGraph " , " HelpMenu " , " Help " ) ,
NSLOCTEXT ( " TaskGraph " , " HelpMenu_ToolTip " , " Open the help menu " ) ,
FNewMenuDelegate : : CreateSP ( this , & SProfileVisualizer : : FillHelpMenu ) ) ;
}
// Create the menu bar
TSharedRef < SWidget > MenuBarWidget = MenuBuilder . MakeWidget ( ) ;
return MenuBarWidget ;
}
void SProfileVisualizer : : FillFileMenu ( FMenuBuilder & MenuBuilder )
{
}
void SProfileVisualizer : : FillAppMenu ( FMenuBuilder & MenuBuilder )
{
}
void SProfileVisualizer : : FillHelpMenu ( FMenuBuilder & MenuBuilder )
{
}
void SProfileVisualizer : : RouteEventSelectionChanged ( TSharedPtr < FVisualizerEvent > Selection )
{
BarVisualizer - > HandleEventSelectionChanged ( Selection ) ;
}
void SProfileVisualizer : : RouteBarGraphSelectionChanged ( TSharedPtr < FVisualizerEvent > Selection )
{
EventsTree - > HandleBarGraphSelectionChanged ( Selection ) ;
}
void SProfileVisualizer : : RouteBarGraphExpansionChanged ( TSharedPtr < FVisualizerEvent > Selection )
{
EventsTree - > HandleBarGraphExpansionChanged ( Selection ) ;
}
void SProfileVisualizer : : RouteBarEventSelectionChanged ( int32 Thread , TSharedPtr < FVisualizerEvent > Selection )
{
EventsTree - > HandleBarEventSelectionChanged ( Thread , Selection ) ;
}
void SProfileVisualizer : : OnBarGraphContextMenu ( TSharedPtr < FVisualizerEvent > Selection )
{
SelectedBarGraph = Selection ;
FSlateApplication : : Get ( ) . PushMenu ( SharedThis ( this ) , MakeBarVisualizerContextMenu ( ) , FSlateApplication : : Get ( ) . GetCursorPos ( ) , FPopupTransitionEffect : : ContextMenu ) ;
}
TSharedRef < SWidget > SProfileVisualizer : : MakeBarVisualizerContextMenu ( )
{
const bool bCloseAfterSelection = true ;
FMenuBuilder MenuBuilder ( bCloseAfterSelection , NULL ) ;
{
FUIAction Action ( FExecuteAction : : CreateSP ( this , & SProfileVisualizer : : ShowGraphBarInEventsWindow , ( int32 ) INDEX_NONE ) ) ;
MenuBuilder . AddMenuEntry ( NSLOCTEXT ( " TaskGraph " , " GraphBarShowInNew " , " Show in New Events Window " ) , FText : : GetEmpty ( ) , FSlateIcon ( ) , Action , NAME_None , EUserInterfaceActionType : : Button ) ;
}
return MenuBuilder . MakeWidget ( ) ;
}
void SProfileVisualizer : : ShowGraphBarInEventsWindow ( int32 WindowIndex )
{
EventsTree - > HandleBarGraphExpansionChanged ( SelectedBarGraph ) ;
}