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;
using System.Reactive.Disposables;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using Intromat.ViewModels;
using ReactiveUI;
namespace Intromat.Views
{
public partial class CodeGenPortView : IViewFor<CodeGenPortViewModel>
{
public const string ExecutionPortTemplateKey = "ExecutionPortTemplate";
public const string IntegerPortTemplateKey = "IntegerPortTemplate";
public const string StringPortTemplateKey = "StringPortTemplate";
public const string BooleanPortTemplateKey = "BooleanPortTemplate";
public const string FloatPortTemplateKey = "FloatPortTemplate";
public const string TexturePortTemplateKey = "TexturePortTemplate";
public const string MeshPortTemplateKey = "MeshPortTemplate";
public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register(nameof(ViewModel), typeof(CodeGenPortViewModel), typeof(CodeGenPortView), new PropertyMetadata(null));
public CodeGenPortView()
{
InitializeComponent();
this.WhenActivated(d =>
{
this.WhenAnyValue(v => v.ViewModel)
.BindTo(this, v => v.PortView.ViewModel)
.DisposeWith(d);
this.OneWayBind(ViewModel, vm => vm.PortType, v => v.PortView.Template, GetTemplateFromPortType)
.DisposeWith(d);
this.OneWayBind(ViewModel, vm => vm.IsMirrored, v => v.PortView.RenderTransform, isMirrored => new ScaleTransform(isMirrored ? -1.0 : 1.0, 1.0))
.DisposeWith(d);
});
}
public CodeGenPortViewModel? ViewModel
{
get => (CodeGenPortViewModel?)GetValue(ViewModelProperty);
set => SetValue(ViewModelProperty, value);
}
object? IViewFor.ViewModel
{
get => ViewModel;
set => ViewModel = (CodeGenPortViewModel?)value;
}
public ControlTemplate GetTemplateFromPortType(EPortType type)
{
return type switch
{
EPortType.Execution => (ControlTemplate)Resources[ExecutionPortTemplateKey],
EPortType.Integer => (ControlTemplate)Resources[IntegerPortTemplateKey],
EPortType.String => (ControlTemplate)Resources[StringPortTemplateKey],
EPortType.Boolean => (ControlTemplate)Resources[BooleanPortTemplateKey],
EPortType.Float => (ControlTemplate)Resources[FloatPortTemplateKey],
EPortType.Texture => (ControlTemplate)Resources[TexturePortTemplateKey],
EPortType.Mesh => (ControlTemplate)Resources[MeshPortTemplateKey],
_ => throw new Exception("Unsupported port type")
};
}
}
}