port from perforce
This commit is contained in:
50
intromat/Intromat/ViewModels/ModuleViewModel.cs
Normal file
50
intromat/Intromat/ViewModels/ModuleViewModel.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Reactive.Linq;
|
||||
using DynamicData;
|
||||
using Intromat.Interfaces;
|
||||
using Intromat.Nodes;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace Intromat.ViewModels
|
||||
{
|
||||
public class ModuleViewModel : FolderViewModel, IFile
|
||||
{
|
||||
private bool _isDirty;
|
||||
|
||||
public ModuleViewModel(ProjectViewModel parent, string name, string fullPath)
|
||||
: base(null, parent, name)
|
||||
{
|
||||
FullPath = fullPath;
|
||||
_isExpanded = true;
|
||||
|
||||
this.WhenAnyValue(vm => vm.Parent)
|
||||
.Buffer(2, 1)
|
||||
.Select(b => (Previous: b[0], Current: b[1]))
|
||||
.Subscribe(t =>
|
||||
{
|
||||
((ProjectViewModel)t.Previous).Modules.Remove(this);
|
||||
((ProjectViewModel)t.Current).Modules.Remove(this);
|
||||
});
|
||||
}
|
||||
|
||||
public static ModuleViewModel CreateDefault(MainViewModel mainVm, ProjectViewModel parent, string fullPath)
|
||||
{
|
||||
var module = new ModuleViewModel(parent, Path.GetFileName(fullPath)!, fullPath);
|
||||
var mainDocument = DocumentViewModel.CreateDefault(mainVm, module, module, "Main");
|
||||
module.Files.Add(mainDocument);
|
||||
module.Files.Add(ShaderFileViewModel.CreateDefault(mainVm, module, module, "Code"));
|
||||
var entryPoint = new MainEntryPointNode { CanBeRemovedByUser = false };
|
||||
mainDocument.MainNetwork.Nodes.Add(entryPoint);
|
||||
return module;
|
||||
}
|
||||
|
||||
public override string FullPath { get; }
|
||||
|
||||
public bool IsDirty
|
||||
{
|
||||
get => _isDirty;
|
||||
set => this.RaiseAndSetIfChanged(ref _isDirty, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user