Version_04_Edi.zip
AvalonDock
AvalonEdit
Documentation
Architecture.aml
Code Completion.aml
Coordinate Systems.aml
Folding.aml
ICSharpCode.AvalonEdit.content
ICSharpCode.AvalonEdit.shfbproj
License.html
Media
NamespaceDependencies.png
RenderingPipeline.png
VisualTree.png
WelcomeScreenshot.png
Sample Application.aml
Syntax Highlighting.aml
Text Rendering.aml
Welcome.aml
GlobalAssemblyInfo.cs
ICSharpCode.AvalonEdit.Tests
ICSharpCode.AvalonEdit
Edi.sln
Edi
App.xaml
App.xaml.cs
Command
Converter
Edi.csproj
Images
App
DocTab
Lock-icon.png
Edit_Copy32.png
Edit_Cut32.png
Edit_Delete32.png
Edit_Find_Replace32.png
Edit_Find16.ico
Edit_Find32.png
Edit_Paste32.png
Edit_Redo32.png
Edit_Undo32.png
File_New32.png
File_Open32.png
File_Save_All32.png
File_Save16.png
File_Save32.png
File_Save64.png
Help_About32.png
Help_Hint32.png
ShowEnter32.png
ShowLineNumbers32.png
ShowSpaces32.png
ShowTab32.png
ShowWordWrap32.png
document.png
property-blue.png
Properties
View
ViewModel
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.AvalonEdit.Document;
namespace ICSharpCode.AvalonEdit.Snippets
{
/// <summary>
/// Creates a named anchor that can be accessed by other SnippetElements.
/// </summary>
public sealed class SnippetAnchorElement : SnippetElement
{
/// <summary>
/// Gets or sets the name of the anchor.
/// </summary>
public string Name { get; private set; }
/// <summary>
/// Creates a SnippetAnchorElement with the supplied name.
/// </summary>
public SnippetAnchorElement(string name)
{
this.Name = name;
}
/// <inheritdoc />
public override void Insert(InsertionContext context)
{
TextAnchor start = context.Document.CreateAnchor(context.InsertionPosition);
start.MovementType = AnchorMovementType.BeforeInsertion;
start.SurviveDeletion = true;
AnchorSegment segment = new AnchorSegment(start, start);
context.RegisterActiveElement(this, new AnchorElement(segment, Name, context));
}
}
/// <summary>
/// AnchorElement created by SnippetAnchorElement.
/// </summary>
public sealed class AnchorElement : IActiveElement
{
/// <inheritdoc />
public bool IsEditable {
get { return false; }
}
AnchorSegment segment;
InsertionContext context;
/// <inheritdoc />
public ISegment Segment {
get { return segment; }
}
/// <summary>
/// Creates a new AnchorElement.
/// </summary>
public AnchorElement(AnchorSegment segment, string name, InsertionContext context)
{
this.segment = segment;
this.context = context;
this.Name = name;
}
/// <summary>
/// Gets or sets the text at the anchor.
/// </summary>
public string Text {
get { return context.Document.GetText(segment); }
set {
int offset = segment.Offset;
int length = segment.Length;
context.Document.Replace(offset, length, value);
if (length == 0) {
// replacing an empty anchor segment with text won't enlarge it, so we have to recreate it
segment = new AnchorSegment(context.Document, offset, value.Length);
}
}
}
/// <summary>
/// Gets or sets the name of the anchor.
/// </summary>
public string Name { get; private set; }
/// <inheritdoc />
public void OnInsertionCompleted()
{
}
/// <inheritdoc />
public void Deactivate(SnippetEventArgs e)
{
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
The Windows Presentation Foundation (WPF) and C# are among my favorites and so I developed
Edi
and a few other projects on
GitHub. I am normally an algorithms and structure type but WPF has such interesting UI sides that I cannot help myself but get into it.
https://de.linkedin.com/in/dirkbahle