Browse Source

Created prototype of formatting options editor.

pull/403/head
Andreas Weizel 12 years ago
parent
commit
03feaeb2b3
  1. 3
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  2. 15
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
  3. 114
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsContainer.cs
  4. 36
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml
  5. 250
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml.cs
  6. 16
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml
  7. 42
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml.cs
  8. 15
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpProjectFormattingOptions.xaml
  9. 42
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpProjectFormattingOptions.xaml.cs

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

@ -148,6 +148,9 @@
label="Code inspection" label="Code inspection"
class="CSharpBinding.Refactoring.IssueOptions"/> class="CSharpBinding.Refactoring.IssueOptions"/>
<ContextActionOptionPanel id="ContextActions" path="/SharpDevelop/ViewContent/TextEditor/C#/ContextActions"/> <ContextActionOptionPanel id="ContextActions" path="/SharpDevelop/ViewContent/TextEditor/C#/ContextActions"/>
<OptionPanel id="Formatting"
label="Formatting"
class="CSharpBinding.OptionPanels.CSharpFormattingOptionPanel"/>
</OptionPanel> </OptionPanel>
</Path> </Path>

15
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj

@ -89,6 +89,18 @@
<Compile Include="Src\FormsDesigner\CSharpFormsDesignerLoaderContext.cs" /> <Compile Include="Src\FormsDesigner\CSharpFormsDesignerLoaderContext.cs" />
<Compile Include="Src\FormsDesigner\ICSharpDesignerLoaderContext.cs" /> <Compile Include="Src\FormsDesigner\ICSharpDesignerLoaderContext.cs" />
<Compile Include="Src\FormsDesigner\SecondaryDisplayBinding.cs" /> <Compile Include="Src\FormsDesigner\SecondaryDisplayBinding.cs" />
<Compile Include="Src\OptionPanels\CSharpFormattingEditor.xaml.cs">
<DependentUpon>CSharpFormattingEditor.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\OptionPanels\CSharpFormattingOptionPanel.xaml.cs">
<DependentUpon>CSharpFormattingOptionPanel.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\OptionPanels\CSharpProjectFormattingOptions.xaml.cs">
<DependentUpon>CSharpProjectFormattingOptions.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\Parser\FoldingVisitor.cs" /> <Compile Include="Src\Parser\FoldingVisitor.cs" />
<Compile Include="Src\Refactoring\AbstractInlineRefactorDialog.cs" /> <Compile Include="Src\Refactoring\AbstractInlineRefactorDialog.cs" />
<Compile Include="Src\Refactoring\ConvertInterfaceToAbstractClassContextAction.cs" /> <Compile Include="Src\Refactoring\ConvertInterfaceToAbstractClassContextAction.cs" />
@ -235,6 +247,9 @@
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Page Include="Src\OptionPanels\CSharpFormattingEditor.xaml" />
<Page Include="Src\OptionPanels\CSharpFormattingOptionPanel.xaml" />
<Page Include="Src\OptionPanels\CSharpProjectFormattingOptions.xaml" />
<Page Include="Src\Refactoring\CreatePropertiesDialog.xaml" /> <Page Include="Src\Refactoring\CreatePropertiesDialog.xaml" />
<Page Include="Src\Refactoring\InsertCtorDialog.xaml" /> <Page Include="Src\Refactoring\InsertCtorDialog.xaml" />
<Page Include="Src\Refactoring\IssueOptions.xaml" /> <Page Include="Src\Refactoring\IssueOptions.xaml" />

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

@ -18,6 +18,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Reflection; using System.Reflection;
using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp;
@ -28,33 +29,77 @@ namespace CSharpBinding.FormattingStrategy
/// Generic container for C# formatting options that can be chained together from general to specific and inherit /// Generic container for C# formatting options that can be chained together from general to specific and inherit
/// options from parent. /// options from parent.
/// </summary> /// </summary>
public class CSharpFormattingOptionsContainer public class CSharpFormattingOptionsContainer : INotifyPropertyChanged
{ {
CSharpFormattingOptionsContainer parent; CSharpFormattingOptionsContainer parent;
CSharpFormattingOptionsContainer child; CSharpFormattingOptions cachedOptions;
Dictionary<string, object> options; HashSet<string> activeOptions;
internal CSharpFormattingOptionsContainer() internal CSharpFormattingOptionsContainer()
{ {
parent = null; parent = null;
child = null; activeOptions = new HashSet<string>();
cachedOptions = FormattingOptionsFactory.CreateEmpty();
}
internal CSharpFormattingOptionsContainer(CSharpFormattingOptions options)
{
parent = null;
activeOptions = new HashSet<string>();
options = new Dictionary<string, object>(); cachedOptions = options;
// Activate all options
foreach (var property in typeof(CSharpFormattingOptions).GetProperties()) {
activeOptions.Add(property.Name);
}
} }
public CSharpFormattingOptionsContainer Child public CSharpFormattingOptionsContainer Parent
{ {
get get
{ {
return child; return parent;
} }
set set
{ {
if (child != null) { if (parent != null) {
child.parent = this; parent.PropertyChanged += HandlePropertyChanged;
}
parent = value;
parent.PropertyChanged += HandlePropertyChanged;
cachedOptions = CreateOptions();
OnPropertyChanged("Parent");
}
}
#region INotifyPropertyChanged implementation
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
private void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "Parent") {
// Parent of parent has been updated, recreate options object
cachedOptions = CreateOptions();
} else {
// Some other property has changed, check if we have our own value for it
if (!activeOptions.Contains(e.PropertyName)) {
// We rely on property value from some of the parents and have to update it from there
PropertyInfo propertyInfo = typeof(CSharpFormattingOptions).GetProperty(e.PropertyName);
if (propertyInfo != null) {
propertyInfo.SetValue(cachedOptions, GetOption<object>(e.PropertyName));
}
} }
child = value;
} }
} }
@ -69,6 +114,7 @@ namespace CSharpBinding.FormattingStrategy
/// </param> /// </param>
/// <returns>True, if option with given type could be found in hierarchy. False otherwise.</returns> /// <returns>True, if option with given type could be found in hierarchy. False otherwise.</returns>
public T GetOption<T>(Expression<Func<CSharpFormattingOptions, T>> propertyGetter) public T GetOption<T>(Expression<Func<CSharpFormattingOptions, T>> propertyGetter)
where T : struct
{ {
// Get name of property (to look for in dictionary) // Get name of property (to look for in dictionary)
string optionName = null; string optionName = null;
@ -93,10 +139,9 @@ namespace CSharpBinding.FormattingStrategy
CSharpFormattingOptionsContainer container = this; CSharpFormattingOptionsContainer container = this;
do do
{ {
object val; PropertyInfo propertyInfo = typeof(CSharpFormattingOptions).GetProperty(option);
container.options.TryGetValue(option, out val); if ((propertyInfo != null) && (propertyInfo.PropertyType == typeof(T))) {
if (val is T) { return (T) propertyInfo.GetValue(container.cachedOptions);
return (T) val;
} }
container = container.parent; container = container.parent;
} while (container != null); } while (container != null);
@ -104,12 +149,49 @@ namespace CSharpBinding.FormattingStrategy
return default(T); return default(T);
} }
/// <summary>
/// Sets an option.
/// </summary>
/// <param name="option">Option name.</param>
/// <param name="value">Option value, <c>null</c> to reset.</param>
public void SetOption<T>(string option, T? value)
where T : struct
{
if (value.HasValue) {
// Save value in option values and cached options
activeOptions.Add(option);
PropertyInfo propertyInfo = typeof(CSharpFormattingOptions).GetProperty(option);
if ((propertyInfo != null) && (propertyInfo.PropertyType == typeof(T))) {
propertyInfo.SetValue(cachedOptions, value.Value);
}
} else {
// Reset this option
activeOptions.Remove(option);
// Update formatting options object from parents
PropertyInfo propertyInfo = typeof(CSharpFormattingOptions).GetProperty(option);
if ((propertyInfo != null) && (propertyInfo.PropertyType == typeof(T))) {
propertyInfo.SetValue(cachedOptions, GetOption<T>(option));
}
}
}
/// <summary>
/// Retrieves a <see cref="ICSharpCode.NRefactory.CSharp.CSharpFormattingOptions"/> instance from current
/// container, resolving all options throughout container hierarchy.
/// </summary>
/// <returns>Filled <see cref="ICSharpCode.NRefactory.CSharp.CSharpFormattingOptions"/> instance.</returns>
public CSharpFormattingOptions GetEffectiveOptions()
{
// Use copy of cached options instance
return cachedOptions.Clone();
}
/// <summary> /// <summary>
/// Creates a <see cref="ICSharpCode.NRefactory.CSharp.CSharpFormattingOptions"/> instance from current /// Creates a <see cref="ICSharpCode.NRefactory.CSharp.CSharpFormattingOptions"/> instance from current
/// container, resolving all options through container hierarchy. /// container, resolving all options throughout container hierarchy.
/// </summary> /// </summary>
/// <returns>Created and filled <see cref="ICSharpCode.NRefactory.CSharp.CSharpFormattingOptions"/> instance.</returns> /// <returns>Created and filled <see cref="ICSharpCode.NRefactory.CSharp.CSharpFormattingOptions"/> instance.</returns>
public CSharpFormattingOptions CreateOptions() private CSharpFormattingOptions CreateOptions()
{ {
var outputOptions = FormattingOptionsFactory.CreateEmpty(); var outputOptions = FormattingOptionsFactory.CreateEmpty();

36
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingEditor.xaml

@ -0,0 +1,36 @@
<UserControl
x:Class="CSharpBinding.OptionPanels.CSharpFormattingEditor"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CSharpBinding.OptionPanels">
<UserControl.Resources>
<DataTemplate DataType="{x:Type local:FormattingOption}">
<TextBlock Text="{Binding Text}" Height="16" />
</DataTemplate>
<DataTemplate DataType="{x:Type local:FormattingGroupContainer}">
<Expander Header="{Binding Text}" HorizontalAlignment="Stretch">
<Expander.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontWeight="Bold" Height="16" />
</DataTemplate>
</Expander.HeaderTemplate>
<ItemsControl ItemsSource="{Binding Children}" Margin="30,0,0,0" />
</Expander>
</DataTemplate>
<DataTemplate DataType="{x:Type local:FormattingOptionContainer}">
<ListBox
ItemsSource="{Binding Children}"
BorderThickness="0"
ScrollViewer.HorizontalScrollBarVisibility="Hidden">
</ListBox>
</DataTemplate>
</UserControl.Resources>
<ItemsControl ItemsSource="{Binding}" Margin="0,0,0,0" Background="{x:Static SystemColors.WindowBrush}">
</ItemsControl>
</UserControl>

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

@ -0,0 +1,250 @@
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Windows.Controls;
namespace CSharpBinding.OptionPanels
{
internal class IFormattingItemContainer
{
string Text { get; set; }
}
/// <summary>
/// Represents a container item for other container items in formatting editor list
/// </summary>
internal class FormattingGroupContainer : IFormattingItemContainer
{
public string Text
{
get;
set;
}
public IEnumerable<IFormattingItemContainer> Children
{
get;
set;
}
}
/// <summary>
/// Represents a container for formatting options.
/// </summary>
internal class FormattingOptionContainer : IFormattingItemContainer
{
public string Text
{
get;
set;
}
public IEnumerable<FormattingOption> Children
{
get;
set;
}
}
/// <summary>
/// Represents a single formatting option in formatting editor.
/// </summary>
internal class FormattingOption
{
public string OptionName
{
get;
set;
}
public string Text
{
get;
set;
}
}
/// <summary>
/// Interaction logic for CSharpFormattingEditor.xaml
/// </summary>
public partial class CSharpFormattingEditor : UserControl
{
readonly List<IFormattingItemContainer> rootEntries;
public CSharpFormattingEditor()
{
rootEntries = new List<IFormattingItemContainer>();
InitializeComponent();
BuildOptionItems();
this.DataContext = rootEntries;
}
void BuildOptionItems()
{
rootEntries.AddRange(
new IFormattingItemContainer[]
{
new FormattingGroupContainer { Text = "Indentation", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "Indent namespace body" },
new FormattingOption { Text = "Indent class body" },
new FormattingOption { Text = "Indent interface body" },
new FormattingOption { Text = "Indent struct body" },
new FormattingOption { Text = "Indent enum body" },
new FormattingOption { Text = "Indent method body" },
new FormattingOption { Text = "Indent property body" },
new FormattingOption { Text = "Indent event body" },
new FormattingOption { Text = "Indent blocks" },
new FormattingOption { Text = "Indent switch body" },
new FormattingOption { Text = "Indent case body" },
new FormattingOption { Text = "Indent break statements" },
new FormattingOption { Text = "Align embedded using statements" },
new FormattingOption { Text = "Align embedded if statements" },
new FormattingOption { Text = "Align else in if statements" },
new FormattingOption { Text = "Auto property formatting" },
new FormattingOption { Text = "Simple property formatting" },
new FormattingOption { Text = "Empty line formatting" },
new FormattingOption { Text = "Indent preprocessor directives" },
new FormattingOption { Text = "Align to member reference dot" },
}
}
}
},
new FormattingGroupContainer { Text = "Braces", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "New lines", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Spaces",
Children = new [] {
new FormattingGroupContainer { Text = "Methods", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Method calls", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Fields", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Local variables", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Constructors", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Indexers", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Delegates", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Statements", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Operators", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Brackets", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
}
}
},
new FormattingGroupContainer { Text = "Blank lines", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Keep formatting", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Wrapping", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
},
new FormattingGroupContainer { Text = "Using declarations", Children = new [] { new FormattingOptionContainer {
Children = new [] {
new FormattingOption { Text = "-" }
}
}
}
}
}
);
}
}
}

16
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpFormattingOptionPanel.xaml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<gui:OptionPanel
x:Class="CSharpBinding.OptionPanels.CSharpFormattingOptionPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sd="http://icsharpcode.net/sharpdevelop/core"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop"
xmlns:project="clr-namespace:ICSharpCode.SharpDevelop.Project;assembly=ICSharpCode.SharpDevelop"
xmlns:local="clr-namespace:CSharpBinding.OptionPanels"
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets">
<Grid>
<local:CSharpFormattingEditor Margin="0,0,0,0" />
</Grid>
</gui:OptionPanel>

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

@ -0,0 +1,42 @@
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.SharpDevelop.Gui;
namespace CSharpBinding.OptionPanels
{
/// <summary>
/// Interaction logic for CSharpFormattingOptionPanel.xaml
/// </summary>
public partial class CSharpFormattingOptionPanel : OptionPanel
{
public CSharpFormattingOptionPanel()
{
InitializeComponent();
}
}
}

15
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpProjectFormattingOptions.xaml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<optionpanels:ProjectOptionPanel
x:Class="CSharpBinding.OptionPanels.CSharpProjectFormattingOptionPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sd="http://icsharpcode.net/sharpdevelop/core"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:optionpanels="clr-namespace:ICSharpCode.SharpDevelop.Gui.OptionPanels;assembly=ICSharpCode.SharpDevelop"
xmlns:local="clr-namespace:CSharpBinding.OptionPanels"
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets">
<Grid>
<!-- TODO -->
</Grid>
</optionpanels:ProjectOptionPanel>

42
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/CSharpProjectFormattingOptions.xaml.cs

@ -0,0 +1,42 @@
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.SharpDevelop.Gui.OptionPanels;
namespace CSharpBinding.OptionPanels
{
/// <summary>
/// Interaction logic for CSharpProjectFormattingOptionPanel.xaml
/// </summary>
public partial class CSharpProjectFormattingOptionPanel : ProjectOptionPanel
{
public CSharpProjectFormattingOptionPanel()
{
InitializeComponent();
}
}
}
Loading…
Cancel
Save