diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin index 7e1716c76d..2bd90fe2b8 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin @@ -158,6 +158,12 @@ + + + + null; presets["Empty"] = FormattingOptionsFactory.CreateEmpty; presets["SharpDevelop"] = FormattingOptionsFactory.CreateSharpDevelop; presets["Mono"] = FormattingOptionsFactory.CreateMono; @@ -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" }); diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml.cs index d9af08b86c..057777f4ab 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml.cs @@ -45,6 +45,17 @@ namespace CSharpBinding.OptionPanels } } + /// + /// Option panel for solution-wide formatting settings. + /// + internal class CSharpSolutionFormattingOptionPanel : CSharpFormattingOptionPanel + { + public CSharpSolutionFormattingOptionPanel() + : base(CSharpFormattingOptionsPersistence.SolutionOptions, true) + { + } + } + /// /// Interaction logic for CSharpFormattingOptionPanel.xaml /// diff --git a/src/Main/SharpDevelop/Project/Solution.cs b/src/Main/SharpDevelop/Project/Solution.cs index 032ce72a57..170929fc85 100644 --- a/src/Main/SharpDevelop/Project/Solution.cs +++ b/src/Main/SharpDevelop/Project/Solution.cs @@ -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; 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 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 } #endregion + [EditorAttribute(typeof(FormatterSettingsEditor), typeof(UITypeEditor))] + public object FormatterSettings + { + get { + // We don't need any return value etc. + return null; + } + } + + /// + /// Pseudo-editor showing a "..." for FormattingSettings option and opening the formatting editor for solution + /// + 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 } } } + \ No newline at end of file