From 141007f50d5c41554a4061623e102f58d9c97ac4 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Jun 2018 10:21:01 -0700 Subject: [PATCH 1/3] Use theme text colors in Markdown text controls - Issue MatterHackers/MCCentral#3725 --- Utilities/MarkdigAgg/AggRenderer.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Utilities/MarkdigAgg/AggRenderer.cs b/Utilities/MarkdigAgg/AggRenderer.cs index 8af2099bb..4f990d61d 100644 --- a/Utilities/MarkdigAgg/AggRenderer.cs +++ b/Utilities/MarkdigAgg/AggRenderer.cs @@ -10,16 +10,15 @@ using Markdig.Renderers.Agg; using Markdig.Renderers.Agg.Inlines; using Markdig.Syntax; using MatterHackers.Agg; -using MatterHackers.Agg.Image; -using MatterHackers.Agg.Platform; using MatterHackers.Agg.UI; +using MatterHackers.MatterControl; namespace Markdig.Renderers { public class TextWordX : TextWidget { public TextWordX() - : base("", pointSize: 10, textColor: Color.Black) + : base("", pointSize: 10, textColor: ApplicationController.Instance.Theme.Colors.PrimaryTextColor) { this.AutoExpandBoundsToText = true; } From 847bdf73ddda0f312fc61202c3ec67b1cf77727e Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Jun 2018 10:21:46 -0700 Subject: [PATCH 2/3] Add support for Markdown strike-through - Issue MatterHackers/MCCentral#3727 --- .../Inlines/AggEmphasisInlineRenderer.cs | 29 +++++++++++++++---- Utilities/MarkdigAgg/MarkdownWidget.cs | 2 +- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs b/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs index bb4942c17..4fc29dd8b 100644 --- a/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs +++ b/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs @@ -10,17 +10,36 @@ namespace Markdig.Renderers.Agg.Inlines { public class EmphasisInlineX : FlowLayoutWidget { - public EmphasisInlineX() + private char delimiter; + + public EmphasisInlineX(char delimiter) { - HAnchor = HAnchor.Fit; - VAnchor = VAnchor.Fit; + this.HAnchor = HAnchor.Fit; + this.VAnchor = VAnchor.Fit; + + this.delimiter = delimiter; } public override void AddChild(GuiWidget childToAdd, int indexInChildrenList = -1) { if (childToAdd is TextWidget textWidget) { - textWidget.Bold = true; + + switch (delimiter) + { + case '~': + textWidget.StrikeThrough = true; + break; + case '*': + default: + textWidget.Bold = true; + break; + + // case '_': Italic(); + // case '^': Styles.SuperscriptStyleKey + // case '+': Styles.InsertedStyleKey + // case '=': Styles.MarkedStyleKey + } } base.AddChild(childToAdd, indexInChildrenList); @@ -63,7 +82,7 @@ namespace Markdig.Renderers.Agg.Inlines if (true) //span != null) { - renderer.Push(new EmphasisInlineX()); + renderer.Push(new EmphasisInlineX(obj.DelimiterChar)); renderer.WriteChildren(obj); renderer.Pop(); } diff --git a/Utilities/MarkdigAgg/MarkdownWidget.cs b/Utilities/MarkdigAgg/MarkdownWidget.cs index 71bf93c39..dac581e6b 100644 --- a/Utilities/MarkdigAgg/MarkdownWidget.cs +++ b/Utilities/MarkdigAgg/MarkdownWidget.cs @@ -53,7 +53,7 @@ namespace Markdig.Agg : this(baseUri, scrollContent) { var webClient = new WebClient(); - this.Markdown = webClient.DownloadString(contentUri); + this.Markdown = "~~Strike-through test text~~ \r\n" + webClient.DownloadString(contentUri); } /// From 20b612f9e09644b4b42ad1a2fd7fb098eb6cdbc0 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 23 Jun 2018 10:24:09 -0700 Subject: [PATCH 3/3] Add seemingly functional Markdown link support - Issue MatterHackers/MCCentral#3726 --- Submodules/agg-sharp | 2 +- .../Inlines/AggLinkInlineRenderer.cs | 42 ++++++++++++++++--- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index b22228763..f38d68ae2 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit b22228763c87cb90dab2055a1f0a42b9f1597fc5 +Subproject commit f38d68ae2c71343c909b43c7a497ed8bf1a7d23a diff --git a/Utilities/MarkdigAgg/Inlines/AggLinkInlineRenderer.cs b/Utilities/MarkdigAgg/Inlines/AggLinkInlineRenderer.cs index 1b949f757..5f0c89edb 100644 --- a/Utilities/MarkdigAgg/Inlines/AggLinkInlineRenderer.cs +++ b/Utilities/MarkdigAgg/Inlines/AggLinkInlineRenderer.cs @@ -18,14 +18,43 @@ namespace Markdig.Renderers.Agg.Inlines { public class TextLinkX : FlowLayoutWidget { - public TextLinkX() + private LinkInline linkInline; + + public TextLinkX(LinkInline linkInline) { - HAnchor = HAnchor.Fit; - VAnchor = VAnchor.Fit; + this.HAnchor = HAnchor.Fit; + this.VAnchor = VAnchor.Fit; + this.Cursor = Cursors.Hand; + this.linkInline = linkInline; + + } + + public override void OnClick(MouseEventArgs mouseEvent) + { + if (linkInline.Url.StartsWith("http", StringComparison.OrdinalIgnoreCase)) + { + ApplicationController.Instance.LaunchBrowser(linkInline.Url); + } + else + { + // Inline link? + Debugger.Break(); + } + + base.OnClick(mouseEvent); } public override void AddChild(GuiWidget childToAdd, int indexInChildrenList = -1) { + if (childToAdd is TextWidget textWidget) + { + // Mark with underline if any character data exists + textWidget.Underline = textWidget.Text.Trim().Length > 0; + } + + // Allow link parent to own mouse events + childToAdd.Selectable = false; + base.AddChild(childToAdd, indexInChildrenList); } } @@ -36,8 +65,9 @@ namespace Markdig.Renderers.Agg.Inlines public ImageLinkSimpleX(string url) { - HAnchor = HAnchor.Fit; - VAnchor = VAnchor.Fit; + this.HAnchor = HAnchor.Fit; + this.VAnchor = VAnchor.Fit; + this.Selectable = false; var imageBuffer = new ImageBuffer(icon); var imageWidget = new ImageWidget(imageBuffer); @@ -154,7 +184,7 @@ namespace Markdig.Renderers.Agg.Inlines } else { - renderer.Push(new TextLinkX()); // hyperlink); + renderer.Push(new TextLinkX(link)); // hyperlink); renderer.WriteChildren(link); renderer.Pop(); }