using System; using System.Data; using System.Linq; using System.Windows; using System.Windows.Controls; using System.IO; using Elwig.Helpers; namespace Elwig { public partial class App : Application { public static readonly string DataPath = @"C:\ProgramData\Elwig\"; public static readonly string ExePath = @"C:\Program Files\Elwig\"; public static readonly Config Config = new(DataPath + "config.ini"); public static bool IsPrintingReady => Documents.Html.IsReady && Documents.Pdf.IsReady; public static System.Windows.Threading.Dispatcher MainDispatcher { get; private set; } public App() : base() { System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), "Elwig")); Directory.CreateDirectory(DataPath); MainDispatcher = Dispatcher; } protected override void OnStartup(StartupEventArgs evt) { using (var ctx = new AppDbContext()) { if (!ctx.Database.CanConnect()) { MessageBox.Show($"Invalid Database:\n\n{Config.DatabasePath}", "Invalid Database", MessageBoxButton.OK, MessageBoxImage.Error); Shutdown(); } } Utils.RunBackground("HTML Initialization", () => Documents.Html.Init(PrintingReadyChanged)); Utils.RunBackground("PDF Initialization", () => Documents.Pdf.Init(PrintingReadyChanged)); base.OnStartup(evt); } protected override void OnExit(ExitEventArgs evt) { Utils.RunBackground("PDF Close", () => Documents.Pdf.Close()); base.OnExit(evt); } private void PrintingReadyChanged() { Dispatcher.BeginInvoke(OnPrintingReadyChanged, new EventArgs()); } protected void OnPrintingReadyChanged(EventArgs evt) { foreach (Window w in Windows) { foreach (var b in Utils.FindVisualChilds