diff --git a/QuestPDF.Previewer/PreviewerWindow.axaml b/QuestPDF.Previewer/PreviewerWindow.axaml
index ec43160..07c13e0 100644
--- a/QuestPDF.Previewer/PreviewerWindow.axaml
+++ b/QuestPDF.Previewer/PreviewerWindow.axaml
@@ -11,9 +11,7 @@
Background="#666"
Icon="/Images/Logo.png"
UseLayoutRounding="True"
- x:Name="Window"
Title="QuestPDF Document Preview">
-
@@ -33,14 +31,14 @@
+ CurrentScroll="{Binding CurrentScroll, Mode=TwoWay}"
+ ScrollViewportSize="{Binding ScrollViewportSize, Mode=OneWayToSource}"
+ Pages="{Binding DocumentRenderer.Pages, Mode=OneWay}" />
\ No newline at end of file
diff --git a/QuestPDF.Previewer/PreviewerWindow.axaml.cs b/QuestPDF.Previewer/PreviewerWindow.axaml.cs
index 6ed88cc..1a91a81 100644
--- a/QuestPDF.Previewer/PreviewerWindow.axaml.cs
+++ b/QuestPDF.Previewer/PreviewerWindow.axaml.cs
@@ -1,112 +1,23 @@
-using System.Diagnostics;
-using Avalonia;
-using Avalonia.Controls;
-using Avalonia.Controls.Primitives;
-using Avalonia.Interactivity;
+using Avalonia.Controls;
using Avalonia.Markup.Xaml;
-using Avalonia.Threading;
-using QuestPDF.Fluent;
-using QuestPDF.Helpers;
-using QuestPDF.Infrastructure;
-using ReactiveUI;
namespace QuestPDF.Previewer
{
class PreviewerWindow : Window
{
- public DocumentRenderer DocumentRenderer { get; } = new();
-
- public static readonly StyledProperty DocumentProperty =
- AvaloniaProperty.Register(nameof(Document));
-
- public IDocument? Document
- {
- get => GetValue(DocumentProperty);
- set => SetValue(DocumentProperty, value);
- }
-
- public static readonly StyledProperty CurrentScrollProperty = AvaloniaProperty.Register(nameof(CurrentScroll));
-
- public float CurrentScroll
- {
- get => GetValue(CurrentScrollProperty);
- set => SetValue(CurrentScrollProperty, value);
- }
-
- public static readonly StyledProperty ScrollViewportSizeProperty = AvaloniaProperty.Register(nameof(ScrollViewportSize));
-
- public float ScrollViewportSize
- {
- get => GetValue(ScrollViewportSizeProperty);
- set => SetValue(ScrollViewportSizeProperty, value);
- }
-
- public static readonly StyledProperty VerticalScrollbarVisibleProperty = AvaloniaProperty.Register(nameof(VerticalScrollbarVisible));
-
- public bool VerticalScrollbarVisible
- {
- get => GetValue(VerticalScrollbarVisibleProperty);
- set => SetValue(VerticalScrollbarVisibleProperty, value);
- }
-
public PreviewerWindow()
{
InitializeComponent();
-
- ScrollViewportSizeProperty.Changed
- .Subscribe(e => Dispatcher.UIThread.Post(() =>
- {
- VerticalScrollbarVisible = e.NewValue.Value < 1;
- }));
-
- DocumentProperty.Changed.Subscribe(v => Task.Run(() => DocumentRenderer.UpdateDocument(v.NewValue.Value)));
- HotReloadManager.UpdateApplicationRequested += InvalidatePreview;
}
protected override void OnClosed(EventArgs e)
{
- HotReloadManager.UpdateApplicationRequested -= InvalidatePreview;
- base.OnClosed(e);
- }
-
- private void InvalidatePreview(object? sender, EventArgs e) => InvalidatePreview();
- private void InvalidatePreview()
- {
- Dispatcher.UIThread.Post(() =>
- {
- var document = Document;
- _ = Task.Run(() => DocumentRenderer.UpdateDocument(document));
- });
+ (DataContext as PreviewerWindowViewModel)?.UnregisterHotReloadHandler();
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
-
- private void ShowPDF(object? sender, RoutedEventArgs e)
- {
- var path = Path.GetTempPath() + ".pdf";
-
- try
- {
- DocumentRenderer.Document?.GeneratePdf(path);
- }
- catch (Exception exception)
- {
- new ExceptionDocument(exception).GeneratePdf(path);
- }
-
- var openBrowserProcess = new Process
- {
- StartInfo = new()
- {
- UseShellExecute = true,
- FileName = path
- }
- };
-
- openBrowserProcess.Start();
- }
}
}