Multiprocotol Terminalprogram (BAT)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MultiTerm/MultiTerm.Core/ViewModel/ShellViewModel.cs

72 lines
2.2 KiB

using Common.StartupHelpers;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using MultiTerm.Core.Common;
using System.Collections.ObjectModel;
namespace MultiTerm.Core.ViewModel;
public partial class ShellViewModel : ObservableObject
{
private readonly IAbstractFactory<SendReceiveViewModel> sendReceiveViewModelFactory;
[ObservableProperty]
private string title = "ShellView Test";
[ObservableProperty]
private ObservableCollection<ITerminalViewModel> terminalViewModels = new();
[ObservableProperty]
private ITerminalViewModel? selectedTerminalViewModel;
#region Settings Menu Bar
public IEnumerable<NewlineSeparatorType> NewlineSeparatorTypeValues
{
get { return Enum.GetValues(typeof(NewlineSeparatorType)).Cast<NewlineSeparatorType>(); }
}
// TODO Initialize from File
[ObservableProperty]
private NewlineSeparatorType selectedReceiveNewlineSeparator = NewlineSeparatorType.None;
// TODO Initialize from File
[ObservableProperty]
private NewlineSeparatorType selectedSendNewlineSeparator = NewlineSeparatorType.None;
#endregion
public ShellViewModel(IAbstractFactory<SendReceiveViewModel> sendReceiveViewModelFactory)
{
this.sendReceiveViewModelFactory = sendReceiveViewModelFactory;
// create a new terminal
this.AppendTerminal(this.sendReceiveViewModelFactory.Create());
}
public void AppendTerminal(ITerminalViewModel newTerminal)
{
// guard null value
if(newTerminal == null)
{
return;
}
// add to collection and set as selected
this.TerminalViewModels.Add(newTerminal);
this.SelectedTerminalViewModel = newTerminal;
}
partial void OnSelectedReceiveNewlineSeparatorChanged(NewlineSeparatorType value)
{
Console.WriteLine($"Changed to {value}");
}
partial void OnSelectedSendNewlineSeparatorChanging(NewlineSeparatorType value)
{
Console.WriteLine($"Changed Send to {value}");
}
[RelayCommand]
public void TestButtonClicked()
{
this.SelectedReceiveNewlineSeparator = NewlineSeparatorType.CR_LF;
}
}