feat: add terminal session lifecycle
- add replaceable terminal session abstraction - manage terminal modes on start and stop - route runtime and example through terminal session
This commit is contained in:
+6
-10
@@ -4,16 +4,14 @@ using TinyTUI.Input;
|
||||
using TinyTUI.Overlay;
|
||||
using TinyTUI.Rendering;
|
||||
using TinyTUI.Runtime;
|
||||
using TinyTUI.Stdio;
|
||||
using TinyTUI.Stdout;
|
||||
using TinyTUI.Terminal;
|
||||
using TinyTUI.Text;
|
||||
|
||||
using var terminalInput = new ConsoleTerminalInput();
|
||||
var terminalOutput = new ConsoleTerminalOutput();
|
||||
using var terminal = new ConsoleTerminalSession();
|
||||
var parser = new DefaultInputParser();
|
||||
var textMeasurer = new TerminalTextMeasurer();
|
||||
var renderer = new DifferentialRenderer(terminalOutput, textMeasurer);
|
||||
using var runtime = new TuiRuntime(terminalInput, parser, renderer);
|
||||
var renderer = new DifferentialRenderer(terminal, textMeasurer);
|
||||
using var runtime = new TuiRuntime(terminal, parser, renderer);
|
||||
|
||||
var done = new ManualResetEventSlim();
|
||||
var eventsText = new Text("最近事件:\n- 无");
|
||||
@@ -109,7 +107,6 @@ AddAll(
|
||||
|
||||
runtime.Add(page);
|
||||
runtime.SetFocus(input);
|
||||
terminalOutput.ShowCursor();
|
||||
|
||||
var loaderTask = RunLoaderAsync(loader, runtime, loaderCancellation.Token);
|
||||
|
||||
@@ -122,9 +119,8 @@ finally
|
||||
{
|
||||
StopLoader(loaderCancellation, loaderTask);
|
||||
runtime.Stop();
|
||||
terminalOutput.ShowCursor();
|
||||
terminalOutput.Write("\r\n");
|
||||
terminalOutput.Flush();
|
||||
terminal.Write("\r\n");
|
||||
terminal.Flush();
|
||||
}
|
||||
|
||||
static async Task RunLoaderAsync(Loader loader, ITuiRuntime runtime, CancellationToken cancellationToken)
|
||||
|
||||
Reference in New Issue
Block a user