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.
62 lines
1.9 KiB
62 lines
1.9 KiB
using Common.StartupHelpers;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using MultiTerm.Core.Common;
|
|
using System.Collections.ObjectModel;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
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}");
|
|
}
|
|
|
|
}
|
|
|