From 8bbd25e9ce0369e6280fa71fbda04d229e51f5c0 Mon Sep 17 00:00:00 2001 From: Niels Laute Date: Tue, 18 Jul 2023 08:54:30 +0200 Subject: [PATCH 1/7] Adding colorcode support --- .../Renderers/ToolkitSampleRenderer.xaml | 20 +++++++++- .../Renderers/ToolkitSampleRenderer.xaml.cs | 37 +++++++++++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml index ae64da00..c7724ae7 100644 --- a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml +++ b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml @@ -9,6 +9,7 @@ xmlns:renderer="using:CommunityToolkit.App.Shared.Renderers" xmlns:wasm="http://uno.ui/wasm" xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + ActualThemeChanged="ToolkitSampleRenderer_ActualThemeChanged" Loaded="ToolkitSampleRenderer_Loaded" mc:Ignorable="d wasm"> @@ -223,6 +224,23 @@ + + + + + + + + + + + diff --git a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs index d5f635c0..bd8ea212 100644 --- a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs +++ b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs @@ -2,10 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using CommunityToolkit.Tooling.SampleGen.Attributes; +#if !HAS_UNO +using ColorCode; +#endif using CommunityToolkit.Tooling.SampleGen.Metadata; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation.Collections; using Windows.Storage; #if WINAPPSDK @@ -154,6 +154,7 @@ private async Task LoadData() XamlCode = await GetMetadataFileContents(Metadata, "xaml"); CSharpCode = await GetMetadataFileContents(Metadata, "xaml.cs"); + RenderCode(); var sampleControlInstance = (UIElement)Metadata.SampleControlFactory(); @@ -308,4 +309,34 @@ private void CodeBtn_OnClick(object sender, RoutedEventArgs e) { SourcecodeExpander.IsExpanded = !SourcecodeExpander.IsExpanded; } + + private void RenderCode() + { +#if !HAS_UNO + RichTextBlockFormatter codeFormatter = new RichTextBlockFormatter(ActualTheme); + + if (XamlCode is not null) + { + XAMLCodeRenderer.Blocks?.Clear(); + codeFormatter.FormatRichTextBlock(XamlCode, Languages.FindById("xaml"), XAMLCodeRenderer); + } + + if (CSharpCode is not null) + { + CSharpCodeRenderer.Blocks?.Clear(); + codeFormatter.FormatRichTextBlock(CSharpCode, Languages.FindById("c#"), CSharpCodeRenderer); + } +#endif + +#if !WINAPPSDK + var paragraph = new Windows.UI.Xaml.Documents.Paragraph(); + paragraph.Inlines.Add(new Windows.UI.Xaml.Documents.Run { Text = XamlCode }); + XAMLCodeRenderer.Blocks.Add(paragraph); +#endif + } + + private void ToolkitSampleRenderer_ActualThemeChanged(FrameworkElement sender, object args) + { + RenderCode(); + } } From 25a283c3351398a8ae63634e183b47dbca39e0ef Mon Sep 17 00:00:00 2001 From: Niels Laute Date: Tue, 18 Jul 2023 12:03:17 +0200 Subject: [PATCH 2/7] WASM support --- .../Renderers/ToolkitSampleRenderer.xaml | 6 ++--- .../Renderers/ToolkitSampleRenderer.xaml.cs | 24 +++++++++---------- .../App.Head.Uno.UI.Dependencies.props | 1 + .../App.Head.Uno.WinUI.Dependencies.props | 1 + ProjectHeads/App.Head.Uwp.Dependencies.props | 1 + .../App.Head.WinAppSdk.Dependencies.props | 1 + 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml index c7724ae7..d3e18ce0 100644 --- a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml +++ b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml @@ -227,16 +227,14 @@ + win:IsTextSelectionEnabled="True" /> + win:IsTextSelectionEnabled="True"/> diff --git a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs index bd8ea212..d7dcf4ab 100644 --- a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs +++ b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs @@ -2,9 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#if !HAS_UNO using ColorCode; -#endif using CommunityToolkit.Tooling.SampleGen.Metadata; using Windows.Storage; @@ -142,6 +140,7 @@ private static async void OnMetadataPropertyChanged(DependencyObject dependencyO protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); + System.Diagnostics.Debug.WriteLine("OnNavigatedTo"); Metadata = (ToolkitSampleMetadata)e.Parameter; } @@ -151,9 +150,11 @@ private async Task LoadData() { return; } - + System.Diagnostics.Debug.WriteLine("LoadData"); XamlCode = await GetMetadataFileContents(Metadata, "xaml"); CSharpCode = await GetMetadataFileContents(Metadata, "xaml.cs"); + + System.Diagnostics.Debug.WriteLine("Going into RenderCode"); RenderCode(); var sampleControlInstance = (UIElement)Metadata.SampleControlFactory(); @@ -312,9 +313,9 @@ private void CodeBtn_OnClick(object sender, RoutedEventArgs e) private void RenderCode() { -#if !HAS_UNO + System.Diagnostics.Debug.WriteLine("RenderCode"); RichTextBlockFormatter codeFormatter = new RichTextBlockFormatter(ActualTheme); - + System.Diagnostics.Debug.WriteLine("RenderCode2"); if (XamlCode is not null) { XAMLCodeRenderer.Blocks?.Clear(); @@ -326,13 +327,12 @@ private void RenderCode() CSharpCodeRenderer.Blocks?.Clear(); codeFormatter.FormatRichTextBlock(CSharpCode, Languages.FindById("c#"), CSharpCodeRenderer); } -#endif - -#if !WINAPPSDK - var paragraph = new Windows.UI.Xaml.Documents.Paragraph(); - paragraph.Inlines.Add(new Windows.UI.Xaml.Documents.Run { Text = XamlCode }); - XAMLCodeRenderer.Blocks.Add(paragraph); -#endif + System.Diagnostics.Debug.WriteLine("RenderCode3"); + //#if !WINAPPSDK + // var paragraph = new Windows.UI.Xaml.Documents.Paragraph(); + // paragraph.Inlines.Add(new Windows.UI.Xaml.Documents.Run { Text = XamlCode }); + // XAMLCodeRenderer.Blocks.Add(paragraph); + //#endif } private void ToolkitSampleRenderer_ActualThemeChanged(FrameworkElement sender, object args) diff --git a/ProjectHeads/App.Head.Uno.UI.Dependencies.props b/ProjectHeads/App.Head.Uno.UI.Dependencies.props index 960a1391..bfa3ccd3 100644 --- a/ProjectHeads/App.Head.Uno.UI.Dependencies.props +++ b/ProjectHeads/App.Head.Uno.UI.Dependencies.props @@ -4,6 +4,7 @@ + diff --git a/ProjectHeads/App.Head.Uno.WinUI.Dependencies.props b/ProjectHeads/App.Head.Uno.WinUI.Dependencies.props index 0d911d78..2e7025d8 100644 --- a/ProjectHeads/App.Head.Uno.WinUI.Dependencies.props +++ b/ProjectHeads/App.Head.Uno.WinUI.Dependencies.props @@ -4,5 +4,6 @@ + diff --git a/ProjectHeads/App.Head.Uwp.Dependencies.props b/ProjectHeads/App.Head.Uwp.Dependencies.props index 0ab4698d..7d74e09e 100644 --- a/ProjectHeads/App.Head.Uwp.Dependencies.props +++ b/ProjectHeads/App.Head.Uwp.Dependencies.props @@ -5,5 +5,6 @@ + diff --git a/ProjectHeads/App.Head.WinAppSdk.Dependencies.props b/ProjectHeads/App.Head.WinAppSdk.Dependencies.props index 154d4526..112fd396 100644 --- a/ProjectHeads/App.Head.WinAppSdk.Dependencies.props +++ b/ProjectHeads/App.Head.WinAppSdk.Dependencies.props @@ -4,5 +4,6 @@ + From 8313d710685dfbbd75c22001d7307a942603682a Mon Sep 17 00:00:00 2001 From: Niels Laute Date: Tue, 18 Jul 2023 15:43:07 +0200 Subject: [PATCH 3/7] Removing dependencies --- ProjectHeads/App.Head.Uno.UI.Dependencies.props | 1 - ProjectHeads/App.Head.Uno.WinUI.Dependencies.props | 1 - ProjectHeads/App.Head.Uwp.Dependencies.props | 1 - ProjectHeads/App.Head.WinAppSdk.Dependencies.props | 1 - 4 files changed, 4 deletions(-) diff --git a/ProjectHeads/App.Head.Uno.UI.Dependencies.props b/ProjectHeads/App.Head.Uno.UI.Dependencies.props index bfa3ccd3..960a1391 100644 --- a/ProjectHeads/App.Head.Uno.UI.Dependencies.props +++ b/ProjectHeads/App.Head.Uno.UI.Dependencies.props @@ -4,7 +4,6 @@ - diff --git a/ProjectHeads/App.Head.Uno.WinUI.Dependencies.props b/ProjectHeads/App.Head.Uno.WinUI.Dependencies.props index 2e7025d8..0d911d78 100644 --- a/ProjectHeads/App.Head.Uno.WinUI.Dependencies.props +++ b/ProjectHeads/App.Head.Uno.WinUI.Dependencies.props @@ -4,6 +4,5 @@ - diff --git a/ProjectHeads/App.Head.Uwp.Dependencies.props b/ProjectHeads/App.Head.Uwp.Dependencies.props index 7d74e09e..0ab4698d 100644 --- a/ProjectHeads/App.Head.Uwp.Dependencies.props +++ b/ProjectHeads/App.Head.Uwp.Dependencies.props @@ -5,6 +5,5 @@ - diff --git a/ProjectHeads/App.Head.WinAppSdk.Dependencies.props b/ProjectHeads/App.Head.WinAppSdk.Dependencies.props index 112fd396..154d4526 100644 --- a/ProjectHeads/App.Head.WinAppSdk.Dependencies.props +++ b/ProjectHeads/App.Head.WinAppSdk.Dependencies.props @@ -4,6 +4,5 @@ - From e7101ad2f47bad45a5859656cb68b1294e2f5615 Mon Sep 17 00:00:00 2001 From: Niels Laute Date: Tue, 18 Jul 2023 15:44:35 +0200 Subject: [PATCH 4/7] Making it work for WASM --- .../Renderers/ToolkitSampleRenderer.xaml | 55 +++++++++---------- .../Renderers/ToolkitSampleRenderer.xaml.cs | 26 +++++---- 2 files changed, 41 insertions(+), 40 deletions(-) diff --git a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml index d3e18ce0..3118891f 100644 --- a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml +++ b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml @@ -9,9 +9,10 @@ xmlns:renderer="using:CommunityToolkit.App.Shared.Renderers" xmlns:wasm="http://uno.ui/wasm" xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:xamarin="http://uno.ui/xamarin" ActualThemeChanged="ToolkitSampleRenderer_ActualThemeChanged" Loaded="ToolkitSampleRenderer_Loaded" - mc:Ignorable="d wasm"> + mc:Ignorable="d wasm xamarin"> @@ -63,7 +64,6 @@ - @@ -151,7 +151,6 @@ Click="FlowDirectionBtn_OnClick" Style="{StaticResource SubtleButtonStyle}" ToolTipService.ToolTip="Toggle right-to-left"> - - + HorizontalAlignment="Stretch" + HorizontalContentAlignment="Stretch"> 14 - + + + + - + + + + - - diff --git a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs index d7dcf4ab..cc036942 100644 --- a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs +++ b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#if !HAS_UNO using ColorCode; +#endif using CommunityToolkit.Tooling.SampleGen.Metadata; using Windows.Storage; @@ -140,7 +142,6 @@ private static async void OnMetadataPropertyChanged(DependencyObject dependencyO protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); - System.Diagnostics.Debug.WriteLine("OnNavigatedTo"); Metadata = (ToolkitSampleMetadata)e.Parameter; } @@ -150,11 +151,10 @@ private async Task LoadData() { return; } - System.Diagnostics.Debug.WriteLine("LoadData"); + XamlCode = await GetMetadataFileContents(Metadata, "xaml"); CSharpCode = await GetMetadataFileContents(Metadata, "xaml.cs"); - System.Diagnostics.Debug.WriteLine("Going into RenderCode"); RenderCode(); var sampleControlInstance = (UIElement)Metadata.SampleControlFactory(); @@ -289,7 +289,6 @@ private void ThemeBtn_OnClick(object sender, RoutedEventArgs e) { ThemeBG.Visibility = Visibility.Collapsed; } - } private void FlowDirectionBtn_OnClick(object sender, RoutedEventArgs e) @@ -313,26 +312,29 @@ private void CodeBtn_OnClick(object sender, RoutedEventArgs e) private void RenderCode() { - System.Diagnostics.Debug.WriteLine("RenderCode"); + // Uno doesn't support RichTextBlock, so we are using a normal TextBlock instead on WASM +#if !HAS_UNO RichTextBlockFormatter codeFormatter = new RichTextBlockFormatter(ActualTheme); - System.Diagnostics.Debug.WriteLine("RenderCode2"); +#endif if (XamlCode is not null) { +#if HAS_UNO + XAMLCodeRenderer.Text = XamlCode; +#else XAMLCodeRenderer.Blocks?.Clear(); codeFormatter.FormatRichTextBlock(XamlCode, Languages.FindById("xaml"), XAMLCodeRenderer); +#endif } if (CSharpCode is not null) { +#if HAS_UNO + CSharpCodeRenderer.Text = CSharpCode; +#else CSharpCodeRenderer.Blocks?.Clear(); codeFormatter.FormatRichTextBlock(CSharpCode, Languages.FindById("c#"), CSharpCodeRenderer); +#endif } - System.Diagnostics.Debug.WriteLine("RenderCode3"); - //#if !WINAPPSDK - // var paragraph = new Windows.UI.Xaml.Documents.Paragraph(); - // paragraph.Inlines.Add(new Windows.UI.Xaml.Documents.Run { Text = XamlCode }); - // XAMLCodeRenderer.Blocks.Add(paragraph); - //#endif } private void ToolkitSampleRenderer_ActualThemeChanged(FrameworkElement sender, object args) From 0e993ad0140e44c73d78d64711445aa26d1d9a00 Mon Sep 17 00:00:00 2001 From: michael-hawker <24302614+michael-hawker@users.noreply.github.com> Date: Wed, 30 Aug 2023 10:47:14 -0700 Subject: [PATCH 5/7] Strip header comments (and namespace) from code examples --- .../Renderers/ToolkitSampleRenderer.xaml.cs | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs index cc036942..60e2a78b 100644 --- a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs +++ b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs @@ -152,8 +152,29 @@ private async Task LoadData() return; } - XamlCode = await GetMetadataFileContents(Metadata, "xaml"); - CSharpCode = await GetMetadataFileContents(Metadata, "xaml.cs"); + XamlCode = (await GetMetadataFileContents(Metadata, "xaml"))?.Trim(); + CSharpCode = (await GetMetadataFileContents(Metadata, "xaml.cs"))?.Trim(); + + // Remove Header License Comments from code samples for space + if (XamlCode?.StartsWith(" +