diff --git a/Library/Widgets/PrintLibraryWidget.cs b/Library/Widgets/PrintLibraryWidget.cs index 8e5c94aef..73c823a0b 100644 --- a/Library/Widgets/PrintLibraryWidget.cs +++ b/Library/Widgets/PrintLibraryWidget.cs @@ -33,7 +33,7 @@ using System.IO; using System.Linq; #if !__ANDROID__ -using Markdig.Wpf; +using Markdig.Agg; #endif using MatterHackers.Agg; diff --git a/MatterControl.csproj b/MatterControl.csproj index 3bfb50245..4b2b0b5a7 100644 --- a/MatterControl.csproj +++ b/MatterControl.csproj @@ -449,6 +449,7 @@ + diff --git a/PartPreviewWindow/SelectedObjectPanel.cs b/PartPreviewWindow/SelectedObjectPanel.cs index 26902b12d..6aae0ef82 100644 --- a/PartPreviewWindow/SelectedObjectPanel.cs +++ b/PartPreviewWindow/SelectedObjectPanel.cs @@ -151,8 +151,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow }; applyButton.Click += (s, e) => { - scene.SelectedItem = null; this.item.Apply(view3DWidget.Scene.UndoBuffer); + scene.SelectedItem = null; }; scene.SelectionChanged += (s, e) => applyButton.Enabled = scene.SelectedItem?.CanApply == true; toolbar.AddChild(applyButton); @@ -165,8 +165,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow }; removeButton.Click += (s, e) => { - scene.SelectedItem = null; this.item.Remove(view3DWidget.Scene.UndoBuffer); + scene.SelectedItem = null; }; scene.SelectionChanged += (s, e) => removeButton.Enabled = scene.SelectedItem?.CanRemove == true; toolbar.AddChild(removeButton); diff --git a/SetupWizard/DesignSpaceHelp.cs b/SetupWizard/DesignSpaceHelp.cs index 21fe13a4f..ad26e9f59 100644 --- a/SetupWizard/DesignSpaceHelp.cs +++ b/SetupWizard/DesignSpaceHelp.cs @@ -30,6 +30,7 @@ either expressed or implied, of the FreeBSD Project. using System; using System.Collections.Generic; using System.Linq; +using Markdig.Agg; using MatterHackers.Agg; using MatterHackers.Agg.Image; using MatterHackers.Agg.UI; @@ -265,22 +266,7 @@ namespace MatterHackers.MatterControl Padding = theme.DefaultContainerPadding }; - var imageSequenceWidget = new ImageSequenceWidget(300, 200) - { - HAnchor = HAnchor.Stretch, - VAnchor = VAnchor.Stretch, - ImageSequence = sequence, - BackgroundColor = theme.MinimalShade - }; - rightPanel.AddChild(imageSequenceWidget); - - var title = new WrappedTextWidget("title", pointSize: 24, textColor: theme.Colors.PrimaryTextColor) - { - Margin = new BorderDouble(10, 4, 10, 10) - }; - rightPanel.AddChild(title); - - var description = new WrappedTextWidget("details", pointSize: theme.DefaultFontSize, textColor: theme.Colors.PrimaryTextColor) + var description = new MarkdownWidget(new Uri("https://raw.githubusercontent.com/lunet-io/markdig/master/")) { Margin = new BorderDouble(10, 4, 10, 10), }; @@ -295,11 +281,7 @@ namespace MatterHackers.MatterControl { if (treeView.SelectedNode.Tag is GuideAsset guide) { - title.Text = guide.Title; - description.Text = guide.Description; - imageSequenceWidget.ImageSequence = ApplicationController.Instance.GetProcessingSequence(Color.Black); - - ApplicationController.Instance.DownloadToImageSequenceAsync(imageSequenceWidget.ImageSequence, guide.AnimationUri); + description.Markdown = guide.Description; } }; diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index ea94ea134..b22228763 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit ea94ea134352c58ab662b0f9162f107ef297abd5 +Subproject commit b22228763c87cb90dab2055a1f0a42b9f1597fc5 diff --git a/Utilities/MarkdigAgg/AggObjectRenderer.cs b/Utilities/MarkdigAgg/AggObjectRenderer.cs index baea9ed91..a6e15b7b0 100644 --- a/Utilities/MarkdigAgg/AggObjectRenderer.cs +++ b/Utilities/MarkdigAgg/AggObjectRenderer.cs @@ -7,7 +7,7 @@ using Markdig.Syntax; namespace Markdig.Renderers.Agg { /// - /// A base class for WPF rendering and Markdown objects. + /// A base class for Agg rendering and Markdown objects. /// /// The type of the object. /// diff --git a/Utilities/MarkdigAgg/Inlines/AggAutolinkInlineRenderer.cs b/Utilities/MarkdigAgg/Inlines/AggAutolinkInlineRenderer.cs index e70817651..3e764e589 100644 --- a/Utilities/MarkdigAgg/Inlines/AggAutolinkInlineRenderer.cs +++ b/Utilities/MarkdigAgg/Inlines/AggAutolinkInlineRenderer.cs @@ -11,9 +11,9 @@ namespace Markdig.Renderers.Agg.Inlines public class AutoLinkInlineX : AutoFit{ } /// - /// A WPF renderer for a . + /// A Agg renderer for a . /// - /// + /// public class AggAutolinkInlineRenderer : AggObjectRenderer { /// diff --git a/Utilities/MarkdigAgg/Inlines/AggDelimiterInlineRenderer.cs b/Utilities/MarkdigAgg/Inlines/AggDelimiterInlineRenderer.cs index fd757134f..a8d26de20 100644 --- a/Utilities/MarkdigAgg/Inlines/AggDelimiterInlineRenderer.cs +++ b/Utilities/MarkdigAgg/Inlines/AggDelimiterInlineRenderer.cs @@ -10,9 +10,9 @@ namespace Markdig.Renderers.Agg.Inlines public class DelimiterInlineX : AutoFit{ } /// - /// A WPF renderer for a . + /// A Agg renderer for a . /// - /// + /// public class AggDelimiterInlineRenderer : AggObjectRenderer { /// diff --git a/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs b/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs index bff2cf594..bb4942c17 100644 --- a/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs +++ b/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs @@ -28,7 +28,7 @@ namespace Markdig.Renderers.Agg.Inlines } /// - /// A WPF renderer for an . + /// A Agg renderer for an . /// /// public class AggEmphasisInlineRenderer : AggObjectRenderer diff --git a/Utilities/MarkdigAgg/Inlines/AggLineBreakInlineRenderer.cs b/Utilities/MarkdigAgg/Inlines/AggLineBreakInlineRenderer.cs index f0ef610c6..ba2ec1e00 100644 --- a/Utilities/MarkdigAgg/Inlines/AggLineBreakInlineRenderer.cs +++ b/Utilities/MarkdigAgg/Inlines/AggLineBreakInlineRenderer.cs @@ -11,9 +11,9 @@ namespace Markdig.Renderers.Agg.Inlines public class LineBreakSoftX : AutoFit{ } /// - /// A WPF renderer for a . + /// A Agg renderer for a . /// - /// + /// public class AggLineBreakInlineRenderer : AggObjectRenderer { /// diff --git a/Utilities/MarkdigAgg/Inlines/AggLinkInlineRenderer.cs b/Utilities/MarkdigAgg/Inlines/AggLinkInlineRenderer.cs index 858930677..1b949f757 100644 --- a/Utilities/MarkdigAgg/Inlines/AggLinkInlineRenderer.cs +++ b/Utilities/MarkdigAgg/Inlines/AggLinkInlineRenderer.cs @@ -128,9 +128,9 @@ namespace Markdig.Renderers.Agg.Inlines } /// - /// A WPF renderer for a . + /// A Agg renderer for a . /// - /// + /// public class AggLinkInlineRenderer : AggObjectRenderer { /// diff --git a/Utilities/MarkdigAgg/Inlines/AggLiteralInlineRenderer.cs b/Utilities/MarkdigAgg/Inlines/AggLiteralInlineRenderer.cs index 5b2b8f598..67efb2528 100644 --- a/Utilities/MarkdigAgg/Inlines/AggLiteralInlineRenderer.cs +++ b/Utilities/MarkdigAgg/Inlines/AggLiteralInlineRenderer.cs @@ -11,9 +11,9 @@ namespace Markdig.Renderers.Agg.Inlines public class LiteralInlineX : AutoFit{ } /// - /// A WPF renderer for a . + /// A Agg renderer for a . /// - /// + /// public class AggLiteralInlineRenderer : AggObjectRenderer { /// diff --git a/Utilities/MarkdigAgg/MarkdownExtensions.cs b/Utilities/MarkdigAgg/MarkdownExtensions.cs index 44eb838b0..84b4e2133 100644 --- a/Utilities/MarkdigAgg/MarkdownExtensions.cs +++ b/Utilities/MarkdigAgg/MarkdownExtensions.cs @@ -5,7 +5,7 @@ using System; // ReSharper disable once CheckNamespace -namespace Markdig.Wpf +namespace Markdig.Agg { /// /// Provides extension methods for to enable several Markdown extensions. @@ -13,7 +13,7 @@ namespace Markdig.Wpf public static class MarkdownExtensions { /// - /// Uses all extensions supported by Markdig.Wpf. + /// Uses all extensions supported by Markdig.Agg. /// /// The pipeline. /// The modified pipeline diff --git a/Utilities/MarkdigAgg/MarkdownPage.cs b/Utilities/MarkdigAgg/MarkdownPage.cs index d9a4fc230..d775bf0f1 100644 --- a/Utilities/MarkdigAgg/MarkdownPage.cs +++ b/Utilities/MarkdigAgg/MarkdownPage.cs @@ -9,99 +9,15 @@ using Markdig.Renderers; using MatterHackers.Agg.UI; using MatterHackers.MatterControl; -namespace Markdig.Wpf +namespace Markdig.Agg { public class MarkdownPage : DialogPage { - private static readonly MarkdownPipeline DefaultPipeline = new MarkdownPipelineBuilder().UseSupportedExtensions().Build(); - - public MarkdownPipeline MarkdownPipeline { get; set; } = new MarkdownPipelineBuilder().UseSupportedExtensions().Build(); - - private string _markDownText = null; - private MarkdownPipeline _pipeLine = null; - private Uri uri; - private FlowLayoutWidget contentPanel; - public MarkdownPage() { this.WindowTitle = this.HeaderText = "Markdown Tests"; - - uri = new Uri("https://raw.githubusercontent.com/lunet-io/markdig/master/readme.md"); - - var webClient = new WebClient(); - - var scrollableWidget = new ScrollableWidget(true) - { - HAnchor = HAnchor.Stretch, - VAnchor = VAnchor.Stretch - }; - scrollableWidget.ScrollArea.HAnchor = HAnchor.Stretch; - scrollableWidget.ScrollArea.VAnchor = VAnchor.Fit; - contentRow.AddChild(scrollableWidget); - - contentPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) - { - HAnchor = HAnchor.Stretch, - VAnchor = VAnchor.Fit - }; - - scrollableWidget.AddChild(contentPanel); - - this.Markdown = webClient.DownloadString(uri); - } - - /// - /// Gets or sets the markdown to display. - /// - public string Markdown - { - get => _markDownText; - set - { - if (_markDownText != value) - { - _markDownText = value; - this.RefreshDocument(); - } - } - } - - /// - /// Gets or sets the markdown pipeline to use. - /// - public MarkdownPipeline Pipeline - { - get => _pipeLine ?? DefaultPipeline; - set - { - if (_pipeLine != value) - { - _pipeLine = value; - } - } - } - - private void RefreshDocument() - { - if (!string.IsNullOrEmpty(this.Markdown)) - { - - var pipeline = Pipeline ?? DefaultPipeline; - - contentPanel.CloseAllChildren(); - - pipeline = pipeline ?? new MarkdownPipelineBuilder().Build(); - - var renderer = new AggRenderer(contentPanel) - { - BaseUri = uri - }; - - pipeline.Setup(renderer); - - var document = Markdig.Markdown.Parse(this.Markdown, pipeline); - renderer.Render(document); - } + contentRow.AddChild(new MarkdownWidget(new Uri("https://raw.githubusercontent.com/lunet-io/markdig/master/"), + new Uri("https://raw.githubusercontent.com/lunet-io/markdig/master/readme.md"))); } } } diff --git a/Utilities/MarkdigAgg/MarkdownWidget.cs b/Utilities/MarkdigAgg/MarkdownWidget.cs new file mode 100644 index 000000000..71bf93c39 --- /dev/null +++ b/Utilities/MarkdigAgg/MarkdownWidget.cs @@ -0,0 +1,115 @@ +// Copyright (c) 2016-2017 Nicolas Musset. All rights reserved. +// This file is licensed under the MIT license. +// See the LICENSE.md file in the project root for more information. + +using System; +using System.IO; +using System.Net; +using Markdig.Renderers; +using MatterHackers.Agg.UI; +using MatterHackers.MatterControl; +using MatterHackers.VectorMath; + +namespace Markdig.Agg +{ + public class MarkdownWidget : ScrollableWidget + { + private static readonly MarkdownPipeline DefaultPipeline = new MarkdownPipelineBuilder().UseSupportedExtensions().Build(); + + private string _markDownText = null; + private MarkdownPipeline _pipeLine = null; + private Uri baseUri; + private FlowLayoutWidget contentPanel; + + public MarkdownWidget(Uri baseUri, bool scrollContent = true) + : base(scrollContent) + { + this.baseUri = baseUri; + + this.HAnchor = HAnchor.Stretch; + this.ScrollArea.HAnchor = HAnchor.Stretch; + + if (scrollContent) + { + this.VAnchor = VAnchor.Stretch; + this.ScrollArea.VAnchor = VAnchor.Fit; + } + else + { + this.VAnchor = VAnchor.Fit; + this.ScrollArea.VAnchor = VAnchor.Fit; + } + + contentPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) + { + HAnchor = HAnchor.Stretch, + VAnchor = VAnchor.Fit + }; + + this.AddChild(contentPanel); + } + + public MarkdownWidget(Uri baseUri, Uri contentUri, bool scrollContent = true) + : this(baseUri, scrollContent) + { + var webClient = new WebClient(); + this.Markdown = webClient.DownloadString(contentUri); + } + + /// + /// Gets or sets the markdown to display. + /// + public string Markdown + { + get => _markDownText; + set + { + if (_markDownText != value) + { + _markDownText = value; + this.RefreshDocument(); + this.Width = 10; + this.ScrollPositionFromTop = Vector2.Zero; + } + } + } + + /// + /// Gets or sets the markdown pipeline to use. + /// + public MarkdownPipeline Pipeline + { + get => _pipeLine ?? DefaultPipeline; + set + { + if (_pipeLine != value) + { + _pipeLine = value; + } + } + } + + private void RefreshDocument() + { + if (!string.IsNullOrEmpty(this.Markdown)) + { + var pipeline = Pipeline; + + contentPanel.CloseAllChildren(); + + // why do we check the pipeline here? + pipeline = pipeline ?? new MarkdownPipelineBuilder().Build(); + + var renderer = new AggRenderer(contentPanel) + { + BaseUri = baseUri + }; + + pipeline.Setup(renderer); + + var document = Markdig.Markdown.Parse(this.Markdown, pipeline); + renderer.Render(document); + } + } + } +}