using System.Reflection; using Photomator.Views; namespace Photomator; public partial class Program { public delegate void OpenCallback(nint application, nint[] files, int n_files, nint hint, nint data); private readonly Adw.Application _application; public static int Main() => new Program().Run(); public Program() { _application = Adw.Application.New("de.cantorgymnasium.Photomator", Gio.ApplicationFlags.FlagsNone); Gtk.Window.SetDefaultIconName("de.cantorgymnasium.Photomator"); string localPath = Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!) + "/de.cantorgymnasium.Photomator.gresource"; if (File.Exists(localPath)) Gio.Functions.ResourcesRegister(Gio.Functions.ResourceLoad(localPath)); else { var prefixes = new List { Directory.GetParent(Directory.GetParent(Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!))!.FullName)!.FullName, Directory.GetParent(Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!))!.FullName, "/usr" }; string? prefix = prefixes.Find(prefix => File.Exists(prefix + "/share/de.cantorgymnasium.Photomator/de.cantorgymnasium.Photomator.gresource")); if (prefix != null) Gio.Functions.ResourcesRegister(Gio.Functions.ResourceLoad(Path.GetFullPath(prefix + "/share/de.cantorgymnasium.Photomator/de.cantorgymnasium.Photomator.gresource"))); } _application.OnActivate += (_, _) => new MainWindow(_application).Start(); } public int Run() => _application.RunWithSynchronizationContext(null); }