diff --git a/SharpDevelop.Tests.sln b/SharpDevelop.Tests.sln
index 79b5b6de6df..56ccf4014b7 100644
--- a/SharpDevelop.Tests.sln
+++ b/SharpDevelop.Tests.sln
@@ -6,110 +6,110 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-5
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation.Tests", "src\Main\ICSharpCode.Core.Presentation\Test\ICSharpCode.Core.Presentation.Tests.csproj", "{FFA7988E-7348-4669-9E9D-27E629C873A2}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom.Tests", "src\Main\ICSharpCode.SharpDevelop.Dom\Tests\ICSharpCode.SharpDevelop.Dom.Tests\ICSharpCode.SharpDevelop.Dom.Tests.csproj", "{7DB80259-24D4-46C3-A024-53FF1987733D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "src\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "src\Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "src\Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "src\Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "src\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "src\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "src\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "src\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "src\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "src\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "src\Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "src\Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "src\Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "src\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom.Tests", "src\Main\ICSharpCode.SharpDevelop.Dom\Tests\ICSharpCode.SharpDevelop.Dom.Tests\ICSharpCode.SharpDevelop.Dom.Tests.csproj", "{7DB80259-24D4-46C3-A024-53FF1987733D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation.Tests", "src\Main\ICSharpCode.Core.Presentation\Test\ICSharpCode.Core.Presentation.Tests.csproj", "{FFA7988E-7348-4669-9E9D-27E629C873A2}"
+EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "src\Tools\Tools.build", "{3DF4060F-5EE0-41CF-8096-F27355FD5511}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src\Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit.Tests", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit.Tests\ICSharpCode.AvalonEdit.Tests.csproj", "{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NRefactory", "NRefactory", "{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "src\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "src\Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "src\Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryASTGenerator", "src\Libraries\NRefactory\NRefactoryASTGenerator\NRefactoryASTGenerator.csproj", "{B22522AA-B5BF-4A58-AC6D-D4B45805521F}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "src\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "src\Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NRefactory", "NRefactory", "{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "src\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryASTGenerator", "src\Libraries\NRefactory\NRefactoryASTGenerator\NRefactoryASTGenerator.csproj", "{B22522AA-B5BF-4A58-AC6D-D4B45805521F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "src\Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "src\Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "src\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit.Tests", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit.Tests\ICSharpCode.AvalonEdit.Tests.csproj", "{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src\Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
@@ -118,132 +118,110 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "src\AddIns\Misc\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}"
- ProjectSection(ProjectDependencies) = postProject
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
- EndProjectSection
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding.Tests", "src\AddIns\BackendBindings\VBNetBinding\Test\VBNetBinding.Tests.csproj", "{50A89267-A28B-4DF3-8E62-912E005143B8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
- ProjectSection(ProjectDependencies) = postProject
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
+ ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "src\AddIns\BackendBindings\Boo\BooBinding\Test\BooBinding.Tests.csproj", "{6FA16499-896F-4C02-BB43-1AF5C6C7C713}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "src\AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "src\AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "src\AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
- ProjectSection(ProjectDependencies) = postProject
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "src\AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
- ProjectSection(ProjectDependencies) = postProject
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "src\AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding.Tests", "src\AddIns\BackendBindings\Python\PythonBinding\Test\PythonBinding.Tests.csproj", "{23B517C9-1ECC-4419-A13F-0B7136D085CB}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "src\AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks.Tests", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Test\Python.Build.Tasks.Tests.csproj", "{833904AB-3CD4-4071-9B48-5770E44685AA}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "src\AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6E59AF58-F635-459A-9A35-C9AC41C00339}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "src\AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding.Tests", "src\AddIns\BackendBindings\XamlBinding\XamlBinding.Tests\XamlBinding.Tests.csproj", "{F390DA70-1FE1-4715-81A0-389AB010C130}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "src\AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{BFA3BF26-33BD-4A65-B84D-C7F30D131668}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Tests", "src\AddIns\Misc\Debugger\Debugger.Tests\Project\Debugger.Tests.csproj", "{A4C858C8-51B6-4265-A695-A20FCEBA1D19}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "src\AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "src\AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
@@ -252,37 +230,39 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace.Tests", "src\AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShortcutsManagement", "src\AddIns\Misc\ShortcutsManagement\ShortcutsManagement\ShortcutsManagement.csproj", "{745869FF-80E9-4589-A366-E775D2103843}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit.Tests", "src\AddIns\Misc\ResourceToolkit\Test\ResourceToolkit.Tests.csproj", "{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "src\AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "src\AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "src\AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "src\AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "src\AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "src\AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "src\AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "src\AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "src\AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
@@ -292,150 +272,170 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "src\AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "src\AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "src\AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "src\AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "src\AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "src\AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "src\AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "src\AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "src\AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit.Tests", "src\AddIns\Misc\ResourceToolkit\Test\ResourceToolkit.Tests.csproj", "{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace.Tests", "src\AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShortcutsManagement", "src\AddIns\Misc\ShortcutsManagement\ShortcutsManagement\ShortcutsManagement.csproj", "{745869FF-80E9-4589-A366-E775D2103843}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{BFA3BF26-33BD-4A65-B84D-C7F30D131668}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "src\AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "src\AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Tests", "src\AddIns\Misc\Debugger\Debugger.Tests\Project\Debugger.Tests.csproj", "{A4C858C8-51B6-4265-A695-A20FCEBA1D19}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
- ProjectSection(SolutionItems) = postProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
+ ProjectSection(ProjectDependencies) = postProject
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "src\AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding.Tests", "src\AddIns\BackendBindings\XamlBinding\XamlBinding.Tests\XamlBinding.Tests.csproj", "{F390DA70-1FE1-4715-81A0-389AB010C130}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "src\AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "src\AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6E59AF58-F635-459A-9A35-C9AC41C00339}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
- ProjectSection(SolutionItems) = postProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
+ ProjectSection(ProjectDependencies) = postProject
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "src\AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "src\AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks.Tests", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Test\Python.Build.Tasks.Tests.csproj", "{833904AB-3CD4-4071-9B48-5770E44685AA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "src\AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding.Tests", "src\AddIns\BackendBindings\Python\PythonBinding\Test\PythonBinding.Tests.csproj", "{23B517C9-1ECC-4419-A13F-0B7136D085CB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "src\AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "src\AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "src\AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "src\AddIns\BackendBindings\Boo\BooBinding\Test\BooBinding.Tests.csproj", "{6FA16499-896F-4C02-BB43-1AF5C6C7C713}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding.Tests", "src\AddIns\BackendBindings\VBNetBinding\Test\VBNetBinding.Tests.csproj", "{50A89267-A28B-4DF3-8E62-912E005143B8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
+ ProjectSection(ProjectDependencies) = postProject
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "src\AddIns\Misc\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}"
+ ProjectSection(ProjectDependencies) = postProject
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -768,95 +768,95 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {7DB80259-24D4-46C3-A024-53FF1987733D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {4980B743-B32F-4aba-AABD-45E2CAD3568D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{FFA7988E-7348-4669-9E9D-27E629C873A2} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
- {6222A3A1-83CE-47A3-A4E4-A018F82D44D8} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
- {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
- {2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
- {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
- {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
- {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
- {E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
+ {1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {4980B743-B32F-4aba-AABD-45E2CAD3568D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
+ {7DB80259-24D4-46C3-A024-53FF1987733D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
- {870115DD-960A-4406-A6B9-600BCDC36A03} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
- {B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
+ {E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
+ {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
+ {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
+ {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
+ {2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
+ {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
+ {6222A3A1-83CE-47A3-A4E4-A018F82D44D8} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
- {E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
- {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
- {F3662720-9EA2-4591-BBC6-97361DCE50A9} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
- {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
- {D599885D-E161-4CCE-A66E-7A40C8C4F4CC} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
+ {B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
+ {870115DD-960A-4406-A6B9-600BCDC36A03} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
- {A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {F355E45F-F54F-4B42-8916-9A633A392789}
- {1F261725-6318-4434-A1B1-6C70CE4CD324} = {F355E45F-F54F-4B42-8916-9A633A392789}
- {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {F355E45F-F54F-4B42-8916-9A633A392789}
- {08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {F355E45F-F54F-4B42-8916-9A633A392789}
- {CE498514-D12D-4B6E-AE0E-FEC29BD43748} = {F355E45F-F54F-4B42-8916-9A633A392789}
- {44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {F355E45F-F54F-4B42-8916-9A633A392789}
- {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
- {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
- {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
- {BFA3BF26-33BD-4A65-B84D-C7F30D131668} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {DCA2703D-250A-463E-A68A-07ED105AE6BD} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {533F4684-DBA6-4518-B005-C84F22A2DD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
- {DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
- {DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
- {0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
- {5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
- {08F772A1-F0BE-433E-8B37-F6522953DB05} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
- {745869FF-80E9-4589-A366-E775D2103843} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {8AA421C8-D7AF-4957-9F43-5135328ACB24} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {DD9AE6A5-2B9D-443A-BC71-38BE578C36BD} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {A569DCC1-C608-45FD-B770-4F79335EF154} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
- {A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
- {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
- {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
- {50A89267-A28B-4DF3-8E62-912E005143B8} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {97B3B514-AB0E-4FE1-89DE-8A945F5112AE} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {CA76F702-5B4E-4918-B8D8-7FF8382434FF} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {6E59AF58-F635-459A-9A35-C9AC41C00339} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {BF38FB72-B380-4196-AF8C-95749D726C61} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {F390DA70-1FE1-4715-81A0-389AB010C130} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {D599885D-E161-4CCE-A66E-7A40C8C4F4CC} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
+ {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
+ {F3662720-9EA2-4591-BBC6-97361DCE50A9} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
+ {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
+ {E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{388E7B64-0393-4EB4-A3E3-5C474F141853} = {E0646C25-36F2-4524-969F-FA621353AB94}
- {23B517C9-1ECC-4419-A13F-0B7136D085CB} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
- {833904AB-3CD4-4071-9B48-5770E44685AA} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
- {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
- {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
- {6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
- {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
- {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
+ {F390DA70-1FE1-4715-81A0-389AB010C130} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {BF38FB72-B380-4196-AF8C-95749D726C61} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {6E59AF58-F635-459A-9A35-C9AC41C00339} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {CA76F702-5B4E-4918-B8D8-7FF8382434FF} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {97B3B514-AB0E-4FE1-89DE-8A945F5112AE} = {E0646C25-36F2-4524-969F-FA621353AB94}
+ {50A89267-A28B-4DF3-8E62-912E005143B8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{C9DE556D-325C-4544-B29F-16A9EB7C9830} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
+ {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
+ {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
+ {6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
+ {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
+ {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
+ {833904AB-3CD4-4071-9B48-5770E44685AA} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
+ {23B517C9-1ECC-4419-A13F-0B7136D085CB} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
+ {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
+ {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
+ {A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
+ {A569DCC1-C608-45FD-B770-4F79335EF154} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {DD9AE6A5-2B9D-443A-BC71-38BE578C36BD} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {8AA421C8-D7AF-4957-9F43-5135328ACB24} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {745869FF-80E9-4589-A366-E775D2103843} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {533F4684-DBA6-4518-B005-C84F22A2DD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {DCA2703D-250A-463E-A68A-07ED105AE6BD} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {BFA3BF26-33BD-4A65-B84D-C7F30D131668} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
+ {08F772A1-F0BE-433E-8B37-F6522953DB05} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
+ {5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
+ {0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
+ {DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
+ {DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
+ {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
+ {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
+ {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
+ {44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {F355E45F-F54F-4B42-8916-9A633A392789}
+ {CE498514-D12D-4B6E-AE0E-FEC29BD43748} = {F355E45F-F54F-4B42-8916-9A633A392789}
+ {08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {F355E45F-F54F-4B42-8916-9A633A392789}
+ {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {F355E45F-F54F-4B42-8916-9A633A392789}
+ {1F261725-6318-4434-A1B1-6C70CE4CD324} = {F355E45F-F54F-4B42-8916-9A633A392789}
+ {A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {F355E45F-F54F-4B42-8916-9A633A392789}
EndGlobalSection
EndGlobal
diff --git a/src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplaceDialog.cs b/src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplaceDialog.cs
index da22e2e0226..b66f571606f 100644
--- a/src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplaceDialog.cs
+++ b/src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplaceDialog.cs
@@ -168,7 +168,8 @@ Keys[] GetKeyboardShortcut(string path, string id)
Keys[] GetKeyBoardShortcut(string routedCommandName)
{
- var gestureCollection = SDCommandManager.FindInputGestures(new BindingInfoTemplate { RoutedCommandName = routedCommandName});
+ var template = new BindingInfoTemplate { RoutedCommandName = routedCommandName};
+ var gestureCollection = SDCommandManager.FindInputGestures(BindingInfoMatchType.SuperSet, template);
var keyCollection = new Keys[gestureCollection.Count];
var i = 0;
diff --git a/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs b/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs
index 2691d087202..260864db722 100644
--- a/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs
+++ b/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs
@@ -193,7 +193,7 @@ private void BindShortcuts()
}
}
- var inputBindingInfos = CommandManager.FindInputBindingInfos(new BindingInfoTemplate());
+ var inputBindingInfos = CommandManager.FindInputBindingInfos(BindingInfoMatchType.SuperSet, new BindingInfoTemplate());
foreach (var inputBindingInfo in inputBindingInfos)
{
// Get shortcut entry text. Normaly shortcut entry text is equal to routed command text
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj
index d83119fc733..f699d390797 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj
@@ -82,9 +82,13 @@
-
- {FFA7988E-7348-4669-9E9D-27E629C873A2}
- ICSharpCode.Core.Presentation.Tests
+
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
+ ICSharpCode.Core
+
+
+ {7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}
+ ICSharpCode.Core.Presentation
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/WeakReferenceTests.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/WeakReferenceTests.cs
index f51877a35a7..e47d79c4f2c 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/WeakReferenceTests.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/WeakReferenceTests.cs
@@ -9,6 +9,8 @@
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Rendering;
+using ICSharpCode.Core;
+using ICSharpCode.Core.Presentation;
using NUnit.Framework;
namespace ICSharpCode.AvalonEdit.Tests
@@ -16,6 +18,14 @@ namespace ICSharpCode.AvalonEdit.Tests
[TestFixture]
public class WeakReferenceTests
{
+ [TestFixtureSetUp]
+ public void FixtureSetup()
+ {
+ PropertyService.InitializeServiceForUnitTests();
+ var category = new InputBindingCategory("/MainMenu/Edit", "Edit");
+ CommandManager.RegisterInputBindingCategory(category);
+ }
+
[Test]
public void GCCallbackTest()
{
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretNavigationCommandHandler.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretNavigationCommandHandler.cs
index 6792f20b85b..b0e8f117521 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretNavigationCommandHandler.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretNavigationCommandHandler.cs
@@ -28,6 +28,8 @@ public static BindingGroup ClassWideBindingGroup
get; private set;
}
+ private static InputBindingCategory classWideInputBindingCategory;
+
///
/// Creates a new for the text area.
///
@@ -36,10 +38,6 @@ public static TextAreaInputHandler Create(TextArea textArea)
TextAreaInputHandler handler = new TextAreaInputHandler(textArea);
handler.BindingGroup = ClassWideBindingGroup;
- // TODO: DELETE
- // handler.CommandBindings.AddRange(CommandBindings);
- // handler.InputBindings.AddRange(InputBindings);
-
return handler;
}
@@ -58,6 +56,7 @@ static void AddInputBinding(string routedCommandName, string gesturesString)
inputBinding.OwnerTypeName = typeof(TextArea).GetShortAssemblyQualifiedName();
inputBinding.DefaultGestures.AddRange((InputGestureCollection)new InputGestureCollectionConverter().ConvertFrom(gesturesString));
inputBinding.Groups.Add(ClassWideBindingGroup);
+ inputBinding.Categories.Add(classWideInputBindingCategory);
inputBinding.RoutedCommandName = routedCommandName;
SDCommandManager.RegisterInputBinding(inputBinding);
}
@@ -77,6 +76,7 @@ static void AddCommandBinding(string routedCommandName, CanExecuteRoutedEventHan
static CaretNavigationCommandHandler()
{
ClassWideBindingGroup = new BindingGroup();
+ classWideInputBindingCategory = new InputBindingCategory("/CaretNavigation", "Caret navigation commands");
AddBinding("EditingCommands.MoveLeftByCharacter", "Left", null, OnMoveCaret(CaretMovementType.CharLeft));
AddBinding("EditingCommands.SelectLeftByCharacter", "Shift+Left", null, OnMoveCaretExtendSelection(CaretMovementType.CharLeft));
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/EditingCommandHandler.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/EditingCommandHandler.cs
index fb41de3676d..f01a68d5161 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/EditingCommandHandler.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/EditingCommandHandler.cs
@@ -36,6 +36,8 @@ public static BindingGroup ClassWideBindingGroup
get; private set;
}
+ private static InputBindingCategory classWideInputBindingCategory;
+
///
/// Creates a new for the text area.
///
@@ -62,6 +64,7 @@ static void AddInputBinding(string routedCommandName, string gesturesString)
inputBinding.OwnerTypeName = typeof(TextArea).GetShortAssemblyQualifiedName();
inputBinding.DefaultGestures.AddRange((InputGestureCollection)new InputGestureCollectionConverter().ConvertFrom(gesturesString));
inputBinding.Groups.Add(ClassWideBindingGroup);
+ inputBinding.Categories.Add(classWideInputBindingCategory);
inputBinding.Categories.AddRange(SDCommandManager.GetInputBindingCategoryCollection("/MainMenu/Edit", true));
inputBinding.RoutedCommandName = routedCommandName;
SDCommandManager.RegisterInputBinding(inputBinding);
@@ -82,6 +85,7 @@ static void AddCommandBinding(string routedCommandName, CanExecuteRoutedEventHan
static EditingCommandHandler()
{
ClassWideBindingGroup = new BindingGroup();
+ classWideInputBindingCategory = new InputBindingCategory("/EditingCommands", "Editing commands");
AddCommandBinding("ApplicationCommands.Delete", CanDelete, OnDelete(ApplicationCommands.NotACommand));
AddBinding("EditingCommands.Delete", "Delete", null, OnDelete(EditingCommands.SelectRightByCharacter));
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextAreaDefaultInputHandlers.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextAreaDefaultInputHandlers.cs
index e945d990924..ed669ed385f 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextAreaDefaultInputHandlers.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextAreaDefaultInputHandlers.cs
@@ -41,27 +41,11 @@ public static BindingGroup ClassWideBindingGroup
static TextAreaDefaultInputHandler()
{
ClassWideBindingGroup = new BindingGroup();
+
AddCommandBinding("ApplicationCommands.Undo", CanExecuteUndo, ExecuteUndo);
AddCommandBinding("ApplicationCommands.Redo", CanExecuteRedo, ExecuteRedo);
}
- static void AddBinding(string routedCommandName, string gesturesString, CanExecuteRoutedEventHandler canExecuteHandler, ExecutedRoutedEventHandler executedHandler)
- {
- AddCommandBinding(routedCommandName, canExecuteHandler, executedHandler);
- AddInputBinding(routedCommandName, gesturesString);
- }
-
- static void AddInputBinding(string routedCommandName, string gesturesString)
- {
- var inputBinding = new InputBindingInfo();
- inputBinding.OwnerTypeName = typeof(TextArea).GetShortAssemblyQualifiedName();
- inputBinding.DefaultGestures.AddRange((InputGestureCollection)new InputGestureCollectionConverter().ConvertFrom(gesturesString));
- inputBinding.Groups.Add(ClassWideBindingGroup);
- inputBinding.Categories.AddRange(SDCommandManager.GetInputBindingCategoryCollection("/MainMenu/Edit", true));
- inputBinding.RoutedCommandName = routedCommandName;
- SDCommandManager.RegisterInputBinding(inputBinding);
- }
-
static void AddCommandBinding(string routedCommandName, CanExecuteRoutedEventHandler canExecuteHandler, ExecutedRoutedEventHandler executedHandler)
{
var commandBinding = new CommandBindingInfo();
diff --git a/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs b/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
index 6e87f81f3bd..607e879c780 100644
--- a/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
+++ b/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
@@ -246,7 +246,7 @@ public ICollection BuildItems(Codon codon, object owner)
var gesturesTemplate = new BindingInfoTemplate();
gesturesTemplate.OwnerTypeName = CommandManager.DefaultContextName;
gesturesTemplate.RoutedCommandName = routedCommandName;
- var updatedGestures = CommandManager.FindInputGestures(gesturesTemplate);
+ var updatedGestures = CommandManager.FindInputGestures(BindingInfoMatchType.SuperSet, gesturesTemplate);
var updatedGesturesText = (string)new InputGestureCollectionConverter().ConvertToInvariantString(updatedGestures);
items[i].InputGestureText = updatedGesturesText;
@@ -561,7 +561,7 @@ public ICollection BuildItems(Codon codon, object owner)
var gesturesTemplate = new BindingInfoTemplate();
gesturesTemplate.OwnerTypeName = CommandManager.DefaultContextName;
gesturesTemplate.RoutedCommandName = routedCommandName;
- var updatedGestures = CommandManager.FindInputGestures(gesturesTemplate);
+ var updatedGestures = CommandManager.FindInputGestures(BindingInfoMatchType.SuperSet, gesturesTemplate);
var updatedGesturesText = (string)new InputGestureCollectionConverter().ConvertToInvariantString(updatedGestures);
item.InputGestureText = updatedGesturesText;
diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingGroup.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingGroup.cs
index 7217ed5f3e8..7414c8f636b 100644
--- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingGroup.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingGroup.cs
@@ -99,8 +99,8 @@ private void InvokeBindingUpdateHandlers(UIElement instance)
bindingInfoTemplates[i++] = new BindingInfoTemplate { OwnerTypeName = typeName };
}
- CommandManager.InvokeCommandBindingUpdateHandlers(bindingInfoTemplates);
- CommandManager.InvokeInputBindingUpdateHandlers(bindingInfoTemplates);
+ CommandManager.InvokeCommandBindingUpdateHandlers(BindingInfoMatchType.SubSet | BindingInfoMatchType.SuperSet, bindingInfoTemplates);
+ CommandManager.InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet | BindingInfoMatchType.SuperSet, bindingInfoTemplates);
}
public List NestedGroups
diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs
index 56bd3b415d4..4611e88cdbd 100644
--- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs
@@ -4,7 +4,8 @@
using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;
-using CommandManager=ICSharpCode.Core.Presentation.CommandManager;
+using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
+using CommandManager=System.Windows.Input.CommandManager;
namespace ICSharpCode.Core.Presentation
{
@@ -63,7 +64,7 @@ public BindingGroupCollection Groups
///
public RoutedUICommand RoutedCommand {
get {
- return CommandManager.GetRoutedUICommand(RoutedCommandName);
+ return SDCommandManager.GetRoutedUICommand(RoutedCommandName);
}
}
@@ -117,11 +118,11 @@ public BindingGroupCollection Groups
}
if(AddIn != null && (AddIn.DependenciesLoaded || IsLazy)) {
- CommandManager.LoadAddinCommands(AddIn);
+ SDCommandManager.LoadAddinCommands(AddIn);
}
System.Windows.Input.ICommand command;
- CommandManager.commands.TryGetValue(CommandTypeName, out command);
+ SDCommandManager.commands.TryGetValue(CommandTypeName, out command);
commandInstance = command;
return command;
@@ -212,7 +213,7 @@ public CanExecuteRoutedEventHandler CanExecuteEventHandler
public ICollection OwnerInstances {
get {
if(_ownerInstanceName != null) {
- return CommandManager.GetNamedUIElementCollection(_ownerInstanceName);
+ return SDCommandManager.GetNamedUIElementCollection(_ownerInstanceName);
}
return null;
@@ -251,7 +252,7 @@ public CanExecuteRoutedEventHandler CanExecuteEventHandler
public ICollection OwnerTypes {
get {
if(_ownerTypeName != null) {
- return CommandManager.GetNamedUITypeCollection(_ownerTypeName);
+ return SDCommandManager.GetNamedUITypeCollection(_ownerTypeName);
}
return null;
@@ -262,6 +263,27 @@ public bool IsRegistered
{
get; set;
}
+
+ public void RemoveActiveCommandBindings()
+ {
+ if(_ownerTypeName != null) {
+ if(OwnerTypes != null) {
+ foreach(var ownerType in OwnerTypes) {
+ foreach(CommandBinding binding in ActiveCommandBindings) {
+ SDCommandManager.RemoveClassCommandBinding(ownerType, binding);
+ }
+ }
+ }
+ } else if(_ownerInstanceName != null) {
+ if(OwnerInstances != null) {
+ foreach(var ownerInstance in OwnerInstances) {
+ foreach(CommandBinding binding in ActiveCommandBindings) {
+ ownerInstance.CommandBindings.Remove(binding);
+ }
+ }
+ }
+ }
+ }
private BindingsUpdatedHandler defaultCommandBindingHandler;
@@ -273,12 +295,16 @@ internal BindingsUpdatedHandler DefaultCommandBindingHandler
get {
if(defaultCommandBindingHandler == null && OwnerTypeName != null) {
defaultCommandBindingHandler = delegate {
- if(RoutedCommand != null && OwnerTypes != null && IsRegistered) {
+ var routedCommand = RoutedCommand;
+ var ownerTypes = OwnerTypes;
+ var isRegistered = IsRegistered;
+
+ if(routedCommand != null && ownerTypes != null && isRegistered) {
GenerateCommandBindings();
- foreach(var ownerType in OwnerTypes) {
+ foreach(var ownerType in ownerTypes) {
foreach(CommandBinding binding in OldCommandBindings) {
- CommandManager.RemoveClassCommandBinding(ownerType, binding);
+ SDCommandManager.RemoveClassCommandBinding(ownerType, binding);
}
foreach(CommandBinding binding in ActiveCommandBindings) {
@@ -368,7 +394,7 @@ public CommandBindingCollection ActiveCommandBindings
AddIn.LoadRuntimeAssemblies();
var command = (ICommand)AddIn.CreateObject(CommandTypeName);
- CommandManager.LoadCommand(CommandTypeName, command);
+ SDCommandManager.LoadCommand(CommandTypeName, command);
}
if(CommandInstance != null) {
diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandManager.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandManager.cs
index 4d4d4c439d8..c395e17efea 100644
--- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandManager.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandManager.cs
@@ -58,7 +58,7 @@ public static class CommandManager
/// Instance name
/// Instance
public static void RegisterNamedUIElement(string instanceName, UIElement element)
- {
+ {
if(!namedUIInstances.ContainsKey(instanceName)){
namedUIInstances.Add(instanceName, new HashSet());
}
@@ -69,10 +69,38 @@ public static void RegisterNamedUIElement(string instanceName, UIElement element
if(namedUIInstances[instanceName].Add(element)) {
reverseNamedUIInstances[element].Add(instanceName);
+
// If there are some bindings and update handlers already registered,
// but owner is not loaded then invoke those bindings
- InvokeCommandBindingUpdateHandlers(new BindingInfoTemplate { OwnerInstanceName = instanceName });
- InvokeInputBindingUpdateHandlers(new BindingInfoTemplate { OwnerInstanceName = instanceName });
+
+ InvokeCommandBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerInstanceName = instanceName },
+ new BindingInfoTemplate { OwnerInstances = new[] { element }});
+
+ InvokeInputBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerInstanceName = instanceName },
+ new BindingInfoTemplate { OwnerInstances = new[] { element }});
+ }
+ }
+
+ public static void UnregisterNamedUIElement(string instanceName, UIElement instance)
+ {
+ if(namedUIInstances.ContainsKey(instanceName)){
+ if(namedUIInstances[instanceName].Remove(instance)) {
+ reverseNamedUIInstances[instance].Remove(instanceName);
+ }
+
+ InvokeCommandBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerInstanceName = instanceName },
+ new BindingInfoTemplate { OwnerInstances = new [] { instance }});
+
+ InvokeInputBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerInstanceName = instanceName },
+ new BindingInfoTemplate { OwnerInstances = new [] { instance }});
}
}
@@ -104,6 +132,10 @@ public static ICollection GetUIElementNameCollection(UIElement instance)
/// Type
public static void RegisterNamedUIType(string typeName, Type type)
{
+ if(type.IsSubclassOf(typeof(UIElement))) {
+ throw new ArgumentException("Type is not subclass of UIElement");
+ }
+
if(!namedUITypes.ContainsKey(typeName)){
namedUITypes.Add(typeName, new HashSet());
}
@@ -117,8 +149,34 @@ public static void RegisterNamedUIType(string typeName, Type type)
// If any update handlers where assigned to the type and type was not
// loaded yet then invoke update handlers
- InvokeCommandBindingUpdateHandlers(new BindingInfoTemplate { OwnerTypeName = typeName });
- InvokeInputBindingUpdateHandlers(new BindingInfoTemplate { OwnerTypeName = typeName });
+ InvokeCommandBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerTypeName = typeName },
+ new BindingInfoTemplate { OwnerTypes = new[] { type }});
+
+ InvokeInputBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerTypeName = typeName },
+ new BindingInfoTemplate { OwnerTypes = new[] { type }});
+ }
+ }
+
+ public static void UnregisterNamedUIType(string typeName, Type type)
+ {
+ if(namedUITypes.ContainsKey(typeName)){
+ if(namedUITypes[typeName].Remove(type)) {
+ reverseNamedUITypes[type].Remove(typeName);
+
+ InvokeCommandBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerTypeName = typeName },
+ new BindingInfoTemplate { OwnerTypes = new[] { type }});
+
+ InvokeInputBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerTypeName = typeName },
+ new BindingInfoTemplate { OwnerTypes = new[] { type }});
+ }
}
}
@@ -142,28 +200,6 @@ public static ICollection GetUITypeNameCollection(Type type)
return typeNames ?? new HashSet();
}
-
- ///
- /// Get reference to routed UI command by name
- ///
- /// Routed command name
- /// Routed command instance
- public static RoutedUICommand GetRoutedUICommand(string routedCommandName) {
- if(routedCommands.ContainsKey(routedCommandName)) {
- return routedCommands[routedCommandName];
- }
-
- return null;
- }
-
- ///
- /// Checks whether routed UI command registered
- ///
- /// Routed command name
- /// Returns value specifting whether routed UI command is registered
- public static bool IsRoutedUICommandRegistered(string routedCommandName) {
- return GetRoutedUICommand(routedCommandName) != null;
- }
///
/// Register new routed command in the global registry
@@ -174,15 +210,24 @@ public static ICollection GetUITypeNameCollection(Type type)
/// Routed command name
/// Short text describing command functionality
public static RoutedUICommand RegisterRoutedUICommand(string routedCommandName, string text) {
- var routedCommand = new RoutedUICommand(text, routedCommandName, typeof(CommandManager));
-
- if(!routedCommands.ContainsKey(routedCommandName)) {
- routedCommands.Add(routedCommandName, routedCommand);
- } else {
- var test = routedCommands[routedCommandName];
+ if(routedCommands.ContainsKey(routedCommandName)) {
throw new IndexOutOfRangeException("Routed UI command with name " + routedCommandName + " is already registered");
}
+ var routedCommand = new RoutedUICommand(text, routedCommandName, typeof(CommandManager));
+
+ routedCommands.Add(routedCommandName, routedCommand);
+
+ InvokeCommandBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { RoutedCommand = routedCommand },
+ new BindingInfoTemplate { RoutedCommandName = routedCommandName });
+
+ InvokeInputBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { RoutedCommand = routedCommand },
+ new BindingInfoTemplate { RoutedCommandName = routedCommandName });
+
return routedCommand;
}
@@ -197,11 +242,21 @@ public static ICollection GetUITypeNameCollection(Type type)
public static void RegisterRoutedUICommand(RoutedUICommand existingRoutedUICommand) {
string routedCommandName = existingRoutedUICommand.OwnerType.Name + "." + existingRoutedUICommand.Name;
- if(!routedCommands.ContainsKey(routedCommandName)) {
- routedCommands.Add(routedCommandName, existingRoutedUICommand);
- } else {
+ if(routedCommands.ContainsKey(routedCommandName)) {
throw new IndexOutOfRangeException("Routed UI command with name " + routedCommandName + " is already registered");
}
+
+ routedCommands.Add(routedCommandName, existingRoutedUICommand);
+
+ InvokeCommandBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { RoutedCommand = existingRoutedUICommand },
+ new BindingInfoTemplate { RoutedCommandName = routedCommandName });
+
+ InvokeInputBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { RoutedCommand = existingRoutedUICommand },
+ new BindingInfoTemplate { RoutedCommandName = routedCommandName });
}
///
@@ -210,8 +265,32 @@ public static ICollection GetUITypeNameCollection(Type type)
/// Routed command name
public static void UnregisterRoutedUICommand(string routedCommandName) {
if(routedCommands.ContainsKey(routedCommandName)) {
+ var routedCommand = routedCommands[routedCommandName];
routedCommands.Remove(routedCommandName);
+
+ InvokeCommandBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { RoutedCommand = routedCommand },
+ new BindingInfoTemplate { RoutedCommandName = routedCommandName });
+
+ InvokeInputBindingUpdateHandlers(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { RoutedCommand = routedCommand },
+ new BindingInfoTemplate { RoutedCommandName = routedCommandName });
+ }
+ }
+
+ ///
+ /// Get reference to routed UI command by name
+ ///
+ /// Routed command name
+ /// Routed command instance
+ public static RoutedUICommand GetRoutedUICommand(string routedCommandName) {
+ if(routedCommands != null && routedCommands.ContainsKey(routedCommandName)) {
+ return routedCommands[routedCommandName];
}
+
+ return null;
}
///
@@ -220,11 +299,19 @@ public static ICollection GetUITypeNameCollection(Type type)
/// Input binding parameters
public static void RegisterInputBinding(InputBindingInfo inputBindingInfo)
{
+ if(inputBindingInfo.OwnerInstanceName == null && inputBindingInfo.OwnerTypeName == null) {
+ throw new ArgumentException("Binding owner must be specified");
+ }
+
+ if(inputBindingInfo.RoutedCommandName == null) {
+ throw new ArgumentException("Routed command name must be specified");
+ }
+
var similarBindingTemplate = new BindingInfoTemplate();
similarBindingTemplate.OwnerTypeName = inputBindingInfo.OwnerTypeName;
similarBindingTemplate.OwnerInstanceName = inputBindingInfo.OwnerInstanceName;
similarBindingTemplate.RoutedCommandName = inputBindingInfo.RoutedCommandName;
- var similarInputBinding = FindInputBindingInfos(similarBindingTemplate).FirstOrDefault();
+ var similarInputBinding = FindInputBindingInfos(BindingInfoMatchType.SuperSet, similarBindingTemplate).FirstOrDefault();
if(similarInputBinding != null) {
foreach(InputGesture gesture in inputBindingInfo.DefaultGestures) {
@@ -237,69 +324,37 @@ public static void RegisterInputBinding(InputBindingInfo inputBindingInfo)
similarInputBinding.Categories.AddRange(inputBindingInfo.Categories);
similarInputBinding.Groups.AddRange(inputBindingInfo.Groups);
} else {
- if(inputBindingInfo.OwnerInstanceName == null && inputBindingInfo.OwnerTypeName == null) {
- throw new ArgumentException("Binding owner must be specified");
- }
-
- var registeredBindingTemplate = new BindingInfoTemplate();
- registeredBindingTemplate.OwnerInstanceName = inputBindingInfo.OwnerInstanceName;
- registeredBindingTemplate.OwnerTypeName = inputBindingInfo.OwnerTypeName;
- registeredBindingTemplate.RoutedCommandName = inputBindingInfo.RoutedCommandName;
-
inputBidnings.Add(inputBindingInfo);
inputBindingInfo.IsRegistered = true;
-
- RegisterInputBindingsUpdateHandler(registeredBindingTemplate, inputBindingInfo.DefaultInputBindingHandler);
- InvokeInputBindingUpdateHandlers(registeredBindingTemplate);
}
+
+ InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet, similarBindingTemplate);
}
///
/// Unregister input binding
///
/// Input binding parameters
- public static void UnregisterInputBinding(BindingInfoTemplate template)
+ public static void UnregisterInputBinding(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
- var similarInputBindingInfos = FindInputBindingInfos(template);
-
- foreach(var similarInputBindingInfo in similarInputBindingInfos) {
+ foreach(var similarInputBindingInfo in FindInputBindingInfos(matchType, templates).ToArray()) {
inputBidnings.Remove(similarInputBindingInfo);
-
- // Remove command bindings
- if(similarInputBindingInfo.OwnerTypes != null) {
- foreach(var ownerType in similarInputBindingInfo.OwnerTypes) {
- foreach(InputBinding binding in similarInputBindingInfo.OldInputBindings) {
- RemoveClassInputBinding(ownerType, binding);
- }
-
- foreach(InputBinding binding in similarInputBindingInfo.ActiveInputBindings) {
- RemoveClassInputBinding(ownerType, binding);
- }
- }
- } else if (similarInputBindingInfo.OwnerInstances != null) {
- foreach(var ownerInstance in similarInputBindingInfo.OwnerInstances) {
- foreach(InputBinding binding in similarInputBindingInfo.OldInputBindings) {
- ownerInstance.InputBindings.Remove(binding);
- }
-
- foreach(InputBinding binding in similarInputBindingInfo.ActiveInputBindings) {
- ownerInstance.InputBindings.Remove(binding);
- }
- }
- }
+ similarInputBindingInfo.RemoveActiveInputBindings();
}
+
+ InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet | BindingInfoMatchType.SuperSet, templates);
}
- public static IEnumerable FindInputBindingInfos(params BindingInfoTemplate[] templates)
+ public static IEnumerable FindInputBindingInfos(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
- return FindBindingInfos(inputBidnings, templates).Cast();
+ return FindBindingInfos(inputBidnings, matchType, templates).Cast();
}
- private static IEnumerable FindBindingInfos(ICollection bindingInfos, params BindingInfoTemplate[] templates)
+ private static IEnumerable FindBindingInfos(ICollection bindingInfos, BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
foreach(var binding in bindingInfos) {
foreach(var template in templates) {
- if(template.IsTemplateFor(binding)) {
+ if(template.IsTemplateFor(binding, matchType)) {
yield return binding;
continue;
}
@@ -307,9 +362,9 @@ private static IEnumerable FindBindingInfos(ICollection
/// Remove command binding associated with type
///
@@ -378,6 +414,10 @@ public static void RemoveClassCommandBinding(Type ownerType, CommandBinding comm
if(commandBindingInfo.OwnerInstanceName == null && commandBindingInfo.OwnerTypeName == null) {
throw new ArgumentException("Binding owner must be specified");
}
+
+ if(commandBindingInfo.RoutedCommandName == null) {
+ throw new ArgumentException("Routed command name must be specified");
+ }
var registeredBindingTemplate = new BindingInfoTemplate();
registeredBindingTemplate.OwnerInstanceName = commandBindingInfo.OwnerInstanceName;
@@ -388,46 +428,20 @@ public static void RemoveClassCommandBinding(Type ownerType, CommandBinding comm
commandBindingInfo.IsRegistered = true;
RegisterInputBindingsUpdateHandler(registeredBindingTemplate, commandBindingInfo.DefaultCommandBindingHandler);
- InvokeInputBindingUpdateHandlers(registeredBindingTemplate);
+ InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet, registeredBindingTemplate);
}
///
/// Unregister command binding
///
/// Command binding parameters
- public static void UnregisterCommandBinding(CommandBindingInfo commandBindingInfo) {
- var template = new BindingInfoTemplate();
- template.OwnerTypeName = commandBindingInfo.OwnerTypeName;
- template.OwnerInstanceName = commandBindingInfo.OwnerInstanceName;
- template.RoutedCommandName = commandBindingInfo.RoutedCommandName;
- var similarCommandBindingInfos = FindCommandBindingInfos(template);
-
- foreach(var similarCommandBindingInfo in similarCommandBindingInfos) {
+ public static void UnregisterCommandBinding(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates) {
+ foreach(var similarCommandBindingInfo in FindCommandBindingInfos(matchType, templates).ToArray()) {
commandBindings.Remove(similarCommandBindingInfo);
-
- // Remove command bindings
- if(similarCommandBindingInfo.OwnerTypes != null) {
- foreach(var ownerType in similarCommandBindingInfo.OwnerTypes) {
- foreach(CommandBinding binding in similarCommandBindingInfo.OldCommandBindings) {
- RemoveClassCommandBinding(ownerType, binding);
- }
-
- foreach(CommandBinding binding in similarCommandBindingInfo.ActiveCommandBindings) {
- RemoveClassCommandBinding(ownerType, binding);
- }
- }
- } else if (similarCommandBindingInfo.OwnerInstances != null) {
- foreach(var ownerInstance in similarCommandBindingInfo.OwnerInstances) {
- foreach(CommandBinding binding in similarCommandBindingInfo.OldCommandBindings) {
- ownerInstance.CommandBindings.Remove(binding);
- }
-
- foreach(CommandBinding binding in similarCommandBindingInfo.ActiveCommandBindings) {
- ownerInstance.CommandBindings.Remove(binding);
- }
- }
- }
+ similarCommandBindingInfo.RemoveActiveCommandBindings();
}
+
+ InvokeCommandBindingUpdateHandlers(BindingInfoMatchType.SubSet | BindingInfoMatchType.SuperSet, templates);
}
#region Update handlers
@@ -452,6 +466,10 @@ public static void RegisterCommandBindingsUpdateHandler(IBindingInfo template, B
RegisterBindingsUpdateHandler(commandBindingUpdatedHandlers, template, handler);
}
+ public static void UnegisterCommandBindingsUpdateHandler(BindingsUpdatedHandler handler, BindingInfoMatchType matchType, params IBindingInfo[] templates)
+ {
+ UnregisterBindingsUpdateHandler(commandBindingUpdatedHandlers, handler, matchType, templates);
+ }
///
/// Register command binding update handler which is triggered when input bindings associated
@@ -463,12 +481,30 @@ public static void RegisterInputBindingsUpdateHandler(IBindingInfo template, Bin
{
RegisterBindingsUpdateHandler(inputBindingUpdatedHandlers, template, handler);
}
+
+ public static void UnregisterInputBindingsUpdateHandler(BindingsUpdatedHandler handler, BindingInfoMatchType matchType, params IBindingInfo[] templates)
+ {
+ UnregisterBindingsUpdateHandler(inputBindingUpdatedHandlers, handler, matchType, templates);
+ }
+
+ private static void UnregisterBindingsUpdateHandler(Dictionary> updateHandlerDictionary, BindingsUpdatedHandler handler, BindingInfoMatchType matchType, params IBindingInfo[] templates)
+ {
+ foreach(var updateHandlerPair in updateHandlerDictionary) {
+ foreach(var template in templates) {
+ if(template.IsTemplateFor(updateHandlerPair.Key, matchType)) {
+ if(handler != null) {
+ updateHandlerPair.Value.Remove(handler);
+ }
+ }
+ }
+ }
+ }
- private static void InvokeBindingUpdateHandlers(Dictionary> updateHandlerDictionary, params BindingInfoTemplate[] templates)
+ private static void InvokeBindingUpdateHandlers(Dictionary> updateHandlerDictionary, BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
foreach(var updateHandlerPair in updateHandlerDictionary) {
foreach(var template in templates) {
- if(template.IsTemplateFor(updateHandlerPair.Key)) {
+ if(template.IsTemplateFor(updateHandlerPair.Key, matchType)) {
foreach(var handler in updateHandlerPair.Value) {
if(handler != null) {
handler.Invoke();
@@ -479,14 +515,14 @@ private static void InvokeBindingUpdateHandlers(DictionaryContext class full name
/// Context class full name
/// Collection of managed command bindings
- public static IEnumerable FindCommandBindingInfos(params BindingInfoTemplate[] templates)
+ public static IEnumerable FindCommandBindingInfos(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
- return FindBindingInfos(commandBindings, templates).Cast();
+ return FindBindingInfos(commandBindings, matchType, templates).Cast();
}
- public static CommandBindingCollection FindCommandBindings(params BindingInfoTemplate[] templates)
+ public static CommandBindingCollection FindCommandBindings(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
- var commandBindingInfoCollection = FindCommandBindingInfos(templates);
+ var commandBindingInfoCollection = FindCommandBindingInfos(matchType, templates);
var commandBindingCollection = new CommandBindingCollection();
foreach(var bindingInfo in commandBindingInfoCollection) {
commandBindingCollection.AddRange(bindingInfo.ActiveCommandBindings);
@@ -562,8 +598,8 @@ public static CommandBindingCollection FindCommandBindings(params BindingInfoTem
/// Get gestures assigned only to specific context
/// Routed UI command name
/// Gesture
- public static InputGestureCollection FindInputGestures(params BindingInfoTemplate[] templates) {
- var bindings = FindInputBindingInfos(templates);
+ public static InputGestureCollection FindInputGestures(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates) {
+ var bindings = FindInputBindingInfos(matchType, templates);
var gestures = new InputGestureCollection();
foreach(InputBindingInfo bindingInfo in bindings) {
diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/IBindingInfo.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/IBindingInfo.cs
index a87fd607a89..308338e3d95 100644
--- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/IBindingInfo.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/IBindingInfo.cs
@@ -52,14 +52,58 @@ BindingGroupCollection Groups
public static class IBindingInfoExtensions
{
- public static bool IsTemplateFor(this IBindingInfo template, IBindingInfo binding)
+ public static bool IsTemplateFor(this IBindingInfo template, IBindingInfo binding, BindingInfoMatchType matchType)
{
- return (template.OwnerInstanceName == null || template.OwnerInstanceName == binding.OwnerInstanceName)
- && (template.OwnerInstances == null || (binding.OwnerInstances != null && template.OwnerInstances.ContainsAnyFromCollection(binding.OwnerInstances)))
- && (template.OwnerTypeName == null || template.OwnerTypeName == binding.OwnerTypeName)
- && (template.OwnerTypes == null || (binding.OwnerTypes != null && template.OwnerTypes.ContainsAnyFromCollection(binding.OwnerTypes)))
- && (template.RoutedCommandName == null || template.RoutedCommandName == binding.RoutedCommandName)
- && (template.RoutedCommand == null || template.RoutedCommand == binding.RoutedCommand);
+ var bindingOwnerInstanceName = binding.OwnerInstanceName;
+ var bindingOwnerInstances = binding.OwnerInstances;
+ var bindingOwnerTypeName = binding.OwnerTypeName;
+ var bindingOwnerTypes = binding.OwnerTypes;
+ var bindingRoutedCommandName = binding.RoutedCommandName;
+ var bindingRoutedCommand = binding.RoutedCommand;
+ var bindingGroups = binding.Groups;
+
+ var templateOwnerInstanceName = template.OwnerInstanceName;
+ var templateOwnerInstances = template.OwnerInstances;
+ var templateOwnerTypeName = template.OwnerTypeName;
+ var templateOwnerTypes = template.OwnerTypes;
+ var templateRoutedCommandName = template.RoutedCommandName;
+ var templateRoutedCommand = template.RoutedCommand;
+ var templateGroups = template.Groups;
+
+ var instancesOverlap = templateOwnerInstances != null && bindingOwnerInstances != null && templateOwnerInstances.ContainsAnyFromCollection(bindingOwnerInstances);
+ var typesOverlap = templateOwnerTypes != null && bindingOwnerTypes != null && templateOwnerTypes.ContainsAnyFromCollection(bindingOwnerTypes);
+ var groupsOverlap = templateGroups != null && bindingGroups != null && templateGroups.ContainsAnyFromCollection(bindingGroups);
+
+ var superSetMatch = false;
+ if((matchType & BindingInfoMatchType.SuperSet) == BindingInfoMatchType.SuperSet) {
+ superSetMatch = (templateOwnerInstanceName == null || templateOwnerInstanceName == bindingOwnerInstanceName)
+ && (templateOwnerInstances == null || instancesOverlap)
+ && (templateOwnerTypeName == null || templateOwnerTypeName == bindingOwnerTypeName)
+ && (templateOwnerTypes == null || typesOverlap)
+ && (templateRoutedCommandName == null || templateRoutedCommandName == bindingRoutedCommandName)
+ && (templateRoutedCommand == null || templateRoutedCommand == bindingRoutedCommand)
+ && (templateGroups == null || groupsOverlap);
+ }
+
+ var subSetMatch = false;
+ if((matchType & BindingInfoMatchType.SubSet) == BindingInfoMatchType.SubSet) {
+ subSetMatch = (templateOwnerInstanceName != null && templateOwnerInstanceName == bindingOwnerInstanceName)
+ || (templateOwnerInstances != null && instancesOverlap)
+ || (templateOwnerTypeName != null && templateOwnerTypeName == bindingOwnerTypeName)
+ || (templateOwnerTypes != null && typesOverlap)
+ || (templateRoutedCommandName != null && templateRoutedCommandName == bindingRoutedCommandName)
+ || (templateRoutedCommand != null && templateRoutedCommand == bindingRoutedCommand)
+ || (templateGroups != null && groupsOverlap);
+ }
+
+ return subSetMatch || superSetMatch;
}
}
+
+ [FlagsAttribute]
+ public enum BindingInfoMatchType
+ {
+ SubSet = 1,
+ SuperSet = 2,
+ }
}
diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs
index b0c5e187b35..5d3d8eddeb8 100644
--- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs
@@ -4,6 +4,9 @@
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Collections.ObjectModel;
+using System.Reflection;
+using CommandManager = System.Windows.Input.CommandManager;
+using SDCommandManager = ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation
{
@@ -22,12 +25,44 @@ public InputBindingInfo()
DefaultGestures = new ObservableInputGestureCollection();
Categories = new InputBindingCategoryCollection();
Groups = new BindingGroupCollection();
- Groups.CollectionChanged += Groups_CollectionChanged;
}
+ private BindingGroupCollection _groups;
+
public BindingGroupCollection Groups
{
- get; private set;
+ get {
+ return _groups;
+ }
+ set {
+ if(value == null) {
+ throw new ArgumentException("Groups collection can not be null");
+ }
+
+ var oldValue = _groups;
+ _groups = value;
+ _groups.CollectionChanged += Groups_CollectionChanged;
+
+ if(oldValue != null) {
+ var oldItemsList = new System.Collections.ArrayList();
+ foreach(var oldItem in oldValue) {
+ oldItemsList.Add(oldItem);
+ }
+
+ var newItemsList = new System.Collections.ArrayList();
+ foreach(var newItem in value) {
+ newItemsList.Add(newItem);
+ }
+
+ var args = new NotifyCollectionChangedEventArgs(
+ NotifyCollectionChangedAction.Replace,
+ oldItemsList,
+ newItemsList,
+ 0);
+
+ Groups_CollectionChanged(this, args);
+ }
+ }
}
public string _ownerInstanceName;
@@ -66,7 +101,7 @@ public BindingGroupCollection Groups
public ICollection OwnerInstances {
get {
if(_ownerInstanceName != null) {
- return CommandManager.GetNamedUIElementCollection(_ownerInstanceName);
+ return SDCommandManager.GetNamedUIElementCollection(_ownerInstanceName);
}
return null;
@@ -109,7 +144,7 @@ public string OwnerTypeName
public ICollection OwnerTypes {
get {
if(_ownerTypeName != null) {
- return CommandManager.GetNamedUITypeCollection(_ownerTypeName);
+ return SDCommandManager.GetNamedUITypeCollection(_ownerTypeName);
}
return null;
@@ -203,15 +238,27 @@ public string OwnerTypeName
///
public RoutedUICommand RoutedCommand {
get {
- return CommandManager.GetRoutedUICommand(RoutedCommandName);
+ return SDCommandManager.GetRoutedUICommand(RoutedCommandName);
}
}
+ InputBindingCategoryCollection _categories;
+
///
/// List of categories associated with input binding
///
public InputBindingCategoryCollection Categories {
- get; private set;
+
+ get {
+ return _categories;
+ }
+ set {
+ if(value == null) {
+ throw new ArgumentException("Categories collection can not be null");
+ }
+
+ _categories = value;
+ }
}
@@ -263,7 +310,7 @@ private void ActiveGesturesChanged(object sender, InputBindingGesturesChangedArg
template.OwnerTypeName = OwnerTypeName;
template.RoutedCommandName = RoutedCommandName;
- CommandManager.InvokeInputBindingUpdateHandlers(template);
+ SDCommandManager.InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet | BindingInfoMatchType.SuperSet, template);
}
///
@@ -282,6 +329,26 @@ private void GenerateInputBindings()
}
}
+ public void RemoveActiveInputBindings()
+ {
+ if(_ownerTypeName != null) {
+ if(OwnerTypes != null) {
+ foreach(var ownerType in OwnerTypes) {
+ foreach(InputBinding binding in ActiveInputBindings) {
+ SDCommandManager.RemoveClassInputBinding(ownerType, binding);
+ }
+ }
+ }
+ } else if(_ownerInstanceName != null) {
+ if(OwnerInstances != null) {
+ foreach(var ownerInstance in OwnerInstances) {
+ foreach(InputBinding binding in ActiveInputBindings) {
+ ownerInstance.InputBindings.Remove(binding);
+ }
+ }
+ }
+ }
+ }
private BindingsUpdatedHandler defaultInputBindingHandler;
@@ -298,14 +365,21 @@ internal BindingsUpdatedHandler DefaultInputBindingHandler
foreach(var ownerType in OwnerTypes) {
foreach(InputBinding binding in OldInputBindings) {
- CommandManager.RemoveClassInputBinding(ownerType, binding);
+ SDCommandManager.RemoveClassInputBinding(ownerType, binding);
}
foreach(InputBinding binding in ActiveInputBindings) {
System.Windows.Input.CommandManager.RegisterClassInputBinding(ownerType, binding);
}
- CommandManager.OrderClassInputBindingsByChords(ownerType);
+ var fieldInfo = typeof(System.Windows.Input.CommandManager).GetField("_classInputBindings", BindingFlags.Static | BindingFlags.NonPublic);
+ var fieldData = (HybridDictionary)fieldInfo.GetValue(null);
+ var classInputBindings = (InputBindingCollection)fieldData[ownerType];
+
+ // Sorting input bindings. This may be slow
+ if(classInputBindings != null) {
+ classInputBindings.SortByChords();
+ }
}
if(ActiveInputBindingsChanged != null) {
@@ -325,7 +399,10 @@ internal BindingsUpdatedHandler DefaultInputBindingHandler
ownerInstance.InputBindings.AddRange(ActiveInputBindings);
- CommandManager.OrderInstanceInputBindingsByChords(ownerInstance);
+ // Sorting input bindings. This may be slow
+ if(ownerInstance.InputBindings != null) {
+ ownerInstance.InputBindings.SortByChords();
+ }
}
}
};
diff --git a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs
index 0cd88359e20..3336a113f0d 100644
--- a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs
@@ -136,7 +136,14 @@ public MenuCommand(UIElement inputBindingOwner, Codon codon, object caller, bool
BindingsUpdatedHandler gesturesUpdateHandler = delegate {
var gesturesTemplate = new BindingInfoTemplate();
gesturesTemplate.RoutedCommandName = routedCommandName;
- var updatedGestures = CommandManager.FindInputGestures(gesturesTemplate);
+
+ if(codon.Properties.Contains("ownerinstance")) {
+ gesturesTemplate.OwnerInstanceName = codon.Properties["ownerinstance"];
+ } else if(codon.Properties.Contains("ownertype")) {
+ gesturesTemplate.OwnerTypeName = codon.Properties["ownertype"];
+ }
+
+ var updatedGestures = CommandManager.FindInputGestures(BindingInfoMatchType.SuperSet, gesturesTemplate);
this.InputGestureText = (string)new InputGestureCollectionConverter().ConvertToInvariantString(updatedGestures);
};
diff --git a/src/Main/ICSharpCode.Core.Presentation/Test/BindingInfoTemplateTests.cs b/src/Main/ICSharpCode.Core.Presentation/Test/BindingInfoTemplateTests.cs
new file mode 100644
index 00000000000..4bd4c2fe862
--- /dev/null
+++ b/src/Main/ICSharpCode.Core.Presentation/Test/BindingInfoTemplateTests.cs
@@ -0,0 +1,115 @@
+using System;
+using NUnit.Framework;
+using ICSharpCode.Core.Presentation;
+
+namespace ICSharpCode.Core.Presentation.Tests
+{
+ [TestFixture]
+ public class BindingInfoTemplateTests
+ {
+ [TestAttribute]
+ public void IsTemplateForSupersetsTests()
+ {
+ var source = new InputBindingInfo();
+ source.RoutedCommandName = "TestCommand";
+ source.OwnerTypeName = "TestOwnerType";
+
+ var emptyTemplate = new BindingInfoTemplate();
+ Assert.IsTrue(emptyTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet));
+
+ var matchingTemplate = new BindingInfoTemplate();
+ matchingTemplate.RoutedCommandName = "TestCommand";
+ Assert.IsTrue(matchingTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet));
+
+ var unmatchingTemplate = new BindingInfoTemplate();
+ unmatchingTemplate.RoutedCommandName = "OtherTestCommand";
+ Assert.IsFalse(unmatchingTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet));
+
+ var overlappingTemplate = new BindingInfoTemplate();
+ overlappingTemplate.RoutedCommandName = "TestCommand";
+ overlappingTemplate.OwnerInstanceName = "TestOwnerInstance";
+ Assert.IsFalse(overlappingTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet));
+
+ var biggerTemplate = new BindingInfoTemplate();
+ biggerTemplate.RoutedCommandName = "TestCommand";
+ biggerTemplate.OwnerTypeName = "TestOwnerType";
+ biggerTemplate.OwnerInstanceName = "TestOwnerInstance";
+ Assert.IsFalse(biggerTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet));
+
+ var exactTemplate = new BindingInfoTemplate();
+ exactTemplate.RoutedCommandName = "TestCommand";
+ exactTemplate.OwnerTypeName = "TestOwnerType";
+ Assert.IsTrue(exactTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet));
+ }
+
+ [TestAttribute]
+ public void IsTemplateForSubsetsTests()
+ {
+ var source = new InputBindingInfo();
+ source.RoutedCommandName = "TestCommand";
+ source.OwnerTypeName = "TestOwnerType";
+
+ var emptyTemplate = new BindingInfoTemplate();
+ Assert.IsFalse(emptyTemplate.IsTemplateFor(source, BindingInfoMatchType.SubSet));
+
+ var matchingTemplate = new BindingInfoTemplate();
+ matchingTemplate.RoutedCommandName = "TestCommand";
+ Assert.IsTrue(matchingTemplate.IsTemplateFor(source, BindingInfoMatchType.SubSet));
+
+ var unmatchingTemplate = new BindingInfoTemplate();
+ unmatchingTemplate.RoutedCommandName = "OtherTestCommand";
+ Assert.IsFalse(unmatchingTemplate.IsTemplateFor(source, BindingInfoMatchType.SubSet));
+
+ var overlappingTemplate = new BindingInfoTemplate();
+ overlappingTemplate.RoutedCommandName = "TestCommand";
+ overlappingTemplate.OwnerInstanceName = "TestOwnerInstance";
+ Assert.IsTrue(overlappingTemplate.IsTemplateFor(source, BindingInfoMatchType.SubSet));
+
+ var biggerTemplate = new BindingInfoTemplate();
+ biggerTemplate.RoutedCommandName = "TestCommand";
+ biggerTemplate.OwnerTypeName = "TestOwnerType";
+ biggerTemplate.OwnerInstanceName = "TestOwnerInstance";
+ Assert.IsTrue(biggerTemplate.IsTemplateFor(source, BindingInfoMatchType.SubSet));
+
+ var exactTemplate = new BindingInfoTemplate();
+ exactTemplate.RoutedCommandName = "TestCommand";
+ exactTemplate.OwnerTypeName = "TestOwnerType";
+ Assert.IsTrue(exactTemplate.IsTemplateFor(source, BindingInfoMatchType.SubSet));
+ }
+
+ [TestAttribute]
+ public void IsTemplateForPartlyMatchingTests()
+ {
+ var source = new InputBindingInfo();
+ source.RoutedCommandName = "TestCommand";
+ source.OwnerTypeName = "TestOwnerType";
+
+ var emptyTemplate = new BindingInfoTemplate();
+ Assert.IsTrue(emptyTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet | BindingInfoMatchType.SubSet));
+
+ var matchingTemplate = new BindingInfoTemplate();
+ matchingTemplate.RoutedCommandName = "TestCommand";
+ Assert.IsTrue(matchingTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet | BindingInfoMatchType.SubSet));
+
+ var unmatchingTemplate = new BindingInfoTemplate();
+ unmatchingTemplate.RoutedCommandName = "OtherTestCommand";
+ Assert.IsFalse(unmatchingTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet | BindingInfoMatchType.SubSet));
+
+ var overlappingTemplate = new BindingInfoTemplate();
+ overlappingTemplate.RoutedCommandName = "TestCommand";
+ overlappingTemplate.OwnerInstanceName = "TestOwnerInstance";
+ Assert.IsTrue(overlappingTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet | BindingInfoMatchType.SubSet));
+
+ var biggerTemplate = new BindingInfoTemplate();
+ biggerTemplate.RoutedCommandName = "TestCommand";
+ biggerTemplate.OwnerTypeName = "TestOwnerType";
+ biggerTemplate.OwnerInstanceName = "TestOwnerInstance";
+ Assert.IsTrue(biggerTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet | BindingInfoMatchType.SubSet));
+
+ var exactTemplate = new BindingInfoTemplate();
+ exactTemplate.RoutedCommandName = "TestCommand";
+ exactTemplate.OwnerTypeName = "TestOwnerType";
+ Assert.IsTrue(exactTemplate.IsTemplateFor(source, BindingInfoMatchType.SuperSet | BindingInfoMatchType.SubSet));
+ }
+ }
+}
diff --git a/src/Main/ICSharpCode.Core.Presentation/Test/CommandManagerTests.cs b/src/Main/ICSharpCode.Core.Presentation/Test/CommandManagerTests.cs
new file mode 100644
index 00000000000..a311f81a690
--- /dev/null
+++ b/src/Main/ICSharpCode.Core.Presentation/Test/CommandManagerTests.cs
@@ -0,0 +1,133 @@
+using ICSharpCode.Core.Presentation;
+using NUnit.Framework;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows;
+using System.Windows.Input;
+
+namespace ICSharpCode.Core.Presentation.Tests
+{
+ [TestFixture]
+ public class CommandManagerTests
+ {
+ UIElement namedInstanceScope;
+ BindingGroup bindingGroup;
+ BindingGroup bindingGroup2;
+
+ [SetUp]
+ public void SetuUp()
+ {
+ namedInstanceScope = new UIElement();
+ bindingGroup = new BindingGroup();
+ bindingGroup2 = new BindingGroup();
+
+ CommandManager.RegisterNamedUIType("Global", typeof(UIElement));
+ CommandManager.RegisterNamedUIElement("NamedInstanceScope", namedInstanceScope);
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerTypeName = "Global",
+ RoutedCommandName = "TestCommands.DoSomething" });
+
+ // Register binding with same values
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerTypeName = "Global",
+ RoutedCommandName = "TestCommands.DoSomething" });
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerTypeName = "Global",
+ RoutedCommandName = "TestCommands.DoSomethingOther" });
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerTypeName = "Local",
+ RoutedCommandName = "TestCommands.DoSomething" });
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerTypeName = "UnrelatedScope",
+ RoutedCommandName = "TestCommands.DoSomethingCompletelyOther" });
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerTypeName = "NamedScope",
+ RoutedCommandName = "TestCommands.DoSomethingCompletelyElse" });
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerInstanceName = "NamedInstanceScope",
+ RoutedCommandName = "TestCommands.DoSomething" });
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerInstanceName = "OtherNamedInstanceScope",
+ RoutedCommandName = "TestCommands.DoSomething" });
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerInstanceName = "OtherNamedInstanceScope",
+ RoutedCommandName = "TestCommands.DoSomethingElse" ,
+ Groups = new BindingGroupCollection { bindingGroup2 }});
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerTypeName = "UnrelatedInstanceScope",
+ RoutedCommandName = "TestCommands.DoSomethingCompletelyOther" ,
+ Groups = new BindingGroupCollection { bindingGroup }});
+
+ CommandManager.RegisterInputBinding(new InputBindingInfo {
+ OwnerTypeName = "UnrelatedInstanceScope2",
+ RoutedCommandName = "TestCommands.DoSomethingCompletelyOther",
+ Groups = new BindingGroupCollection { bindingGroup }});
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ bindingGroup = null;
+ bindingGroup2 = null;
+ namedInstanceScope = null;
+
+ CommandManager.UnregisterInputBinding(BindingInfoMatchType.SuperSet, new BindingInfoTemplate());
+ CommandManager.UnregisterCommandBinding(BindingInfoMatchType.SuperSet, new BindingInfoTemplate());
+
+ CommandManager.UnregisterNamedUIType("Global", typeof(UIElement));
+ CommandManager.UnregisterNamedUIElement("NamedInstanceScope", namedInstanceScope);
+ }
+
+
+ [Test]
+ public void FindInputBindingInfosTests()
+ {
+ var doSomethingBindingInfos = CommandManager.FindInputBindingInfos(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { RoutedCommandName = "TestCommands.DoSomething" });
+ Assert.AreEqual(4, doSomethingBindingInfos.Count());
+
+ var namedInstanceBindingInfos = CommandManager.FindInputBindingInfos(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { OwnerInstances = new[] { namedInstanceScope }, RoutedCommandName = "TestCommands.DoSomething" });
+ Assert.AreEqual(1, namedInstanceBindingInfos.Count());
+
+ var groupBindingInfos = CommandManager.FindInputBindingInfos(
+ BindingInfoMatchType.SuperSet,
+ new BindingInfoTemplate { Groups = new BindingGroupCollection { bindingGroup }});
+ Assert.AreEqual(2, groupBindingInfos.Count());
+ }
+
+ [Test]
+ public void InvokeBindingsOnRoutedCommandRegistration()
+ {
+ var testResults = new HashSet();
+
+ CommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest" }, () => testResults.Add("test1"));
+ CommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerTypeName = "TestOwner" }, () => testResults.Add("test2"));
+ CommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommand = ApplicationCommands.Copy }, () => testResults.Add("ApplicationCommands.Copy1"));
+ CommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "ApplicationCommands.Copy" }, () => testResults.Add("ApplicationCommands.Copy2"));
+
+ CommandManager.RegisterRoutedUICommand("InvokeTest", "text");
+
+ Assert.IsTrue(testResults.Contains("test1"));
+ Assert.IsTrue(testResults.Contains("test2"));
+ Assert.IsFalse(testResults.Contains("ApplicationCommands.Copy1"));
+
+ CommandManager.RegisterRoutedUICommand(ApplicationCommands.Copy);
+
+ Assert.IsTrue(testResults.Contains("ApplicationCommands.Copy1"));
+ Assert.IsTrue(testResults.Contains("ApplicationCommands.Copy2"));
+ }
+ }
+}
diff --git a/src/Main/ICSharpCode.Core.Presentation/Test/ICSharpCode.Core.Presentation.Tests.csproj b/src/Main/ICSharpCode.Core.Presentation/Test/ICSharpCode.Core.Presentation.Tests.csproj
index f4ef19e7a98..de153d44d6c 100644
--- a/src/Main/ICSharpCode.Core.Presentation/Test/ICSharpCode.Core.Presentation.Tests.csproj
+++ b/src/Main/ICSharpCode.Core.Presentation/Test/ICSharpCode.Core.Presentation.Tests.csproj
@@ -57,6 +57,8 @@
+
+