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; } } }