// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved. #pragma once class IPolishBuildingsTool; ////////////////////////////////////////////////////////////////////////// // SPolishBuildingsToolbar class SPolishBuildingsToolbar : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SPolishBuildingsToolbar) {} SLATE_ARGUMENT(TArray, ToolsToRegister) SLATE_END_ARGS() /** * Construct the widget * * @param InArgs A declaration from which to construct the widget */ void Construct(const FArguments& InArgs); /** Constructor */ SPolishBuildingsToolbar() : CurrentlySelectedTool(0) {} /** Destructor */ virtual ~SPolishBuildingsToolbar(); /** Add a new tool to the toolbar */ void AddTool(IPolishBuildingsTool* Tool); /** Remove an existing tool from the toolbar */ void RemoveTool(IPolishBuildingsTool* Tool); private: /** Called when the level actor selection changes */ void OnActorSelectionChanged(const TArray& NewSelection, bool bForceRefresh); /** Called when the currently selected tool changes */ void OnToolSelectionChanged(const ECheckBoxState NewCheckedState, int32 ToolIndex); /** Called to determine whether a toolbox widget is selected or not */ ECheckBoxState OnIsToolSelected(int32 ToolIndex) const; /** Called when the Merge Actors button is clicked */ FReply OnPolishBuildingsClicked(); /** Determine whether the widget content is enabled or not */ bool GetContentEnabledState() const; /** Update the toolbar container based on the currently registered tools */ void UpdateToolbar(); /** Updates the inline content widget for the current tool */ void UpdateInlineContent(); private: /** List of registered tool instances */ TArray RegisteredTools; /** Index of currently selected tool */ int32 CurrentlySelectedTool; /** List of currently selected objects */ TArray SelectedObjects; /** Whether the merge actors tool panel is enabled or not */ bool bIsContentEnabled; /** The container holding the toolbar */ TSharedPtr ToolbarContainer; /** Inline content area for different tool modes */ TSharedPtr InlineContentHolder; };