diff --git a/src/Artemis.Core/Constants.cs b/src/Artemis.Core/Constants.cs index 7921af0bc..c0b3e7ad7 100644 --- a/src/Artemis.Core/Constants.cs +++ b/src/Artemis.Core/Constants.cs @@ -28,6 +28,21 @@ namespace Artemis.Core /// The full path to the Artemis data folder /// public static readonly string DataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Artemis"); + + /// + /// The full path to the Artemis logs folder + /// + public static readonly string LogsFolder = Path.Combine(DataFolder, "Logs"); + + /// + /// The full path to the Artemis plugins folder + /// + public static readonly string PluginsFolder = Path.Combine(DataFolder, "Plugins"); + + /// + /// The full path to the Artemis user layouts folder + /// + public static readonly string LayoutsFolder = Path.Combine(DataFolder, "User Layouts"); /// /// The plugin info used by core components of Artemis diff --git a/src/Artemis.Core/Ninject/CoreModule.cs b/src/Artemis.Core/Ninject/CoreModule.cs index 323cfbcce..7168a7ea5 100644 --- a/src/Artemis.Core/Ninject/CoreModule.cs +++ b/src/Artemis.Core/Ninject/CoreModule.cs @@ -79,7 +79,7 @@ namespace Artemis.Core.Ninject private bool HasAccessToProtectedService(IRequest r) { - return r.ParentRequest != null && !r.ParentRequest.Service.Assembly.Location.StartsWith(Path.Combine(Constants.DataFolder, "plugins")); + return r.ParentRequest != null && !r.ParentRequest.Service.Assembly.Location.StartsWith(Constants.PluginsFolder); } } } \ No newline at end of file diff --git a/src/Artemis.Core/Ninject/LoggerProvider.cs b/src/Artemis.Core/Ninject/LoggerProvider.cs index 64f5efcf3..0f76c85a2 100644 --- a/src/Artemis.Core/Ninject/LoggerProvider.cs +++ b/src/Artemis.Core/Ninject/LoggerProvider.cs @@ -13,7 +13,7 @@ namespace Artemis.Core.Ninject private static readonly ILogger Logger = new LoggerConfiguration() .Enrich.FromLogContext() - .WriteTo.File(Path.Combine(Constants.DataFolder, "logs", "Artemis log-.log"), + .WriteTo.File(Path.Combine(Constants.LogsFolder, "Artemis log-.log"), rollingInterval: RollingInterval.Day, outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] [{SourceContext}] {Message:lj}{NewLine}{Exception}") .WriteTo.Console() diff --git a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs index fc540ff96..953519946 100644 --- a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs +++ b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs @@ -87,7 +87,7 @@ namespace Artemis.Core.DeviceProviders /// The resulting Artemis layout public virtual ArtemisLayout LoadUserLayout(ArtemisDevice device) { - string layoutDir = Path.Combine(Constants.DataFolder, "user layouts"); + string layoutDir = Constants.LayoutsFolder; string filePath = Path.Combine( layoutDir, device.RgbDevice.DeviceInfo.Manufacturer, diff --git a/src/Artemis.Core/Services/PluginManagementService.cs b/src/Artemis.Core/Services/PluginManagementService.cs index a168d54ef..4fc31831c 100644 --- a/src/Artemis.Core/Services/PluginManagementService.cs +++ b/src/Artemis.Core/Services/PluginManagementService.cs @@ -48,7 +48,7 @@ namespace Artemis.Core.Services private void CopyBuiltInPlugin(ZipArchive zipArchive, string targetDirectory) { - DirectoryInfo pluginDirectory = new(Path.Combine(Constants.DataFolder, "plugins", targetDirectory)); + DirectoryInfo pluginDirectory = new(Path.Combine(Constants.PluginsFolder, targetDirectory)); bool createLockFile = File.Exists(Path.Combine(pluginDirectory.FullName, "artemis.lock")); // Remove the old directory if it exists @@ -68,7 +68,7 @@ namespace Artemis.Core.Services public void CopyBuiltInPlugins() { OnCopyingBuildInPlugins(); - DirectoryInfo pluginDirectory = new(Path.Combine(Constants.DataFolder, "plugins")); + DirectoryInfo pluginDirectory = new(Constants.PluginsFolder); if (Directory.Exists(Path.Combine(pluginDirectory.FullName, "Artemis.Plugins.Modules.Overlay-29e3ff97"))) Directory.Delete(Path.Combine(pluginDirectory.FullName, "Artemis.Plugins.Modules.Overlay-29e3ff97"), true); @@ -221,7 +221,7 @@ namespace Artemis.Core.Services UnloadPlugins(); // Load the plugin assemblies into the plugin context - DirectoryInfo pluginDirectory = new(Path.Combine(Constants.DataFolder, "plugins")); + DirectoryInfo pluginDirectory = new(Constants.PluginsFolder); foreach (DirectoryInfo subDirectory in pluginDirectory.EnumerateDirectories()) { try @@ -506,7 +506,7 @@ namespace Artemis.Core.Services public Plugin ImportPlugin(string fileName) { - DirectoryInfo pluginDirectory = new(Path.Combine(Constants.DataFolder, "plugins")); + DirectoryInfo pluginDirectory = new(Constants.PluginsFolder); // Find the metadata file in the zip using ZipArchive archive = ZipFile.OpenRead(fileName); diff --git a/src/Artemis.Core/Utilities/Utilities.cs b/src/Artemis.Core/Utilities/Utilities.cs index e036fa39b..e6391399a 100644 --- a/src/Artemis.Core/Utilities/Utilities.cs +++ b/src/Artemis.Core/Utilities/Utilities.cs @@ -19,8 +19,8 @@ namespace Artemis.Core public static void PrepareFirstLaunch() { CreateAccessibleDirectory(Constants.DataFolder); - CreateAccessibleDirectory(Path.Combine(Constants.DataFolder, "plugins")); - CreateAccessibleDirectory(Path.Combine(Constants.DataFolder, "user layouts")); + CreateAccessibleDirectory(Constants.PluginsFolder); + CreateAccessibleDirectory(Constants.LayoutsFolder); } /// @@ -107,8 +107,12 @@ namespace Artemis.Core { if (OperatingSystem.IsWindows()) Process.Start(Environment.GetEnvironmentVariable("WINDIR") + @"\explorer.exe", path); + else if (OperatingSystem.IsMacOS()) + Process.Start("open", path); + else if (OperatingSystem.IsLinux()) + Process.Start("xdg-open", path); else - throw new PlatformNotSupportedException("Can't open folders yet on non-Windows systems Q.Q"); + throw new PlatformNotSupportedException("Can't open folders on this platform"); } /// diff --git a/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginFeatureViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginFeatureViewModel.cs index eceac7b7e..a40ceb2e4 100644 --- a/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginFeatureViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginFeatureViewModel.cs @@ -69,7 +69,7 @@ namespace Artemis.UI.Avalonia.Screens.Plugins.ViewModels { try { - Utilities.OpenFolder(Path.Combine(Constants.DataFolder, "logs")); + Utilities.OpenFolder(Constants.LogsFolder); } catch (Exception e) { diff --git a/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginSettingsViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginSettingsViewModel.cs index e7f388844..9263ba867 100644 --- a/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginSettingsViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Plugins/ViewModels/PluginSettingsViewModel.cs @@ -215,7 +215,7 @@ namespace Artemis.UI.Avalonia.Screens.Plugins.ViewModels { try { - Utilities.OpenFolder(Path.Combine(Constants.DataFolder, "logs")); + Utilities.OpenFolder(Constants.LogsFolder); } catch (Exception e) { diff --git a/src/Artemis.UI.Avalonia/Screens/Settings/Tabs/ViewModels/GeneralTabViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Settings/Tabs/ViewModels/GeneralTabViewModel.cs index d0fde3198..1d78dc320 100644 --- a/src/Artemis.UI.Avalonia/Screens/Settings/Tabs/ViewModels/GeneralTabViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Settings/Tabs/ViewModels/GeneralTabViewModel.cs @@ -118,7 +118,7 @@ namespace Artemis.UI.Avalonia.Screens.Settings.Tabs.ViewModels private void ExecuteShowLogs() { - OpenFolder(Path.Combine(Constants.DataFolder, "Logs")); + OpenFolder(Constants.LogsFolder); } #endregion