using System.IO; using System.Windows; using JetBrains.Annotations; using Livia.Models; using Livia.Models.Data; using Livia.Properties; using Livia.Utility.DependencyInjection; using Livia.ViewModels; using Livia.Views; using Livia.Views.Utility; using MdpC6.ViewModels; using MdpC6.Views.Controls; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace MdpC6; /// /// Interaction logic for App.xaml /// public partial class App { private readonly ILogger _logger; private readonly IServiceProvider _serviceProvider; private readonly IWarningSystem _warningSystem; private readonly IProcessManager _processManager; [UsedImplicitly] private Mutex? _mutex; public App() { ServiceConfigurations.AppName = "cereflow"; ServiceProviderFactory.Init(sc => { sc.AddSingleton(); sc.AddSingleton(); }); InitializeComponent(); _serviceProvider = ServiceProviderFactory.ServiceProvider; _logger = ActivatorUtilities.GetServiceOrCreateInstance>(ServiceProviderFactory.ServiceProvider); _warningSystem = ActivatorUtilities.GetServiceOrCreateInstance(ServiceProviderFactory.ServiceProvider); _processManager = ActivatorUtilities.GetServiceOrCreateInstance(ServiceProviderFactory.ServiceProvider); _logger.LogInformation("App Starting"); SettingsLogger.Init(); AppHelper helper = ActivatorUtilities.GetServiceOrCreateInstance(ServiceProviderFactory.ServiceProvider); Dispatcher.UnhandledException += helper.OnDispatcherUnhandledException; helper.UpdateSettings(); helper.LoadStrings(); } private void OnStartup(object sender, StartupEventArgs eventArgs) { _mutex = new Mutex(true, "Livia", out bool isNewInstance); if (!isNewInstance) { _warningSystem.ShowDialog(WarningWindowKind.Warning, true, "InstanceIsRunningError"); Current.Shutdown(); } //set to registration version MosaicImageGroupControlViewModel.RoiEnabled = false; SettingsWindowViewModel.LanguageSelectionEnabled = true; Settings.Default.ShowUpdateButton = false; MainWindowViewModel.ShowCheckReportsButton = false; LoginControlViewModel.ShowMessage2 = true; Settings.Default.ShowSelectReportModuleDialog = false; Settings.Default.ShowArchiveDownloadButton = true; Settings.Default.ServerAddress = "127.0.0.1"; Settings.Default.ServerPort = 8080; if (File.Exists(Path.Join(Directory.GetCurrentDirectory(), "astroke_cmd", "astroke_back-sqlite", "astroke_back-sqlite.exe"))) { bool success = _processManager.Start([ new ServerFileLocation("astroke_back-sqlite.exe", Path.Join(Directory.GetCurrentDirectory(), "astroke_cmd", "astroke_back-sqlite")), new ServerFileLocation("data-storage-sqlite.exe", Path.Join(Directory.GetCurrentDirectory(), "astroke_cmd", "data-storage-sqlite")) ]); if (!success) { _warningSystem.ShowDialog(WarningWindowKind.Error, true, "SystemCrashing"); _logger.LogError("Cannot start process"); Current.Shutdown(); return; } } MainWindow mainWindow = ActivatorUtilities.CreateInstance(_serviceProvider); mainWindow.AddMainControl(new MdpC6Control(ActivatorUtilities.GetServiceOrCreateInstance(ServiceProviderFactory.ServiceProvider))); MainWindow = mainWindow; mainWindow.Show(); _logger.LogInformation("App Started"); } }