Files
elwig/Elwig/App.xaml.cs
2023-04-15 21:31:09 +02:00

56 lines
2.1 KiB
C#

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<Button>(w).Where(b => "Print".Equals(b.Tag))) {
b.IsEnabled = IsPrintingReady;
}
}
}
}
}