mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-01 08:50:25 +01:00
Replace ExecuteAnsiRequest with TryParse.
This commit is contained in:
@@ -12,8 +12,9 @@ public class AnsiEscapeSequenceRequest
|
||||
/// Execute an ANSI escape sequence escape which may return a response or error.
|
||||
/// </summary>
|
||||
/// <param name="ansiRequest">The ANSI escape sequence to request.</param>
|
||||
/// <param name="result">When this method returns <see langword="true"/>, an object containing the response with an empty error.</param>
|
||||
/// <returns>A <see cref="AnsiEscapeSequenceResponse"/> with the response, error, terminator and value.</returns>
|
||||
public static AnsiEscapeSequenceResponse ExecuteAnsiRequest (AnsiEscapeSequenceRequest ansiRequest)
|
||||
public static bool TryParse (AnsiEscapeSequenceRequest ansiRequest, out AnsiEscapeSequenceResponse result)
|
||||
{
|
||||
var response = new StringBuilder ();
|
||||
var error = new StringBuilder ();
|
||||
@@ -137,7 +138,9 @@ public class AnsiEscapeSequenceRequest
|
||||
// Invoke the event if it's subscribed
|
||||
ansiRequest.ResponseReceived?.Invoke (ansiRequest, ansiResponse);
|
||||
|
||||
return ansiResponse;
|
||||
result = ansiResponse;
|
||||
|
||||
return string.IsNullOrWhiteSpace (result.Error) && !string.IsNullOrWhiteSpace (result.Response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -86,6 +86,10 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
|
||||
appWindow.Add (label, tvTerminator);
|
||||
|
||||
var btnResponse = new Button { X = Pos.Center (), Y = Pos.Bottom (tvResponse) + 2, Text = "Send Request" };
|
||||
|
||||
var lblSuccess = new Label { X = Pos.Center (), Y = Pos.Bottom (btnResponse) + 1 };
|
||||
appWindow.Add (lblSuccess);
|
||||
|
||||
btnResponse.Accept += (s, e) =>
|
||||
{
|
||||
var ansiEscapeSequenceRequest = new AnsiEscapeSequenceRequest
|
||||
@@ -95,18 +99,30 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
|
||||
Value = string.IsNullOrEmpty (tfValue.Text) ? null : tfValue.Text
|
||||
};
|
||||
|
||||
var ansiEscapeSequenceResponse = AnsiEscapeSequenceRequest.ExecuteAnsiRequest (
|
||||
ansiEscapeSequenceRequest
|
||||
var success = AnsiEscapeSequenceRequest.TryParse (
|
||||
ansiEscapeSequenceRequest,
|
||||
out AnsiEscapeSequenceResponse ansiEscapeSequenceResponse
|
||||
);
|
||||
|
||||
tvResponse.Text = ansiEscapeSequenceResponse.Response;
|
||||
tvError.Text = ansiEscapeSequenceResponse.Error;
|
||||
tvValue.Text = ansiEscapeSequenceResponse.Value ?? "";
|
||||
tvTerminator.Text = ansiEscapeSequenceResponse.Terminator;
|
||||
|
||||
if (success)
|
||||
{
|
||||
lblSuccess.ColorScheme = Colors.ColorSchemes ["Base"];
|
||||
lblSuccess.Text = "Successful";
|
||||
}
|
||||
else
|
||||
{
|
||||
lblSuccess.ColorScheme = Colors.ColorSchemes ["Error"];
|
||||
lblSuccess.Text = "Error";
|
||||
}
|
||||
};
|
||||
appWindow.Add (btnResponse);
|
||||
|
||||
appWindow.Add (new Label { Y = Pos.Bottom (btnResponse) + 2, Text = "You can send other requests by editing the TextFields." });
|
||||
appWindow.Add (new Label { Y = Pos.Bottom (lblSuccess) + 2, Text = "You can send other requests by editing the TextFields." });
|
||||
|
||||
// Run - Start the application.
|
||||
Application.Run (appWindow);
|
||||
|
||||
Reference in New Issue
Block a user