diff --git a/Source/EclipseSourceCodeAccess/EclipseSourceCodeAccess.Build.cs b/Source/EclipseSourceCodeAccess/EclipseSourceCodeAccess.Build.cs index a766783..5461b19 100644 --- a/Source/EclipseSourceCodeAccess/EclipseSourceCodeAccess.Build.cs +++ b/Source/EclipseSourceCodeAccess/EclipseSourceCodeAccess.Build.cs @@ -2,7 +2,7 @@ namespace UnrealBuildTool.Rules { public class EclipseSourceCodeAccess : ModuleRules { - public EclipseSourceCodeAccess(TargetInfo Target) + public EclipseSourceCodeAccess(ReadOnlyTargetRules Target) : base(Target) { PrivateDependencyModuleNames.AddRange( new string[] @@ -13,7 +13,7 @@ public EclipseSourceCodeAccess(TargetInfo Target) } ); - if (UEBuildConfiguration.bBuildEditor) + if (Target.bBuildEditor) { PrivateDependencyModuleNames.Add("HotReload"); } diff --git a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessModule.cpp b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessModule.cpp index 7bfa66b..d0fdf71 100644 --- a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessModule.cpp +++ b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessModule.cpp @@ -1,6 +1,6 @@ +#include "EclipseSourceCodeAccessModule.h" #include "EclipseSourceCodeAccessPrivatePCH.h" #include "Runtime/Core/Public/Features/IModularFeatures.h" -#include "EclipseSourceCodeAccessModule.h" IMPLEMENT_MODULE(FEclipseSourceCodeAccessModule, EclipseSourceCodeAccess); diff --git a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessModule.h b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessModule.h index 1569211..92f4366 100644 --- a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessModule.h +++ b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessModule.h @@ -1,6 +1,8 @@ #pragma once #include "EclipseSourceCodeAccessor.h" +#include "Modules/ModuleInterface.h" + class FEclipseSourceCodeAccessModule : public IModuleInterface { diff --git a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessPrivatePCH.h b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessPrivatePCH.h index 5b3bf2a..92b199d 100644 --- a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessPrivatePCH.h +++ b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessPrivatePCH.h @@ -1,5 +1,5 @@ #pragma once #include "Core.h" -#include "ModuleManager.h" +#include "Modules/ModuleManager.h" #include "ISourceCodeAccessModule.h" diff --git a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessor.cpp b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessor.cpp index a04efda..0a4dc4b 100644 --- a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessor.cpp +++ b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessor.cpp @@ -1,6 +1,6 @@ -#include "EclipseSourceCodeAccessPrivatePCH.h" #include "EclipseSourceCodeAccessor.h" -#include "ModuleManager.h" +#include "EclipseSourceCodeAccessPrivatePCH.h" +#include "Modules/ModuleManager.h" #include "DesktopPlatformModule.h" #if WITH_EDITOR @@ -55,6 +55,36 @@ bool FEclipseSourceCodeAccessor::OpenSolution() return false; } +bool FEclipseSourceCodeAccessor::DoesSolutionExist() const +{ + if (IsInGameThread()) + { + FString SolutionPath; + return FDesktopPlatformModule::Get()->GetSolutionPath(SolutionPath); + } + return false; +} + + +bool FEclipseSourceCodeAccessor::OpenSolutionAtPath(const FString& InSolutionPath) +{ + FString EclipsePath; + if (!CanRunEclipse(EclipsePath)) + { + return false; + } + + UE_LOG(LogEclipseAccessor, Warning, TEXT("FEclipseSourceCodeAccessor::OpenSolution: %s %s"), *EclipsePath, *InSolutionPath); + + FProcHandle Proc = FPlatformProcess::CreateProc(*EclipsePath, *InSolutionPath, true, false, false, nullptr, 0, nullptr, nullptr); + if (Proc.IsValid()) + { + FPlatformProcess::CloseProc(Proc); + return true; + } + return false; +} + bool FEclipseSourceCodeAccessor::OpenFileAtLine(const FString& FullPath, int32 LineNumber, int32 ColumnNumber) { TArray Files; diff --git a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessor.h b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessor.h index 8bd2032..4e81b0a 100644 --- a/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessor.h +++ b/Source/EclipseSourceCodeAccess/Private/EclipseSourceCodeAccessor.h @@ -34,11 +34,18 @@ class FEclipseSourceCodeAccessor : public ISourceCodeAccessor */ virtual FText GetDescriptionText() const override; + virtual bool DoesSolutionExist() const override; + /** * Open the CodeLite Workspace for editing. */ virtual bool OpenSolution() override; + /** + * Open the CodeLite Workspace for editing. + */ + virtual bool OpenSolutionAtPath(const FString& InSolutionPath) override; + /** * Open a file at a specific line and optional column. */