AssetBrowser: Bad way to open scripts in Visual Studio

This commit is contained in:
Simon Lübeß
2024-01-20 21:23:01 +01:00
parent 04a0cecf3c
commit 55eef017e7
2 changed files with 73 additions and 12 deletions
@@ -206,17 +206,7 @@ namespace GlitchyEditor.EditWindows
if (ImGui.MenuItem("Open C# Project..."))
{
String solutionPath = scope .();
Editor.Instance.CurrentProject.PathInProject(solutionPath, scope $"{Editor.Instance.CurrentProject.Name}.sln");
ProcessStartInfo psi = scope .();
psi.SetFileName("devenv");
psi.SetArguments(solutionPath);
scope SpawnedProcess().Start(psi);
/*if (Path.OpenFolder(solutionPath) case .Err)
Log.EngineLogger.Error("Failed to open file.");*/
VisualStudioUtility.OpenScriptProject();
}
}
@@ -814,7 +804,13 @@ namespace GlitchyEditor.EditWindows
}
else
{
if (Path.OpenFolder(entry->Path) case .Err)
// Special treatment for scripts, open them in Visual Studio.
if (entry->Path.EndsWith(".cs"))
{
// Obviously windows only
VisualStudioUtility.OpenScript(entry->Path);
}
else if (Path.OpenFolder(entry->Path) case .Err)
Log.EngineLogger.Error("Failed to open file.");
}
}
+65
View File
@@ -0,0 +1,65 @@
using System;
using System.Diagnostics;
using GlitchyEngine;
using System.Collections;
namespace GlitchyEditor;
class VisualStudioUtility
{
public static bool IsRunning()
{
List<Process> processes = scope .();
if (Process.GetProcesses(processes) case .Err)
{
Log.EngineLogger.Error("Failed to get running processes.");
return false;
}
for (Process process in processes)
{
}
ClearAndDeleteItems!(processes);
return false;
}
public static void OpenScript(StringView fileName)
{
if (IsRunning())
{
ProcessStartInfo startInfo = scope .();
startInfo.SetFileName(Application.Instance.Settings.ScriptSettings.VisualStudioPath);
startInfo.SetArguments(scope $"/Edit {fileName}");
scope SpawnedProcess().Start(startInfo);
}
else
{
ProcessStartInfo startInfo = scope .();
startInfo.SetFileName(Application.Instance.Settings.ScriptSettings.VisualStudioPath);
startInfo.SetArguments(scope $"/Edit {fileName}");
scope SpawnedProcess().Start(startInfo);
}
}
public static void OpenScript(StringView fileName, int lineNumber)
{
OpenScript(fileName);
}
public static void OpenScriptProject()
{
String solutionPath = scope .();
Editor.Instance.CurrentProject.PathInProject(solutionPath, scope $"{Editor.Instance.CurrentProject.Name}.sln");
ProcessStartInfo psi = scope .();
psi.SetFileName("devenv");
psi.SetArguments(solutionPath);
scope SpawnedProcess().Start(psi);
}
}