Skip to content

Commit

Permalink
add open project sln
Browse files Browse the repository at this point in the history
  • Loading branch information
hxhb committed Sep 5, 2019
1 parent 66b8915 commit 2bfe53e
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 7 deletions.
68 changes: 62 additions & 6 deletions Source/Private/SlateWidget/SConfPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,16 @@ void SConfPanel::Construct(const FArguments& InArgs)
.VAlign(VAlign_Center)
.OnClicked(this, &SConfPanel::BtnClickEventOpenProjectFileDir)
]
+ SHorizontalBox::Slot()
//.FillWidth(0.3f)
.AutoWidth()
[
SAssignNew(BtnOpenProjectSln,SButton)
.Text(LOCTEXT("OpenProjestSln", "OpenSln"))
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.OnClicked(this, &SConfPanel::BtnClickEventOpenProjectSln)
]
]

]
Expand Down Expand Up @@ -321,9 +331,8 @@ void SConfPanel::Construct(const FArguments& InArgs)

];
// initialize
TMap<FString, FString> EngineMap = EngineLaunchTools::GetAllRegistedEngineMap();
{
UpdateEngineSelector(EngineMap);
UpdateEngineSelector(EngineLaunchTools::GetAllRegistedEngineMap());
UpdateToolSelector(EngineLaunchTools::GetToolList());
UpdateSelectedProject();
UpdateLaunchParams();
Expand Down Expand Up @@ -387,7 +396,8 @@ FReply SConfPanel::BtnClickEventOpenProjectFile()

if (OpenFilenames.Num() > 0)
{
OpenProjectFilePath = FPaths::ConvertRelativePathToFull(OpenFilenames[0]);
FString local_OpenProjectFilePath = FPaths::ConvertRelativePathToFull(OpenFilenames[0]);
UpdateSelectedProject(local_OpenProjectFilePath);
}
}
return FReply::Handled();
Expand All @@ -404,9 +414,30 @@ FReply SConfPanel::BtnClickEventOpenProjectFileDir()
return FReply::Handled();
}

FReply SConfPanel::BtnClickEventOpenProjectSln()
{
if (!GetSelectedProjectPath().IsEmpty() && GetSelectedProjectPath().EndsWith(TEXT("uproject")))
{
FString local_ProjectSln = GetSelectedProjectPath();
{
local_ProjectSln.RemoveFromEnd(TEXT("uproject"));
local_ProjectSln.Append(TEXT("sln\""));
local_ProjectSln.InsertAt(0, TEXT("\""));
}

FString FinalCmdParams = TEXT("/c start devenv.exe ") + local_ProjectSln;
FPlatformProcess::CreateProc(TEXT("cmd.exe"), *FinalCmdParams, true, false, false, NULL, NULL, NULL, NULL, NULL);
}
return FReply::Handled();
}

FReply SConfPanel::BtnClickEventOpenVS()
{
FString ue4sln = GetSelectedEnginePath() + TEXT("//UE4.sln");
{
ue4sln.InsertAt(0, TEXT("\""));
ue4sln.Append(TEXT("\""));
}
FString FinalCmdParams = TEXT("/c start devenv.exe ") + ue4sln;
FPlatformProcess::CreateProc(TEXT("cmd.exe"), *FinalCmdParams, true, false, false, NULL, NULL, NULL, NULL, NULL);
return FReply::Handled();
Expand Down Expand Up @@ -513,7 +544,7 @@ void SConfPanel::UpdateToolSelector(const TArray<FString>& ToolsList, const FStr

void SConfPanel::UpdateAll(const FLaunchConf& conf)
{
UpdateEngineSelector(RegisterEngineMap,conf.Engine);
UpdateEngineSelector(EngineLaunchTools::GetAllRegistedEngineMap(),conf.Engine);
UpdateToolSelector(EngineLaunchTools::GetToolList(), conf.Tool);
UpdateSelectedProject(conf.Project);
UpdateLaunchParams(conf.Params);
Expand Down Expand Up @@ -615,7 +646,7 @@ void SConfPanel::HandleEngineSelectorChanged(const FString& NewEngine)

void SConfPanel::UpdateEngineSelector(const TMap<FString, FString>& EngineMap, FString DefaultEngine)
{
CmbEngineSelector->UpdateSelector(EngineLaunchTools::GetAllRegistedEngineList(EngineMap));
CmbEngineSelector->UpdateSelector(EngineLaunchTools::GetAllRegistedEngineList(EngineMap),DefaultEngine);
}

void SConfPanel::UpdateOpenVSButton(const FString& EnginePath)
Expand Down Expand Up @@ -647,13 +678,38 @@ void SConfPanel::UpdateLaunchParams(const TArray<FString>& pParamsArray)

void SConfPanel::UpdateSelectedProject(const FString& ProjectPath)
{
OpenProjectFilePath = ProjectPath;
OnProjectFileTextBoxChanged(FText::AsCultureInvariant(ProjectPath));
}


void SConfPanel::OnProjectFileTextBoxChanged(const FText& NewText)
{
OpenProjectFilePath = NewText.ToString();
UpdateOpenProjectSlnButton(OpenProjectFilePath);
}

void SConfPanel::UpdateOpenProjectSlnButton(const FString& SelectedProjectPath)
{
bool HasSln = false;
FString local_ProjectFullPath(SelectedProjectPath);

if (!local_ProjectFullPath.IsEmpty() &&
FPaths::FileExists(local_ProjectFullPath) &&
local_ProjectFullPath.EndsWith(TEXT("uproject"))
)
{
local_ProjectFullPath.RemoveFromEnd(TEXT("uproject"));
local_ProjectFullPath.Append(TEXT("sln"));
HasSln = FPaths::FileExists(local_ProjectFullPath);
}

if (HasSln)
{
BtnOpenProjectSln->SetVisibility(EVisibility::Visible);
}
else {
BtnOpenProjectSln->SetVisibility(EVisibility::Hidden);
}
}

TSharedRef<SWidget> MakeWidgetUELauncher()
Expand Down
6 changes: 5 additions & 1 deletion Source/Public/SlateWidget/SConfPanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ class SConfPanel :public SCompoundWidget
FReply BtnClickEventOpenProjectFile();
// open project directory
FReply BtnClickEventOpenProjectFileDir();

// open project sln
FReply BtnClickEventOpenProjectSln();
// read/write config
FReply BtnClickEventLoadConfig();
FReply BtnClickEventSaveConfig();
Expand All @@ -93,6 +94,8 @@ class SConfPanel :public SCompoundWidget
void UpdateOpenVSButton(const FString& EnginePath);

void UpdateSelectedProject(const FString& ProjectPath=TEXT(""));
// Update is show OpenVS Button
void UpdateOpenProjectSlnButton(const FString& SelectedProjectPath);

void UpdateLaunchParams(const TArray<FString>& pParamsArray = TArray<FString>{});

Expand All @@ -118,6 +121,7 @@ class SConfPanel :public SCompoundWidget
// button
TSharedPtr<SButton> BtnLaunchEngine;
TSharedPtr<SButton> BtnOpenVS;
TSharedPtr<SButton> BtnOpenProjectSln;
TSharedPtr<SButton> BtnLaunchProject;

// Button Text
Expand Down

0 comments on commit 2bfe53e

Please sign in to comment.