Editor/CodeEditor.Any.cs
using System;
using System.IO;
using AnyEditor;
namespace Editor.CodeEditors;
[Title( "Any Editor (Custom)" )]
public class AnyEditor : ICodeEditor
{
// Implementation of https://sbox.game/api/Editor.ICodeEditor
public void OpenFile( string path, int? line, int? column )
{
var args = AnyEditorConfig.Arguments;
args = args.Replace( "{path}", path );
args = args.Replace( "{line}", line?.ToString() ?? "0" );
args = args.Replace( "{column}", column?.ToString() ?? "0" );
Launch( args );
}
public void OpenSolution()
{
Launch( $"\"{Environment.CurrentDirectory}\"" );
}
public void OpenAddon( Project addon )
{
var projectPath = (addon != null) ? addon.GetRootPath() : "";
Launch( $"\"{projectPath}\"" );
}
public bool IsInstalled()
{
var path = AnyEditorConfig.ExePath;
return !string.IsNullOrEmpty( path ) && File.Exists( path );
}
private void Launch( string arguments )
{
var exePath = AnyEditorConfig.ExePath;
if ( string.IsNullOrEmpty( exePath ) ) return;
var startInfo = new System.Diagnostics.ProcessStartInfo
{
FileName = exePath,
Arguments = arguments,
CreateNoWindow = true,
UseShellExecute = false
};
System.Diagnostics.Process.Start( startInfo );
}
}