This repository has been archived on 2026-01-20. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
SessionZero-Client/SessionZero/Cogwheel/ConsoleControl.axaml.cs

61 lines
1.4 KiB
C#

using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Documents;
using Avalonia.Input;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
using Cogwheel;
namespace SessionZero.Cogwheel;
public partial class ConsoleControl : UserControl
{
private TextBlock? _output;
private TextBox? _input;
public ConsoleControl()
{
InitializeComponent();
_output = this.FindControl<TextBlock>("Output");
_input = this.FindControl<TextBox>("Input");
_input?.KeyDown += Input_OnKeyDown;
}
private void Input_OnKeyDown(object? sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
var inputText = _input!.Text ?? string.Empty;
Log(inputText);
if (inputText.Length > 0) COGWHEEL.RunCommand(inputText);
_input.Text = string.Empty;
e.Handled = true;
}
}
public void Log(string text, Color? color = null)
{
if (_output == null)
return;
_output?.Inlines?.Add(new Run("> ")
{
Foreground = Brushes.LightGray
});
_output?.Inlines?.Add(new Run(text)
{
Foreground = color != null ? new SolidColorBrush(color.Value)
: Brushes.White
});
_output?.Inlines?.Add(new LineBreak());
}
public void ClearOutput()
{
_output?.Inlines?.Clear();
}
}