From 665c62cd665787845f2b5a79ae594b513a505767 Mon Sep 17 00:00:00 2001 From: ahmdkaml Date: Sun, 9 Aug 2026 13:59:13 +0300 Subject: [PATCH 1/2] feat: add document preview --- .../Documents/DocumentContent.cs | 3 ++ src/TextForge.Core/Documents/TextTemplate.cs | 6 +++ src/TextForge.Core/PdfService.cs | 11 ++-- src/TextForge.Core/Preview/PreviewRenderer.cs | 5 ++ src/TextForge.Desktop/Views/MainWindow.axaml | 52 ++++++++++++++++--- .../Views/MainWindow.axaml.cs | 23 ++++++-- tests/TextForge.Tests/PdfServiceTests.cs | 16 ++++-- 7 files changed, 96 insertions(+), 20 deletions(-) create mode 100644 src/TextForge.Core/Documents/DocumentContent.cs create mode 100644 src/TextForge.Core/Documents/TextTemplate.cs create mode 100644 src/TextForge.Core/Preview/PreviewRenderer.cs diff --git a/src/TextForge.Core/Documents/DocumentContent.cs b/src/TextForge.Core/Documents/DocumentContent.cs new file mode 100644 index 0000000..3fcabd0 --- /dev/null +++ b/src/TextForge.Core/Documents/DocumentContent.cs @@ -0,0 +1,3 @@ +namespace TextForge.Core.Documents; + +public record DocumentContent(string Text); diff --git a/src/TextForge.Core/Documents/TextTemplate.cs b/src/TextForge.Core/Documents/TextTemplate.cs new file mode 100644 index 0000000..9544660 --- /dev/null +++ b/src/TextForge.Core/Documents/TextTemplate.cs @@ -0,0 +1,6 @@ +namespace TextForge.Core.Documents; + +public class TextTemplate +{ + public string Title { get; } = "TextForge"; +} diff --git a/src/TextForge.Core/PdfService.cs b/src/TextForge.Core/PdfService.cs index 92a8b79..0c02ac2 100644 --- a/src/TextForge.Core/PdfService.cs +++ b/src/TextForge.Core/PdfService.cs @@ -1,12 +1,13 @@ using QuestPDF.Fluent; using QuestPDF.Helpers; using QuestPDF.Infrastructure; +using TextForge.Core.Documents; namespace TextForge.Core; public static class PdfService { - public static void CreatePdf(string text, string path) + public static void CreatePdf(DocumentContent document, TextTemplate template, string path) { QuestPDF.Settings.License = LicenseType.Community; @@ -14,9 +15,13 @@ public static void CreatePdf(string text, string path) { container.Page(page => { - page.Content().Text(text); + page.Content().Column(column => + { + column.Item().Text(template.Title); + column.Item().Text(document.Text); + }); }); }) .GeneratePdf(path); } -} \ No newline at end of file +} diff --git a/src/TextForge.Core/Preview/PreviewRenderer.cs b/src/TextForge.Core/Preview/PreviewRenderer.cs new file mode 100644 index 0000000..c093c83 --- /dev/null +++ b/src/TextForge.Core/Preview/PreviewRenderer.cs @@ -0,0 +1,5 @@ +namespace TextForge.Core.Preview; + +public record PreviewDocument( + string Title, + string Text); diff --git a/src/TextForge.Desktop/Views/MainWindow.axaml b/src/TextForge.Desktop/Views/MainWindow.axaml index 33acff4..4fbad88 100644 --- a/src/TextForge.Desktop/Views/MainWindow.axaml +++ b/src/TextForge.Desktop/Views/MainWindow.axaml @@ -15,16 +15,54 @@ - - + -