commit
ed7dc9ce99
15 changed files with 140 additions and 126 deletions
|
|
@ -33,7 +33,7 @@ using System.IO;
|
|||
using System.Linq;
|
||||
|
||||
#if !__ANDROID__
|
||||
using Markdig.Wpf;
|
||||
using Markdig.Agg;
|
||||
#endif
|
||||
|
||||
using MatterHackers.Agg;
|
||||
|
|
|
|||
|
|
@ -449,6 +449,7 @@
|
|||
<Compile Include="Utilities\LimitCallFrequency.cs" />
|
||||
<Compile Include="Utilities\MarkdigAgg\MarkdownExtensions.cs" />
|
||||
<Compile Include="Utilities\MarkdigAgg\MarkdownPage.cs" />
|
||||
<Compile Include="Utilities\MarkdigAgg\MarkdownWidget.cs" />
|
||||
<Compile Include="Utilities\SelectedListItems.cs" />
|
||||
<Compile Include="EeProm\EePromMarlinSettings.cs" />
|
||||
<Compile Include="History\PrintHistoryListItem.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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit ea94ea134352c58ab662b0f9162f107ef297abd5
|
||||
Subproject commit b22228763c87cb90dab2055a1f0a42b9f1597fc5
|
||||
|
|
@ -7,7 +7,7 @@ using Markdig.Syntax;
|
|||
namespace Markdig.Renderers.Agg
|
||||
{
|
||||
/// <summary>
|
||||
/// A base class for WPF rendering <see cref="Block"/> and <see cref="Markdig.Syntax.Inlines.Inline"/> Markdown objects.
|
||||
/// A base class for Agg rendering <see cref="Block"/> and <see cref="Markdig.Syntax.Inlines.Inline"/> Markdown objects.
|
||||
/// </summary>
|
||||
/// <typeparam name="TObject">The type of the object.</typeparam>
|
||||
/// <seealso cref="Markdig.Renderers.IMarkdownObjectRenderer" />
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ namespace Markdig.Renderers.Agg.Inlines
|
|||
public class AutoLinkInlineX : AutoFit{ }
|
||||
|
||||
/// <summary>
|
||||
/// A WPF renderer for a <see cref="AutolinkInline"/>.
|
||||
/// A Agg renderer for a <see cref="AutolinkInline"/>.
|
||||
/// </summary>
|
||||
/// <seealso cref="Markdig.Renderers.Agg.WpfObjectRenderer{Markdig.Syntax.Inlines.AutolinkInline}" />
|
||||
/// <seealso cref="Markdig.Renderers.Agg.AggObjectRenderer{Markdig.Syntax.Inlines.AutolinkInline}" />
|
||||
public class AggAutolinkInlineRenderer : AggObjectRenderer<AutolinkInline>
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ namespace Markdig.Renderers.Agg.Inlines
|
|||
public class DelimiterInlineX : AutoFit{ }
|
||||
|
||||
/// <summary>
|
||||
/// A WPF renderer for a <see cref="DelimiterInline"/>.
|
||||
/// A Agg renderer for a <see cref="DelimiterInline"/>.
|
||||
/// </summary>
|
||||
/// <seealso cref="Markdig.Renderers.Agg.WpfObjectRenderer{Markdig.Syntax.Inlines.DelimiterInline}" />
|
||||
/// <seealso cref="Markdig.Renderers.Agg.AggObjectRenderer{Markdig.Syntax.Inlines.DelimiterInline}" />
|
||||
public class AggDelimiterInlineRenderer : AggObjectRenderer<DelimiterInline>
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace Markdig.Renderers.Agg.Inlines
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// A WPF renderer for an <see cref="EmphasisInline"/>.
|
||||
/// A Agg renderer for an <see cref="EmphasisInline"/>.
|
||||
/// </summary>
|
||||
/// <seealso cref="EmphasisInline" />
|
||||
public class AggEmphasisInlineRenderer : AggObjectRenderer<EmphasisInline>
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ namespace Markdig.Renderers.Agg.Inlines
|
|||
public class LineBreakSoftX : AutoFit{ }
|
||||
|
||||
/// <summary>
|
||||
/// A WPF renderer for a <see cref="LineBreakInline"/>.
|
||||
/// A Agg renderer for a <see cref="LineBreakInline"/>.
|
||||
/// </summary>
|
||||
/// <seealso cref="Markdig.Renderers.Agg.WpfObjectRenderer{Markdig.Syntax.Inlines.LineBreakInline}" />
|
||||
/// <seealso cref="Markdig.Renderers.Agg.AggObjectRenderer{Markdig.Syntax.Inlines.LineBreakInline}" />
|
||||
public class AggLineBreakInlineRenderer : AggObjectRenderer<LineBreakInline>
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
|
|
|
|||
|
|
@ -128,9 +128,9 @@ namespace Markdig.Renderers.Agg.Inlines
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// A WPF renderer for a <see cref="LinkInline"/>.
|
||||
/// A Agg renderer for a <see cref="LinkInline"/>.
|
||||
/// </summary>
|
||||
/// <seealso cref="Markdig.Renderers.Agg.WpfObjectRenderer{Markdig.Syntax.Inlines.LinkInline}" />
|
||||
/// <seealso cref="Markdig.Renderers.Agg.AggObjectRenderer{Markdig.Syntax.Inlines.LinkInline}" />
|
||||
public class AggLinkInlineRenderer : AggObjectRenderer<LinkInline>
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ namespace Markdig.Renderers.Agg.Inlines
|
|||
public class LiteralInlineX : AutoFit{ }
|
||||
|
||||
/// <summary>
|
||||
/// A WPF renderer for a <see cref="LiteralInline"/>.
|
||||
/// A Agg renderer for a <see cref="LiteralInline"/>.
|
||||
/// </summary>
|
||||
/// <seealso cref="Markdig.Renderers.Agg.WpfObjectRenderer{Markdig.Syntax.Inlines.LiteralInline}" />
|
||||
/// <seealso cref="Markdig.Renderers.Agg.AggObjectRenderer{Markdig.Syntax.Inlines.LiteralInline}" />
|
||||
public class AggLiteralInlineRenderer : AggObjectRenderer<LiteralInline>
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
using System;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace Markdig.Wpf
|
||||
namespace Markdig.Agg
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides extension methods for <see cref="MarkdownPipeline"/> to enable several Markdown extensions.
|
||||
|
|
@ -13,7 +13,7 @@ namespace Markdig.Wpf
|
|||
public static class MarkdownExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Uses all extensions supported by <c>Markdig.Wpf</c>.
|
||||
/// Uses all extensions supported by <c>Markdig.Agg</c>.
|
||||
/// </summary>
|
||||
/// <param name="pipeline">The pipeline.</param>
|
||||
/// <returns>The modified pipeline</returns>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the markdown to display.
|
||||
/// </summary>
|
||||
public string Markdown
|
||||
{
|
||||
get => _markDownText;
|
||||
set
|
||||
{
|
||||
if (_markDownText != value)
|
||||
{
|
||||
_markDownText = value;
|
||||
this.RefreshDocument();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the markdown pipeline to use.
|
||||
/// </summary>
|
||||
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")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
115
Utilities/MarkdigAgg/MarkdownWidget.cs
Normal file
115
Utilities/MarkdigAgg/MarkdownWidget.cs
Normal file
|
|
@ -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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the markdown to display.
|
||||
/// </summary>
|
||||
public string Markdown
|
||||
{
|
||||
get => _markDownText;
|
||||
set
|
||||
{
|
||||
if (_markDownText != value)
|
||||
{
|
||||
_markDownText = value;
|
||||
this.RefreshDocument();
|
||||
this.Width = 10;
|
||||
this.ScrollPositionFromTop = Vector2.Zero;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the markdown pipeline to use.
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue