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
{
///
/// Interaction logic for ShaderFileView.xaml
///
public partial class ShaderFileView : IViewFor
{
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; }
}
}