45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Reactive.Disposables;
|
|
using System.Windows;
|
|
using System.Xml;
|
|
using ICSharpCode.AvalonEdit.Highlighting;
|
|
using ICSharpCode.AvalonEdit.Highlighting.Xshd;
|
|
using Intromat.ViewModels;
|
|
using ReactiveUI;
|
|
|
|
namespace Intromat.Views
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for ShaderFileView.xaml
|
|
/// </summary>
|
|
public partial class ShaderFileView : IViewFor<ShaderFileViewModel>
|
|
{
|
|
static ShaderFileView()
|
|
{
|
|
using var s = Application.GetResourceStream(new Uri("Resources/HLSL-Mode.xshd", UriKind.Relative))!.Stream;
|
|
using var reader = new XmlTextReader(s);
|
|
HighlightingManager.Instance.RegisterHighlighting("HLSL", new string[0], HighlightingLoader.Load(reader, HighlightingManager.Instance));
|
|
}
|
|
|
|
public ShaderFileView()
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.WhenActivated(d =>
|
|
{
|
|
var documentViewModel = ViewModel!;
|
|
this.Bind(documentViewModel, vm => vm.Source, v => v._textEditor.Text).DisposeWith(d);
|
|
});
|
|
}
|
|
|
|
object? IViewFor.ViewModel
|
|
{
|
|
get => ViewModel;
|
|
set => ViewModel = (ShaderFileViewModel?)value;
|
|
}
|
|
|
|
public ShaderFileViewModel? ViewModel { get; set; }
|
|
}
|
|
}
|