diff options
author | Ignacio Etcheverry <ignalfonsore@gmail.com> | 2017-10-02 23:24:00 +0200 |
---|---|---|
committer | Ignacio Etcheverry <ignalfonsore@gmail.com> | 2017-10-03 00:01:26 +0200 |
commit | e36fb95c50ce0cd0ab9621afe668332895712c2e (patch) | |
tree | 5f146ad19fa9364c66fae002b0210a6a967b5e6e /modules/mono/editor/GodotSharpTools/Editor/MonoDevelopInstance.cs | |
parent | 29b44801b2e9693c5d19d3e4fbb708af367c4904 (diff) |
Added mono module
Diffstat (limited to 'modules/mono/editor/GodotSharpTools/Editor/MonoDevelopInstance.cs')
-rw-r--r-- | modules/mono/editor/GodotSharpTools/Editor/MonoDevelopInstance.cs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/modules/mono/editor/GodotSharpTools/Editor/MonoDevelopInstance.cs b/modules/mono/editor/GodotSharpTools/Editor/MonoDevelopInstance.cs new file mode 100644 index 0000000000..303be3b732 --- /dev/null +++ b/modules/mono/editor/GodotSharpTools/Editor/MonoDevelopInstance.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Diagnostics; + +namespace GodotSharpTools.Editor +{ + public class MonoDevelopInstance + { + private Process process; + private string solutionFile; + + public void Execute(string[] files) + { + bool newWindow = process == null || process.HasExited; + + List<string> args = new List<string>(); + + args.Add("--ipc-tcp"); + + if (newWindow) + args.Add("\"" + Path.GetFullPath(solutionFile) + "\""); + + foreach (var file in files) + { + int semicolonIndex = file.IndexOf(';'); + + string filePath = semicolonIndex < 0 ? file : file.Substring(0, semicolonIndex); + string cursor = semicolonIndex < 0 ? string.Empty : file.Substring(semicolonIndex); + + args.Add("\"" + Path.GetFullPath(filePath.NormalizePath()) + cursor + "\""); + } + + if (newWindow) + { + ProcessStartInfo startInfo = new ProcessStartInfo(MonoDevelopFile, string.Join(" ", args)); + process = Process.Start(startInfo); + } + else + { + Process.Start(MonoDevelopFile, string.Join(" ", args)); + } + } + + public MonoDevelopInstance(string solutionFile) + { + this.solutionFile = solutionFile; + } + + private static string MonoDevelopFile + { + get + { + return "monodevelop"; + } + } + } +} |