Adds a self-contained terminal host: PtyTerminalSession drives a Porta.Pty child directly (custom env) and pumps it through Iciclecreek's XTerm.NET renderer via TerminalControl.Terminal, bypassing LaunchProcess() so a fully-populated environment can be passed. InteractiveTerminalView/ViewModel host it with an order-independent attach/start. Adds Iciclecreek.Avalonia.Terminal 2.0.3. Sets Process="" to suppress the control's auto-launch of a stray shell.
29 lines
777 B
C#
29 lines
777 B
C#
using System;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using ClaudeDo.Ui.ViewModels;
|
|
|
|
namespace ClaudeDo.Ui.Views;
|
|
|
|
public partial class InteractiveTerminalView : UserControl
|
|
{
|
|
public InteractiveTerminalView()
|
|
{
|
|
InitializeComponent();
|
|
TerminalHost.Loaded += OnTerminalHostLoaded;
|
|
DataContextChanged += OnDataContextChanged;
|
|
}
|
|
|
|
private void OnDataContextChanged(object? sender, EventArgs e)
|
|
{
|
|
if (DataContext is InteractiveTerminalViewModel vm && TerminalHost.IsLoaded)
|
|
vm.AttachControl(TerminalHost);
|
|
}
|
|
|
|
private void OnTerminalHostLoaded(object? sender, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is InteractiveTerminalViewModel vm)
|
|
vm.AttachControl(TerminalHost);
|
|
}
|
|
}
|