Application.Run.cs 4.2 KB

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