diff --git a/MultiTerm.Wpf/App.xaml.cs b/MultiTerm.Wpf/App.xaml.cs index d033f40..548aff8 100644 --- a/MultiTerm.Wpf/App.xaml.cs +++ b/MultiTerm.Wpf/App.xaml.cs @@ -10,6 +10,7 @@ using Common.AppSettings; using MultiTerm.Protocols.Helpers; using CommunityToolkit.Mvvm.Messaging; using Common; +using System.IO; namespace MultiTerm.Wpf; @@ -21,14 +22,21 @@ public partial class App : Application public App() { + // create folder in appdata if it does not exist + if (Directory.Exists(Common.BaseAppDataDirectory) == false) + { + Directory.CreateDirectory(Common.BaseAppDataDirectory); + Directory.CreateDirectory(Common.LogFilesDirectory); + } + // create dependency injection host AppHost = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { services.AddSingleton(); services.AddSingleton(new WpfContext()); - services.AddSingleton(new SerilogLogger("C:/log/multiterm-log-.txt", true)); - services.AddSingleton(new XmlAppSettingsProvider("C:/log/multiterm-config.xml")); + services.AddSingleton(new SerilogLogger($"{Common.LogFilesDirectory}/{Common.LogFileName}", true)); + services.AddSingleton(new XmlAppSettingsProvider(Common.ConfigFilePath)); services.AddSingleton(); // viewmodels diff --git a/MultiTerm.Wpf/Common.cs b/MultiTerm.Wpf/Common.cs new file mode 100644 index 0000000..e051925 --- /dev/null +++ b/MultiTerm.Wpf/Common.cs @@ -0,0 +1,32 @@ +using System; + +namespace MultiTerm.Wpf; + +static internal class Common +{ + private const string folderName = "MultiTerm"; + private const string logfileFolderName = "logs"; + private const string configFileName = "multiterm-config.xml"; + + private static readonly string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + + /// + /// Base directory path for all app data of this application + /// + public static readonly string BaseAppDataDirectory = $"{appDataPath}/{folderName}/"; + + /// + /// Full path of config file incl. file name and extension. + /// + public static readonly string ConfigFilePath = $"{BaseAppDataDirectory}/{configFileName}"; + + /// + /// Directory path where logfiles are stored. + /// + public static readonly string LogFilesDirectory = $"{appDataPath}/{folderName}/{logfileFolderName}/"; + + /// + /// Logfile name incl. extension. + /// + public const string LogFileName = "multiterm-log-.txt"; +} diff --git a/MultiTerm.Wpf/View/ShellView.xaml b/MultiTerm.Wpf/View/ShellView.xaml index bc5d383..dbb7346 100644 --- a/MultiTerm.Wpf/View/ShellView.xaml +++ b/MultiTerm.Wpf/View/ShellView.xaml @@ -50,19 +50,19 @@ - - + + + --> + --> - - + + + + + diff --git a/MultiTerm.Wpf/View/ShellView.xaml.cs b/MultiTerm.Wpf/View/ShellView.xaml.cs index a611328..92a7e59 100644 --- a/MultiTerm.Wpf/View/ShellView.xaml.cs +++ b/MultiTerm.Wpf/View/ShellView.xaml.cs @@ -1,4 +1,6 @@ using MultiTerm.Core.ViewModel; +using System.Diagnostics; +using System.IO; using System.Windows.Controls; namespace MultiTerm.Wpf.View; @@ -33,4 +35,16 @@ public partial class ShellView : UserControl e.Handled = true; } } + + private void MenuItem_Logfiles_Click(object sender, System.Windows.RoutedEventArgs e) + { + // exit if logfile directory does not exist + if (Directory.Exists(Common.LogFilesDirectory) == false) { return; } + + // open logfiles folder + Process ExplorerWindowProcess = new Process(); + ExplorerWindowProcess.StartInfo.UseShellExecute = true; + ExplorerWindowProcess.StartInfo.FileName = @$"{Common.LogFilesDirectory}"; + ExplorerWindowProcess.Start(); + } }