static void Main(string[] args) { try { ApplicationArgs appArgs = ApplicationArgs.Parse(args); ExceptionsHandler.SetExceptionHandlers(appArgs.IsTestingMode); ProcessNameSetter.SetProcessName("linux"); ThreadWaiterBuilder.Initialize(new GtkApplicationTimerBuilder()); GuiMessage.Initialize(new GtkGuiMessage()); if (appArgs.IsTestingMode) { InstallTestAssembliesResolver(appArgs.PathToAssemblies); } // Tip: you could launch different windows depending on the // argument flags. Application.Init(); WindowHandler.LaunchApplicationWindow(); if (appArgs.IsTestingMode) { WindowHandler.LaunchTest(appArgs.TestInfoFile, appArgs.PathToAssemblies); } Application.Run(); } catch (Exception ex) { // You would track the exception here Console.Error.WriteLine($"{ex.GetType()}: {ex.Message}"); Console.Error.WriteLine(ex.StackTrace); ExitCode = 1; Application.Quit(); } finally { // You would dispose everything you need here. Environment.Exit(ExitCode); } }
void GuiMessage.IGuiMessage.ShowError(string title, string message) { ErrorDialog dialog = new ErrorDialog( title, message, WindowHandler.ApplicationWindow); WindowHandler.SetActiveDialogForTesting(dialog); try { dialog.RunModal(); } finally { WindowHandler.RemoveDialogForTesting(dialog); dialog.Dispose(); } }
void ApplicationWindow_DeleteEvent(object sender, DeleteEventArgs e) { WindowHandler.UnregisterApplicationWindow(); }