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. 5
      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. 21
      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. 33
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlObject.cs
  30. 18
      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. 43
      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. 52
      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. 1275
      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
return compatibleMethods; 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) protected IField GetField(IClass c, string name)
{ {
foreach (IField field in c.Fields) { foreach (IField field in c.Fields) {

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

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

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

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

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

@ -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 @@
<DependentUpon>App.xaml</DependentUpon> <DependentUpon>App.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="AssemblyInfo.cs" /> <Compile Include="AssemblyInfo.cs" />
<Compile Include="EventHandlerService.cs" />
<Compile Include="Toolbox.cs" /> <Compile Include="Toolbox.cs" />
<Compile Include="Window1.xaml.cs"> <Compile Include="Window1.xaml.cs">
<SubType>Code</SubType> <SubType>Code</SubType>

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

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

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

@ -8,6 +8,7 @@ using System.Xml;
using ICSharpCode.WpfDesign; using ICSharpCode.WpfDesign;
using ICSharpCode.WpfDesign.Designer; using ICSharpCode.WpfDesign.Designer;
using ICSharpCode.WpfDesign.Designer.Xaml;
using ICSharpCode.WpfDesign.PropertyEditor; using ICSharpCode.WpfDesign.PropertyEditor;
using System.Threading; using System.Threading;
using System.Windows.Threading; using System.Windows.Threading;
@ -41,7 +42,13 @@ namespace StandaloneDesigner
{ {
if (e.Source != tabControl) return; if (e.Source != tabControl) return;
if (tabControl.SelectedItem == designTab) { 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; designSurface.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged;
toolbox.ToolService = designSurface.DesignContext.Services.Tool; toolbox.ToolService = designSurface.DesignContext.Services.Tool;
} else { } else {

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

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

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

@ -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> <PropertyGroup>
<ProjectGuid>{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}</ProjectGuid> <ProjectGuid>{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -11,6 +11,7 @@
<NoStdLib>False</NoStdLib> <NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -52,10 +53,12 @@
<Link>Configuration\GlobalAssemblyInfo.cs</Link> <Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile> </Compile>
<Compile Include="Configuration\AssemblyInfo.cs" /> <Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Src\EventHandlerService.cs" />
<Compile Include="Src\FileUriContext.cs" /> <Compile Include="Src\FileUriContext.cs" />
<Compile Include="Src\MyTypeFinder.cs" /> <Compile Include="Src\MyTypeFinder.cs" />
<Compile Include="Src\PropertyDescriptionService.cs" /> <Compile Include="Src\PropertyDescriptionService.cs" />
<Compile Include="Src\SharpDevelopElementHost.cs" /> <Compile Include="Src\SharpDevelopElementHost.cs" />
<Compile Include="Src\WpfAndWinFormsTopLevelWindowService.cs" />
<Compile Include="Src\WpfDisplayBinding.cs" /> <Compile Include="Src\WpfDisplayBinding.cs" />
<Compile Include="Src\WpfSideTabItem.cs" /> <Compile Include="Src\WpfSideTabItem.cs" />
<Compile Include="Src\WpfToolbox.cs" /> <Compile Include="Src\WpfToolbox.cs" />

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

@ -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
void ShowEventsButton_Click(object sender, RoutedEventArgs e) void ShowEventsButton_Click(object sender, RoutedEventArgs e)
{ {
ShowEvents(this.EditedObject);
} }
bool useCategories = false; bool useCategories = false;
@ -92,7 +92,7 @@ namespace ICSharpCode.WpfDesign.Designer
if (useCategories) { if (useCategories) {
List<PropertyEditorCategoryView> categories = new List<PropertyEditorCategoryView>(); 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") { if (p.Name == "Name") {
continue; continue;
} }
@ -111,7 +111,7 @@ namespace ICSharpCode.WpfDesign.Designer
} else { } else {
PropertyGridView grid = new PropertyGridView(); PropertyGridView grid = new PropertyGridView();
contentStackPanel.Children.Add(grid); 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") { if (p.Name == "Name") {
continue; continue;
} }
@ -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); return p1.Name.CompareTo(p2.Name);
} }
@ -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 @@
<RowDefinition Height="0.5*" /> <RowDefinition Height="0.5*" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Target="{Binding ElementName=nameTextBox}">_Name:</Label> <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}"/> Text="{Binding ElementName=userControl, Path=EditedObject.Name}"/>
<Label Grid.Column="0" Grid.Row="1">Type:</Label> <Label Grid.Column="0" Grid.Row="1">Type:</Label>
<Label Grid.Column="1" Grid.Row="1" Name="typeLabel" <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 @@
using System; using System;
using System.Windows; using System.Windows;
using System.Windows.Documents; using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Data; using System.Windows.Data;
using System.Windows.Controls; using System.Windows.Controls;
using ICSharpCode.WpfDesign.PropertyEditor; using ICSharpCode.WpfDesign.PropertyEditor;
@ -67,5 +68,35 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
this.Children.Add(dotButton); this.Children.Add(dotButton);
propertyNameText.ContextMenuProvider = 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
// Creates ToolTip and ContextMenu objects on-demand. // Creates ToolTip and ContextMenu objects on-demand.
sealed class PropertyNameTextBlock : TextBlock sealed class PropertyNameTextBlock : TextBlock
{ {
readonly IPropertyEditorDataProperty property; readonly IPropertyEditorDataMember property;
readonly DockPanel toolTipDockPanel; readonly DockPanel toolTipDockPanel;
bool toolTipInitialized; bool toolTipInitialized;
internal DependencyPropertyDotButton ContextMenuProvider; internal DependencyPropertyDotButton ContextMenuProvider;
public PropertyNameTextBlock(IPropertyEditorDataProperty property) public PropertyNameTextBlock(IPropertyEditorDataMember property)
: base(new Run(property.Name)) : base(new Run(property.Name))
{ {
this.property = property; this.property = property;

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

@ -155,6 +155,50 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
get { return (WindowStyle)GetValue(Window.WindowStyleProperty); } get { return (WindowStyle)GetValue(Window.WindowStyleProperty); }
set { SetValue(Window.WindowStyleProperty, value); } 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> /// <summary>

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

@ -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);
}
}
}
}

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

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

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

@ -62,7 +62,9 @@ namespace ICSharpCode.WpfDesign.Designer.Services
protected virtual DesignItem CreateItem(DesignContext context) protected virtual DesignItem CreateItem(DesignContext context)
{ {
object newInstance = context.Services.ExtensionManager.CreateInstanceWithCustomInstanceFactory(componentType, null); 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) 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
readonly DesignItem clickedOn; readonly DesignItem clickedOn;
PlacementOperation operation; PlacementOperation operation;
ICollection<DesignItem> selectedItems; ICollection<DesignItem> selectedItems;
bool isDoubleClick;
internal DragMoveMouseGesture(DesignItem clickedOn) internal DragMoveMouseGesture(DesignItem clickedOn, bool isDoubleClick)
{ {
Debug.Assert(clickedOn != null); Debug.Assert(clickedOn != null);
this.clickedOn = clickedOn; this.clickedOn = clickedOn;
this.isDoubleClick = isDoubleClick;
if (clickedOn.Parent != null) if (clickedOn.Parent != null)
this.positionRelativeTo = clickedOn.Parent.View; this.positionRelativeTo = clickedOn.Parent.View;
@ -116,6 +118,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services
protected override void OnMouseUp(object sender, MouseButtonEventArgs e) protected override void OnMouseUp(object sender, MouseButtonEventArgs e)
{ {
if (!hasDragStarted && isDoubleClick) {
// user made a double-click
Debug.Assert(operation == null);
HandleDoubleClick();
}
if (operation != null) { if (operation != null) {
operation.Commit(); operation.Commit();
operation = null; operation = null;
@ -130,5 +137,18 @@ namespace ICSharpCode.WpfDesign.Designer.Services
operation = null; 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
} }
} }
ServiceContainer services;
public DefaultErrorService(DesignContext context)
{
this.services = context.Services;
}
public void ShowErrorTooltip(FrameworkElement attachTo, UIElement errorElement) public void ShowErrorTooltip(FrameworkElement attachTo, UIElement errorElement)
{ {
if (attachTo == null) if (attachTo == null)
@ -64,8 +71,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services
b.Left = pos.X; b.Left = pos.X;
b.Top = pos.Y - 8; b.Top = pos.Y - 8;
b.Focusable = false; b.Focusable = false;
Window ownerWindow = Window.GetWindow(attachTo); ITopLevelWindowService windowService = services.GetService<ITopLevelWindowService>();
b.Owner = ownerWindow; ITopLevelWindow ownerWindow = (windowService != null) ? windowService.GetTopLevelWindow(attachTo) : null;
if (ownerWindow != null) {
ownerWindow.SetOwner(b);
}
b.Show(); b.Show();
if (ownerWindow != null) { if (ownerWindow != null) {

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

@ -30,19 +30,20 @@ namespace ICSharpCode.WpfDesign.Designer.Services
void OnMouseDown(object sender, MouseButtonEventArgs e) void OnMouseDown(object sender, MouseButtonEventArgs e)
{ {
if (e.ChangedButton == MouseButton.Left && MouseGestureBase.IsOnlyButtonPressed(e, MouseButton.Left)) { IDesignPanel designPanel = (IDesignPanel)sender;
e.Handled = true; DesignPanelHitTestResult result = designPanel.HitTest(e.GetPosition(designPanel), false, true);
IDesignPanel designPanel = (IDesignPanel)sender; if (result.ModelHit != null) {
DesignPanelHitTestResult result = designPanel.HitTest(e.GetPosition(designPanel), false, true); IHandlePointerToolMouseDown b = result.ModelHit.GetBehavior<IHandlePointerToolMouseDown>();
if (result.ModelHit != null) { if (b != null) {
IHandlePointerToolMouseDown b = result.ModelHit.GetBehavior<IHandlePointerToolMouseDown>(); b.HandleSelectionMouseDown(designPanel, e, result);
if (b != null) { }
b.HandleSelectionMouseDown(designPanel, e, result); if (!e.Handled) {
} else { if (e.ChangedButton == MouseButton.Left && MouseGestureBase.IsOnlyButtonPressed(e, MouseButton.Left)) {
e.Handled = true;
ISelectionService selectionService = designPanel.Context.Services.Selection; ISelectionService selectionService = designPanel.Context.Services.Selection;
selectionService.SetSelectedComponents(new DesignItem[] { result.ModelHit }, SelectionTypes.Auto); selectionService.SetSelectedComponents(new DesignItem[] { result.ModelHit }, SelectionTypes.Auto);
if (selectionService.IsComponentSelected(result.ModelHit)) { 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 @@
// <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 @@
<Compile Include="Controls\AdornerLayer.cs" /> <Compile Include="Controls\AdornerLayer.cs" />
<Compile Include="Controls\ContainerDragHandle.cs" /> <Compile Include="Controls\ContainerDragHandle.cs" />
<Compile Include="Controls\GridAdorner.cs" /> <Compile Include="Controls\GridAdorner.cs" />
<Compile Include="Controls\PropertyEditor\EventHandlerEditor.cs" />
<Compile Include="Controls\SelectionFrame.cs" /> <Compile Include="Controls\SelectionFrame.cs" />
<Compile Include="Controls\ErrorBalloon.cs" /> <Compile Include="Controls\ErrorBalloon.cs" />
<Compile Include="Controls\GrayOutDesignerExceptActiveArea.cs" /> <Compile Include="Controls\GrayOutDesignerExceptActiveArea.cs" />
@ -75,6 +76,7 @@
<Compile Include="Controls\WindowClone.cs" /> <Compile Include="Controls\WindowClone.cs" />
<Compile Include="DesignPanel.cs" /> <Compile Include="DesignPanel.cs" />
<Compile Include="DragDropExceptionHandler.cs" /> <Compile Include="DragDropExceptionHandler.cs" />
<Compile Include="Extensions\ContentControlDefaultInitializer.cs" />
<Compile Include="Extensions\GridAdornerProvider.cs" /> <Compile Include="Extensions\GridAdornerProvider.cs" />
<Compile Include="Extensions\GridPlacementSupport.cs" /> <Compile Include="Extensions\GridPlacementSupport.cs" />
<Compile Include="ModelTools.cs" /> <Compile Include="ModelTools.cs" />
@ -100,6 +102,7 @@
<Compile Include="Services\UndoService.cs" /> <Compile Include="Services\UndoService.cs" />
<Compile Include="Services\ViewService.cs" /> <Compile Include="Services\ViewService.cs" />
<Compile Include="DesignSurface.cs" /> <Compile Include="DesignSurface.cs" />
<Compile Include="Services\WpfTopLevelWindowService.cs" />
<Compile Include="SharedInstances.cs" /> <Compile Include="SharedInstances.cs" />
<Compile Include="Xaml\XamlLoadSettings.cs" /> <Compile Include="Xaml\XamlLoadSettings.cs" />
<Compile Include="Xaml\XamlModelCollectionElementsCollection.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
get { return _doc; } 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> /// <summary>
/// Creates a new XamlDesignContext instance. /// Creates a new XamlDesignContext instance.
/// </summary> /// </summary>
@ -43,7 +51,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
this.Services.AddService(typeof(ISelectionService), new DefaultSelectionService()); this.Services.AddService(typeof(ISelectionService), new DefaultSelectionService());
this.Services.AddService(typeof(IToolService), new DefaultToolService(this)); this.Services.AddService(typeof(IToolService), new DefaultToolService(this));
this.Services.AddService(typeof(UndoService), new UndoService()); 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(ViewService), new DefaultViewService(this));
this.Services.AddService(typeof(OptionService), new OptionService()); this.Services.AddService(typeof(OptionService), new OptionService());
@ -57,6 +65,11 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
action(this); 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: // register extensions from the designer assemblies:
foreach (Assembly designerAssembly in loadSettings.DesignerAssemblies) { foreach (Assembly designerAssembly in loadSettings.DesignerAssemblies) {
this.Services.ExtensionManager.RegisterAssembly(designerAssembly); 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
get { return _property.IsCollection; } get { return _property.IsCollection; }
} }
public override bool IsEvent {
get { return _property.IsEvent; }
}
public override Type ReturnType { public override Type ReturnType {
get { return _property.ReturnType; } get { return _property.ReturnType; }
} }
@ -125,7 +129,9 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
} }
public override object ValueOnInstance { public override object ValueOnInstance {
get { return _property.ValueOnInstance; } get {
return _property.ValueOnInstance;
}
set { _property.ValueOnInstance = value; } set { _property.ValueOnInstance = value; }
} }

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

@ -62,6 +62,53 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
AssertLog(""); 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] [Test]
public void UndoRedoChangeGroupTest() public void UndoRedoChangeGroupTest()
{ {

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

@ -118,10 +118,18 @@ namespace ICSharpCode.WpfDesign.XamlDom
} }
PropertyDescriptorCollection propertyDescriptors = TypeDescriptor.GetProperties(instance); PropertyDescriptorCollection propertyDescriptors = TypeDescriptor.GetProperties(instance);
PropertyDescriptor propertyInfo = propertyDescriptors[propertyName]; PropertyDescriptor propertyInfo = propertyDescriptors[propertyName];
if (propertyInfo == null) { XamlProperty newProperty;
throw new ArgumentException("The property '" + propertyName + "' doesn't exist on " + elementType.FullName, "propertyName"); 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); properties.Add(newProperty);
return newProperty; return newProperty;
} }
@ -148,5 +156,24 @@ namespace ICSharpCode.WpfDesign.XamlDom
properties.Add(newProperty); properties.Add(newProperty);
return 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);
}
} }
} }

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

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

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

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

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

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

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

@ -217,7 +217,7 @@ namespace ICSharpCode.WpfDesign.Extensions
} }
#endregion #endregion
#region Special extensions (Instance Factory) #region Special extensions (CustomInstanceFactory and DefaultInitializer)
static readonly object[] emptyObjectArray = new object[0]; static readonly object[] emptyObjectArray = new object[0];
/// <summary> /// <summary>
@ -239,6 +239,22 @@ namespace ICSharpCode.WpfDesign.Extensions
} }
return CustomInstanceFactory.DefaultInstanceFactory.CreateInstance(instanceType, arguments); 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 #endregion
} }
} }

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

@ -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 @@
// <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;
namespace ICSharpCode.WpfDesign.PropertyEditor namespace ICSharpCode.WpfDesign.PropertyEditor
{ {
/// <summary> /// <summary>
/// wraps a DesignItemDataProperty for the property editor/grid. /// wraps a DesignItemDataProperty (with IsEvent=false) for the property editor/grid.
/// </summary> /// </summary>
sealed class DesignItemDataProperty : IPropertyEditorDataProperty sealed class DesignItemDataProperty : DesignItemDataMember, IPropertyEditorDataProperty
{ {
readonly DesignItemDataSource ownerDataSource;
readonly DesignItemProperty property;
internal DesignItemDataProperty(DesignItemDataSource ownerDataSource, DesignItemProperty property) internal DesignItemDataProperty(DesignItemDataSource ownerDataSource, DesignItemProperty property)
: base(ownerDataSource, property)
{ {
Debug.Assert(ownerDataSource != null); Debug.Assert(!property.IsEvent);
Debug.Assert(property != null);
this.ownerDataSource = ownerDataSource;
this.property = property;
}
public IPropertyEditorDataSource OwnerDataSource {
get { return ownerDataSource; }
} }
public string Category { public string Category {
get { return property.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 { public System.ComponentModel.TypeConverter TypeConverter {
get { return property.TypeConverter; } get { return property.TypeConverter; }
} }
@ -92,20 +69,6 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
remove { property.ValueChanged -= value; } 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 { public bool CanUseCustomExpression {
get { get {
return true; return true;

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

@ -6,11 +6,11 @@
// </file> // </file>
using System; using System;
using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics; using System.Diagnostics;
using System.Windows; using System.Windows;
using System.Windows.Media; using System.Windows.Media;
using System.Collections.Generic;
namespace ICSharpCode.WpfDesign.PropertyEditor namespace ICSharpCode.WpfDesign.PropertyEditor
{ {
@ -21,6 +21,7 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
{ {
readonly DesignItem item; readonly DesignItem item;
readonly List<IPropertyEditorDataProperty> properties = new List<IPropertyEditorDataProperty>(); readonly List<IPropertyEditorDataProperty> properties = new List<IPropertyEditorDataProperty>();
readonly List<IPropertyEditorDataEvent> events = new List<IPropertyEditorDataEvent>();
#region Available properties #region Available properties
// cache properties available for a type - retrieving this list takes ~100ms on my machine, so // cache properties available for a type - retrieving this list takes ~100ms on my machine, so
@ -50,6 +51,32 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
} }
#endregion #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> /// <summary>
/// Constructs a new DesignItemDataSource for the specified design item. /// Constructs a new DesignItemDataSource for the specified design item.
/// </summary> /// </summary>
@ -63,10 +90,17 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
foreach (string name in GetAvailableProperties(item.ComponentType)) { foreach (string name in GetAvailableProperties(item.ComponentType)) {
designItemProperties.Add(item.Properties[name]); designItemProperties.Add(item.Properties[name]);
} }
foreach (string name in GetAvailableEvents(item.ComponentType)) {
designItemProperties.Add(item.Properties[name]);
}
designItemProperties.AddRange(item.Properties); designItemProperties.AddRange(item.Properties);
foreach (DesignItemProperty p in Func.Distinct(designItemProperties)) { foreach (DesignItemProperty p in Func.Distinct(designItemProperties)) {
properties.Add(new DesignItemDataProperty(this, p)); if (p.IsEvent) {
events.Add(new DesignItemDataEvent(this, p));
} else {
properties.Add(new DesignItemDataProperty(this, p));
}
} }
} }
@ -139,6 +173,11 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
get { return properties.AsReadOnly(); } get { return properties.AsReadOnly(); }
} }
/// <summary>See <see cref="IPropertyEditorDataSource"/></summary>
public ICollection<IPropertyEditorDataEvent> Events {
get { return events.AsReadOnly(); }
}
/// <summary>See <see cref="IPropertyEditorDataSource"/></summary> /// <summary>See <see cref="IPropertyEditorDataSource"/></summary>
public bool CanAddAttachedProperties { public bool CanAddAttachedProperties {
get { get {

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

@ -43,6 +43,11 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
/// </summary> /// </summary>
ICollection<IPropertyEditorDataProperty> Properties { get; } ICollection<IPropertyEditorDataProperty> Properties { get; }
/// <summary>
/// Gets the collection of events.
/// </summary>
ICollection<IPropertyEditorDataEvent> Events { get; }
/// <summary> /// <summary>
/// Gets if adding attached properties is supported. /// Gets if adding attached properties is supported.
/// </summary> /// </summary>
@ -60,39 +65,29 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
} }
/// <summary> /// <summary>
/// Represents a property inside a <see cref="IPropertyEditorDataSource"/>. /// Represents a property or event inside a <see cref="IPropertyEditorDataSource"/>.
/// </summary> /// </summary>
public interface IPropertyEditorDataProperty public interface IPropertyEditorDataMember
{ {
/// <summary> /// <summary>
/// Gets the data source that own this property. /// Gets the data source that own this property.
/// </summary> /// </summary>
IPropertyEditorDataSource OwnerDataSource { get; } IPropertyEditorDataSource OwnerDataSource { get; }
/// <summary>
/// Gets the category this property uses.
/// </summary>
string Category { get; }
/// <summary> /// <summary>
/// Gets the name of the property. /// Gets the name of the property.
/// </summary> /// </summary>
string Name { get; } string Name { get; }
/// <summary>
/// Gets the type of the property value.
/// </summary>
Type ReturnType { get; }
/// <summary> /// <summary>
/// Gets the type that declares the property. /// Gets the type that declares the property.
/// </summary> /// </summary>
Type DeclaringType { get; } Type DeclaringType { get; }
/// <summary> /// <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> /// </summary>
TypeConverter TypeConverter { get; } Type ReturnType { get; }
/// <summary> /// <summary>
/// Gets the description of the property. The returned object should be something that /// Gets the description of the property. The returned object should be something that
@ -100,6 +95,22 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
/// </summary> /// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
object GetDescription(); // is not a property because it can create a new instance on every call 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> /// <summary>
/// Gets/Sets if the property has been assigned a local value. /// Gets/Sets if the property has been assigned a local value.
@ -143,4 +154,25 @@ namespace ICSharpCode.WpfDesign.PropertyEditor
/// </summary> /// </summary>
UIElement CreateEditor(); 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
{ {
return null; return null;
} }
/// <summary>See <see cref="IPropertyEditorDataSource"/></summary>
public ICollection<IPropertyEditorDataEvent> Events {
get { return new IPropertyEditorDataEvent[0]; }
}
} }
} }

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

@ -141,7 +141,7 @@ namespace ICSharpCode.WpfDesign
} }
} }
#endregion #endregion
#region IPropertyDescriptionService #region IPropertyDescriptionService
/// <summary> /// <summary>
/// Used to get a description for properties. /// Used to get a description for properties.
@ -167,4 +167,54 @@ namespace ICSharpCode.WpfDesign
void ShowErrorTooltip(FrameworkElement attachTo, UIElement errorElement); void ShowErrorTooltip(FrameworkElement attachTo, UIElement errorElement);
} }
#endregion #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 @@
<Compile Include="PlacementOperation.cs" /> <Compile Include="PlacementOperation.cs" />
<Compile Include="PlacementType.cs" /> <Compile Include="PlacementType.cs" />
<Compile Include="PropertyEditor\BooleanEditor.cs" /> <Compile Include="PropertyEditor\BooleanEditor.cs" />
<Compile Include="PropertyEditor\DesignItemDataEvent.cs" />
<Compile Include="PropertyEditor\DesignItemDataMember.cs" />
<Compile Include="PropertyEditor\MultipleSelectionDataProperty.cs" /> <Compile Include="PropertyEditor\MultipleSelectionDataProperty.cs" />
<Compile Include="PropertyEditor\ProxyPropertyEditorDataProperty.cs" /> <Compile Include="PropertyEditor\ProxyPropertyEditorDataProperty.cs" />
<Compile Include="PropertyEditor\StandardValuesComboBoxEditor.cs" /> <Compile Include="PropertyEditor\StandardValuesComboBoxEditor.cs" />

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

@ -186,7 +186,7 @@ OverloadableBinaryOp("+", "-", "*", "/", "%", "&", "|", "^", "<<", "==", "!=", "
TypeKW("char", "bool", "object", "string", "sbyte", "byte", "short", "ushort", "int", "uint", "long", "ulong", "float", "double", "decimal") TypeKW("char", "bool", "object", "string", "sbyte", "byte", "short", "ushort", "int", "uint", "long", "ulong", "float", "double", "decimal")
UnaryHead("+", "-", "!", "~", "*", "++", "--", "&") UnaryHead("+", "-", "!", "~", "*", "++", "--", "&")
AssnStartOp("+", "-", "!", "~", "*") AssnStartOp("+", "-", "!", "~", "*")
CastFollower(@IdentifierTokens, Literal, "(", "new", "this", "base", "null", "checked", "unchecked", "typeof", "sizeof", "delegate", @OverloadableUnaryOp, @UnaryOp) CastFollower(@SimpleTypeName, Literal, "(", "~", "!", @ExpressionStart)
AssgnOps("=", "+=", "-=", "*=", "/=", "%=", "&=", "|=", "<<=") AssgnOps("=", "+=", "-=", "*=", "/=", "%=", "&=", "|=", "<<=")
UnaryOp("+", "-", "!", "~", "*", "++", "--", "&") UnaryOp("+", "-", "!", "~", "*", "++", "--", "&")
TypeDeclarationKW("class", "interface", "struct", "enum", "delegate") 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
public static BitArray TypeKW = NewSet(Char, Bool, Object, String, Sbyte, Byte, Short, Ushort, Int, Uint, Long, Ulong, Float, Double, Decimal); 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 UnaryHead = NewSet(Plus, Minus, Not, BitwiseComplement, Times, Increment, Decrement, BitwiseAnd);
public static BitArray AssnStartOp = NewSet(Plus, Minus, Not, BitwiseComplement, Times); 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 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 UnaryOp = NewSet(Plus, Minus, Not, BitwiseComplement, Times, Increment, Decrement, BitwiseAnd);
public static BitArray TypeDeclarationKW = NewSet(Class, Interface, Struct, Enum, Delegate); 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
} }
// check successor // check successor
pt = Peek(); pt = Peek();
return Tokens.CastFollower[pt.kind] || (Tokens.TypeKW[pt.kind] && lexer.Peek().kind == Tokens.Dot); return Tokens.CastFollower[pt.kind];
} }
// END IsTypeCast // 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 "," } ) // ( { [TypeNameOrKWForTypeCast] ident "," } )
bool IsLambdaExpression() bool IsLambdaExpression()
{ {

1275
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>
CollectionInitializerExpression initializer = new CollectionInitializerExpression(); CollectionInitializerExpression initializer = new CollectionInitializerExpression();
.) .)
= =
"{" "{" (. initializer.StartLocation = t.Location; .)
[ VariableInitializer<out expr> [ VariableInitializer<out expr>
(. if (expr != null) { initializer.CreateExpressions.Add(expr); } .) (. if (expr != null) { initializer.CreateExpressions.Add(expr); } .)
{ IF (NotFinalComma()) { IF (NotFinalComma())
@ -1361,7 +1361,7 @@ CollectionInitializer<out Expression outExpr>
} }
[ "," ] [ "," ]
] ]
"}" (. outExpr = initializer; .) "}" (. initializer.EndLocation = t.Location; outExpr = initializer; .)
. .
CollectionOrObjectInitializer<out Expression outExpr> CollectionOrObjectInitializer<out Expression outExpr>
@ -1370,7 +1370,7 @@ CollectionOrObjectInitializer<out Expression outExpr>
CollectionInitializerExpression initializer = new CollectionInitializerExpression(); CollectionInitializerExpression initializer = new CollectionInitializerExpression();
.) .)
= =
"{" "{" (. initializer.StartLocation = t.Location; .)
[ ObjectPropertyInitializerOrVariableInitializer<out expr> [ ObjectPropertyInitializerOrVariableInitializer<out expr>
(. if (expr != null) { initializer.CreateExpressions.Add(expr); } .) (. if (expr != null) { initializer.CreateExpressions.Add(expr); } .)
{ IF (NotFinalComma()) { IF (NotFinalComma())
@ -1379,7 +1379,7 @@ CollectionOrObjectInitializer<out Expression outExpr>
} }
[ "," ] [ "," ]
] ]
"}" (. outExpr = initializer; .) "}" (. initializer.EndLocation = t.Location; outExpr = initializer; .)
. .
ObjectPropertyInitializerOrVariableInitializer<out Expression expr> ObjectPropertyInitializerOrVariableInitializer<out Expression expr>
@ -1387,11 +1387,14 @@ ObjectPropertyInitializerOrVariableInitializer<out Expression expr>
= =
( IF (IdentAndAsgn()) ( IF (IdentAndAsgn())
Identifier Identifier
(. IdentifierExpression l = new IdentifierExpression(t.val); (. NamedArgumentExpression nae = new NamedArgumentExpression(t.val, null);
l.StartLocation = t.Location; l.EndLocation = t.EndLocation; nae.StartLocation = t.Location;
Expression r = null; .) 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> | VariableInitializer <out expr>
) )
. .
@ -2063,12 +2066,12 @@ RelationalExpr<ref Expression outExpr>
| |
( "is" ( "is"
TypeWithRestriction<out type, false, false> 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> ] NullableQuestionMark<ref type> ]
(. outExpr = new TypeOfIsExpression(outExpr, type); .) (. outExpr = new TypeOfIsExpression(outExpr, type); .)
| "as" | "as"
TypeWithRestriction<out type, false, false> 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> ] NullableQuestionMark<ref type> ]
(. outExpr = new CastExpression(type, outExpr, CastType.TryCast); .) (. 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
Assert.IsTrue(ce.Expression is FieldReferenceExpression); Assert.IsTrue(ce.Expression is FieldReferenceExpression);
Assert.AreEqual(CastType.Cast, ce.CastType); 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 #endregion
#region VB.NET #region VB.NET

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

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

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

@ -361,6 +361,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public virtual void Dispose() public virtual void Dispose()
{ {
workbenchWindow = null; workbenchWindow = null;
UnregisterOnActiveViewContentChanged();
if (AutomaticallyRegisterViewOnFiles) { if (AutomaticallyRegisterViewOnFiles) {
this.Files.Clear(); this.Files.Clear();
} }
@ -410,6 +411,55 @@ namespace ICSharpCode.SharpDevelop.Gui
public event EventHandler IsDirtyChanged; public event EventHandler IsDirtyChanged;
#endregion #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() public virtual void RedrawContent()
{ {
} }

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

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

286
src/SharpDevelop.sln

@ -1,176 +1,176 @@
 
Microsoft Visual Studio Solution File, Format Version 10.00 Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008 # 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}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{388C3979-2621-4839-A955-7E5C03BA0B63}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject 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 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 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 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 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 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 ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 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 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 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 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 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 EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoAddIn", "AddIns\Misc\MonoAddIn\Project\MonoAddIn.csproj", "{082DCD64-EE32-4151-A50F-E139CF754CC0}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject 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 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 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 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 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 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 ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\Project\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}" 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}") = "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}"
EndProject 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 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 EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SharpServerTools", "SharpServerTools", "{6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SharpServerTools", "SharpServerTools", "{6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.UI", "AddIns\Misc\SharpServerTools\DataTools.UI\DataTools.UI.csproj", "{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE}" 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.Model", "AddIns\Misc\SharpServerTools\DataTools.Model\DataTools.Model.csproj", "{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.AddIn", "AddIns\Misc\SharpServerTools\SharpDbTools\DataTools.AddIn.csproj", "{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTools.AddIn", "AddIns\Misc\SharpServerTools\SharpDbTools\DataTools.AddIn.csproj", "{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3}"
EndProject 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 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 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 ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 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 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 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 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 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 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 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 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 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 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 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 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 ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 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 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 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 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 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 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 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 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 EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 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 EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject 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 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 EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 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 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 EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject 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 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 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 EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -504,75 +504,75 @@ Global
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU {9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution 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} {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{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}
{6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{D721EAA4-8A40-4EF0-A011-5862159BE621} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{93B2D6DF-7588-40C0-8A35-CA0DD7328FC3} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{51783FC4-D8D2-4BFB-A1F1-AC8857CF3ED0} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{87C0E3D9-0DFD-4F6D-8E38-408AAF73F4EE} = {6CEEC0D9-FA00-4EE3-9A1C-39B7ACC882FD} {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} {1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {082DCD64-EE32-4151-A50F-E139CF754CC0} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {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} {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {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} {E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {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 EndGlobalSection
EndGlobal EndGlobal

Loading…
Cancel
Save