using System;
using System.IO;
using MatterHackers.Agg.Platform;
using MatterHackers.MatterControl.DataStorage;

namespace MatterHackers.MatterControl.SlicerConfiguration
{
	public static class MatterSliceInfo
	{
		public static string DisplayName { get; } = "MatterSlice";

		public static string GetEnginePath()
		{
			switch (AggContext.OperatingSystem)
			{
				case OSType.Windows:
					return getWindowsPath();

				case OSType.Mac:
					return getMacPath();

				case OSType.X11:
					return getLinuxPath();

				case OSType.Android:
					return null;

				default:
					throw new NotImplementedException();
			}
		}

		private static string getWindowsPath()
		{
			string matterSliceRelativePath = Path.Combine(".", "MatterSlice.exe");
			return Path.GetFullPath(matterSliceRelativePath);
		}

		private static string getMacPath()
		{
			string applicationPath = Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "MatterSlice");
			return applicationPath;
		}

		private static string getLinuxPath()
		{
			string matterSliceRelativePath = Path.Combine(".", "MatterSlice.exe");
			return Path.GetFullPath(matterSliceRelativePath);
		}
	}
}
