port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
using System.Reactive.Linq;
using Intromat.Views;
using NodeNetwork.Toolkit.BreadcrumbBar;
using ReactiveUI;
using Splat;
namespace Intromat.ViewModels
{
public sealed class DocumentViewModel : FileViewModel
{
private readonly ObservableAsPropertyHelper<ReactiveObject> _currentViewModel;
private readonly CodeGenNetworkViewModel _mainNetwork;
static DocumentViewModel()
{
Locator.CurrentMutable.Register(() => new DocumentView(), typeof(IViewFor<DocumentViewModel>));
}
public static DocumentViewModel CreateDefault(MainViewModel mainVm, ModuleViewModel module, FolderViewModel parent, string name)
{
var documentVm = new DocumentViewModel(mainVm, module, parent, name);
return documentVm;
}
public DocumentViewModel(MainViewModel mainVm, ModuleViewModel module, FolderViewModel parent, string name)
: base(module, parent, name, "igraph")
{
var network = new CodeGenNetworkViewModel(this, name);
_mainNetwork = network;
MainViewModel = mainVm;
this.WhenAnyValue(vm => vm.NetworkBreadcrumbBar.ActiveItem)
.Cast<NetworkBreadcrumbViewModel?>()
.Where(b => b != null)
.Select(b => (CodeGenNetworkViewModel)b!.ViewModel!)
.ToProperty(this, vm => vm.CurrentViewModel, out _currentViewModel);
NetworkBreadcrumbBar.ActivePath.Edit(list =>
{
list.Clear();
list.Add(new NetworkBreadcrumbViewModel
{
Name = "Main",
ViewModel = _mainNetwork
});
});
}
public override ReactiveObject CurrentViewModel => _currentViewModel.Value;
public CodeGenNetworkViewModel MainNetwork => _mainNetwork;
public BreadcrumbBarViewModel NetworkBreadcrumbBar { get; } = new();
public override string Name
{
get => base.Name;
set
{
base.Name = value;
_mainNetwork.Name = value;
// TODO: adjust path!
}
}
public MainViewModel MainViewModel { get; }
}
}