Files
UnrealEngine/Engine/Source/Developer/SourceControl/Public/SSourceControlControls.h
2025-05-18 13:04:45 +08:00

108 lines
5.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#if SOURCE_CONTROL_WITH_SLATE
#include "CoreMinimal.h"
#include "ISourceControlProvider.h"
#include "Delegates/IDelegateInstance.h"
#include "Framework/SlateDelegates.h"
#include "Styling/SlateTypes.h"
#include "Widgets/SCompoundWidget.h"
DECLARE_DELEGATE_RetVal(int32, FNumConflicts);
DECLARE_DELEGATE_RetVal(bool, FIsVisible);
DECLARE_DELEGATE_RetVal(bool, FIsEnabled);
/** Widget for displaying Source Control Check in Changes and Sync Latest buttons */
class SSourceControlControls : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(SSourceControlControls) {}
SLATE_ATTRIBUTE(bool, IsEnabledMiddleSeparator)
SLATE_ATTRIBUTE(bool, IsEnabledRightSeparator)
SLATE_EVENT(FOnGetContent, OnGenerateKebabMenu)
SLATE_END_ARGS()
public:
/** Construct this widget */
SOURCECONTROL_API void Construct(const FArguments& InArgs);
public:
/** Separators */
SOURCECONTROL_API EVisibility GetSourceControlMiddleSeparatorVisibility() const;
SOURCECONTROL_API EVisibility GetSourceControlRightSeparatorVisibility() const;
/** Sync button */
static SOURCECONTROL_API bool IsAtLatestRevision();
static SOURCECONTROL_API bool IsSourceControlSyncEnabled();
static SOURCECONTROL_API bool HasSourceControlChangesToSync();
static SOURCECONTROL_API EVisibility GetSourceControlSyncStatusVisibility();
static SOURCECONTROL_API FText GetSourceControlSyncStatusText();
static SOURCECONTROL_API FText GetSourceControlSyncStatusToolTipText();
static SOURCECONTROL_API const FSlateBrush* GetSourceControlSyncStatusIcon();
static SOURCECONTROL_API FReply OnSourceControlSyncClicked();
/** Check-in button */
static SOURCECONTROL_API int GetNumLocalChanges();
static SOURCECONTROL_API bool IsSourceControlCheckInEnabled();
static SOURCECONTROL_API bool HasSourceControlChangesToCheckIn();
static SOURCECONTROL_API EVisibility GetSourceControlCheckInStatusVisibility();
static SOURCECONTROL_API FText GetSourceControlCheckInStatusText();
static SOURCECONTROL_API FText GetSourceControlCheckInStatusToolTipText();
static SOURCECONTROL_API const FSlateBrush* GetSourceControlCheckInStatusIcon();
static SOURCECONTROL_API FReply OnSourceControlCheckInChangesClicked();
/** Restore as latest button */
static SOURCECONTROL_API bool IsSourceControlRestoreAsLatestEnabled();
static SOURCECONTROL_API EVisibility GetSourceControlRestoreAsLatestVisibility();
static SOURCECONTROL_API FText GetSourceControlRestoreAsLatestText();
static SOURCECONTROL_API FText GetSourceControlRestoreAsLatestToolTipText();
static SOURCECONTROL_API const FSlateBrush* GetSourceControlRestoreAsLatestStatusIcon();
static SOURCECONTROL_API FReply OnSourceControlRestoreAsLatestClicked();
public:
static SOURCECONTROL_API int32 GetNumConflictsRemaining();
static SOURCECONTROL_API int32 GetNumConflictsUpcoming();
public:
static void SetNumConflictsRemaining(const FNumConflicts& InNumConflictsRemaining) { NumConflictsRemaining = InNumConflictsRemaining; }
static void SetNumConflictsUpcoming(const FNumConflicts& InNumConflictsUpcoming) { NumConflictsUpcoming = InNumConflictsUpcoming; }
static void SetIsSyncLatestEnabled(const FIsEnabled& InSyncLatestEnabled) { IsSyncLatestEnabled = InSyncLatestEnabled; }
static void SetIsCheckInChangesEnabled(const FIsEnabled& InCheckInChangesEnabled) { IsCheckInChangesEnabled = InCheckInChangesEnabled; }
static void SetIsRestoreAsLatestEnabled(const FIsEnabled& InRestoreAsLatestEnabled) { IsRestoreAsLatestEnabled = InRestoreAsLatestEnabled; }
static void SetIsSyncLatestVisible(const FIsVisible& InSyncLatestVisible) { IsSyncLatestVisible = InSyncLatestVisible; }
static void SetIsCheckInChangesVisible(const FIsVisible& InCheckInChangesVisible) { IsCheckInChangesVisible = InCheckInChangesVisible; }
static void SetIsRestoreAsLatestVisible(const FIsVisible& InRestoreAsLatestVisible) { IsRestoreAsLatestVisible = InRestoreAsLatestVisible; }
static void SetOnSyncLatestClicked(const FOnClicked& InSyncLatestClicked) { OnSyncLatestClicked = InSyncLatestClicked; }
static void SetOnCheckInChangesClicked(const FOnClicked& InCheckInChangesClicked) { OnCheckInChangesClicked = InCheckInChangesClicked; }
static void SetOnRestoreAsLatestClicked(const FOnClicked& InRestoreAsLatestClicked) { OnRestoreAsLatestClicked = InRestoreAsLatestClicked; }
private:
TAttribute<bool> IsMiddleSeparatorEnabled;
TAttribute<bool> IsRightSeparatorEnabled;
static SOURCECONTROL_API FNumConflicts NumConflictsRemaining;
static SOURCECONTROL_API FNumConflicts NumConflictsUpcoming;
static SOURCECONTROL_API FIsEnabled IsSyncLatestEnabled;
static SOURCECONTROL_API FIsEnabled IsCheckInChangesEnabled;
static SOURCECONTROL_API FIsEnabled IsRestoreAsLatestEnabled;
static SOURCECONTROL_API FIsVisible IsSyncLatestVisible;
static SOURCECONTROL_API FIsVisible IsCheckInChangesVisible;
static SOURCECONTROL_API FIsVisible IsRestoreAsLatestVisible;
static SOURCECONTROL_API FOnClicked OnSyncLatestClicked;
static SOURCECONTROL_API FOnClicked OnCheckInChangesClicked;
static SOURCECONTROL_API FOnClicked OnRestoreAsLatestClicked;
};
#endif // SOURCE_CONTROL_WITH_SLATE