Browse Source

Added editing of solution-wide formatting options (accessible through property pad).

pull/403/head
Andreas Weizel 12 years ago
parent
commit
5da7b92b8f
  1. 6
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  2. 3
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsContainer.cs
  3. 30
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml.cs
  4. 11
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml.cs
  5. 42
      src/Main/SharpDevelop/Project/Solution.cs

6
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin

@ -158,6 +158,12 @@ @@ -158,6 +158,12 @@
</OptionPanel>
</Path>
<Path path = "/SharpDevelop/Dialogs/SolutionFormattingOptionsDialog">
<OptionPanel id="C#Formatting"
label="C#"
class="CSharpBinding.OptionPanels.CSharpSolutionFormattingOptionPanel"/>
</Path>
<Path path = "/SharpDevelop/Workbench/MainMenu/Search">
<MenuItem id = "SearchForIssues"
label="Search For Issues..."

3
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsContainer.cs

@ -99,7 +99,8 @@ namespace CSharpBinding.FormattingStrategy @@ -99,7 +99,8 @@ namespace CSharpBinding.FormattingStrategy
activeOptions.Clear();
foreach (var activeOption in options.activeOptions)
activeOptions.Add(activeOption);
Reset(options.cachedOptions.Clone());
cachedOptions = options.cachedOptions.Clone();
OnPropertyChanged(null);
}
#region INotifyPropertyChanged implementation

30
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml.cs

@ -47,7 +47,7 @@ namespace CSharpBinding.OptionPanels @@ -47,7 +47,7 @@ namespace CSharpBinding.OptionPanels
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(FormattingGroupContainer),
new FrameworkPropertyMetadata());
new FrameworkPropertyMetadata());
public string Text {
get { return (string) GetValue(TextProperty); }
@ -85,7 +85,7 @@ namespace CSharpBinding.OptionPanels @@ -85,7 +85,7 @@ namespace CSharpBinding.OptionPanels
{
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(FormattingOption),
new FrameworkPropertyMetadata());
new FrameworkPropertyMetadata());
public string Text {
get { return (string) GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
@ -113,13 +113,11 @@ namespace CSharpBinding.OptionPanels @@ -113,13 +113,11 @@ namespace CSharpBinding.OptionPanels
InitializeComponent();
this.DataContext = this;
FillPresetList();
}
public static readonly DependencyProperty OptionsContainerProperty =
DependencyProperty.Register("OptionsContainer", typeof(CSharpFormattingOptionsContainer), typeof(CSharpFormattingEditor),
new FrameworkPropertyMetadata());
new FrameworkPropertyMetadata(OnOptionsContainerPropertyChanged));
public CSharpFormattingOptionsContainer OptionsContainer {
get { return (CSharpFormattingOptionsContainer)GetValue(OptionsContainerProperty); }
@ -128,15 +126,27 @@ namespace CSharpBinding.OptionPanels @@ -128,15 +126,27 @@ namespace CSharpBinding.OptionPanels
public static readonly DependencyProperty AllowPresetsProperty =
DependencyProperty.Register("AllowPresets", typeof(bool), typeof(CSharpFormattingEditor),
new FrameworkPropertyMetadata());
new FrameworkPropertyMetadata());
public bool AllowPresets {
get { return (bool)GetValue(AllowPresetsProperty); }
set { SetValue(AllowPresetsProperty, value); }
}
private void FillPresetList()
static void OnOptionsContainerPropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
var editor = o as CSharpFormattingEditor;
if (editor != null) {
var container = e.NewValue as CSharpFormattingOptionsContainer;
if (container != null) {
editor.FillPresetList(container);
}
}
}
private void FillPresetList(CSharpFormattingOptionsContainer container)
{
presets["Default"] = () => null;
presets["Empty"] = FormattingOptionsFactory.CreateEmpty;
presets["SharpDevelop"] = FormattingOptionsFactory.CreateSharpDevelop;
presets["Mono"] = FormattingOptionsFactory.CreateMono;
@ -145,7 +155,11 @@ namespace CSharpBinding.OptionPanels @@ -145,7 +155,11 @@ namespace CSharpBinding.OptionPanels
presets["Whitesmiths"] = FormattingOptionsFactory.CreateWhitesmiths;
presets["GNU"] = FormattingOptionsFactory.CreateGNU;
// TODO Localize "(no preset)"!
// TODO Localize!
if (container.Parent != null) {
// Add a "default" preset
presetItems.Add(new ComboBoxItem { Content = "Default", Tag = "Default" });
}
presetItems.Add(new ComboBoxItem { Content = "Empty", Tag = "Empty" });
presetItems.Add(new ComboBoxItem { Content = "SharpDevelop", Tag = "SharpDevelop" });
presetItems.Add(new ComboBoxItem { Content = "Mono", Tag = "Mono" });

11
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml.cs

@ -45,6 +45,17 @@ namespace CSharpBinding.OptionPanels @@ -45,6 +45,17 @@ namespace CSharpBinding.OptionPanels
}
}
/// <summary>
/// Option panel for solution-wide formatting settings.
/// </summary>
internal class CSharpSolutionFormattingOptionPanel : CSharpFormattingOptionPanel
{
public CSharpSolutionFormattingOptionPanel()
: base(CSharpFormattingOptionsPersistence.SolutionOptions, true)
{
}
}
/// <summary>
/// Interaction logic for CSharpFormattingOptionPanel.xaml
/// </summary>

42
src/Main/SharpDevelop/Project/Solution.cs

@ -18,6 +18,8 @@ @@ -18,6 +18,8 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing.Design;
using System.IO;
using System.Linq;
using System.Windows.Threading;
@ -25,6 +27,7 @@ using System.Xml; @@ -25,6 +27,7 @@ using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.SharpDevelop.Project
@ -337,7 +340,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -337,7 +340,7 @@ namespace ICSharpCode.SharpDevelop.Project
else
{
MessageService.ShowErrorFormatted
("${res:SharpDevelop.Solution.CannotSave.UnauthorizedAccessException}", fileName, ex.Message);
("${res:SharpDevelop.Solution.CannotSave.UnauthorizedAccessException}", fileName, ex.Message);
}
}
}
@ -502,6 +505,42 @@ namespace ICSharpCode.SharpDevelop.Project @@ -502,6 +505,42 @@ namespace ICSharpCode.SharpDevelop.Project
}
#endregion
[EditorAttribute(typeof(FormatterSettingsEditor), typeof(UITypeEditor))]
public object FormatterSettings
{
get {
// We don't need any return value etc.
return null;
}
}
/// <summary>
/// Pseudo-editor showing a "..." for FormattingSettings option and opening the formatting editor for solution
/// </summary>
class FormatterSettingsEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
var treeNode = AddInTree.GetTreeNode("/SharpDevelop/Dialogs/SolutionFormattingOptionsDialog", false);
bool? result = ICSharpCode.SharpDevelop.Commands.OptionsCommand.ShowTreeOptions(
"Solution Formatting Options",
treeNode);
if ((bool) result) {
// Formatting options have been changed, make solution dirty
var solution = context.Instance as Solution;
if (solution != null) {
solution.IsDirty = true;
}
}
return null;
}
}
public override string ToString()
{
return "[Solution " + fileName + " with " + projects.Count + " projects]";
@ -516,3 +555,4 @@ namespace ICSharpCode.SharpDevelop.Project @@ -516,3 +555,4 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
Loading…
Cancel
Save