Browse Source

Allow setting the TextEditor.SyntaxHighlighting property from XAML. Thanks to Rudi Grobler for the idea (http://dotnet.org.za/rudi/archive/2009/10/09/the-magic-of-type-converters.aspx).

Changed URL for Usage Data Collector upload.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5061 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
23c1c37ec1
  1. 3
      samples/AvalonEdit.Sample/Window1.xaml
  2. 3
      samples/AvalonEdit.Sample/Window1.xaml.cs
  3. 2
      src/AddIns/Misc/UsageDataCollector/UsageDataCollector.AddIn/AnalyticsMonitor.cs
  4. 58
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightingDefinitionTypeConverter.cs
  5. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/IHighlightingDefinition.cs
  6. 1
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj

3
samples/AvalonEdit.Sample/Window1.xaml

@ -58,7 +58,7 @@ @@ -58,7 +58,7 @@
<ComboBox Name="highlightingComboBox"
SelectedItem="{Binding SyntaxHighlighting, ElementName=textEditor}"
ItemsSource="{Binding Source={x:Static avalonEdit:HighlightingManager.Instance}, Path=HighlightingDefinitions}"
SelectionChanged="HighlightingComboBox_SelectionChanged"/>
SelectionChanged="HighlightingComboBox_SelectionChanged"/>
</ToolBar>
<Grid>
<Grid.ColumnDefinitions>
@ -69,6 +69,7 @@ @@ -69,6 +69,7 @@
Name="textEditor"
FontFamily="Consolas"
FontSize="10pt"
SyntaxHighlighting="C#"
>Welcome to AvalonEdit!
</avalonEdit:TextEditor>
<GridSplitter Grid.Column="1" Width="4" HorizontalAlignment="Left"/>

3
samples/AvalonEdit.Sample/Window1.xaml.cs

@ -57,7 +57,8 @@ namespace AvalonEdit.Sample @@ -57,7 +57,8 @@ namespace AvalonEdit.Sample
propertyGridComboBox.SelectedIndex = 2;
//textEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("C#");
textEditor.SyntaxHighlighting = customHighlighting;
//textEditor.SyntaxHighlighting = customHighlighting;
// initial highlighting now set by XAML
textEditor.TextArea.TextEntering += textEditor_TextArea_TextEntering;
textEditor.TextArea.TextEntered += textEditor_TextArea_TextEntered;

2
src/AddIns/Misc/UsageDataCollector/UsageDataCollector.AddIn/AnalyticsMonitor.cs

@ -19,7 +19,7 @@ namespace ICSharpCode.UsageDataCollector @@ -19,7 +19,7 @@ namespace ICSharpCode.UsageDataCollector
/// </summary>
public sealed class AnalyticsMonitor : IAnalyticsMonitor
{
const string UploadUrl = "http://build.sharpdevelop.net/udc.upload/uploadusagedata.svc";
const string UploadUrl = "http://usagedatacollector.sharpdevelop.net/upload/UploadUsageData.svc";
public static readonly AnalyticsMonitor Instance = new AnalyticsMonitor();

58
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightingDefinitionTypeConverter.cs

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald"/>
// <version>$Revision$</version>
// </file>
using System;
using System.ComponentModel;
using System.Globalization;
namespace ICSharpCode.AvalonEdit.Highlighting
{
/// <summary>
/// Converts between strings and <see cref="IHighlightingDefinition"/> by treating the string as the definition name
/// and calling <c>HighlightingManager.Instance.<see cref="HighlightingManager.GetDefinition">GetDefinition</see>(name)</c>.
/// </summary>
public sealed class HighlightingDefinitionTypeConverter : TypeConverter
{
/// <inheritdoc/>
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(string))
return true;
else
return base.CanConvertFrom(context, sourceType);
}
/// <inheritdoc/>
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
string definitionName = value as string;
if (definitionName != null)
return HighlightingManager.Instance.GetDefinition(definitionName);
else
return base.ConvertFrom(context, culture, value);
}
/// <inheritdoc/>
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(string))
return true;
else
return base.CanConvertTo(context, destinationType);
}
/// <inheritdoc/>
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
IHighlightingDefinition definition = value as IHighlightingDefinition;
if (definition != null && destinationType == typeof(string))
return definition.Name;
else
return base.ConvertTo(context, culture, value, destinationType);
}
}
}

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/IHighlightingDefinition.cs

@ -6,12 +6,14 @@ @@ -6,12 +6,14 @@
// </file>
using System;
using System.ComponentModel;
namespace ICSharpCode.AvalonEdit.Highlighting
{
/// <summary>
/// A highlighting definition.
/// </summary>
[TypeConverter(typeof(HighlightingDefinitionTypeConverter))]
public interface IHighlightingDefinition
{
/// <summary>

1
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj

@ -181,6 +181,7 @@ @@ -181,6 +181,7 @@
<Compile Include="Highlighting\HighlightingColor.cs" />
<Compile Include="Highlighting\HighlightingColorizer.cs" />
<Compile Include="Highlighting\HighlightingDefinitionInvalidException.cs" />
<Compile Include="Highlighting\HighlightingDefinitionTypeConverter.cs" />
<Compile Include="Highlighting\HighlightingManager.cs" />
<Compile Include="Highlighting\HtmlClipboard.cs" />
<Compile Include="Highlighting\IHighlightingDefinition.cs" />

Loading…
Cancel
Save