Skip to content

Commit 609430a

Browse files
author
msftbot[bot]
authored
Split Markdown.* from Controls package. (#3437)
Created a new Microsoft.Toolkit.Uwp.UI.Controls.Markdown package, moving the MarkdownTextBlock from the Controls package and decoupling the TextToolbar from the MarkDownFormatter. ## Helps with #3145 ## PR Type What kind of change does this PR introduce? <!-- Please uncomment one or more that apply to this PR. --> <!-- - Bugfix --> <!-- - Feature --> <!-- - Code style update (formatting) --> - Refactoring <!-- - Build or CI related changes --> <!-- - Documentation content changes --> <!-- - Sample app changes --> <!-- - Other... Please describe: --> ## What is the current behavior? Having a dependency on Microsoft.Toolkit.Uwp.UI.Controls pulls too many packages and dependencies. ## What is the new behavior? Microsoft.Toolkit.Uwp.UI.Controls no longer has a dependency on ColorCode.UWP, nor on the Microsoft.Toolkit.Parsers package. ## PR Checklist Please check if your PR fulfills the following requirements: - [X] Tested code with current [supported SDKs](../readme.md#supported) - [ ] Pull Request has been submitted to the documentation repository [instructions](..\contributing.md#docs). Link: <!-- docs PR link --> - [X] Sample in sample app has been added / updated (for bug fixes / features) - [ ] Icon has been created (if new sample) following the [Thumbnail Style Guide and templates](https://github.com/windows-toolkit/WindowsCommunityToolkit-design-assets) - [ ] Tests for the changes have been added (for bug fixes / features) (if applicable) - [X] Header has been added to all new source files (run *build/UpdateHeaders.bat*) - [ ] Contains **NO** breaking changes If you are using MarkdownTextBlock, or the TextToolbar with `Format = Format.Markdown`, you will need to add a dependency to the new Microsoft.Toolkit.Uwp.UI.Controls.Markdown. The MarkdownTextBlock implementation is unchanged, but the TextToolbar no longer has a Format property. The markdown parser is now provided just as any other custom parser, and need to be added in Xaml, or code behind. For example: ```xaml <Page ... xmlns:markDown="using:Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats.MarkDown" xmlns:richText="using:Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats.RichText" ... > ... <controls:TextToolbar ...> <controls:TextToolbar.Formatter> <richText:RichTextFormatter /> <!--<markDown:MarkDownFormatter />--> <!--<local:CustomFormatter />--> </controls:TextToolbar.Formatter> </controls:TextToolbar> ... ```
2 parents 6a05a3c + 622c186 commit 609430a

File tree

72 files changed

+1618
-517
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+1618
-517
lines changed

Microsoft.Toolkit.Uwp.SampleApp/Microsoft.Toolkit.Uwp.SampleApp.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1557,6 +1557,10 @@
15571557
<Project>{cb444381-18ba-4a51-bb32-3a498bcc1e99}</Project>
15581558
<Name>Microsoft.Toolkit.Uwp.UI.Controls.Layout</Name>
15591559
</ProjectReference>
1560+
<ProjectReference Include="..\Microsoft.Toolkit.Uwp.UI.Controls.Markdown\Microsoft.Toolkit.Uwp.UI.Controls.Markdown.csproj">
1561+
<Project>{6fedf199-b052-49dd-8f3e-2a9224998e0f}</Project>
1562+
<Name>Microsoft.Toolkit.Uwp.UI.Controls.Markdown</Name>
1563+
</ProjectReference>
15601564
<ProjectReference Include="..\Microsoft.Toolkit.Uwp.UI.Controls\Microsoft.Toolkit.Uwp.UI.Controls.csproj">
15611565
<Project>{e9faabfb-d726-42c1-83c1-cb46a29fea81}</Project>
15621566
<Name>Microsoft.Toolkit.Uwp.UI.Controls</Name>

Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,18 @@ private static Type LookForTypeByName(string typeName)
727727
}
728728
}
729729

730+
// Search in Microsoft.Toolkit.Uwp.UI.Controls.Markdown
731+
var markdownTextBlockType = typeof(MarkdownTextBlock);
732+
assembly = markdownTextBlockType.GetTypeInfo().Assembly;
733+
734+
foreach (var typeInfo in assembly.ExportedTypes)
735+
{
736+
if (typeInfo.Name == typeName)
737+
{
738+
return typeInfo;
739+
}
740+
}
741+
730742
return null;
731743
}
732744

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/EnumValuesExtensionPage.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System;
6-
using Windows.UI;
6+
using Microsoft.Toolkit.Uwp.SampleApp.Enums;
77
using Microsoft.Toolkit.Uwp.UI.Extensions;
8+
using Windows.UI;
89
using Windows.UI.Xaml;
910
using Windows.UI.Xaml.Data;
10-
using Microsoft.Toolkit.Uwp.SampleApp.Enums;
1111

1212
namespace Microsoft.Toolkit.Uwp.SampleApp.SamplePages
1313
{

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/InAppNotification/InAppNotificationPage.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5-
using Microsoft.Toolkit.Uwp.UI.Controls;
6-
using Microsoft.Toolkit.Uwp.UI.Extensions;
75
using System;
86
using System.Collections.Generic;
97
using System.Windows.Input;
8+
using Microsoft.Toolkit.Uwp.UI.Controls;
9+
using Microsoft.Toolkit.Uwp.UI.Extensions;
1010
using Windows.UI.Xaml;
1111
using Windows.UI.Xaml.Controls;
1212

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/MarkdownParser/MarkdownParserPage.xaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
x:Class="Microsoft.Toolkit.Uwp.SampleApp.SamplePages.MarkdownParserPage"
33
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5-
xmlns:local="using:Microsoft.Toolkit.Uwp.SampleApp.SamplePages.MarkdownParser"
65
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
76
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
87
mc:Ignorable="d">

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/TextToolbar/SampleFormatter.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ namespace Microsoft.Toolkit.Uwp.SampleApp.SamplePages.TextToolbarSamples
1111
{
1212
public class SampleFormatter : Formatter
1313
{
14-
public SampleFormatter(TextToolbar model)
15-
: base(model)
14+
public override void SetModel(TextToolbar model)
1615
{
16+
base.SetModel(model);
17+
1718
CommonButtons = new CommonButtons(model);
1819
}
1920

@@ -31,6 +32,6 @@ public override ButtonMap DefaultButtons
3132
}
3233
}
3334

34-
private CommonButtons CommonButtons { get; }
35+
private CommonButtons CommonButtons { get; set; }
3536
}
3637
}

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/TextToolbar/TextToolbar.bind

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,24 @@
33
xmlns:common="using:Microsoft.Toolkit.Uwp.SampleApp.Common"
44
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
55
xmlns:converters="using:Microsoft.Toolkit.Uwp.UI.Converters"
6+
xmlns:markDown="using:Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats.MarkDown"
7+
xmlns:richText="using:Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats.RichText"
8+
xmlns:textToolbarSamples="using:Microsoft.Toolkit.Uwp.SampleApp.SamplePages.TextToolbarSamples"
69
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
710
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
811
xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,7)"
912
mc:Ignorable="d">
1013

1114
<Page.Resources>
12-
<converters:ToolbarFormatActiveConverter x:Key="IsFormatMarkdown"
13-
Format="MarkDown" />
15+
<converters:TypeToObjectConverter x:Key="IsMarkdownFormatter"
16+
Type="markDown:MarkDownFormatter">
17+
<converters:TypeToObjectConverter.TrueValue>
18+
<Visibility>Visible</Visibility>
19+
</converters:TypeToObjectConverter.TrueValue>
20+
<converters:TypeToObjectConverter.FalseValue>
21+
<Visibility>Collapsed</Visibility>
22+
</converters:TypeToObjectConverter.FalseValue>
23+
</converters:TypeToObjectConverter>
1424
</Page.Resources>
1525

1626
<Grid x:Name="MainGrid"
@@ -22,9 +32,15 @@
2232
<controls:TextToolbar x:Name="Toolbar"
2333
Editor="{Binding ElementName=EditZone}"
2434
IsEnabled="@[IsEnabled:Bool:True]"
25-
Format="@[Format:Enum:Format.RichText]@"
2635
UseURIChecker="@[UseURIChecker:Bool:True]"
27-
Background="#4C4F4F4F" />
36+
Background="#4C4F4F4F">
37+
<controls:TextToolbar.Formatter>
38+
<!-- Choose one -->
39+
<richText:RichTextFormatter />
40+
<!--<markDown:MarkDownFormatter />-->
41+
<!--<textToolbarSamples:SampleFormatter />-->
42+
</controls:TextToolbar.Formatter>
43+
</controls:TextToolbar>
2844

2945
<ScrollViewer Grid.Row="1">
3046
<Grid>
@@ -46,7 +62,7 @@
4662
<Grid x:Name="MD"
4763
Grid.Row="1"
4864
Margin="0, 16"
49-
Visibility="{Binding Format, ElementName=Toolbar, Mode=OneWay, Converter={StaticResource IsFormatMarkdown}}">
65+
Visibility="{Binding Formatter, ElementName=Toolbar, Mode=OneWay, Converter={StaticResource IsMarkdownFormatter}}">
5066
<Grid.RowDefinitions>
5167
<RowDefinition Height="Auto" />
5268
<RowDefinition />

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/TextToolbar/TextToolbarCode.bind

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ private void EditZone_TextChanged(object sender, Windows.UI.Xaml.RoutedEventArgs
1818

1919
private void UseCustomFormatter()
2020
{
21-
var formatter = new SampleFormatter(Toolbar);
22-
Toolbar.Format = UI.Controls.TextToolbarFormats.Format.Custom;
23-
Toolbar.Formatter = formatter;
21+
Toolbar.Formatter = new SampleFormatter();
2422
}
2523

2624
private int DemoCounter { get; set; } = 0;

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/TextToolbar/TextToolbarPage.xaml

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,41 @@
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
55
xmlns:converters="using:Microsoft.Toolkit.Uwp.UI.Converters"
6+
xmlns:markDown="using:Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats.MarkDown"
7+
xmlns:richText="using:Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats.RichText"
8+
xmlns:textToolbarSamples="using:Microsoft.Toolkit.Uwp.SampleApp.SamplePages.TextToolbarSamples"
69
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
710
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
811
mc:Ignorable="d">
912

1013
<Page.Resources>
11-
<converters:ToolbarFormatActiveConverter x:Key="IsFormatMarkdown"
12-
Format="MarkDown" />
14+
<converters:TypeToObjectConverter x:Key="IsMarkdownFormatter"
15+
Type="markDown:MarkDownFormatter">
16+
<converters:TypeToObjectConverter.TrueValue>
17+
<Visibility>Visible</Visibility>
18+
</converters:TypeToObjectConverter.TrueValue>
19+
<converters:TypeToObjectConverter.FalseValue>
20+
<Visibility>Collapsed</Visibility>
21+
</converters:TypeToObjectConverter.FalseValue>
22+
</converters:TypeToObjectConverter>
1323
</Page.Resources>
1424

1525
<Grid>
16-
<controls:TextToolbar />
26+
<controls:TextToolbar>
27+
<controls:TextToolbar.Formatter>
28+
<richText:RichTextFormatter />
29+
</controls:TextToolbar.Formatter>
30+
</controls:TextToolbar>
31+
<controls:TextToolbar>
32+
<controls:TextToolbar.Formatter>
33+
<markDown:MarkDownFormatter />
34+
</controls:TextToolbar.Formatter>
35+
</controls:TextToolbar>
36+
<controls:TextToolbar>
37+
<controls:TextToolbar.Formatter>
38+
<textToolbarSamples:SampleFormatter />
39+
</controls:TextToolbar.Formatter>
40+
</controls:TextToolbar>
1741
<RichEditBox />
1842
<controls:MarkdownTextBlock />
1943
</Grid>

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/TextToolbar/TextToolbarPage.xaml.cs

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System;
6-
using System.Collections.Generic;
7-
using System.Threading.Tasks;
8-
using Microsoft.Toolkit.Uwp.SampleApp.Models;
96
using Microsoft.Toolkit.Uwp.SampleApp.SamplePages.TextToolbarSamples;
107
using Microsoft.Toolkit.Uwp.UI.Controls;
118
using Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarButtons;
12-
using Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats;
139
using Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats.MarkDown;
10+
using Microsoft.Toolkit.Uwp.UI.Controls.TextToolbarFormats.RichText;
1411
using Microsoft.Toolkit.Uwp.UI.Extensions;
1512
using Windows.System;
1613
using Windows.UI.Xaml;
@@ -43,11 +40,6 @@ public void OnXamlRendered(FrameworkElement control)
4340
_previewer = previewer;
4441
_previewer.LinkClicked += Previewer_LinkClicked;
4542
}
46-
47-
if (ToolbarFormat != null && (Format)ToolbarFormat.Value == Format.Custom)
48-
{
49-
UseCustomFormatter();
50-
}
5143
}
5244

5345
private void Load()
@@ -66,6 +58,16 @@ private void Load()
6658
AddCustomButton();
6759
});
6860

61+
SampleController.Current.RegisterNewCommand("Use RichText Formatter", (sender, args) =>
62+
{
63+
UseRichTextFormatter();
64+
});
65+
66+
SampleController.Current.RegisterNewCommand("Use MarkDown Formatter", (sender, args) =>
67+
{
68+
UseMarkDownFormatter();
69+
});
70+
6971
SampleController.Current.RegisterNewCommand("Use Custom Formatter", (sender, args) =>
7072
{
7173
UseCustomFormatter();
@@ -97,16 +99,34 @@ private void ResetLayout()
9799
}
98100
}
99101

102+
private void UseRichTextFormatter()
103+
{
104+
if (_toolbar == null)
105+
{
106+
return;
107+
}
108+
109+
_toolbar.Formatter = new RichTextFormatter();
110+
}
111+
112+
private void UseMarkDownFormatter()
113+
{
114+
if (_toolbar == null)
115+
{
116+
return;
117+
}
118+
119+
_toolbar.Formatter = new MarkDownFormatter();
120+
}
121+
100122
private void UseCustomFormatter()
101123
{
102-
if (_toolbar == null || ToolbarFormat == null)
124+
if (_toolbar == null)
103125
{
104126
return;
105127
}
106128

107-
var formatter = new SampleFormatter(_toolbar);
108-
ToolbarFormat.Value = Format.Custom;
109-
_toolbar.Formatter = formatter;
129+
_toolbar.Formatter = new SampleFormatter();
110130
}
111131

112132
private void AddCustomButton()
@@ -179,21 +199,5 @@ private void EditZone_TextChanged(object sender, RoutedEventArgs e)
179199
}
180200

181201
private int DemoCounter { get; set; } = 0;
182-
183-
private ValueHolder ToolbarFormat
184-
{
185-
get
186-
{
187-
if (DataContext is Sample sample)
188-
{
189-
if (sample.PropertyDescriptor.Expando is IDictionary<string, object> properties && properties.TryGetValue("Format", out var format))
190-
{
191-
return format as ValueHolder;
192-
}
193-
}
194-
195-
return null;
196-
}
197-
}
198202
}
199-
}
203+
}

0 commit comments

Comments
 (0)