#nullable enable using System.Diagnostics.CodeAnalysis; namespace Terminal.Gui.App; public static partial class Application // Run (Begin -> Run -> Layout/Draw -> End -> Stop) { /// Gets or sets the key to quit the application. [ConfigurationProperty (Scope = typeof (SettingsScope))] public static Key QuitKey { get => ApplicationImpl.Instance.Keyboard.QuitKey; set => ApplicationImpl.Instance.Keyboard.QuitKey = value; } /// Gets or sets the key to activate arranging views using the keyboard. [ConfigurationProperty (Scope = typeof (SettingsScope))] public static Key ArrangeKey { get => ApplicationImpl.Instance.Keyboard.ArrangeKey; set => ApplicationImpl.Instance.Keyboard.ArrangeKey = value; } /// public static SessionToken Begin (Toplevel toplevel) => ApplicationImpl.Instance.Begin (toplevel); /// public static bool PositionCursor () => ApplicationImpl.Instance.PositionCursor (); /// [RequiresUnreferencedCode ("AOT")] [RequiresDynamicCode ("AOT")] public static Toplevel Run (Func? errorHandler = null, string? driver = null) => ApplicationImpl.Instance.Run (errorHandler, driver); /// [RequiresUnreferencedCode ("AOT")] [RequiresDynamicCode ("AOT")] public static TView Run (Func? errorHandler = null, string? driver = null) where TView : Toplevel, new() => ApplicationImpl.Instance.Run (errorHandler, driver); /// public static void Run (Toplevel view, Func? errorHandler = null) => ApplicationImpl.Instance.Run (view, errorHandler); /// public static object? AddTimeout (TimeSpan time, Func callback) => ApplicationImpl.Instance.AddTimeout (time, callback); /// public static bool RemoveTimeout (object token) => ApplicationImpl.Instance.RemoveTimeout (token); /// /// public static ITimedEvents? TimedEvents => ApplicationImpl.Instance?.TimedEvents; /// public static void Invoke (Action action) => ApplicationImpl.Instance.Invoke (action); /// public static void LayoutAndDraw (bool forceRedraw = false) => ApplicationImpl.Instance.LayoutAndDraw (forceRedraw); /// public static bool StopAfterFirstIteration { get => ApplicationImpl.Instance.StopAfterFirstIteration; set => ApplicationImpl.Instance.StopAfterFirstIteration = value; } /// public static void RequestStop (Toplevel? top = null) => ApplicationImpl.Instance.RequestStop (top); /// public static void End (SessionToken sessionToken) => ApplicationImpl.Instance.End (sessionToken); /// internal static void RaiseIteration () => ApplicationImpl.Instance.RaiseIteration (); /// public static event EventHandler? Iteration { add => ApplicationImpl.Instance.Iteration += value; remove => ApplicationImpl.Instance.Iteration -= value; } /// public static event EventHandler? SessionBegun { add => ApplicationImpl.Instance.SessionBegun += value; remove => ApplicationImpl.Instance.SessionBegun -= value; } /// public static event EventHandler? SessionEnded { add => ApplicationImpl.Instance.SessionEnded += value; remove => ApplicationImpl.Instance.SessionEnded -= value; } }