Browse Source

Implemented Options for ColumnRulerRenderer

pull/26/merge
Tobias Ibounig 14 years ago committed by Siegfried Pammer
parent
commit
5e4ec9c472
  1. 44
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  2. 14
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ColumnRulerRenderer.cs
  3. 17
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/TextViewOptions.xaml

44
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -47,7 +47,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
CaretReferencesRenderer caretReferencesRenderer; CaretReferencesRenderer caretReferencesRenderer;
ContextActionsRenderer contextActionsRenderer; ContextActionsRenderer contextActionsRenderer;
HiddenDefinition.HiddenDefinitionRenderer hiddenDefinitionRenderer; HiddenDefinition.HiddenDefinitionRenderer hiddenDefinitionRenderer;
ColumnRulerRenderer columnRoulerRenderer; ColumnRulerRenderer columnRulerRenderer;
public CodeEditorView() public CodeEditorView()
{ {
@ -57,7 +57,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
this.caretReferencesRenderer = new CaretReferencesRenderer(this); this.caretReferencesRenderer = new CaretReferencesRenderer(this);
this.contextActionsRenderer = new ContextActionsRenderer(this); this.contextActionsRenderer = new ContextActionsRenderer(this);
this.hiddenDefinitionRenderer = new HiddenDefinition.HiddenDefinitionRenderer(this); this.hiddenDefinitionRenderer = new HiddenDefinition.HiddenDefinitionRenderer(this);
this.columnRoulerRenderer = new ColumnRulerRenderer(this.TextArea.TextView); this.columnRulerRenderer = new ColumnRulerRenderer(this.TextArea.TextView);
this.columnRulerRenderer.SetRuler(CodeEditorOptions.Instance.ColumnRulerPosition, ColumnRulerBrush);
UpdateCustomizedHighlighting(); UpdateCustomizedHighlighting();
@ -91,17 +92,24 @@ namespace ICSharpCode.AvalonEdit.AddIn
protected override void OnOptionChanged(PropertyChangedEventArgs e) protected override void OnOptionChanged(PropertyChangedEventArgs e)
{ {
base.OnOptionChanged(e); base.OnOptionChanged(e);
if (e.PropertyName == "HighlightBrackets") switch (e.PropertyName) {
HighlightBrackets(null, e); case "HighlightBrackets":
else if (e.PropertyName == "EnableFolding") HighlightBrackets(null, e);
UpdateParseInformationForFolding(); break;
else if (e.PropertyName == "HighlightSymbol") { case "EnableFolding":
if (this.caretReferencesRenderer != null) UpdateParseInformationForFolding();
this.caretReferencesRenderer.ClearHighlight(); break;
} case "HighlightSymbol":
else if(e.PropertyName == "ShowColumnRuler") if (this.caretReferencesRenderer != null)
{ this.caretReferencesRenderer.ClearHighlight();
break;
case "ShowColumnRuler":
case "ColumRulerPosition":
if (CodeEditorOptions.Instance.ShowColumnRuler)
columnRulerRenderer.SetRuler(CodeEditorOptions.Instance.ColumnRulerPosition, ColumnRulerBrush);
else
columnRulerRenderer.SetRuler(-1, ColumnRulerBrush);
break;
} }
} }
@ -597,12 +605,18 @@ namespace ICSharpCode.AvalonEdit.AddIn
} }
public static readonly DependencyProperty ColumnRulerBrushProperty = public static readonly DependencyProperty ColumnRulerBrushProperty =
DependencyProperty.Register("ColumnRulerBrush", typeof(Brush), typeof(TextView), DependencyProperty.Register("ColumnRulerBrush", typeof(Brush), typeof(CodeEditorView),
new FrameworkPropertyMetadata()); new FrameworkPropertyMetadata(Brushes.LightGray, OnUpdateBrushes));
public Brush ColumnRulerBrush { public Brush ColumnRulerBrush {
get { return (Brush)GetValue(ColumnRulerBrushProperty); } get { return (Brush)GetValue(ColumnRulerBrushProperty); }
set { SetValue(ColumnRulerBrushProperty, value); } set { SetValue(ColumnRulerBrushProperty, value); }
} }
static void OnUpdateBrushes(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (e.Property.Name == ColumnRulerBrushProperty.Name)
((CodeEditorView)d).columnRulerRenderer.SetRuler(CodeEditorOptions.Instance.ColumnRulerPosition, (Brush)e.NewValue);
}
} }
} }

14
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ColumnRulerRenderer.cs

@ -16,14 +16,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
{ {
Pen pen; Pen pen;
int column; int column;
public int Column {
get { return column; }
set { column = value; }
}
TextView textView; TextView textView;
public ColumnRulerRenderer(TextView textView) public ColumnRulerRenderer(TextView textView)
@ -31,8 +24,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (textView == null) if (textView == null)
throw new ArgumentNullException("textView"); throw new ArgumentNullException("textView");
Pen pen = new Pen(Brushes.LightGray, 1); this.pen = new Pen(Brushes.LightGray, 1);
pen.Freeze(); this.pen.Freeze();
this.textView = textView; this.textView = textView;
this.textView.BackgroundRenderers.Add(this); this.textView.BackgroundRenderers.Add(this);
} }
@ -52,6 +45,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (pen.Brush != brush) { if (pen.Brush != brush) {
this.pen = new Pen(brush, 1); this.pen = new Pen(brush, 1);
this.pen.Freeze(); this.pen.Freeze();
textView.InvalidateLayer(this.Layer);
} }
} }
@ -64,7 +58,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
System.Windows.Size pixelSize = PixelSnapHelpers.GetPixelSize(textView); System.Windows.Size pixelSize = PixelSnapHelpers.GetPixelSize(textView);
double markerXPos = PixelSnapHelpers.PixelAlign(offset, pixelSize.Width); double markerXPos = PixelSnapHelpers.PixelAlign(offset, pixelSize.Width);
Point start = new Point(markerXPos, 0); Point start = new Point(markerXPos, 0);
Point end = new Point(markerXPos, textView.DocumentHeight); Point end = new Point(markerXPos, Math.Max(textView.DocumentHeight, textView.ActualHeight));
drawingContext.DrawLine(pen, start, end); drawingContext.DrawLine(pen, start, end);
} }

17
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/TextViewOptions.xaml

@ -29,5 +29,22 @@
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.EnableAnimationsCheckBox}" /> Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.EnableAnimationsCheckBox}" />
</widgets:StackPanelWithSpacing> </widgets:StackPanelWithSpacing>
</GroupBox> </GroupBox>
<GroupBox
Header="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox}">
<widgets:StackPanelWithSpacing SpaceBetweenItems="5">
<StackPanel Orientation="Horizontal">
<CheckBox
Margin="0, 10"
IsChecked="{core:OptionBinding local:CodeEditorOptions.ShowColumnRuler}"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.VerticalRulerCheckBox}" />
<Label
Margin="0, 5"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.AtRowLabel}" />
<widgets:NumericUpDown
Margin="0, 5"
Value="{core:OptionBinding local:CodeEditorOptions.ColumnRulerPosition}" />
</StackPanel>
</widgets:StackPanelWithSpacing>
</GroupBox>
</StackPanel> </StackPanel>
</gui:OptionPanel> </gui:OptionPanel>
Loading…
Cancel
Save