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,105 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using Aiwaz.Contracts;
using System.Collections.Specialized;
using System.Windows.Controls;
using System.Windows.Media;
using System.Reflection;
using System.IO;
using System.Windows.Media.Imaging;
namespace Aiwaz.Editor.ViewModels
{
public class ResourceViewModel : ViewModelBase
{
private bool creating;
public IResource Resource;
public string DisplayName
{
get
{
return Resource.WellKnownName;
}
set
{
Resource.WellKnownName = value;
}
}
public ImageSource DisplayIcon
{
get
{
var stream = File.OpenRead("Resources/Untitled.png");
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = stream;
bitmap.EndInit();
return bitmap;
}
}
private ObservableCollection<ResourceViewModel> nodes;
public ObservableCollection<ResourceViewModel> Nodes
{
get
{
if (nodes == null)
{
nodes = new ObservableCollection<ResourceViewModel>();
nodes.CollectionChanged += new NotifyCollectionChangedEventHandler(nodes_CollectionChanged);
}
return nodes;
}
set
{
if (nodes != value)
{
nodes = value;
OnPropertyChanged("Nodes");
}
}
}
void nodes_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (creating)
return;
if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (ResourceViewModel newItem in e.NewItems)
{
Resource.Children.Insert(e.NewStartingIndex, newItem.Resource);
}
}
else if (e.Action == NotifyCollectionChangedAction.Remove)
{
foreach (ResourceViewModel oldItem in e.OldItems)
{
Resource.Children.Remove(oldItem.Resource);
}
}
OnPropertyChanged("Nodes");
}
public ResourceViewModel(IResource resource)
{
this.Resource = resource;
creating = true;
if (resource.Children != null)
foreach (var child in resource.Children)
{
Nodes.Add(new ResourceViewModel(child));
}
creating = false;
OnPropertyChanged("Nodes");
}
}
}

View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace Aiwaz.Editor.ViewModels
{
public class ViewModelBase : INotifyPropertyChanged
{
#region INotifyPropertyChanged Members
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
}