Application.Run.cs 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #nullable enable
  2. using System.Diagnostics.CodeAnalysis;
  3. namespace Terminal.Gui.App;
  4. public static partial class Application // Run (Begin -> Run -> Layout/Draw -> End -> Stop)
  5. {
  6. /// <summary>Gets or sets the key to quit the application.</summary>
  7. [ConfigurationProperty (Scope = typeof (SettingsScope))]
  8. public static Key QuitKey
  9. {
  10. get => ApplicationImpl.Instance.Keyboard.QuitKey;
  11. set => ApplicationImpl.Instance.Keyboard.QuitKey = value;
  12. }
  13. /// <summary>Gets or sets the key to activate arranging views using the keyboard.</summary>
  14. [ConfigurationProperty (Scope = typeof (SettingsScope))]
  15. public static Key ArrangeKey
  16. {
  17. get => ApplicationImpl.Instance.Keyboard.ArrangeKey;
  18. set => ApplicationImpl.Instance.Keyboard.ArrangeKey = value;
  19. }
  20. /// <inheritdoc cref="IApplication.Begin"/>
  21. public static SessionToken Begin (Toplevel toplevel) => ApplicationImpl.Instance.Begin (toplevel);
  22. /// <inheritdoc cref="IApplication.PositionCursor"/>
  23. public static bool PositionCursor () => ApplicationImpl.Instance.PositionCursor ();
  24. /// <inheritdoc cref="IApplication.Run(Func{Exception, bool}, string)"/>
  25. [RequiresUnreferencedCode ("AOT")]
  26. [RequiresDynamicCode ("AOT")]
  27. public static Toplevel Run (Func<Exception, bool>? errorHandler = null, string? driver = null) => ApplicationImpl.Instance.Run (errorHandler, driver);
  28. /// <inheritdoc cref="IApplication.Run{TView}(Func{Exception, bool}, string)"/>
  29. [RequiresUnreferencedCode ("AOT")]
  30. [RequiresDynamicCode ("AOT")]
  31. public static TView Run<TView> (Func<Exception, bool>? errorHandler = null, string? driver = null)
  32. where TView : Toplevel, new() => ApplicationImpl.Instance.Run<TView> (errorHandler, driver);
  33. /// <inheritdoc cref="IApplication.Run(Toplevel, Func{Exception, bool})"/>
  34. public static void Run (Toplevel view, Func<Exception, bool>? errorHandler = null) => ApplicationImpl.Instance.Run (view, errorHandler);
  35. /// <inheritdoc cref="IApplication.AddTimeout"/>
  36. public static object? AddTimeout (TimeSpan time, Func<bool> callback) => ApplicationImpl.Instance.AddTimeout (time, callback);
  37. /// <inheritdoc cref="IApplication.RemoveTimeout"/>
  38. public static bool RemoveTimeout (object token) => ApplicationImpl.Instance.RemoveTimeout (token);
  39. /// <inheritdoc cref="IApplication.TimedEvents"/>
  40. ///
  41. public static ITimedEvents? TimedEvents => ApplicationImpl.Instance?.TimedEvents;
  42. /// <inheritdoc cref="IApplication.Invoke"/>
  43. public static void Invoke (Action action) => ApplicationImpl.Instance.Invoke (action);
  44. /// <inheritdoc cref="IApplication.LayoutAndDraw"/>
  45. public static void LayoutAndDraw (bool forceRedraw = false) => ApplicationImpl.Instance.LayoutAndDraw (forceRedraw);
  46. /// <inheritdoc cref="IApplication.StopAfterFirstIteration"/>
  47. public static bool StopAfterFirstIteration
  48. {
  49. get => ApplicationImpl.Instance.StopAfterFirstIteration;
  50. set => ApplicationImpl.Instance.StopAfterFirstIteration = value;
  51. }
  52. /// <inheritdoc cref="IApplication.RequestStop(Toplevel)"/>
  53. public static void RequestStop (Toplevel? top = null) => ApplicationImpl.Instance.RequestStop (top);
  54. /// <inheritdoc cref="IApplication.End"/>
  55. public static void End (SessionToken sessionToken) => ApplicationImpl.Instance.End (sessionToken);
  56. /// <inheritdoc cref="IApplication.RaiseIteration"/>
  57. internal static void RaiseIteration () => ApplicationImpl.Instance.RaiseIteration ();
  58. /// <inheritdoc cref="IApplication.Iteration"/>
  59. public static event EventHandler<IterationEventArgs>? Iteration
  60. {
  61. add => ApplicationImpl.Instance.Iteration += value;
  62. remove => ApplicationImpl.Instance.Iteration -= value;
  63. }
  64. /// <inheritdoc cref="IApplication.SessionBegun"/>
  65. public static event EventHandler<SessionTokenEventArgs>? SessionBegun
  66. {
  67. add => ApplicationImpl.Instance.SessionBegun += value;
  68. remove => ApplicationImpl.Instance.SessionBegun -= value;
  69. }
  70. /// <inheritdoc cref="IApplication.SessionEnded"/>
  71. public static event EventHandler<ToplevelEventArgs>? SessionEnded
  72. {
  73. add => ApplicationImpl.Instance.SessionEnded += value;
  74. remove => ApplicationImpl.Instance.SessionEnded -= value;
  75. }
  76. }