void FProfilerManager::PostConstructor() { // Register tick functions. OnTick = FTickerDelegate::CreateSP( this, &FProfilerManager::Tick ); FTicker::GetCoreTicker().AddTicker( OnTick ); // Create profiler client. ProfilerClient = FModuleManager::GetModuleChecked<IProfilerClientModule>("ProfilerClient").CreateProfilerClient(); // Register profiler client delegates. ProfilerClient->OnProfilerData().AddSP(this, &FProfilerManager::ProfilerClient_OnProfilerData); ProfilerClient->OnProfilerClientConnected().AddSP(this, &FProfilerManager::ProfilerClient_OnClientConnected); ProfilerClient->OnProfilerClientDisconnected().AddSP(this, &FProfilerManager::ProfilerClient_OnClientDisconnected); ProfilerClient->OnLoadStarted().AddSP(this, &FProfilerManager::ProfilerClient_OnLoadStarted); ProfilerClient->OnLoadedMetaData().AddSP(this, &FProfilerManager::ProfilerClient_OnLoadedMetaData); ProfilerClient->OnLoadCompleted().AddSP(this, &FProfilerManager::ProfilerClient_OnLoadCompleted); ProfilerClient->OnMetaDataUpdated().AddSP(this, &FProfilerManager::ProfilerClient_OnMetaDataUpdated); ProfilerClient->OnProfilerFileTransfer().AddSP(this, &FProfilerManager::ProfilerClient_OnProfilerFileTransfer); SessionManager->OnCanSelectSession().AddSP( this, &FProfilerManager::SessionManager_OnCanSelectSession ); SessionManager->OnSelectedSessionChanged().AddSP( this, &FProfilerManager::SessionManager_OnSelectedSessionChanged ); SessionManager->OnInstanceSelectionChanged().AddSP( this, &FProfilerManager::SessionManager_OnInstanceSelectionChanged ); SetDataPreview( false ); SetDataCapture( false ); FProfilerCommands::Register(); BindCommands(); }
void FStreamingLevelCollectionModel::Initialize(UWorld* InWorld) { BindCommands(); Editor->RegisterForUndo( this ); FLevelCollectionModel::Initialize(InWorld); }
void SEditorViewport::Construct( const FArguments& InArgs ) { ChildSlot [ SAssignNew( ViewportWidget, SViewport ) .ShowEffectWhenDisabled( false ) .EnableGammaCorrection( false ) // Scene rendering handles this .AddMetaData(InArgs.MetaData.Num() > 0 ? InArgs.MetaData[0] : MakeShareable(new FTagMetaData(TEXT("LevelEditorViewport")))) [ SAssignNew( ViewportOverlay, SOverlay ) +SOverlay::Slot() [ SNew( SBorder ) .BorderImage( this, &SEditorViewport::OnGetViewportBorderBrush ) .BorderBackgroundColor( this, &SEditorViewport::OnGetViewportBorderColorAndOpacity ) .Visibility( this, &SEditorViewport::OnGetViewportContentVisibility ) .Padding(0.0f) .ShowEffectWhenDisabled( false ) ] ] ]; TSharedRef<FEditorViewportClient> ViewportClient = MakeEditorViewportClient(); if (!ViewportClient->VisibilityDelegate.IsBound()) { ViewportClient->VisibilityDelegate.BindSP(this, &SEditorViewport::IsVisible); } SceneViewport = MakeShareable( new FSceneViewport( &ViewportClient.Get(), ViewportWidget ) ); ViewportClient->Viewport = SceneViewport.Get(); ViewportWidget->SetViewportInterface(SceneViewport.ToSharedRef()); Client = ViewportClient; if ( Client->IsRealtime() ) { ActiveTimerHandle = RegisterActiveTimer( 0.f, FWidgetActiveTimerDelegate::CreateSP( this, &SEditorViewport::EnsureTick ) ); } CommandList = MakeShareable( new FUICommandList ); // Ensure the commands are registered FEditorViewportCommands::Register(); BindCommands(); TSharedPtr<SWidget> ViewportToolbar = MakeViewportToolbar(); if( ViewportToolbar.IsValid() ) { ViewportOverlay->AddSlot() .VAlign(VAlign_Top) [ ViewportToolbar.ToSharedRef() ]; } PopulateViewportOverlays(ViewportOverlay.ToSharedRef()); }
void SDistributionCurveEditor::Construct(const FArguments& InArgs) { SharedData = MakeShareable(new FCurveEditorSharedData(InArgs._EdSetup)); SharedData->NotifyObject = InArgs._NotifyObject; // Register our commands. This will only register them if not previously registered FCurveEditorCommands::Register(); for (int32 TabIdx = 0; TabIdx < SharedData->EdSetup->Tabs.Num(); TabIdx++) { FCurveEdTab* Tab = &SharedData->EdSetup->Tabs[TabIdx]; TabNames.Add(MakeShareable(new FString(Tab->TabName))); } BindCommands(); CreateLayout(InArgs._CurveEdOptions); }
void FSkeletonEditor::InitSkeletonEditor(const EToolkitMode::Type Mode, const TSharedPtr<IToolkitHost>& InitToolkitHost, USkeleton* InSkeleton) { Skeleton = InSkeleton; FPersonaModule& PersonaModule = FModuleManager::LoadModuleChecked<FPersonaModule>("Persona"); PersonaToolkit = PersonaModule.CreatePersonaToolkit(InSkeleton); PersonaToolkit->GetPreviewScene()->SetDefaultAnimationMode(EPreviewSceneDefaultAnimationMode::ReferencePose); TSharedRef<IAssetFamily> AssetFamily = PersonaModule.CreatePersonaAssetFamily(InSkeleton); AssetFamily->RecordAssetOpened(FAssetData(InSkeleton)); FSkeletonTreeArgs SkeletonTreeArgs(OnPostUndo); SkeletonTreeArgs.OnObjectSelected = FOnObjectSelected::CreateSP(this, &FSkeletonEditor::HandleObjectSelected); SkeletonTreeArgs.PreviewScene = PersonaToolkit->GetPreviewScene(); ISkeletonEditorModule& SkeletonEditorModule = FModuleManager::GetModuleChecked<ISkeletonEditorModule>("SkeletonEditor"); SkeletonTree = SkeletonEditorModule.CreateSkeletonTree(PersonaToolkit->GetSkeleton(), PersonaToolkit->GetMesh(), SkeletonTreeArgs); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; const TSharedRef<FTabManager::FLayout> DummyLayout = FTabManager::NewLayout("NullLayout")->AddArea(FTabManager::NewPrimaryArea()); FAssetEditorToolkit::InitAssetEditor(Mode, InitToolkitHost, SkeletonEditorAppIdentifier, DummyLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, InSkeleton); BindCommands(); AddApplicationMode( SkeletonEditorModes::SkeletonEditorMode, MakeShareable(new FSkeletonEditorMode(SharedThis(this), SkeletonTree.ToSharedRef()))); SetCurrentMode(SkeletonEditorModes::SkeletonEditorMode); // set up our editor mode check(AssetEditorModeManager); AssetEditorModeManager->SetDefaultMode(FPersonaEditModes::SkeletonSelection); ExtendMenu(); ExtendToolbar(); RegenerateMenusAndToolbars(); }
void SProfilerThreadView::Construct( const FArguments& InArgs ) { BindCommands(); }
void SAssetPicker::Construct( const FArguments& InArgs ) { BindCommands(); OnAssetsActivated = InArgs._AssetPickerConfig.OnAssetsActivated; OnAssetSelected = InArgs._AssetPickerConfig.OnAssetSelected; OnAssetDoubleClicked = InArgs._AssetPickerConfig.OnAssetDoubleClicked; OnAssetEnterPressed = InArgs._AssetPickerConfig.OnAssetEnterPressed; bPendingFocusNextFrame = InArgs._AssetPickerConfig.bFocusSearchBoxWhenOpened; DefaultFilterMenuExpansion = InArgs._AssetPickerConfig.DefaultFilterMenuExpansion; SaveSettingsName = InArgs._AssetPickerConfig.SaveSettingsName; OnFolderEnteredDelegate = InArgs._AssetPickerConfig.OnFolderEntered; if ( InArgs._AssetPickerConfig.bFocusSearchBoxWhenOpened ) { RegisterActiveTimer( 0.f, FWidgetActiveTimerDelegate::CreateSP( this, &SAssetPicker::SetFocusPostConstruct ) ); } for (auto DelegateIt = InArgs._AssetPickerConfig.GetCurrentSelectionDelegates.CreateConstIterator(); DelegateIt; ++DelegateIt) { if ((*DelegateIt) != NULL) { (**DelegateIt) = FGetCurrentSelectionDelegate::CreateSP(this, &SAssetPicker::GetCurrentSelection); } } for(auto DelegateIt = InArgs._AssetPickerConfig.SyncToAssetsDelegates.CreateConstIterator(); DelegateIt; ++DelegateIt) { if((*DelegateIt) != NULL) { (**DelegateIt) = FSyncToAssetsDelegate::CreateSP(this, &SAssetPicker::SyncToAssets); } } for (auto DelegateIt = InArgs._AssetPickerConfig.SetFilterDelegates.CreateConstIterator(); DelegateIt; ++DelegateIt) { if ((*DelegateIt) != NULL) { (**DelegateIt) = FSetARFilterDelegate::CreateSP(this, &SAssetPicker::SetNewBackendFilter); } } TSharedRef<SVerticalBox> VerticalBox = SNew(SVerticalBox); ChildSlot [ VerticalBox ]; TAttribute< FText > HighlightText; EThumbnailLabel::Type ThumbnailLabel = InArgs._AssetPickerConfig.ThumbnailLabel; FrontendFilters = MakeShareable(new FAssetFilterCollectionType()); // Search box if (!InArgs._AssetPickerConfig.bAutohideSearchBar) { TextFilter = MakeShareable( new FFrontendFilter_Text() ); TextFilter->SetIncludeClassName(InArgs._AssetPickerConfig.Filter.ClassNames.Num() != 1); HighlightText = TAttribute< FText >( this, &SAssetPicker::GetHighlightedText ); OtherDevelopersFilter = MakeShareable( new FFrontendFilter_ShowOtherDevelopers(nullptr) ); FrontendFilters->Add( OtherDevelopersFilter ); TSharedRef<SHorizontalBox> HorizontalBox = SNew(SHorizontalBox); if(InArgs._AssetPickerConfig.bAddFilterUI) { // Filter HorizontalBox->AddSlot() .AutoWidth() [ SNew( SComboButton ) .ComboButtonStyle( FEditorStyle::Get(), "ContentBrowser.Filters.Style" ) .ForegroundColor(FLinearColor::White) .ToolTipText( LOCTEXT( "AddFilterToolTip", "Add an asset filter." ) ) .OnGetMenuContent( this, &SAssetPicker::MakeAddFilterMenu ) .HasDownArrow( true ) .ContentPadding( FMargin( 1, 0 ) ) .AddMetaData<FTagMetaData>(FTagMetaData(TEXT("ContentBrowserFiltersCombo"))) .ButtonContent() [ SNew( STextBlock ) .TextStyle( FEditorStyle::Get(), "ContentBrowser.Filters.Text" ) .Text( LOCTEXT( "Filters", "Filters" ) ) ] ]; } HorizontalBox->AddSlot() .FillWidth(1.0f) [ SAssignNew( SearchBoxPtr, SAssetSearchBox ) .HintText(NSLOCTEXT( "ContentBrowser", "SearchBoxHint", "Search Assets" )) .OnTextChanged( this, &SAssetPicker::OnSearchBoxChanged ) .OnTextCommitted( this, &SAssetPicker::OnSearchBoxCommitted ) .DelayChangeNotificationsWhileTyping( true ) ]; HorizontalBox->AddSlot() .AutoWidth() [ SNew( SCheckBox ) .Style( FEditorStyle::Get(), "ToggleButtonCheckbox" ) .ToolTipText( this, &SAssetPicker::GetShowOtherDevelopersToolTip ) .OnCheckStateChanged( this, &SAssetPicker::HandleShowOtherDevelopersCheckStateChanged ) .IsChecked( this, &SAssetPicker::GetShowOtherDevelopersCheckState ) [ SNew( SImage ) .Image( FEditorStyle::GetBrush("ContentBrowser.ColumnViewDeveloperFolderIcon") ) ] ]; VerticalBox->AddSlot() .AutoHeight() .Padding( 0, 0, 0, 1 ) [ HorizontalBox ]; } // "None" button if (InArgs._AssetPickerConfig.bAllowNullSelection) { VerticalBox->AddSlot() .AutoHeight() [ SNew(SVerticalBox) + SVerticalBox::Slot() .AutoHeight() [ SNew(SButton) .ButtonStyle( FEditorStyle::Get(), "ContentBrowser.NoneButton" ) .TextStyle( FEditorStyle::Get(), "ContentBrowser.NoneButtonText" ) .Text( LOCTEXT("NoneButtonText", "( None )") ) .ToolTipText( LOCTEXT("NoneButtonTooltip", "Clears the asset selection.") ) .HAlign(HAlign_Center) .VAlign(VAlign_Center) .OnClicked(this, &SAssetPicker::OnNoneButtonClicked) ] // Trailing separator + SVerticalBox::Slot() .AutoHeight() .Padding(0, 0, 0, 4) [ SNew(SSeparator) .Orientation(Orient_Horizontal) ] ]; } // Asset view // Break up the incoming filter into a sources data and backend filter. CurrentSourcesData.PackagePaths = InArgs._AssetPickerConfig.Filter.PackagePaths; CurrentSourcesData.Collections = InArgs._AssetPickerConfig.Collections; CurrentBackendFilter = InArgs._AssetPickerConfig.Filter; CurrentBackendFilter.PackagePaths.Empty(); if(InArgs._AssetPickerConfig.bAddFilterUI) { // Filters TArray<UClass*> FilterClassList; for(auto Iter = CurrentBackendFilter.ClassNames.CreateIterator(); Iter; ++Iter) { FName ClassName = (*Iter); UClass* FilterClass = FindObject<UClass>(ANY_PACKAGE, *ClassName.ToString()); if(FilterClass) { FilterClassList.AddUnique(FilterClass); } } VerticalBox->AddSlot() .AutoHeight() [ SAssignNew(FilterListPtr, SFilterList) .OnFilterChanged(this, &SAssetPicker::OnFilterChanged) .FrontendFilters(FrontendFilters) .InitialClassFilters(FilterClassList) .ExtraFrontendFilters(InArgs._AssetPickerConfig.ExtraFrontendFilters) ]; } VerticalBox->AddSlot() .FillHeight(1.f) [ SAssignNew(AssetViewPtr, SAssetView) .SelectionMode( InArgs._AssetPickerConfig.SelectionMode ) .OnShouldFilterAsset(InArgs._AssetPickerConfig.OnShouldFilterAsset) .OnAssetSelected(InArgs._AssetPickerConfig.OnAssetSelected) .OnAssetsActivated(this, &SAssetPicker::HandleAssetsActivated) .OnGetAssetContextMenu(InArgs._AssetPickerConfig.OnGetAssetContextMenu) .OnGetCustomAssetToolTip(InArgs._AssetPickerConfig.OnGetCustomAssetToolTip) .OnVisualizeAssetToolTip(InArgs._AssetPickerConfig.OnVisualizeAssetToolTip) .OnAssetToolTipClosing(InArgs._AssetPickerConfig.OnAssetToolTipClosing) .AreRealTimeThumbnailsAllowed(this, &SAssetPicker::IsHovered) .FrontendFilters(FrontendFilters) .InitialSourcesData(CurrentSourcesData) .InitialBackendFilter(CurrentBackendFilter) .InitialViewType(InArgs._AssetPickerConfig.InitialAssetViewType) .InitialAssetSelection(InArgs._AssetPickerConfig.InitialAssetSelection) .ThumbnailScale(InArgs._AssetPickerConfig.ThumbnailScale) .ShowBottomToolbar(InArgs._AssetPickerConfig.bShowBottomToolbar) .OnAssetTagWantsToBeDisplayed(InArgs._AssetPickerConfig.OnAssetTagWantsToBeDisplayed) .AllowDragging( InArgs._AssetPickerConfig.bAllowDragging ) .CanShowClasses( InArgs._AssetPickerConfig.bCanShowClasses ) .CanShowFolders( InArgs._AssetPickerConfig.bCanShowFolders ) .FilterRecursivelyWithBackendFilter( false ) .CanShowRealTimeThumbnails( InArgs._AssetPickerConfig.bCanShowRealTimeThumbnails ) .CanShowDevelopersFolder( InArgs._AssetPickerConfig.bCanShowDevelopersFolder ) .PreloadAssetsForContextMenu( InArgs._AssetPickerConfig.bPreloadAssetsForContextMenu ) .HighlightedText( HighlightText ) .ThumbnailLabel( ThumbnailLabel ) .AssetShowWarningText( InArgs._AssetPickerConfig.AssetShowWarningText) .AllowFocusOnSync(false) // Stop the asset view from stealing focus (we're in control of that) .OnPathSelected(this, &SAssetPicker::FolderEntered) ]; LoadSettings(); AssetViewPtr->RequestSlowFullListRefresh(); }
void FSubstanceEditor::InitSubstanceEditor(const TSharedPtr< class IToolkitHost >& InitToolkitHost, UObject* ObjectToEdit) { EditedGraph = CastChecked<USubstanceGraphInstance>(ObjectToEdit); // cannot edit incomplete instance if (!EditedGraph || !EditedGraph->Instance || !EditedGraph->Instance->Desc || !EditedGraph->Parent) { return; } // Register to be notified when an object is reimported. GEditor->OnObjectReimported().AddSP(this, &FSubstanceEditor::OnObjectReimported); // Support undo/redo EditedGraph->SetFlags(RF_Transactional); GEditor->RegisterForUndo(this); // Register our commands. This will only register them if not previously registered FSubstanceEditorCommands::Register(); BindCommands(); CreateInternalWidgets(); const TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_SubstanceEditor_Layout") ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation( Orient_Vertical ) ->Split ( FTabManager::NewSplitter() ->SetOrientation(Orient_Vertical) ->Split ( FTabManager::NewStack() ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ->SetHideTabWell(true) ) ->Split ( FTabManager::NewStack() ->AddTab(SubstanceTabId, ETabState::OpenedTab) ->SetHideTabWell(true) ) ) ); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; FAssetEditorToolkit::InitAssetEditor(EToolkitMode::Standalone, InitToolkitHost, SubstanceEditorModule::SubstanceEditorAppIdentifier, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, ObjectToEdit); ISubstanceEditorModule* SubstanceEditorModule = &FModuleManager::LoadModuleChecked<ISubstanceEditorModule>("SubstanceEditor"); AddMenuExtender(SubstanceEditorModule->GetMenuExtensibilityManager()->GetAllExtenders()); ExtendToolbar(); RegenerateMenusAndToolbars(); }
//------------------------------------------------------------------------------ void SBlueprintSubPalette::Construct(FArguments const& InArgs, TWeakPtr<FBlueprintEditor> InBlueprintEditor) { bIsActiveTimerRegistered = false; BlueprintEditorPtr = InBlueprintEditor; struct LocalUtils { static TSharedRef<SExpanderArrow> CreateCustomExpander(const FCustomExpanderData& ActionMenuData, bool bShowFavoriteToggle) { TSharedPtr<SExpanderArrow> CustomExpander; if (bShowFavoriteToggle) { SAssignNew(CustomExpander, SBlueprintActionMenuExpander, ActionMenuData); } else { SAssignNew(CustomExpander, SExpanderArrow, ActionMenuData.TableRow); } return CustomExpander.ToSharedRef(); } }; ChildSlot [ SNew(SBorder) .Padding(2.f) .BorderImage(FEditorStyle::GetBrush("ToolPanel.GroupBorder")) [ SNew( SVerticalBox ) +SVerticalBox::Slot() .AutoHeight() .Padding( 0.f, 2.f, 0.f, 0.f ) [ ConstructHeadingWidget(InArgs._Icon.Get(), InArgs._Title.Get(), InArgs._ToolTipText.Get()) ] +SVerticalBox::Slot() [ SNew(SOverlay) +SOverlay::Slot() .HAlign(HAlign_Fill) .VAlign(VAlign_Fill) [ SAssignNew(GraphActionMenu, SGraphActionMenu) .OnCreateWidgetForAction(this, &SBlueprintSubPalette::OnCreateWidgetForAction) .OnActionDragged(this, &SBlueprintSubPalette::OnActionDragged) .OnCollectAllActions(this, &SBlueprintSubPalette::CollectAllActions) .OnContextMenuOpening(this, &SBlueprintSubPalette::ConstructContextMenuWidget) .OnCreateCustomRowExpander_Static(&LocalUtils::CreateCustomExpander, InArgs._ShowFavoriteToggles.Get()) ] ] ] ]; CommandList = MakeShareable(new FUICommandList); // has to come after GraphActionMenu has been set BindCommands(CommandList); FBlueprintActionDatabase& ActionDatabase = FBlueprintActionDatabase::Get(); ActionDatabase.OnEntryRemoved().AddSP(this, &SBlueprintSubPalette::OnDatabaseActionsRemoved); ActionDatabase.OnEntryUpdated().AddSP(this, &SBlueprintSubPalette::OnDatabaseActionsUpdated); }