void Construct(const FArguments& InArgs)
	{
		PoseWatch = InArgs._PoseWatch;

		static FColor PoseWatchColours[] = { FColor::Red, FColor::Green, FColor::Blue, FColor::Cyan, FColor::Orange, FColor::Purple, FColor::Yellow, FColor::Black };

		const int32 Rows = 2;
		const int32 Columns = 4;

		TSharedPtr<SVerticalBox> Layout = SNew(SVerticalBox);

		for (int32 RowIndex = 0; RowIndex < Rows; ++RowIndex)
		{
			TSharedPtr<SHorizontalBox> Row = SNew(SHorizontalBox);

			for (int32 RowItem = 0; RowItem < Columns; ++RowItem)
			{
				int32 ColourIndex = RowItem + (RowIndex * Columns);
				FColor Colour = PoseWatchColours[ColourIndex];

				Row->AddSlot()
				.Padding(5.f, 2.f)
				[
					SNew(SButton)
					.HAlign(HAlign_Center)
					.OnClicked(this, &SPoseViewColourPickerPopup::NewPoseWatchColourPicked, Colour)
					.ButtonColorAndOpacity(Colour)
				];

			}

			Layout->AddSlot()
			[
				Row.ToSharedRef()
			];
		}

		Layout->AddSlot()
			.AutoHeight()
			.Padding(5.f, 2.f)
			[
				SNew(SButton)
				.Text(NSLOCTEXT("AnimationGraphNode", "RemovePoseWatch", "Remove Pose Watch"))
				.OnClicked(this, &SPoseViewColourPickerPopup::RemovePoseWatch)
			];

		this->ChildSlot
			[
				SNew(SBorder)
				.BorderImage(FEditorStyle::GetBrush(TEXT("Menu.Background")))
				.Padding(10)
				[
					Layout->AsShared()
				]
			];
	}
Esempio n. 2
0
void SVoxOptionWidget::Construct(const FArguments& InArgs)
{
	ImportOption = InArgs._ImportOption;
	Window = InArgs._Window;

	TSharedPtr<SBox> InspectorBox;

	this->ChildSlot[
		SNew(SVerticalBox)
		+ SVerticalBox::Slot().AutoHeight().Padding(2) [
			SAssignNew(InspectorBox, SBox).MaxDesiredHeight(650.0f).WidthOverride(400.0f)
		]
		+ SVerticalBox::Slot().AutoHeight().HAlign(HAlign_Right).Padding(2)
		[
			SNew(SUniformGridPanel).SlotPadding(2)
			+ SUniformGridPanel::Slot(0, 0)[
				SNew(SButton).HAlign(HAlign_Center).Text(NSLOCTEXT("VOX4U", "VoxOptionWindow_ImportAll", "Import All"))
				.OnClicked(this, &SVoxOptionWidget::OnImportAll)
			]
			+ SUniformGridPanel::Slot(1, 0) [
				SNew(SButton).HAlign(HAlign_Center).Text(NSLOCTEXT("VOX4U", "VoxOptionWindow_Import", "Import"))
				.OnClicked(this, &SVoxOptionWidget::OnImport)
			]
			+ SUniformGridPanel::Slot(2, 0) [
				SNew(SButton).HAlign(HAlign_Center).Text(NSLOCTEXT("VOX4U", "VoxOptionWindow_Cancel", "Cancel"))
				.OnClicked(this, &SVoxOptionWidget::OnCancel)
			]
		]
	];

	FPropertyEditorModule& PropertyEditorModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
	FDetailsViewArgs DetailsViewArgs;
	DetailsViewArgs.bAllowSearch = false;
	DetailsViewArgs.NameAreaSettings = FDetailsViewArgs::HideNameArea;
	TSharedPtr<IDetailsView> DetailsView = PropertyEditorModule.CreateDetailView(DetailsViewArgs);

	InspectorBox->SetContent(DetailsView->AsShared());
	DetailsView->SetObject(ImportOption);
}
	/**
	 * Construct this widget
	 *
	 * @param	InArgs	The declaration data for this widget
	 */
	void Construct( const FArguments& InArgs )
	{
		FName ButtonStyle = FEditorStyle::Join(InArgs._Style.Get(), ".Button");
		FName CheckboxStyle = FEditorStyle::Join(InArgs._Style.Get(), ".ToggleButton");
	
		const FSlateIcon& Icon = InArgs._Icon.Get();

		ParentToolBar = InArgs._ParentToolBar;
	
		TSharedPtr<SCheckBox> ToggleControl;
		{
			ToggleControl = SNew(SCheckBox)
			.Cursor( EMouseCursor::Default )
			.Padding(FMargin( 4.0f ))
			.Style(FEditorStyle::Get(), EMultiBlockLocation::ToName(CheckboxStyle, EMultiBlockLocation::Start))
			.OnCheckStateChanged(InArgs._OnCheckStateChanged)
			.ToolTipText(InArgs._ToggleButtonToolTip)
			.IsChecked(InArgs._IsChecked)
			.Content()
			[
				SNew( SBox )
				.WidthOverride( TransformViewportToolbarDefs::ToggleImageScale )
				.HeightOverride( TransformViewportToolbarDefs::ToggleImageScale )
				.HAlign(HAlign_Center)
				.VAlign(VAlign_Center)
				[
					SNew(SImage)
					.Image(Icon.GetIcon())
				]
			];
		}

		{
			SAssignNew( MenuAnchor, SMenuAnchor )
			.Placement( MenuPlacement_BelowAnchor )
			[
				SNew(SButton)
				.ButtonStyle( FEditorStyle::Get(), EMultiBlockLocation::ToName(ButtonStyle,EMultiBlockLocation::End) )
				.ContentPadding( FMargin( 5.0f, 0.0f ) )
				.ToolTipText(InArgs._MenuButtonToolTip)
				.OnClicked(this, &SGridSnapSetting::OnMenuClicked)
				[
					SNew(SVerticalBox)
					+SVerticalBox::Slot()
					.AutoHeight()
					.HAlign(HAlign_Center)
					.VAlign(VAlign_Top)
					[
						SNew(STextBlock)
						.Font( FEditorStyle::GetFontStyle( InArgs._Style.Get(), ".Label.Font" ) )
						.Text(InArgs._Label)
					]
					+SVerticalBox::Slot()
					.AutoHeight()
					.VAlign(VAlign_Bottom)
					[
						SNew(SHorizontalBox)
						+SHorizontalBox::Slot()
						.FillWidth(1.0f)

						+SHorizontalBox::Slot()
						.AutoWidth()
						[
							SNew( SBox )
							.WidthOverride( TransformViewportToolbarDefs::DownArrowSize )
							.HeightOverride( TransformViewportToolbarDefs::DownArrowSize )
							[
								SNew(SImage)
								.Image(FEditorStyle::GetBrush("ComboButton.Arrow"))
								.ColorAndOpacity(FLinearColor::Black)
							]
						]

						+SHorizontalBox::Slot()
							.FillWidth(1.0f)
					]
				]
			]
			.OnGetMenuContent( InArgs._OnGetMenuContent );
		}


		ChildSlot
		[
			SNew(SHorizontalBox)

			//Checkbox concept
			+SHorizontalBox::Slot()
			.AutoWidth()
			[
				ToggleControl->AsShared()
			]

			// Black Seperator line
			+SHorizontalBox::Slot()
			.AutoWidth()
			[
				SNew( SBox )
				.WidthOverride( 1 )
				[
					SNew(SImage)
					.Image(FEditorStyle::GetBrush(EMultiBlockLocation::ToName(ButtonStyle,EMultiBlockLocation::Middle)))
					.ColorAndOpacity(FLinearColor::Black)
				]
			]

			// Menu dropdown concept
			+SHorizontalBox::Slot()
			.AutoWidth()
			[
				MenuAnchor->AsShared()
			]
		];
	}
void SViewportToolBarComboMenu::Construct( const FArguments& InArgs )
{
    FName ButtonStyle = FEditorStyle::Join(InArgs._Style.Get(), ".Button");
    FName CheckboxStyle = FEditorStyle::Join(InArgs._Style.Get(), ".ToggleButton");

    const FSlateIcon& Icon = InArgs._Icon.Get();

    ParentToolBar = InArgs._ParentToolBar;

    TSharedPtr<SCheckBox> ToggleControl;
    {
        ToggleControl = SNew(SCheckBox)
                        .Cursor( EMouseCursor::Default )
                        .Padding(FMargin( 4.0f ))
                        .Style(FEditorStyle::Get(), EMultiBlockLocation::ToName(CheckboxStyle, InArgs._BlockLocation))
                        .OnCheckStateChanged(InArgs._OnCheckStateChanged)
                        .ToolTipText(InArgs._ToggleButtonToolTip)
                        .IsChecked(InArgs._IsChecked)
                        .Content()
                        [
                            SNew( SBox )
                            .WidthOverride( 16 )
                            .HeightOverride( 16 )
                            .HAlign(HAlign_Center)
                            .VAlign(VAlign_Center)
                            [
                                SNew(SImage)
                                .Image(Icon.GetIcon())
                            ]
                        ];
    }

    {
        TSharedRef<SWidget> ButtonContents =
            SNew(SButton)
            .ButtonStyle( FEditorStyle::Get(), EMultiBlockLocation::ToName(ButtonStyle,EMultiBlockLocation::End) )
            .ContentPadding( FMargin( 5.0f, 0.0f ) )
            .ToolTipText(InArgs._MenuButtonToolTip)
            .OnClicked(this, &SViewportToolBarComboMenu::OnMenuClicked)
            [
                SNew(SVerticalBox)
                +SVerticalBox::Slot()
                .AutoHeight()
                .HAlign(HAlign_Center)
                .VAlign(VAlign_Top)
                [
                    SNew(STextBlock)
                    .TextStyle( FEditorStyle::Get(), FEditorStyle::Join( InArgs._Style.Get(), ".Label" ) )
                    .Text(InArgs._Label)
                ]
                +SVerticalBox::Slot()
                .AutoHeight()
                .VAlign(VAlign_Bottom)
                [
                    SNew(SHorizontalBox)
                    +SHorizontalBox::Slot()
                    .FillWidth(1.0f)

                    +SHorizontalBox::Slot()
                    .AutoWidth()
                    [
                        SNew( SBox )
                        .WidthOverride( 4 )
                        .HeightOverride( 4 )
                        [
                            SNew(SImage)
                            .Image(FEditorStyle::GetBrush("ComboButton.Arrow"))
                            .ColorAndOpacity(FLinearColor::Black)
                        ]
                    ]

                    +SHorizontalBox::Slot()
                    .FillWidth(1.0f)
                ]
            ];

        if (InArgs._MinDesiredButtonWidth > 0.0f)
        {
            ButtonContents =
                SNew(SBox)
                .MinDesiredWidth(InArgs._MinDesiredButtonWidth)
                [
                    ButtonContents
                ];
        }

        MenuAnchor = SNew(SMenuAnchor)
                     .Placement( MenuPlacement_BelowAnchor )
                     [
                         ButtonContents
                     ]
                     .OnGetMenuContent( InArgs._OnGetMenuContent );
    }


    ChildSlot
    [
        SNew(SHorizontalBox)

        //Checkbox concept
        +SHorizontalBox::Slot()
        .AutoWidth()
        [
            ToggleControl->AsShared()
        ]

        // Black Separator line
        +SHorizontalBox::Slot()
        .AutoWidth()
        [
            SNew(SBorder)
            .Padding(FMargin(1.0f, 0.0f, 0.0f, 0.0f))
            .BorderImage(FEditorStyle::GetDefaultBrush())
            .BorderBackgroundColor(FLinearColor::Black)
        ]

        // Menu dropdown concept
        +SHorizontalBox::Slot()
        .AutoWidth()
        [
            MenuAnchor->AsShared()
        ]
    ];
}