Files
UnrealEngineUWP/Engine/Source/Editor/GameProjectGeneration/Private/SGetSuggestedIDEWidget.h
Brandon Schaefer bd0cd1b6f5 Add a button to disable the current IDE if an IDE is not required to compile for the Engine.
This is mainly for Linux only, as the toolchain required to setup Linux comes with the compiler needed. So an IDE is not required

#jira UE-122193
#rb Michael.Sartain, Robert.Seiver

[CL 17254780 by Brandon Schaefer in ue5-main branch]
2021-08-20 18:19:39 -04:00

71 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "SlateFwd.h"
#include "Layout/Visibility.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "Input/Reply.h"
#include "Widgets/SWidget.h"
#include "Widgets/SCompoundWidget.h"
/**
* Either a button to directly install or a hyperlink to a website to download the suggested IDE for the platform.
* Only visible when no compiler is available.
*/
class SGetSuggestedIDEWidget : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(SGetSuggestedIDEWidget)
{}
SLATE_ATTRIBUTE(EVisibility, VisibilityOverride)
SLATE_END_ARGS()
/** Constructs this widget with InArgs */
void Construct(const FArguments& InArgs);
private:
/** Creates the appropriate widget to display for the platform */
TSharedRef<SWidget> CreateGetSuggestedIDEWidget();
/** Gets the visibility of the global error label IDE Link */
EVisibility GetVisibility() const;
/** Handler for when the error label IDE hyperlink was clicked */
FReply OnDownloadIDEClicked(FString URL);
/** Handler for when the install IDE button was clicked */
FReply OnInstallIDEClicked();
/** Handler for when the suggested IDE installer has finished downloading */
static void OnIDEInstallerDownloadComplete(bool bWasSuccessful);
private:
/** Handle to the notification displayed when downloading an IDE installer */
static TSharedPtr<class SNotificationItem> IDEDownloadNotification;
};
/**
* A button to disable requiring an IDE to be install
* Only visible on platforms that dont require an IDE to compile code and when no IDE is available
*/
class SGetDisableIDEWidget : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(SGetDisableIDEWidget) {}
SLATE_END_ARGS()
/** Constructs this widget with InArgs */
void Construct(const FArguments& InArgs);
private:
/** Creates the appropriate widget to display for the platform */
TSharedRef<SWidget> CreateGetDisableIDEWidget();
/** Handler for when the disable button is clicked */
FReply OnDisableIDEClicked();
};