Browse Source

Worked on event support in WPF designer.

Fixed C# parser bug regarding expressions like "(T)-val".

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2669 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
b355b23dba
  1. 24
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs
  2. 1
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/IDesignerGenerator.cs
  3. 5
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  4. 62
      src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/EventHandlerService.cs
  5. 1
      src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/StandaloneDesigner.csproj
  6. 4
      src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml
  7. 9
      src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml.cs
  8. 89
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/EventHandlerService.cs
  9. 77
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfAndWinFormsTopLevelWindowService.cs
  10. 32
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
  11. 5
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.AddIn.csproj
  12. 80
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/EventHandlerEditor.cs
  13. 35
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.cs
  14. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.xaml
  15. 31
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyGridView.cs
  16. 4
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyNameTextBlock.cs
  17. 44
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/WindowClone.cs
  18. 28
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ContentControlDefaultInitializer.cs
  19. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PanelSelectionHandler.cs
  20. 4
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/CreateComponentTool.cs
  21. 22
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/DragMoveMouseGesture.cs
  22. 14
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/ErrorService.cs
  23. 9
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/PointerTool.cs
  24. 44
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/WpfTopLevelWindowService.cs
  25. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj
  26. 15
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignContext.cs
  27. 8
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlModelProperty.cs
  28. 47
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs
  29. 31
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlObject.cs
  30. 16
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlProperty.cs
  31. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlPropertyInfo.cs
  32. 5
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/DesignItemProperty.cs
  33. 18
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs
  34. 49
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/DesignItemDataEvent.cs
  35. 61
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/DesignItemDataMember.cs
  36. 45
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/DesignItemDataProperty.cs
  37. 41
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/DesignItemDataSource.cs
  38. 60
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/IPropertyEditorDataSource.cs
  39. 5
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/MultipleSelectionDataSource.cs
  40. 50
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Services.cs
  41. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/WpfDesign.csproj
  42. 2
      src/Libraries/NRefactory/Project/Src/Lexer/CSharp/KeywordList.txt
  43. 2
      src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Tokens.cs
  44. 10
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/CSharpParser.cs
  45. 1271
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  46. 23
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  47. 34
      src/Libraries/NRefactory/Test/Parser/Expressions/CastExpressionTests.cs
  48. 8
      src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs
  49. 50
      src/Main/Base/Project/Src/Gui/AbstractViewContent.cs
  50. 17
      src/Main/Base/Project/Src/Services/DisplayBinding/ExternalProcessDisplayBinding.cs
  51. 286
      src/SharpDevelop.sln

24
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs

@ -457,30 +457,6 @@ namespace ICSharpCode.FormsDesigner @@ -457,30 +457,6 @@ namespace ICSharpCode.FormsDesigner
return compatibleMethods;
}
public virtual ICollection GetCompatibleMethods(EventInfo edesc)
{
Reparse();
ArrayList compatibleMethods = new ArrayList();
MethodInfo methodInfo = edesc.GetAddMethod();
ParameterInfo pInfo = methodInfo.GetParameters()[0];
string eventName = pInfo.ParameterType.ToString().Replace("EventHandler", "EventArgs");
foreach (IMethod method in completeClass.Methods) {
if (method.Parameters.Count == 2) {
bool found = true;
IParameter p = method.Parameters[1];
if (p.ReturnType.FullyQualifiedName != eventName) {
found = false;
}
if (found) {
compatibleMethods.Add(method.Name);
}
}
}
return compatibleMethods;
}
protected IField GetField(IClass c, string name)
{
foreach (IField field in c.Fields) {

1
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/IDesignerGenerator.cs

@ -24,6 +24,5 @@ namespace ICSharpCode.FormsDesigner @@ -24,6 +24,5 @@ namespace ICSharpCode.FormsDesigner
void MergeFormChanges(CodeCompileUnit unit);
bool InsertComponentEvent(IComponent component, EventDescriptor edesc, string eventMethodName, string body, out string file, out int position);
ICollection GetCompatibleMethods(EventDescriptor edesc);
ICollection GetCompatibleMethods(EventInfo edesc);
}
}

5
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs

@ -337,11 +337,6 @@ namespace ICSharpCode.FormsDesigner @@ -337,11 +337,6 @@ namespace ICSharpCode.FormsDesigner
return generator.GetCompatibleMethods(edesc);
}
public ICollection GetCompatibleMethods(EventInfo edesc)
{
return generator.GetCompatibleMethods(edesc);
}
/*
protected override void OnViewActivated(EventArgs e)
{

62
src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/EventHandlerService.cs

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2667$</version>
// </file>
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using ICSharpCode.WpfDesign;
namespace StandaloneDesigner
{
sealed class EventHandlerService : IEventHandlerService
{
Window1 mainWindow;
public EventHandlerService(Window1 mainWindow)
{
this.mainWindow = mainWindow;
}
public void CreateEventHandler(DesignItem item, DesignItemProperty eventProperty)
{
string handlerName = (string)eventProperty.ValueOnInstance;
if (string.IsNullOrEmpty(handlerName)) {
if (string.IsNullOrEmpty(item.Name)) {
// cannot create event for unnamed controls
if (mainWindow.propertyEditor.NameTextBox.Focus()) {
IErrorService errorService = item.Context.Services.GetService<IErrorService>();
if (errorService != null) {
Label errorLabel = new Label();
errorLabel.Content = "You need to give the " + item.ComponentType.Name + " a name.";
errorService.ShowErrorTooltip(mainWindow.propertyEditor.NameTextBox, errorLabel);
}
}
return;
}
handlerName = item.Name + eventProperty.Name;
eventProperty.SetValue(handlerName);
}
MessageBox.Show("show " + handlerName);
}
public DesignItemProperty GetDefaultEvent(DesignItem item)
{
object[] attributes = item.ComponentType.GetCustomAttributes(typeof(DefaultEventAttribute), true);
if (attributes.Length == 1) {
DefaultEventAttribute dae = (DefaultEventAttribute)attributes[0];
DesignItemProperty property = item.Properties.GetProperty(dae.Name);
if (property != null && property.IsEvent) {
return property;
}
}
return null;
}
}
}

1
src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/StandaloneDesigner.csproj

@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="EventHandlerService.cs" />
<Compile Include="Toolbox.cs" />
<Compile Include="Window1.xaml.cs">
<SubType>Code</SubType>

4
src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<Window x:Class="StandaloneDesigner.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns="http://schemas.microsoft.com/netfx/2007/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:designer="clr-namespace:ICSharpCode.WpfDesign.Designer;assembly=ICSharpCode.WpfDesign.Designer"
xmlns:my="clr-namespace:StandaloneDesigner"
@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
xml:space="preserve"><![CDATA[
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
<Window xmlns="http://schemas.microsoft.com/netfx/2007/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WindowTitle"
BorderThickness="10" Width="400" Height="300">

9
src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml.cs

@ -8,6 +8,7 @@ using System.Xml; @@ -8,6 +8,7 @@ using System.Xml;
using ICSharpCode.WpfDesign;
using ICSharpCode.WpfDesign.Designer;
using ICSharpCode.WpfDesign.Designer.Xaml;
using ICSharpCode.WpfDesign.PropertyEditor;
using System.Threading;
using System.Windows.Threading;
@ -41,7 +42,13 @@ namespace StandaloneDesigner @@ -41,7 +42,13 @@ namespace StandaloneDesigner
{
if (e.Source != tabControl) return;
if (tabControl.SelectedItem == designTab) {
designSurface.LoadDesigner(new XmlTextReader(new StringReader(CodeTextBox.Text)), null);
XamlLoadSettings settings = new XamlLoadSettings();
settings.CustomServiceRegisterFunctions.Add(
delegate(XamlDesignContext context) {
context.Services.AddService(typeof(IEventHandlerService), new EventHandlerService(this));
});
designSurface.LoadDesigner(new XmlTextReader(new StringReader(CodeTextBox.Text)), settings);
designSurface.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged;
toolbox.ToolService = designSurface.DesignContext.Services.Tool;
} else {

89
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/EventHandlerService.cs

@ -0,0 +1,89 @@ @@ -0,0 +1,89 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2667$</version>
// </file>
using System;
using System.ComponentModel;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.Core;
using System.Windows.Controls;
namespace ICSharpCode.WpfDesign.AddIn
{
sealed class EventHandlerService : IEventHandlerService
{
WpfViewContent viewContent;
public EventHandlerService(WpfViewContent viewContent)
{
if (viewContent == null)
throw new ArgumentNullException("viewContent");
this.viewContent = viewContent;
}
IProjectContent GetProjectContent()
{
IProject p = ProjectService.OpenSolution.FindProjectContainingFile(viewContent.PrimaryFileName);
if (p != null)
return ParserService.GetProjectContent(p) ?? ParserService.DefaultProjectContent;
else
return ParserService.DefaultProjectContent;
}
public void CreateEventHandler(DesignItem item, DesignItemProperty eventProperty)
{
/*Designer.Xaml.XamlDesignContext xamlContext = item.Context as Designer.Xaml.XamlDesignContext;
if (xamlContext != null) {
string className = xamlContext.ClassName;
if (!string.IsNullOrEmpty(className)) {
IClass c = GetProjectContent().GetClass(className, 0);
if (c != null && !string.IsNullOrEmpty(c.CompilationUnit.FileName)) {
}
}
}
return;
*/
string handlerName = (string)eventProperty.ValueOnInstance;
if (string.IsNullOrEmpty(handlerName)) {
if (string.IsNullOrEmpty(item.Name)) {
// cannot create event for unnamed controls
if (viewContent.PropertyEditor.NameTextBox.Focus()) {
IErrorService errorService = item.Context.Services.GetService<IErrorService>();
if (errorService != null) {
Label errorLabel = new Label();
errorLabel.Content = "You need to give the " + item.ComponentType.Name + " a name.";
errorService.ShowErrorTooltip(viewContent.PropertyEditor.NameTextBox, errorLabel);
}
}
return;
}
handlerName = item.Name + eventProperty.Name;
eventProperty.SetValue(handlerName);
}
//viewContent.PrimaryFileName + ".cs"
}
public DesignItemProperty GetDefaultEvent(DesignItem item)
{
object[] attributes = item.ComponentType.GetCustomAttributes(typeof(DefaultEventAttribute), true);
if (attributes.Length == 1) {
DefaultEventAttribute dae = (DefaultEventAttribute)attributes[0];
DesignItemProperty property = item.Properties.GetProperty(dae.Name);
if (property != null && property.IsEvent) {
return property;
}
}
return null;
}
}
}

77
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfAndWinFormsTopLevelWindowService.cs

@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2667$</version>
// </file>
using System;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Interop;
using System.Windows.Media;
namespace ICSharpCode.WpfDesign.AddIn
{
sealed class WpfAndWinFormsTopLevelWindowService : ITopLevelWindowService
{
public ITopLevelWindow GetTopLevelWindow(UIElement element)
{
Window window = Window.GetWindow(element);
if (window != null) {
return new WpfTopLevelWindow(window);
}
HwndSource hwndSource = PresentationSource.FromVisual(element) as HwndSource;
if (hwndSource != null) {
Control ctl = Control.FromChildHandle(hwndSource.Handle);
if (ctl != null) {
Form form = ctl.FindForm();
if (form != null) {
return new WindowsFormsTopLevelWindow(form);
}
}
}
return null;
}
sealed class WpfTopLevelWindow : ITopLevelWindow
{
Window window;
public WpfTopLevelWindow(Window window)
{
this.window = window;
}
public void SetOwner(Window child)
{
child.Owner = window;
}
public bool Activate()
{
return window.Activate();
}
}
sealed class WindowsFormsTopLevelWindow : ITopLevelWindow
{
Form form;
public WindowsFormsTopLevelWindow(Form form)
{
this.form = form;
}
public void SetOwner(Window child)
{
(new WindowInteropHelper(child)).Owner = form.Handle;
}
public bool Activate()
{
return form.Focus();
}
}
}
}

32
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs

@ -34,6 +34,7 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -34,6 +34,7 @@ namespace ICSharpCode.WpfDesign.AddIn
public WpfViewContent(OpenedFile file) : base(file)
{
this.TabPageText = "${res:FormsDesigner.DesignTabPages.DesignTabPage}";
this.IsActiveViewContentChanged += OnIsActiveViewContentChanged;
}
protected override void LoadInternal(OpenedFile file, System.IO.Stream stream)
@ -53,12 +54,14 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -53,12 +54,14 @@ namespace ICSharpCode.WpfDesign.AddIn
settings.CustomServiceRegisterFunctions.Add(
delegate(XamlDesignContext context) {
context.Services.AddService(typeof(IUriContext), new FileUriContext(this.PrimaryFile));
context.Services.AddService(typeof(IPropertyDescriptionService), new PropertyDescriptionService(this.PrimaryFile));
context.Services.AddService(typeof(IEventHandlerService), new EventHandlerService(this));
context.Services.AddService(typeof(ITopLevelWindowService), new WpfAndWinFormsTopLevelWindowService());
});
settings.TypeFinder = MyTypeFinder.Create(this.PrimaryFile);
designer.LoadDesigner(r, settings);
designer.DesignContext.Services.AddService(typeof(IPropertyDescriptionService), new PropertyDescriptionService(this.PrimaryFile));
designer.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged;
designer.DesignContext.Services.GetService<UndoService>().UndoStackChanged += OnUndoStackChanged;
}
@ -66,8 +69,12 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -66,8 +69,12 @@ namespace ICSharpCode.WpfDesign.AddIn
protected override void SaveInternal(OpenedFile file, System.IO.Stream stream)
{
using (XmlTextWriter xmlWriter = new XmlTextWriter(stream, Encoding.UTF8)) {
xmlWriter.Formatting = Formatting.Indented;
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.Indent = true;
settings.IndentChars = ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.SharpDevelopTextEditorProperties.Instance.IndentationString;
settings.NewLineOnAttributes = true;
using (XmlWriter xmlWriter = XmlTextWriter.Create(stream, settings)) {
designer.SaveDesigner(xmlWriter);
}
}
@ -116,6 +123,10 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -116,6 +123,10 @@ namespace ICSharpCode.WpfDesign.AddIn
return true;
}
public Designer.PropertyEditor PropertyEditor {
get { return propertyEditor; }
}
PropertyContainer propertyContainer = new PropertyContainer();
public PropertyContainer PropertyContainer {
@ -133,12 +144,13 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -133,12 +144,13 @@ namespace ICSharpCode.WpfDesign.AddIn
base.Dispose();
}
// protected override void OnSwitchedTo(EventArgs e)
// {
// base.OnSwitchedTo(e);
// if (designer != null && designer.DesignContext != null) {
// WpfToolbox.Instance.ToolService = designer.DesignContext.Services.Tool;
// }
// }
void OnIsActiveViewContentChanged(object sender, EventArgs e)
{
if (IsActiveViewContent) {
if (designer != null && designer.DesignContext != null) {
WpfToolbox.Instance.ToolService = designer.DesignContext.Services.Tool;
}
}
}
}
}

5
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.AddIn.csproj

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<ProjectGuid>{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
<NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
@ -52,10 +53,12 @@ @@ -52,10 +53,12 @@
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Src\EventHandlerService.cs" />
<Compile Include="Src\FileUriContext.cs" />
<Compile Include="Src\MyTypeFinder.cs" />
<Compile Include="Src\PropertyDescriptionService.cs" />
<Compile Include="Src\SharpDevelopElementHost.cs" />
<Compile Include="Src\WpfAndWinFormsTopLevelWindowService.cs" />
<Compile Include="Src\WpfDisplayBinding.cs" />
<Compile Include="Src\WpfSideTabItem.cs" />
<Compile Include="Src\WpfToolbox.cs" />

80
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/EventHandlerEditor.cs

@ -0,0 +1,80 @@ @@ -0,0 +1,80 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2667$</version>
// </file>
using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Controls;
using ICSharpCode.WpfDesign.PropertyEditor;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
/// <summary>
/// The combo box used to enter the event handler which an event is connected to.
/// </summary>
sealed class EventHandlerEditor : ComboBox
{
readonly IPropertyEditorDataEvent dataEvent;
public EventHandlerEditor(IPropertyEditorDataEvent dataEvent)
{
this.dataEvent = dataEvent;
this.IsEditable = true;
Loaded += delegate {
dataEvent.HandlerNameChanged += OnEventHandlerNameChanged;
OnEventHandlerNameChanged(null, null);
};
Unloaded += delegate {
dataEvent.HandlerNameChanged -= OnEventHandlerNameChanged;
};
}
void OnEventHandlerNameChanged(object sender, EventArgs e)
{
this.Text = dataEvent.HandlerName;
}
protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e)
{
base.OnKeyDown(e);
if (e.Handled)
return;
if (e.Key == Key.Enter) {
dataEvent.HandlerName = this.Text;
if (!string.IsNullOrEmpty(dataEvent.HandlerName)) {
dataEvent.GoToHandler();
}
e.Handled = true;
} else if (e.Key == Key.Escape) {
this.Text = dataEvent.HandlerName;
e.Handled = true;
}
}
protected override void OnLostKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
base.OnLostKeyboardFocus(e);
if (string.IsNullOrEmpty(this.Text))
dataEvent.HandlerName = null;
else
this.Text = dataEvent.HandlerName;
}
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
e.Handled = true;
DoubleClick();
}
public void DoubleClick()
{
dataEvent.GoToHandler();
}
}
}

35
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.cs

@ -79,7 +79,7 @@ namespace ICSharpCode.WpfDesign.Designer @@ -79,7 +79,7 @@ namespace ICSharpCode.WpfDesign.Designer
void ShowEventsButton_Click(object sender, RoutedEventArgs e)
{
ShowEvents(this.EditedObject);
}
bool useCategories = false;
@ -92,7 +92,7 @@ namespace ICSharpCode.WpfDesign.Designer @@ -92,7 +92,7 @@ namespace ICSharpCode.WpfDesign.Designer
if (useCategories) {
List<PropertyEditorCategoryView> categories = new List<PropertyEditorCategoryView>();
foreach (IPropertyEditorDataProperty p in Func.Sort(dataSource.Properties, ComparePropertyNames)) {
foreach (IPropertyEditorDataProperty p in Func.Sort(dataSource.Properties, CompareMemberNames)) {
if (p.Name == "Name") {
continue;
}
@ -111,7 +111,7 @@ namespace ICSharpCode.WpfDesign.Designer @@ -111,7 +111,7 @@ namespace ICSharpCode.WpfDesign.Designer
} else {
PropertyGridView grid = new PropertyGridView();
contentStackPanel.Children.Add(grid);
foreach (IPropertyEditorDataProperty p in Func.Sort(dataSource.Properties, ComparePropertyNames)) {
foreach (IPropertyEditorDataProperty p in Func.Sort(dataSource.Properties, CompareMemberNames)) {
if (p.Name == "Name") {
continue;
}
@ -120,7 +120,20 @@ namespace ICSharpCode.WpfDesign.Designer @@ -120,7 +120,20 @@ namespace ICSharpCode.WpfDesign.Designer
}
}
static int ComparePropertyNames(IPropertyEditorDataProperty p1, IPropertyEditorDataProperty p2)
void ShowEvents(IPropertyEditorDataSource dataSource)
{
contentStackPanel.Children.Clear();
if (dataSource == null)
return;
PropertyGridView grid = new PropertyGridView();
contentStackPanel.Children.Add(grid);
foreach (IPropertyEditorDataEvent e in Func.Sort(dataSource.Events, CompareMemberNames)) {
grid.AddEvent(e);
}
}
static int CompareMemberNames(IPropertyEditorDataMember p1, IPropertyEditorDataMember p2)
{
return p1.Name.CompareTo(p2.Name);
}
@ -169,6 +182,20 @@ namespace ICSharpCode.WpfDesign.Designer @@ -169,6 +182,20 @@ namespace ICSharpCode.WpfDesign.Designer
}
}
}
void nameTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Handled) return;
if (e.Key == Key.Enter) {
nameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
} else if (e.Key == Key.Escape) {
nameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateTarget();
}
}
public TextBox NameTextBox {
get { return nameTextBox; }
}
}
}

3
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.xaml

@ -24,7 +24,8 @@ @@ -24,7 +24,8 @@
<RowDefinition Height="0.5*" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Target="{Binding ElementName=nameTextBox}">_Name:</Label>
<TextBox Grid.Column="1" Grid.Row="0" Name="nameTextBox" SizeChanged="nameTextBox_SizeChanged"
<TextBox Grid.Column="1" Grid.Row="0" Name="nameTextBox"
SizeChanged="nameTextBox_SizeChanged" KeyDown="nameTextBox_KeyDown"
Text="{Binding ElementName=userControl, Path=EditedObject.Name}"/>
<Label Grid.Column="0" Grid.Row="1">Type:</Label>
<Label Grid.Column="1" Grid.Row="1" Name="typeLabel"

31
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyGridView.cs

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
using System;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Data;
using System.Windows.Controls;
using ICSharpCode.WpfDesign.PropertyEditor;
@ -67,5 +68,35 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -67,5 +68,35 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
this.Children.Add(dotButton);
propertyNameText.ContextMenuProvider = dotButton;
}
/// <summary>
/// Adds a new event to the PropertyGridView.
/// </summary>
public void AddEvent(IPropertyEditorDataEvent dataEvent)
{
this.RowDefinitions.Add(new RowDefinition());
// Column 0: name of the event
PropertyNameTextBlock propertyNameText = new PropertyNameTextBlock(dataEvent);
propertyNameText.Margin = new Thickness(0, 0, 2, 0);
SetRow(propertyNameText, this.RowDefinitions.Count - 1);
SetColumn(propertyNameText, 0);
this.Children.Add(propertyNameText);
// Column 1: the actual property editor
EventHandlerEditor editor = new EventHandlerEditor(dataEvent);
SetRow(editor, this.RowDefinitions.Count - 1);
SetColumn(editor, 1);
this.Children.Add(editor);
propertyNameText.MouseDown += delegate(object sender, MouseButtonEventArgs e) {
if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2) {
e.Handled = true;
editor.DoubleClick();
}
};
// Column 2: empty
}
}
}

4
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyNameTextBlock.cs

@ -17,12 +17,12 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -17,12 +17,12 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
// Creates ToolTip and ContextMenu objects on-demand.
sealed class PropertyNameTextBlock : TextBlock
{
readonly IPropertyEditorDataProperty property;
readonly IPropertyEditorDataMember property;
readonly DockPanel toolTipDockPanel;
bool toolTipInitialized;
internal DependencyPropertyDotButton ContextMenuProvider;
public PropertyNameTextBlock(IPropertyEditorDataProperty property)
public PropertyNameTextBlock(IPropertyEditorDataMember property)
: base(new Run(property.Name))
{
this.property = property;

44
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/WindowClone.cs

@ -155,6 +155,50 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -155,6 +155,50 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
get { return (WindowStyle)GetValue(Window.WindowStyleProperty); }
set { SetValue(Window.WindowStyleProperty, value); }
}
#pragma warning disable 0067
// disable "event is never used" warning
/// <summary>
/// This event is never raised. (for compatibility with <see cref="Window"/> only).
/// </summary>
public event EventHandler Activated;
/// <summary>
/// This event is never raised. (for compatibility with <see cref="Window"/> only).
/// </summary>
public event EventHandler Closed;
/// <summary>
/// This event is never raised. (for compatibility with <see cref="Window"/> only).
/// </summary>
public event EventHandler Closing;
/// <summary>
/// This event is never raised. (for compatibility with <see cref="Window"/> only).
/// </summary>
public event EventHandler ContentRendered;
/// <summary>
/// This event is never raised. (for compatibility with <see cref="Window"/> only).
/// </summary>
public event EventHandler Deactivated;
/// <summary>
/// This event is never raised. (for compatibility with <see cref="Window"/> only).
/// </summary>
public event EventHandler LocationChanged;
/// <summary>
/// This event is never raised. (for compatibility with <see cref="Window"/> only).
/// </summary>
public event EventHandler SourceInitialized;
/// <summary>
/// This event is never raised. (for compatibility with <see cref="Window"/> only).
/// </summary>
public event EventHandler StateChanged;
#pragma warning restore
}
/// <summary>

28
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ContentControlDefaultInitializer.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2667$</version>
// </file>
using System;
using System.Windows.Controls;
using ICSharpCode.WpfDesign.Extensions;
namespace ICSharpCode.WpfDesign.Designer.Extensions
{
/// <summary>
/// Description of ContentControlDefaultInitializer.
/// </summary>
[ExtensionFor(typeof(ContentControl))]
public sealed class ContentControlDefaultInitializer : DefaultInitializer
{
public override void InitializeDefaults(DesignItem item)
{
DesignItemProperty contentProperty = item.Properties["Content"];
if (contentProperty.ValueOnInstance == null) {
contentProperty.SetValue(item.ComponentType.Name);
}
}
}
}

3
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PanelSelectionHandler.cs

@ -34,9 +34,12 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -34,9 +34,12 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
public void HandleSelectionMouseDown(IDesignPanel designPanel, MouseButtonEventArgs e, DesignPanelHitTestResult result)
{
if (e.ChangedButton == MouseButton.Left && MouseGestureBase.IsOnlyButtonPressed(e, MouseButton.Left)) {
e.Handled = true;
new RangeSelectionGesture(result.ModelHit).Start(designPanel, e);
}
}
}
sealed class RangeSelectionGesture : ClickOrDragMouseGesture
{

4
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/CreateComponentTool.cs

@ -62,7 +62,9 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -62,7 +62,9 @@ namespace ICSharpCode.WpfDesign.Designer.Services
protected virtual DesignItem CreateItem(DesignContext context)
{
object newInstance = context.Services.ExtensionManager.CreateInstanceWithCustomInstanceFactory(componentType, null);
return context.Services.Component.RegisterComponentForDesigner(newInstance);
DesignItem item = context.Services.Component.RegisterComponentForDesigner(newInstance);
context.Services.ExtensionManager.ApplyDefaultInitializers(item);
return item;
}
void OnDragOver(object sender, DragEventArgs e)

22
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/DragMoveMouseGesture.cs

@ -22,12 +22,14 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -22,12 +22,14 @@ namespace ICSharpCode.WpfDesign.Designer.Services
readonly DesignItem clickedOn;
PlacementOperation operation;
ICollection<DesignItem> selectedItems;
bool isDoubleClick;
internal DragMoveMouseGesture(DesignItem clickedOn)
internal DragMoveMouseGesture(DesignItem clickedOn, bool isDoubleClick)
{
Debug.Assert(clickedOn != null);
this.clickedOn = clickedOn;
this.isDoubleClick = isDoubleClick;
if (clickedOn.Parent != null)
this.positionRelativeTo = clickedOn.Parent.View;
@ -116,6 +118,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -116,6 +118,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services
protected override void OnMouseUp(object sender, MouseButtonEventArgs e)
{
if (!hasDragStarted && isDoubleClick) {
// user made a double-click
Debug.Assert(operation == null);
HandleDoubleClick();
}
if (operation != null) {
operation.Commit();
operation = null;
@ -130,5 +137,18 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -130,5 +137,18 @@ namespace ICSharpCode.WpfDesign.Designer.Services
operation = null;
}
}
void HandleDoubleClick()
{
if (selectedItems.Count == 1) {
IEventHandlerService ehs = services.GetService<IEventHandlerService>();
if (ehs != null) {
DesignItemProperty defaultEvent = ehs.GetDefaultEvent(clickedOn);
if (defaultEvent != null) {
ehs.CreateEventHandler(clickedOn, defaultEvent);
}
}
}
}
}
}

14
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/ErrorService.cs

@ -52,6 +52,13 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -52,6 +52,13 @@ namespace ICSharpCode.WpfDesign.Designer.Services
}
}
ServiceContainer services;
public DefaultErrorService(DesignContext context)
{
this.services = context.Services;
}
public void ShowErrorTooltip(FrameworkElement attachTo, UIElement errorElement)
{
if (attachTo == null)
@ -64,8 +71,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -64,8 +71,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services
b.Left = pos.X;
b.Top = pos.Y - 8;
b.Focusable = false;
Window ownerWindow = Window.GetWindow(attachTo);
b.Owner = ownerWindow;
ITopLevelWindowService windowService = services.GetService<ITopLevelWindowService>();
ITopLevelWindow ownerWindow = (windowService != null) ? windowService.GetTopLevelWindow(attachTo) : null;
if (ownerWindow != null) {
ownerWindow.SetOwner(b);
}
b.Show();
if (ownerWindow != null) {

9
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/PointerTool.cs

@ -30,19 +30,20 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -30,19 +30,20 @@ namespace ICSharpCode.WpfDesign.Designer.Services
void OnMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left && MouseGestureBase.IsOnlyButtonPressed(e, MouseButton.Left)) {
e.Handled = true;
IDesignPanel designPanel = (IDesignPanel)sender;
DesignPanelHitTestResult result = designPanel.HitTest(e.GetPosition(designPanel), false, true);
if (result.ModelHit != null) {
IHandlePointerToolMouseDown b = result.ModelHit.GetBehavior<IHandlePointerToolMouseDown>();
if (b != null) {
b.HandleSelectionMouseDown(designPanel, e, result);
} else {
}
if (!e.Handled) {
if (e.ChangedButton == MouseButton.Left && MouseGestureBase.IsOnlyButtonPressed(e, MouseButton.Left)) {
e.Handled = true;
ISelectionService selectionService = designPanel.Context.Services.Selection;
selectionService.SetSelectedComponents(new DesignItem[] { result.ModelHit }, SelectionTypes.Auto);
if (selectionService.IsComponentSelected(result.ModelHit)) {
new DragMoveMouseGesture(result.ModelHit).Start(designPanel, e);
new DragMoveMouseGesture(result.ModelHit, e.ClickCount == 2).Start(designPanel, e);
}
}
}

44
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/WpfTopLevelWindowService.cs

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2667$</version>
// </file>
using System;
using System.Windows;
namespace ICSharpCode.WpfDesign.Designer.Services
{
sealed class WpfTopLevelWindowService : ITopLevelWindowService
{
public ITopLevelWindow GetTopLevelWindow(System.Windows.UIElement element)
{
Window window = Window.GetWindow(element);
if (window != null)
return new WpfTopLevelWindow(window);
else
return null;
}
sealed class WpfTopLevelWindow : ITopLevelWindow
{
Window window;
public WpfTopLevelWindow(Window window)
{
this.window = window;
}
public void SetOwner(Window child)
{
child.Owner = window;
}
public bool Activate()
{
return window.Activate();
}
}
}
}

3
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj

@ -60,6 +60,7 @@ @@ -60,6 +60,7 @@
<Compile Include="Controls\AdornerLayer.cs" />
<Compile Include="Controls\ContainerDragHandle.cs" />
<Compile Include="Controls\GridAdorner.cs" />
<Compile Include="Controls\PropertyEditor\EventHandlerEditor.cs" />
<Compile Include="Controls\SelectionFrame.cs" />
<Compile Include="Controls\ErrorBalloon.cs" />
<Compile Include="Controls\GrayOutDesignerExceptActiveArea.cs" />
@ -75,6 +76,7 @@ @@ -75,6 +76,7 @@
<Compile Include="Controls\WindowClone.cs" />
<Compile Include="DesignPanel.cs" />
<Compile Include="DragDropExceptionHandler.cs" />
<Compile Include="Extensions\ContentControlDefaultInitializer.cs" />
<Compile Include="Extensions\GridAdornerProvider.cs" />
<Compile Include="Extensions\GridPlacementSupport.cs" />
<Compile Include="ModelTools.cs" />
@ -100,6 +102,7 @@ @@ -100,6 +102,7 @@
<Compile Include="Services\UndoService.cs" />
<Compile Include="Services\ViewService.cs" />
<Compile Include="DesignSurface.cs" />
<Compile Include="Services\WpfTopLevelWindowService.cs" />
<Compile Include="SharedInstances.cs" />
<Compile Include="Xaml\XamlLoadSettings.cs" />
<Compile Include="Xaml\XamlModelCollectionElementsCollection.cs" />

15
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignContext.cs

@ -30,6 +30,14 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -30,6 +30,14 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
get { return _doc; }
}
/// <summary>
/// Gets/Sets the value of the "x:class" property on the root item.
/// </summary>
public string ClassName {
get { return _doc.RootElement.GetXamlAttribute("class"); }
set { _doc.RootElement.SetXamlAttribute("class", value); }
}
/// <summary>
/// Creates a new XamlDesignContext instance.
/// </summary>
@ -43,7 +51,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -43,7 +51,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
this.Services.AddService(typeof(ISelectionService), new DefaultSelectionService());
this.Services.AddService(typeof(IToolService), new DefaultToolService(this));
this.Services.AddService(typeof(UndoService), new UndoService());
this.Services.AddService(typeof(IErrorService), new DefaultErrorService());
this.Services.AddService(typeof(IErrorService), new DefaultErrorService(this));
this.Services.AddService(typeof(ViewService), new DefaultViewService(this));
this.Services.AddService(typeof(OptionService), new OptionService());
@ -57,6 +65,11 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -57,6 +65,11 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
action(this);
}
// register default versions of overridable services:
if (this.Services.GetService(typeof(ITopLevelWindowService)) == null) {
this.Services.AddService(typeof(ITopLevelWindowService), new WpfTopLevelWindowService());
}
// register extensions from the designer assemblies:
foreach (Assembly designerAssembly in loadSettings.DesignerAssemblies) {
this.Services.ExtensionManager.RegisterAssembly(designerAssembly);

8
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlModelProperty.cs

@ -60,6 +60,10 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -60,6 +60,10 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
get { return _property.IsCollection; }
}
public override bool IsEvent {
get { return _property.IsEvent; }
}
public override Type ReturnType {
get { return _property.ReturnType; }
}
@ -125,7 +129,9 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -125,7 +129,9 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
}
public override object ValueOnInstance {
get { return _property.ValueOnInstance; }
get {
return _property.ValueOnInstance;
}
set { _property.ValueOnInstance = value; }
}

47
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs

@ -62,6 +62,53 @@ namespace ICSharpCode.WpfDesign.Tests.Designer @@ -62,6 +62,53 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
AssertLog("");
}
[Test]
public void ButtonClickEventHandler()
{
DesignItem button = CreateCanvasContext("<Button Click='OnClick'/>");
Assert.AreEqual("OnClick", button.Properties["Click"].ValueOnInstance);
button.Properties["Click"].Reset();
button.Properties["KeyDown"].SetValue("ButtonKeyDown");
AssertCanvasDesignerOutput(@"<Button KeyDown=""ButtonKeyDown"" />", button.Context);
AssertLog("");
}
[Test]
public void ButtonClickEventHandlerUndoRedo()
{
DesignItem button = CreateCanvasContext("<Button/>");
UndoService s = button.Context.Services.GetService<UndoService>();
Assert.IsFalse(s.CanUndo);
Assert.IsFalse(s.CanRedo);
button.Properties["Click"].SetValue("OnClick");
Assert.IsTrue(s.CanUndo);
Assert.IsFalse(s.CanRedo);
AssertCanvasDesignerOutput(@"<Button Click=""OnClick"" />", button.Context);
button.Properties["Click"].SetValue("OnClick2");
Assert.IsTrue(s.CanUndo);
Assert.IsFalse(s.CanRedo);
AssertCanvasDesignerOutput(@"<Button Click=""OnClick2"" />", button.Context);
s.Undo();
Assert.IsTrue(s.CanUndo);
Assert.IsTrue(s.CanRedo);
AssertCanvasDesignerOutput(@"<Button Click=""OnClick"" />", button.Context);
s.Undo();
Assert.IsFalse(s.CanUndo);
Assert.IsTrue(s.CanRedo);
AssertCanvasDesignerOutput(@"<Button />", button.Context);
s.Redo();
Assert.IsTrue(s.CanUndo);
Assert.IsTrue(s.CanRedo);
AssertCanvasDesignerOutput(@"<Button Click=""OnClick"" />", button.Context);
AssertLog("");
}
[Test]
public void UndoRedoChangeGroupTest()
{

31
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlObject.cs

@ -118,10 +118,18 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -118,10 +118,18 @@ namespace ICSharpCode.WpfDesign.XamlDom
}
PropertyDescriptorCollection propertyDescriptors = TypeDescriptor.GetProperties(instance);
PropertyDescriptor propertyInfo = propertyDescriptors[propertyName];
if (propertyInfo == null) {
XamlProperty newProperty;
if (propertyInfo != null) {
newProperty = new XamlProperty(this, new XamlNormalPropertyInfo(propertyInfo));
} else {
EventDescriptorCollection events = TypeDescriptor.GetEvents(instance);
EventDescriptor eventInfo = events[propertyName];
if (eventInfo != null) {
newProperty = new XamlProperty(this, new XamlEventPropertyInfo(eventInfo));
} else {
throw new ArgumentException("The property '" + propertyName + "' doesn't exist on " + elementType.FullName, "propertyName");
}
XamlProperty newProperty = new XamlProperty(this, new XamlNormalPropertyInfo(propertyInfo));
}
properties.Add(newProperty);
return newProperty;
}
@ -148,5 +156,24 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -148,5 +156,24 @@ namespace ICSharpCode.WpfDesign.XamlDom
properties.Add(newProperty);
return newProperty;
}
/// <summary>
/// Gets an attribute in the x:-namespace.
/// </summary>
public string GetXamlAttribute(string name)
{
return element.GetAttribute(name, XamlConstants.XamlNamespace);
}
/// <summary>
/// Sets an attribute in the x:-namespace.
/// </summary>
public void SetXamlAttribute(string name, string value)
{
if (value == null)
element.RemoveAttribute(name, XamlConstants.XamlNamespace);
else
element.SetAttribute(name, XamlConstants.XamlNamespace, value);
}
}
}

16
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlProperty.cs

@ -77,6 +77,13 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -77,6 +77,13 @@ namespace ICSharpCode.WpfDesign.XamlDom
get { return propertyInfo.IsAttached; }
}
/// <summary>
/// Gets if this property is an event.
/// </summary>
public bool IsEvent {
get { return propertyInfo.IsEvent; }
}
/// <summary>
/// Gets the return type of the property.
/// </summary>
@ -276,9 +283,16 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -276,9 +283,16 @@ namespace ICSharpCode.WpfDesign.XamlDom
/// Gets/Sets the value of the property on the instance without updating the XAML document.
/// </summary>
public object ValueOnInstance {
get{
get {
if (IsEvent) {
if (propertyValue != null)
return propertyValue.GetValueFor(null);
else
return null;
} else {
return propertyInfo.GetValue(parentObject.Instance);
}
}
set {
propertyInfo.SetValue(parentObject.Instance, value);
}

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlPropertyInfo.cs

@ -182,7 +182,7 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -182,7 +182,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
public override object GetValue(object instance)
{
return null;
throw new NotSupportedException();
}
public override void SetValue(object instance, object value)

5
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/DesignItemProperty.cs

@ -54,6 +54,11 @@ namespace ICSharpCode.WpfDesign @@ -54,6 +54,11 @@ namespace ICSharpCode.WpfDesign
/// </summary>
public abstract bool IsCollection { get; }
/// <summary>
/// Gets if the property represents an event.
/// </summary>
public abstract bool IsEvent { get; }
/// <summary>
/// Gets the elements represented by the collection.
/// </summary>

18
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs

@ -217,7 +217,7 @@ namespace ICSharpCode.WpfDesign.Extensions @@ -217,7 +217,7 @@ namespace ICSharpCode.WpfDesign.Extensions
}
#endregion
#region Special extensions (Instance Factory)
#region Special extensions (CustomInstanceFactory and DefaultInitializer)
static readonly object[] emptyObjectArray = new object[0];
/// <summary>
@ -239,6 +239,22 @@ namespace ICSharpCode.WpfDesign.Extensions @@ -239,6 +239,22 @@ namespace ICSharpCode.WpfDesign.Extensions
}
return CustomInstanceFactory.DefaultInstanceFactory.CreateInstance(instanceType, arguments);
}
/// <summary>
/// Applies all DefaultInitializer extensions on the design item.
/// </summary>
public void ApplyDefaultInitializers(DesignItem item)
{
if (item == null)
throw new ArgumentNullException("item");
foreach (ExtensionEntry entry in GetExtensionEntries(item)) {
if (typeof(DefaultInitializer).IsAssignableFrom(entry.ExtensionType)) {
DefaultInitializer initializer = (DefaultInitializer)Activator.CreateInstance(entry.ExtensionType);
initializer.InitializeDefaults(item);
}
}
}
#endregion
}
}

49
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/DesignItemDataEvent.cs

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision: 2667$</version>
// </file>
using System;
using System.Diagnostics;
namespace ICSharpCode.WpfDesign.PropertyEditor
{
/// <summary>
/// wraps a DesignItemDataProperty (with IsEvent=true) for the property editor/grid.
/// </summary>
sealed class DesignItemDataEvent : DesignItemDataMember, IPropertyEditorDataEvent
{
internal DesignItemDataEvent(DesignItemDataSource ownerDataSource, DesignItemProperty property)
: base(ownerDataSource, property)
{
Debug.Assert(property.IsEvent);
}
public event EventHandler HandlerNameChanged {
add { property.ValueChanged += value; }
remove { property.ValueChanged -= value; }
}
public string HandlerName {
get {
return (string)property.ValueOnInstance;
}
set {
if (string.IsNullOrEmpty(value))
property.Reset();
else
property.SetValue(value);
}
}
public void GoToHandler()
{
IEventHandlerService ehs = ownerDataSource.Services.GetService<IEventHandlerService>();
if (ehs != null) {
ehs.CreateEventHandler(ownerDataSource.DesignItem, property);
}
}
}
}

61
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/DesignItemDataMember.cs

@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Diagnostics;
namespace ICSharpCode.WpfDesign.PropertyEditor
{
/// <summary>
/// wraps a DesignItemDataProperty for the property editor/grid.
/// </summary>
class DesignItemDataMember : IPropertyEditorDataMember
{
protected readonly DesignItemDataSource ownerDataSource;
protected readonly DesignItemProperty property;
protected DesignItemDataMember(DesignItemDataSource ownerDataSource, DesignItemProperty property)
{
Debug.Assert(ownerDataSource != null);
Debug.Assert(property != null);
this.ownerDataSource = ownerDataSource;
this.property = property;
}
public IPropertyEditorDataSource OwnerDataSource {
get { return ownerDataSource; }
}
public string Name {
get { return property.Name; }
}
public object GetDescription()
{
IPropertyDescriptionService p = ownerDataSource.DesignItem.Services.GetService<IPropertyDescriptionService>();
if (p != null)
return p.GetDescription(property);
else
return null;
}
/// <summary>
/// Gets the type that declares the property.
/// </summary>
public Type DeclaringType {
get { return property.DeclaringType; }
}
/// <summary>
/// Gets the type of the property value.
/// </summary>
public Type ReturnType {
get { return property.ReturnType; }
}
}
}

45
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/DesignItemDataProperty.cs

@ -12,43 +12,20 @@ using System.Windows; @@ -12,43 +12,20 @@ using System.Windows;
namespace ICSharpCode.WpfDesign.PropertyEditor
{
/// <summary>
/// wraps a DesignItemDataProperty for the property editor/grid.
/// wraps a DesignItemDataProperty (with IsEvent=false) for the property editor/grid.
/// </summary>
sealed class DesignItemDataProperty : IPropertyEditorDataProperty
sealed class DesignItemDataProperty : DesignItemDataMember, IPropertyEditorDataProperty
{
readonly DesignItemDataSource ownerDataSource;
readonly DesignItemProperty property;
internal DesignItemDataProperty(DesignItemDataSource ownerDataSource, DesignItemProperty property)
: base(ownerDataSource, property)
{
Debug.Assert(ownerDataSource != null);
Debug.Assert(property != null);
this.ownerDataSource = ownerDataSource;
this.property = property;
}
public IPropertyEditorDataSource OwnerDataSource {
get { return ownerDataSource; }
Debug.Assert(!property.IsEvent);
}
public string Category {
get { return property.Category; }
}
public string Name {
get { return property.Name; }
}
public object GetDescription()
{
IPropertyDescriptionService p = ownerDataSource.DesignItem.Services.GetService<IPropertyDescriptionService>();
if (p != null)
return p.GetDescription(property);
else
return null;
}
public System.ComponentModel.TypeConverter TypeConverter {
get { return property.TypeConverter; }
}
@ -92,20 +69,6 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -92,20 +69,6 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
remove { property.ValueChanged -= value; }
}
/// <summary>
/// Gets the type of the property value.
/// </summary>
public Type ReturnType {
get { return property.ReturnType; }
}
/// <summary>
/// Gets the type that declares the property.
/// </summary>
public Type DeclaringType {
get { return property.DeclaringType; }
}
public bool CanUseCustomExpression {
get {
return true;

41
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/DesignItemDataSource.cs

@ -6,11 +6,11 @@ @@ -6,11 +6,11 @@
// </file>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows;
using System.Windows.Media;
using System.Collections.Generic;
namespace ICSharpCode.WpfDesign.PropertyEditor
{
@ -21,6 +21,7 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -21,6 +21,7 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
{
readonly DesignItem item;
readonly List<IPropertyEditorDataProperty> properties = new List<IPropertyEditorDataProperty>();
readonly List<IPropertyEditorDataEvent> events = new List<IPropertyEditorDataEvent>();
#region Available properties
// cache properties available for a type - retrieving this list takes ~100ms on my machine, so
@ -50,6 +51,32 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -50,6 +51,32 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
}
#endregion
#region Available events
// cache events available for a type
static readonly Dictionary<Type, string[]> availableEvents = new Dictionary<Type, string[]>();
static string[] GetAvailableEvents(Type forType)
{
Debug.Assert(forType != null);
string[] result;
lock (availableEvents) {
if (availableEvents.TryGetValue(forType, out result))
return result;
}
List<string> names = new List<string>();
foreach (EventDescriptor p in TypeDescriptor.GetEvents(forType)) {
if (!p.IsBrowsable) continue;
if (p.Name.Contains(".")) continue;
names.Add(p.Name);
}
result = names.ToArray();
lock (availableEvents) {
availableEvents[forType] = result;
}
return result;
}
#endregion
/// <summary>
/// Constructs a new DesignItemDataSource for the specified design item.
/// </summary>
@ -63,12 +90,19 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -63,12 +90,19 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
foreach (string name in GetAvailableProperties(item.ComponentType)) {
designItemProperties.Add(item.Properties[name]);
}
foreach (string name in GetAvailableEvents(item.ComponentType)) {
designItemProperties.Add(item.Properties[name]);
}
designItemProperties.AddRange(item.Properties);
foreach (DesignItemProperty p in Func.Distinct(designItemProperties)) {
if (p.IsEvent) {
events.Add(new DesignItemDataEvent(this, p));
} else {
properties.Add(new DesignItemDataProperty(this, p));
}
}
}
/// <summary>
/// Gets a data source for the specified design item.
@ -139,6 +173,11 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -139,6 +173,11 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
get { return properties.AsReadOnly(); }
}
/// <summary>See <see cref="IPropertyEditorDataSource"/></summary>
public ICollection<IPropertyEditorDataEvent> Events {
get { return events.AsReadOnly(); }
}
/// <summary>See <see cref="IPropertyEditorDataSource"/></summary>
public bool CanAddAttachedProperties {
get {

60
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/IPropertyEditorDataSource.cs

@ -43,6 +43,11 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -43,6 +43,11 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
/// </summary>
ICollection<IPropertyEditorDataProperty> Properties { get; }
/// <summary>
/// Gets the collection of events.
/// </summary>
ICollection<IPropertyEditorDataEvent> Events { get; }
/// <summary>
/// Gets if adding attached properties is supported.
/// </summary>
@ -60,39 +65,29 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -60,39 +65,29 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
}
/// <summary>
/// Represents a property inside a <see cref="IPropertyEditorDataSource"/>.
/// Represents a property or event inside a <see cref="IPropertyEditorDataSource"/>.
/// </summary>
public interface IPropertyEditorDataProperty
public interface IPropertyEditorDataMember
{
/// <summary>
/// Gets the data source that own this property.
/// </summary>
IPropertyEditorDataSource OwnerDataSource { get; }
/// <summary>
/// Gets the category this property uses.
/// </summary>
string Category { get; }
/// <summary>
/// Gets the name of the property.
/// </summary>
string Name { get; }
/// <summary>
/// Gets the type of the property value.
/// </summary>
Type ReturnType { get; }
/// <summary>
/// Gets the type that declares the property.
/// </summary>
Type DeclaringType { get; }
/// <summary>
/// Gets the type converter used to convert property values to/from string.
/// Gets the type of the property value / the type of the event delegate.
/// </summary>
TypeConverter TypeConverter { get; }
Type ReturnType { get; }
/// <summary>
/// Gets the description of the property. The returned object should be something that
@ -100,6 +95,22 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -100,6 +95,22 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
/// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
object GetDescription(); // is not a property because it can create a new instance on every call
}
/// <summary>
/// Represents a property inside a <see cref="IPropertyEditorDataSource"/>.
/// </summary>
public interface IPropertyEditorDataProperty : IPropertyEditorDataMember
{
/// <summary>
/// Gets the category this property uses.
/// </summary>
string Category { get; }
/// <summary>
/// Gets the type converter used to convert property values to/from string.
/// </summary>
TypeConverter TypeConverter { get; }
/// <summary>
/// Gets/Sets if the property has been assigned a local value.
@ -143,4 +154,25 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -143,4 +154,25 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
/// </summary>
UIElement CreateEditor();
}
/// <summary>
/// Represents an event inside a <see cref="IPropertyEditorDataSource"/>.
/// </summary>
public interface IPropertyEditorDataEvent : IPropertyEditorDataMember
{
/// <summary>
/// Gets/Sets the name of the event handler.
/// </summary>
string HandlerName { get; set; }
/// <summary>
/// Is raised when the HandlerName property has changed.
/// </summary>
event EventHandler HandlerNameChanged;
/// <summary>
/// Goes to the event handler, creating it when necessary.
/// </summary>
void GoToHandler();
}
}

5
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PropertyEditor/MultipleSelectionDataSource.cs

@ -134,5 +134,10 @@ namespace ICSharpCode.WpfDesign.PropertyEditor @@ -134,5 +134,10 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
{
return null;
}
/// <summary>See <see cref="IPropertyEditorDataSource"/></summary>
public ICollection<IPropertyEditorDataEvent> Events {
get { return new IPropertyEditorDataEvent[0]; }
}
}
}

50
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Services.cs

@ -167,4 +167,54 @@ namespace ICSharpCode.WpfDesign @@ -167,4 +167,54 @@ namespace ICSharpCode.WpfDesign
void ShowErrorTooltip(FrameworkElement attachTo, UIElement errorElement);
}
#endregion
#region IEventHandlerService
/// <summary>
/// Service for providing the designer with information about available event handlers.
/// </summary>
public interface IEventHandlerService
{
/// <summary>
/// Creates an event handler for the specified event.
/// </summary>
void CreateEventHandler(DesignItem item, DesignItemProperty eventProperty);
/// <summary>
/// Gets the default event of the specified design item.
/// </summary>
DesignItemProperty GetDefaultEvent(DesignItem item);
}
#endregion
#region ITopLevelWindowService
/// <summary>
/// Represents a top level window.
/// </summary>
public interface ITopLevelWindow
{
/// <summary>
/// Sets child.Owner to the top level window.
/// </summary>
void SetOwner(Window child);
/// <summary>
/// Activates the window.
/// </summary>
bool Activate();
}
/// <summary>
/// Provides a method to get the top-level-window of any UIElement.
/// If the WPF Designer is hosted inside a Windows.Forms application, the hosting environment
/// should specify a ITopLevelWindowService implementation that works with <b>both</b> WPF and Windows.Forms
/// top-level-windows.
/// </summary>
public interface ITopLevelWindowService
{
/// <summary>
/// Gets the top level window that contains the specified element.
/// </summary>
ITopLevelWindow GetTopLevelWindow(UIElement element);
}
#endregion
}

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/WpfDesign.csproj

@ -89,6 +89,8 @@ @@ -89,6 +89,8 @@
<Compile Include="PlacementOperation.cs" />
<Compile Include="PlacementType.cs" />
<Compile Include="PropertyEditor\BooleanEditor.cs" />
<Compile Include="PropertyEditor\DesignItemDataEvent.cs" />
<Compile Include="PropertyEditor\DesignItemDataMember.cs" />
<Compile Include="PropertyEditor\MultipleSelectionDataProperty.cs" />
<Compile Include="PropertyEditor\ProxyPropertyEditorDataProperty.cs" />
<Compile Include="PropertyEditor\StandardValuesComboBoxEditor.cs" />

2
src/Libraries/NRefactory/Project/Src/Lexer/CSharp/KeywordList.txt

@ -186,7 +186,7 @@ OverloadableBinaryOp("+", "-", "*", "/", "%", "&", "|", "^", "<<", "==", "!=", " @@ -186,7 +186,7 @@ OverloadableBinaryOp("+", "-", "*", "/", "%", "&", "|", "^", "<<", "==", "!=", "
TypeKW("char", "bool", "object", "string", "sbyte", "byte", "short", "ushort", "int", "uint", "long", "ulong", "float", "double", "decimal")
UnaryHead("+", "-", "!", "~", "*", "++", "--", "&")
AssnStartOp("+", "-", "!", "~", "*")
CastFollower(@IdentifierTokens, Literal, "(", "new", "this", "base", "null", "checked", "unchecked", "typeof", "sizeof", "delegate", @OverloadableUnaryOp, @UnaryOp)
CastFollower(@SimpleTypeName, Literal, "(", "~", "!", @ExpressionStart)
AssgnOps("=", "+=", "-=", "*=", "/=", "%=", "&=", "|=", "<<=")
UnaryOp("+", "-", "!", "~", "*", "++", "--", "&")
TypeDeclarationKW("class", "interface", "struct", "enum", "delegate")

2
src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Tokens.cs

@ -172,7 +172,7 @@ namespace ICSharpCode.NRefactory.Parser.CSharp @@ -172,7 +172,7 @@ namespace ICSharpCode.NRefactory.Parser.CSharp
public static BitArray TypeKW = NewSet(Char, Bool, Object, String, Sbyte, Byte, Short, Ushort, Int, Uint, Long, Ulong, Float, Double, Decimal);
public static BitArray UnaryHead = NewSet(Plus, Minus, Not, BitwiseComplement, Times, Increment, Decrement, BitwiseAnd);
public static BitArray AssnStartOp = NewSet(Plus, Minus, Not, BitwiseComplement, Times);
public static BitArray CastFollower = NewSet(Identifier, Partial, Where, Get, Set, Add, Remove, Yield, Select, Group, By, Into, From, Ascending, Descending, Orderby, Let, Join, On, Equals, Literal, OpenParenthesis, New, This, Base, Null, Checked, Unchecked, Typeof, Sizeof, Delegate, Minus, Not, BitwiseComplement, Increment, Decrement, True, False, Plus, Minus, Not, BitwiseComplement, Times, Increment, Decrement, BitwiseAnd);
public static BitArray CastFollower = NewSet(Char, Bool, Object, String, Sbyte, Byte, Short, Ushort, Int, Uint, Long, Ulong, Float, Double, Decimal, Identifier, Partial, Where, Get, Set, Add, Remove, Yield, Select, Group, By, Into, From, Ascending, Descending, Orderby, Let, Join, On, Equals, Void, Literal, OpenParenthesis, BitwiseComplement, Not, Base, Delegate, False, New, Null, Sizeof, This, True, Typeof, Checked, Unchecked, From);
public static BitArray AssgnOps = NewSet(Assign, PlusAssign, MinusAssign, TimesAssign, DivAssign, ModAssign, BitwiseAndAssign, BitwiseOrAssign, ShiftLeftAssign);
public static BitArray UnaryOp = NewSet(Plus, Minus, Not, BitwiseComplement, Times, Increment, Decrement, BitwiseAnd);
public static BitArray TypeDeclarationKW = NewSet(Class, Interface, Struct, Enum, Delegate);

10
src/Libraries/NRefactory/Project/Src/Parser/CSharp/CSharpParser.cs

@ -213,10 +213,18 @@ namespace ICSharpCode.NRefactory.Parser.CSharp @@ -213,10 +213,18 @@ namespace ICSharpCode.NRefactory.Parser.CSharp
}
// check successor
pt = Peek();
return Tokens.CastFollower[pt.kind] || (Tokens.TypeKW[pt.kind] && lexer.Peek().kind == Tokens.Dot);
return Tokens.CastFollower[pt.kind];
}
// END IsTypeCast
// Gets if the token is a possible token for an expression start
// Is used to determine if "a is Type ? token" a the start of a ternary
// expression or a type test for Nullable<Type>
bool IsPossibleExpressionStart(int token)
{
return Tokens.CastFollower[token] || Tokens.UnaryOp[token];
}
// ( { [TypeNameOrKWForTypeCast] ident "," } )
bool IsLambdaExpression()
{

1271
src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs

File diff suppressed because it is too large Load Diff

23
src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG

@ -1352,7 +1352,7 @@ CollectionInitializer<out Expression outExpr> @@ -1352,7 +1352,7 @@ CollectionInitializer<out Expression outExpr>
CollectionInitializerExpression initializer = new CollectionInitializerExpression();
.)
=
"{"
"{" (. initializer.StartLocation = t.Location; .)
[ VariableInitializer<out expr>
(. if (expr != null) { initializer.CreateExpressions.Add(expr); } .)
{ IF (NotFinalComma())
@ -1361,7 +1361,7 @@ CollectionInitializer<out Expression outExpr> @@ -1361,7 +1361,7 @@ CollectionInitializer<out Expression outExpr>
}
[ "," ]
]
"}" (. outExpr = initializer; .)
"}" (. initializer.EndLocation = t.Location; outExpr = initializer; .)
.
CollectionOrObjectInitializer<out Expression outExpr>
@ -1370,7 +1370,7 @@ CollectionOrObjectInitializer<out Expression outExpr> @@ -1370,7 +1370,7 @@ CollectionOrObjectInitializer<out Expression outExpr>
CollectionInitializerExpression initializer = new CollectionInitializerExpression();
.)
=
"{"
"{" (. initializer.StartLocation = t.Location; .)
[ ObjectPropertyInitializerOrVariableInitializer<out expr>
(. if (expr != null) { initializer.CreateExpressions.Add(expr); } .)
{ IF (NotFinalComma())
@ -1379,7 +1379,7 @@ CollectionOrObjectInitializer<out Expression outExpr> @@ -1379,7 +1379,7 @@ CollectionOrObjectInitializer<out Expression outExpr>
}
[ "," ]
]
"}" (. outExpr = initializer; .)
"}" (. initializer.EndLocation = t.Location; outExpr = initializer; .)
.
ObjectPropertyInitializerOrVariableInitializer<out Expression expr>
@ -1387,11 +1387,14 @@ ObjectPropertyInitializerOrVariableInitializer<out Expression expr> @@ -1387,11 +1387,14 @@ ObjectPropertyInitializerOrVariableInitializer<out Expression expr>
=
( IF (IdentAndAsgn())
Identifier
(. IdentifierExpression l = new IdentifierExpression(t.val);
l.StartLocation = t.Location; l.EndLocation = t.EndLocation;
(. NamedArgumentExpression nae = new NamedArgumentExpression(t.val, null);
nae.StartLocation = t.Location;
Expression r = null; .)
"=" VariableInitializer <out r>
(. expr = new AssignmentExpression(l, AssignmentOperatorType.Assign, r); .)
"="
( CollectionOrObjectInitializer<out r>
| VariableInitializer <out r> )
(. nae.Expression = r; nae.EndLocation = t.EndLocation; expr = nae; .)
| VariableInitializer <out expr>
)
.
@ -2063,12 +2066,12 @@ RelationalExpr<ref Expression outExpr> @@ -2063,12 +2066,12 @@ RelationalExpr<ref Expression outExpr>
|
( "is"
TypeWithRestriction<out type, false, false>
[ IF (la.kind == Tokens.Question && Tokens.CastFollower[Peek(1).kind] == false)
[ IF (la.kind == Tokens.Question && !IsPossibleExpressionStart(Peek(1).kind))
NullableQuestionMark<ref type> ]
(. outExpr = new TypeOfIsExpression(outExpr, type); .)
| "as"
TypeWithRestriction<out type, false, false>
[ IF (la.kind == Tokens.Question && Tokens.CastFollower[Peek(1).kind] == false)
[ IF (la.kind == Tokens.Question && !IsPossibleExpressionStart(Peek(1).kind))
NullableQuestionMark<ref type> ]
(. outExpr = new CastExpression(type, outExpr, CastType.TryCast); .)
)

34
src/Libraries/NRefactory/Test/Parser/Expressions/CastExpressionTests.cs

@ -107,6 +107,40 @@ namespace ICSharpCode.NRefactory.Tests.Ast @@ -107,6 +107,40 @@ namespace ICSharpCode.NRefactory.Tests.Ast
Assert.IsTrue(ce.Expression is FieldReferenceExpression);
Assert.AreEqual(CastType.Cast, ce.CastType);
}
[Test]
public void CSharpTryCastParenthesizedExpression()
{
CastExpression ce = ParseUtilCSharp.ParseExpression<CastExpression>("(o) as string");
Assert.AreEqual("string", ce.CastTo.ToString());
Assert.IsTrue(ce.Expression is ParenthesizedExpression);
Assert.AreEqual(CastType.TryCast, ce.CastType);
}
[Test]
public void CSharpCastNegation()
{
CastExpression ce = ParseUtilCSharp.ParseExpression<CastExpression>("(uint)-negativeValue");
Assert.AreEqual("uint", ce.CastTo.ToString());
Assert.IsTrue(ce.Expression is UnaryOperatorExpression);
Assert.AreEqual(CastType.Cast, ce.CastType);
}
[Test]
public void CSharpSubtractionIsNotCast()
{
BinaryOperatorExpression boe = ParseUtilCSharp.ParseExpression<BinaryOperatorExpression>("(BigInt)-negativeValue");
Assert.IsTrue(boe.Left is ParenthesizedExpression);
Assert.IsTrue(boe.Right is IdentifierExpression);
}
[Test]
public void CSharpIntMaxValueToBigInt()
{
CastExpression ce = ParseUtilCSharp.ParseExpression<CastExpression>("(BigInt)int.MaxValue");
Assert.AreEqual("BigInt", ce.CastTo.ToString());
Assert.IsTrue(ce.Expression is FieldReferenceExpression);
}
#endregion
#region VB.NET

8
src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs

@ -77,11 +77,9 @@ namespace ICSharpCode.NRefactory.Tests.Ast @@ -77,11 +77,9 @@ namespace ICSharpCode.NRefactory.Tests.Ast
Expression CheckPropertyInitializationExpression(Expression e, string name)
{
Assert.IsInstanceOfType(typeof(AssignmentExpression), e);
Expression left = ((AssignmentExpression)e).Left;
Assert.IsInstanceOfType(typeof(IdentifierExpression), left);
Assert.AreEqual(name, ((IdentifierExpression)left).Identifier);
return ((AssignmentExpression)e).Right;
Assert.IsInstanceOfType(typeof(NamedArgumentExpression), e);
Assert.AreEqual(name, ((NamedArgumentExpression)e).Name);
return ((NamedArgumentExpression)e).Expression;
}
void CheckPointObjectCreation(ObjectCreateExpression oce)

50
src/Main/Base/Project/Src/Gui/AbstractViewContent.cs

@ -361,6 +361,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -361,6 +361,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public virtual void Dispose()
{
workbenchWindow = null;
UnregisterOnActiveViewContentChanged();
if (AutomaticallyRegisterViewOnFiles) {
this.Files.Clear();
}
@ -410,6 +411,55 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -410,6 +411,55 @@ namespace ICSharpCode.SharpDevelop.Gui
public event EventHandler IsDirtyChanged;
#endregion
#region IsActiveViewContent
EventHandler isActiveViewContentChanged;
bool registeredOnViewContentChange;
bool wasActiveViewContent;
/// <summary>
/// Gets if this view content is the active view content.
/// </summary>
protected bool IsActiveViewContent {
get { return WorkbenchSingleton.Workbench.ActiveViewContent == this; }
}
/// <summary>
/// Is raised when the value of the IsActiveViewContent property changes.
/// </summary>
protected event EventHandler IsActiveViewContentChanged {
add {
if (!registeredOnViewContentChange) {
// register WorkbenchSingleton.Workbench.ActiveViewContentChanged only on demand
wasActiveViewContent = IsActiveViewContent;
WorkbenchSingleton.Workbench.ActiveViewContentChanged += OnActiveViewContentChanged;
registeredOnViewContentChange = true;
}
isActiveViewContentChanged += value;
}
remove {
isActiveViewContentChanged -= value;
}
}
void UnregisterOnActiveViewContentChanged()
{
if (registeredOnViewContentChange) {
WorkbenchSingleton.Workbench.ActiveViewContentChanged -= OnActiveViewContentChanged;
registeredOnViewContentChange = false;
}
}
void OnActiveViewContentChanged(object sender, EventArgs e)
{
bool isActiveViewContent = IsActiveViewContent;
if (isActiveViewContent != wasActiveViewContent) {
wasActiveViewContent = isActiveViewContent;
if (isActiveViewContentChanged != null)
isActiveViewContentChanged(this, e);
}
}
#endregion
public virtual void RedrawContent()
{
}

17
src/Main/Base/Project/Src/Services/DisplayBinding/ExternalProcessDisplayBinding.cs

@ -40,29 +40,30 @@ namespace ICSharpCode.SharpDevelop @@ -40,29 +40,30 @@ namespace ICSharpCode.SharpDevelop
cmd = CommandLine.Replace("%1", file.FileName);
else
cmd = CommandLine + " \"" + file.FileName + "\"";
StartCommandLine(cmd);
StartCommandLine(cmd, Path.GetDirectoryName(file.FileName));
} catch (Exception ex) {
MessageService.ShowError(ex.Message);
}
return null;
}
static void StartCommandLine(string cmd)
static void StartCommandLine(string cmd, string workingDir)
{
LoggingService.Debug("ExternalProcessDisplayBinding> " + cmd);
cmd = cmd.Trim();
if (cmd.Length == 0) return;
string program, arguments;
ProcessStartInfo info = new ProcessStartInfo();
if (cmd[0] == '"') {
int pos = cmd.IndexOf('"', 1);
program = cmd.Substring(1, pos - 1);
arguments = cmd.Substring(pos + 1).TrimStart();
info.FileName = cmd.Substring(1, pos - 1);
info.Arguments = cmd.Substring(pos + 1).TrimStart();
} else {
int pos = cmd.IndexOf(' ', 0);
program = cmd.Substring(0, pos);
arguments = cmd.Substring(pos + 1);
info.FileName = cmd.Substring(0, pos);
info.Arguments = cmd.Substring(pos + 1);
}
Process.Start(program, arguments);
info.WorkingDirectory = workingDir;
Process.Start(info);
}
}

286
src/SharpDevelop.sln

@ -1,176 +1,176 @@ @@ -1,176 +1,176 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
# SharpDevelop 3.0.0.2658
# SharpDevelop 3.0.0.2667
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{388C3979-2621-4839-A955-7E5C03BA0B63}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.AddIn", "AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HighlightingEditor", "AddIns\Misc\HighlightingEditor\Project\HighlightingEditor.csproj", "{8A462940-E5E9-4E85-982D-D4C006EE31D4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassWizard", "AddIns\DisplayBindings\ClassDiagram\ClassWizard\ClassWizard.csproj", "{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TreeListView", "AddIns\Misc\Debugger\TreeListView\Project\TreeListView.csproj", "{B08385CD-F0CC-488C-B4F4-EEB34B6D2688}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassEditor", "AddIns\DisplayBindings\ClassDiagram\ClassEditor\ClassEditor.csproj", "{F5E059BB-96C2-4398-BED0-8598CD434173}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoAddIn", "AddIns\Misc\MonoAddIn\Project\MonoAddIn.csproj", "{082DCD64-EE32-4151-A50F-E139CF754CC0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\Project\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SharpServerTools", "SharpServerTools", "{6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.UI", "AddIns\Misc\SharpServerTools\DataTools.UI\DataTools.UI.csproj", "{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.Model", "AddIns\Misc\SharpServerTools\DataTools.Model\DataTools.Model.csproj", "{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerBrowserTool", "AddIns\Misc\SharpServerTools\ServerBrowserTool\ServerBrowserTool.csproj", "{D721EAA4-8A40-4EF0-A011-5862159BE621}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.AddIn", "AddIns\Misc\SharpServerTools\SharpDbTools\DataTools.AddIn.csproj", "{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerBrowserTool", "AddIns\Misc\SharpServerTools\ServerBrowserTool\ServerBrowserTool.csproj", "{D721EAA4-8A40-4EF0-A011-5862159BE621}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.Model", "AddIns\Misc\SharpServerTools\DataTools.Model\DataTools.Model.csproj", "{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.UI", "AddIns\Misc\SharpServerTools\DataTools.UI\DataTools.UI.csproj", "{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\Project\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoAddIn", "AddIns\Misc\MonoAddIn\Project\MonoAddIn.csproj", "{082DCD64-EE32-4151-A50F-E139CF754CC0}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassEditor", "AddIns\DisplayBindings\ClassDiagram\ClassEditor\ClassEditor.csproj", "{F5E059BB-96C2-4398-BED0-8598CD434173}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TreeListView", "AddIns\Misc\Debugger\TreeListView\Project\TreeListView.csproj", "{B08385CD-F0CC-488C-B4F4-EEB34B6D2688}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HighlightingEditor", "AddIns\Misc\HighlightingEditor\Project\HighlightingEditor.csproj", "{8A462940-E5E9-4E85-982D-D4C006EE31D4}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassWizard", "AddIns\DisplayBindings\ClassDiagram\ClassWizard\ClassWizard.csproj", "{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{388C3979-2621-4839-A955-7E5C03BA0B63}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.AddIn", "AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -504,75 +504,75 @@ Global @@ -504,75 +504,75 @@ Global
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{388C3979-2621-4839-A955-7E5C03BA0B63} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{F5E059BB-96C2-4398-BED0-8598CD434173} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{8A462940-E5E9-4E85-982D-D4C006EE31D4} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{082DCD64-EE32-4151-A50F-E139CF754CC0} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{D721EAA4-8A40-4EF0-A011-5862159BE621} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{082DCD64-EE32-4151-A50F-E139CF754CC0} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{8A462940-E5E9-4E85-982D-D4C006EE31D4} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{D721EAA4-8A40-4EF0-A011-5862159BE621} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{388C3979-2621-4839-A955-7E5C03BA0B63} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{F5E059BB-96C2-4398-BED0-8598CD434173} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {388C3979-2621-4839-A955-7E5C03BA0B63}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal

Loading…
Cancel
Save