Browse Source

Unit test & minor fixes to update handlers

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/shortcuts@4505 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts^2
Sergej Andrejev 16 years ago
parent
commit
e72ab0ae58
  1. 394
      SharpDevelop.Tests.sln
  2. 3
      src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplaceDialog.cs
  3. 2
      src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs
  4. 10
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj
  5. 10
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/WeakReferenceTests.cs
  6. 8
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretNavigationCommandHandler.cs
  7. 4
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/EditingCommandHandler.cs
  8. 18
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextAreaDefaultInputHandlers.cs
  9. 4
      src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
  10. 4
      src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingGroup.cs
  11. 46
      src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs
  12. 318
      src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandManager.cs
  13. 58
      src/Main/ICSharpCode.Core.Presentation/CommandsService/IBindingInfo.cs
  14. 97
      src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs
  15. 9
      src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs
  16. 115
      src/Main/ICSharpCode.Core.Presentation/Test/BindingInfoTemplateTests.cs
  17. 133
      src/Main/ICSharpCode.Core.Presentation/Test/CommandManagerTests.cs
  18. 2
      src/Main/ICSharpCode.Core.Presentation/Test/ICSharpCode.Core.Presentation.Tests.csproj

394
SharpDevelop.Tests.sln

@ -6,110 +6,110 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-5 @@ -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 @@ -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 @@ -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", " @@ -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 @@ -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

3
src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplaceDialog.cs

@ -168,7 +168,8 @@ namespace SearchAndReplace @@ -168,7 +168,8 @@ namespace SearchAndReplace
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;

2
src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs

@ -193,7 +193,7 @@ namespace ICSharpCode.ShortcutsManagement.Dialogs @@ -193,7 +193,7 @@ namespace ICSharpCode.ShortcutsManagement.Dialogs
}
}
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

10
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj

@ -82,9 +82,13 @@ @@ -82,9 +82,13 @@
<ItemGroup>
<Folder Include="Document" />
<Folder Include="Utils" />
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.Presentation\Test\ICSharpCode.Core.Presentation.Tests.csproj">
<Project>{FFA7988E-7348-4669-9E9D-27E629C873A2}</Project>
<Name>ICSharpCode.Core.Presentation.Tests</Name>
<ProjectReference Include="..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj">
<Project>{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}</Project>
<Name>ICSharpCode.Core.Presentation</Name>
</ProjectReference>
<ProjectReference Include="..\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj">
<Project>{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}</Project>

10
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/WeakReferenceTests.cs

@ -9,6 +9,8 @@ using System; @@ -9,6 +9,8 @@ using System;
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 @@ -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()
{

8
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretNavigationCommandHandler.cs

@ -28,6 +28,8 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -28,6 +28,8 @@ namespace ICSharpCode.AvalonEdit.Editing
get; private set;
}
private static InputBindingCategory classWideInputBindingCategory;
/// <summary>
/// Creates a new <see cref="TextAreaInputHandler"/> for the text area.
/// </summary>
@ -36,10 +38,6 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -36,10 +38,6 @@ namespace ICSharpCode.AvalonEdit.Editing
TextAreaInputHandler handler = new TextAreaInputHandler(textArea);
handler.BindingGroup = ClassWideBindingGroup;
// TODO: DELETE
// handler.CommandBindings.AddRange(CommandBindings);
// handler.InputBindings.AddRange(InputBindings);
return handler;
}
@ -58,6 +56,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -58,6 +56,7 @@ namespace ICSharpCode.AvalonEdit.Editing
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 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -77,6 +76,7 @@ namespace ICSharpCode.AvalonEdit.Editing
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));

4
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/EditingCommandHandler.cs

@ -36,6 +36,8 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -36,6 +36,8 @@ namespace ICSharpCode.AvalonEdit.Editing
get; private set;
}
private static InputBindingCategory classWideInputBindingCategory;
/// <summary>
/// Creates a new <see cref="TextAreaInputHandler"/> for the text area.
/// </summary>
@ -62,6 +64,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -62,6 +64,7 @@ namespace ICSharpCode.AvalonEdit.Editing
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 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -82,6 +85,7 @@ namespace ICSharpCode.AvalonEdit.Editing
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));

18
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextAreaDefaultInputHandlers.cs

@ -41,27 +41,11 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -41,27 +41,11 @@ namespace ICSharpCode.AvalonEdit.Editing
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();

4
src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs

@ -246,7 +246,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -246,7 +246,7 @@ namespace ICSharpCode.SharpDevelop.Commands
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 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -561,7 +561,7 @@ namespace ICSharpCode.SharpDevelop.Commands
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;

4
src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingGroup.cs

@ -99,8 +99,8 @@ namespace ICSharpCode.Core.Presentation @@ -99,8 +99,8 @@ namespace ICSharpCode.Core.Presentation
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<BindingGroup> NestedGroups

46
src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs

@ -4,7 +4,8 @@ using System.Collections.Specialized; @@ -4,7 +4,8 @@ using System.Collections.Specialized;
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 @@ namespace ICSharpCode.Core.Presentation @@ -63,7 +64,7 @@ namespace ICSharpCode.Core.Presentation
/// </summary>
public RoutedUICommand RoutedCommand {
get {
return CommandManager.GetRoutedUICommand(RoutedCommandName);
return SDCommandManager.GetRoutedUICommand(RoutedCommandName);
}
}
@ -117,11 +118,11 @@ namespace ICSharpCode.Core.Presentation @@ -117,11 +118,11 @@ namespace ICSharpCode.Core.Presentation
}
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 @@ namespace ICSharpCode.Core.Presentation @@ -212,7 +213,7 @@ namespace ICSharpCode.Core.Presentation
public ICollection<UIElement> OwnerInstances {
get {
if(_ownerInstanceName != null) {
return CommandManager.GetNamedUIElementCollection(_ownerInstanceName);
return SDCommandManager.GetNamedUIElementCollection(_ownerInstanceName);
}
return null;
@ -251,7 +252,7 @@ namespace ICSharpCode.Core.Presentation @@ -251,7 +252,7 @@ namespace ICSharpCode.Core.Presentation
public ICollection<Type> OwnerTypes {
get {
if(_ownerTypeName != null) {
return CommandManager.GetNamedUITypeCollection(_ownerTypeName);
return SDCommandManager.GetNamedUITypeCollection(_ownerTypeName);
}
return null;
@ -263,6 +264,27 @@ namespace ICSharpCode.Core.Presentation @@ -263,6 +264,27 @@ namespace ICSharpCode.Core.Presentation
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;
/// <summary>
@ -273,12 +295,16 @@ namespace ICSharpCode.Core.Presentation @@ -273,12 +295,16 @@ namespace ICSharpCode.Core.Presentation
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 @@ namespace ICSharpCode.Core.Presentation @@ -368,7 +394,7 @@ namespace ICSharpCode.Core.Presentation
AddIn.LoadRuntimeAssemblies();
var command = (ICommand)AddIn.CreateObject(CommandTypeName);
CommandManager.LoadCommand(CommandTypeName, command);
SDCommandManager.LoadCommand(CommandTypeName, command);
}
if(CommandInstance != null) {

318
src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandManager.cs

@ -69,10 +69,38 @@ namespace ICSharpCode.Core.Presentation @@ -69,10 +69,38 @@ namespace ICSharpCode.Core.Presentation
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 @@ namespace ICSharpCode.Core.Presentation @@ -104,6 +132,10 @@ namespace ICSharpCode.Core.Presentation
/// <param name="type">Type</param>
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<Type>());
}
@ -117,8 +149,34 @@ namespace ICSharpCode.Core.Presentation @@ -117,8 +149,34 @@ namespace ICSharpCode.Core.Presentation
// 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 }});
}
}
}
@ -143,28 +201,6 @@ namespace ICSharpCode.Core.Presentation @@ -143,28 +201,6 @@ namespace ICSharpCode.Core.Presentation
return typeNames ?? new HashSet<string>();
}
/// <summary>
/// Get reference to routed UI command by name
/// </summary>
/// <param name="routedCommandName">Routed command name</param>
/// <returns>Routed command instance</returns>
public static RoutedUICommand GetRoutedUICommand(string routedCommandName) {
if(routedCommands.ContainsKey(routedCommandName)) {
return routedCommands[routedCommandName];
}
return null;
}
/// <summary>
/// Checks whether routed UI command registered
/// </summary>
/// <param name="routedCommandName">Routed command name</param>
/// <returns>Returns value specifting whether routed UI command is registered</returns>
public static bool IsRoutedUICommandRegistered(string routedCommandName) {
return GetRoutedUICommand(routedCommandName) != null;
}
/// <summary>
/// Register new routed command in the global registry
///
@ -174,14 +210,23 @@ namespace ICSharpCode.Core.Presentation @@ -174,14 +210,23 @@ namespace ICSharpCode.Core.Presentation
/// <param name="routedCommandName">Routed command name</param>
/// <param name="text">Short text describing command functionality</param>
public static RoutedUICommand RegisterRoutedUICommand(string routedCommandName, string text) {
if(routedCommands.ContainsKey(routedCommandName)) {
throw new IndexOutOfRangeException("Routed UI command with name " + routedCommandName + " is already registered");
}
var routedCommand = new RoutedUICommand(text, routedCommandName, typeof(CommandManager));
if(!routedCommands.ContainsKey(routedCommandName)) {
routedCommands.Add(routedCommandName, routedCommand);
} else {
var test = routedCommands[routedCommandName];
throw new IndexOutOfRangeException("Routed UI command with name " + routedCommandName + " is already registered");
}
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 @@ namespace ICSharpCode.Core.Presentation @@ -197,11 +242,21 @@ namespace ICSharpCode.Core.Presentation
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 });
}
/// <summary>
@ -210,8 +265,32 @@ namespace ICSharpCode.Core.Presentation @@ -210,8 +265,32 @@ namespace ICSharpCode.Core.Presentation
/// <param name="routedCommandName">Routed command name</param>
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 });
}
}
/// <summary>
/// Get reference to routed UI command by name
/// </summary>
/// <param name="routedCommandName">Routed command name</param>
/// <returns>Routed command instance</returns>
public static RoutedUICommand GetRoutedUICommand(string routedCommandName) {
if(routedCommands != null && routedCommands.ContainsKey(routedCommandName)) {
return routedCommands[routedCommandName];
}
return null;
}
/// <summary>
@ -220,11 +299,19 @@ namespace ICSharpCode.Core.Presentation @@ -220,11 +299,19 @@ namespace ICSharpCode.Core.Presentation
/// <param name="inputBindingInfo">Input binding parameters</param>
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 @@ namespace ICSharpCode.Core.Presentation @@ -237,69 +324,37 @@ namespace ICSharpCode.Core.Presentation
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);
}
/// <summary>
/// Unregister input binding
/// </summary>
/// <param name="inputBindingInfo">Input binding parameters</param>
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);
similarInputBindingInfo.RemoveActiveInputBindings();
}
foreach(InputBinding binding in similarInputBindingInfo.ActiveInputBindings) {
ownerInstance.InputBindings.Remove(binding);
}
}
}
}
InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet | BindingInfoMatchType.SuperSet, templates);
}
public static IEnumerable<InputBindingInfo> FindInputBindingInfos(params BindingInfoTemplate[] templates)
public static IEnumerable<InputBindingInfo> FindInputBindingInfos(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
return FindBindingInfos(inputBidnings, templates).Cast<InputBindingInfo>();
return FindBindingInfos(inputBidnings, matchType, templates).Cast<InputBindingInfo>();
}
private static IEnumerable<IBindingInfo> FindBindingInfos(ICollection<IBindingInfo> bindingInfos, params BindingInfoTemplate[] templates)
private static IEnumerable<IBindingInfo> FindBindingInfos(ICollection<IBindingInfo> 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 @@ namespace ICSharpCode.Core.Presentation @@ -307,9 +362,9 @@ namespace ICSharpCode.Core.Presentation
}
}
public static InputBindingCollection FindInputBindings(params BindingInfoTemplate[] templates)
public static InputBindingCollection FindInputBindings(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
var inputBindingInfoCollection = FindInputBindingInfos(templates);
var inputBindingInfoCollection = FindInputBindingInfos(matchType, templates);
var inputBindingCollection = new InputBindingCollection();
foreach(var bindingInfo in inputBindingInfoCollection) {
@ -335,25 +390,6 @@ namespace ICSharpCode.Core.Presentation @@ -335,25 +390,6 @@ namespace ICSharpCode.Core.Presentation
}
}
internal static void OrderClassInputBindingsByChords(Type 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];
if(classInputBindings != null) {
classInputBindings.SortByChords();
}
}
internal static void OrderInstanceInputBindingsByChords(UIElement ownerType)
{
if(ownerType.InputBindings != null) {
ownerType.InputBindings.SortByChords();
}
}
/// <summary>
/// Remove command binding associated with type
/// </summary>
@ -379,6 +415,10 @@ namespace ICSharpCode.Core.Presentation @@ -379,6 +415,10 @@ namespace ICSharpCode.Core.Presentation
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;
registeredBindingTemplate.OwnerTypeName = commandBindingInfo.OwnerTypeName;
@ -388,46 +428,20 @@ namespace ICSharpCode.Core.Presentation @@ -388,46 +428,20 @@ namespace ICSharpCode.Core.Presentation
commandBindingInfo.IsRegistered = true;
RegisterInputBindingsUpdateHandler(registeredBindingTemplate, commandBindingInfo.DefaultCommandBindingHandler);
InvokeInputBindingUpdateHandlers(registeredBindingTemplate);
InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet, registeredBindingTemplate);
}
/// <summary>
/// Unregister command binding
/// </summary>
/// <param name="commandBindingInfo">Command binding parameters</param>
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);
similarCommandBindingInfo.RemoveActiveCommandBindings();
}
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);
}
}
}
}
InvokeCommandBindingUpdateHandlers(BindingInfoMatchType.SubSet | BindingInfoMatchType.SuperSet, templates);
}
#region Update handlers
@ -452,6 +466,10 @@ namespace ICSharpCode.Core.Presentation @@ -452,6 +466,10 @@ namespace ICSharpCode.Core.Presentation
RegisterBindingsUpdateHandler(commandBindingUpdatedHandlers, template, handler);
}
public static void UnegisterCommandBindingsUpdateHandler(BindingsUpdatedHandler handler, BindingInfoMatchType matchType, params IBindingInfo[] templates)
{
UnregisterBindingsUpdateHandler(commandBindingUpdatedHandlers, handler, matchType, templates);
}
/// <summary>
/// Register command binding update handler which is triggered when input bindings associated
@ -464,11 +482,29 @@ namespace ICSharpCode.Core.Presentation @@ -464,11 +482,29 @@ namespace ICSharpCode.Core.Presentation
RegisterBindingsUpdateHandler(inputBindingUpdatedHandlers, template, handler);
}
private static void InvokeBindingUpdateHandlers(Dictionary<IBindingInfo, HashSet<BindingsUpdatedHandler>> updateHandlerDictionary, params BindingInfoTemplate[] templates)
public static void UnregisterInputBindingsUpdateHandler(BindingsUpdatedHandler handler, BindingInfoMatchType matchType, params IBindingInfo[] templates)
{
UnregisterBindingsUpdateHandler(inputBindingUpdatedHandlers, handler, matchType, templates);
}
private static void UnregisterBindingsUpdateHandler(Dictionary<IBindingInfo, HashSet<BindingsUpdatedHandler>> 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<IBindingInfo, HashSet<BindingsUpdatedHandler>> 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 @@ namespace ICSharpCode.Core.Presentation @@ -479,14 +515,14 @@ namespace ICSharpCode.Core.Presentation
}
}
public static void InvokeCommandBindingUpdateHandlers(params BindingInfoTemplate[] templates)
public static void InvokeCommandBindingUpdateHandlers(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
InvokeBindingUpdateHandlers(commandBindingUpdatedHandlers, templates);
InvokeBindingUpdateHandlers(commandBindingUpdatedHandlers, matchType, templates);
}
public static void InvokeInputBindingUpdateHandlers(params BindingInfoTemplate[] templates)
public static void InvokeInputBindingUpdateHandlers(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
InvokeBindingUpdateHandlers(inputBindingUpdatedHandlers, templates);
InvokeBindingUpdateHandlers(inputBindingUpdatedHandlers, matchType, templates);
}
#endregion
@ -537,14 +573,14 @@ namespace ICSharpCode.Core.Presentation @@ -537,14 +573,14 @@ namespace ICSharpCode.Core.Presentation
/// <param name="routedCommandName">Context class full name</param>
/// <param name="className">Context class full name</param>
/// <returns>Collection of managed command bindings</returns>
public static IEnumerable<CommandBindingInfo> FindCommandBindingInfos(params BindingInfoTemplate[] templates)
public static IEnumerable<CommandBindingInfo> FindCommandBindingInfos(BindingInfoMatchType matchType, params BindingInfoTemplate[] templates)
{
return FindBindingInfos(commandBindings, templates).Cast<CommandBindingInfo>();
return FindBindingInfos(commandBindings, matchType, templates).Cast<CommandBindingInfo>();
}
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 @@ namespace ICSharpCode.Core.Presentation @@ -562,8 +598,8 @@ namespace ICSharpCode.Core.Presentation
/// <param name="contextInstance">Get gestures assigned only to specific context</param>
/// <param name="routedCommandName">Routed UI command name</param>
/// <param name="gesture">Gesture</param>
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) {

58
src/Main/ICSharpCode.Core.Presentation/CommandsService/IBindingInfo.cs

@ -52,14 +52,58 @@ namespace ICSharpCode.Core.Presentation @@ -52,14 +52,58 @@ namespace ICSharpCode.Core.Presentation
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,
}
}

97
src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs

@ -4,6 +4,9 @@ using System.Windows.Input; @@ -4,6 +4,9 @@ using System.Windows.Input;
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 @@ namespace ICSharpCode.Core.Presentation @@ -22,12 +25,44 @@ namespace ICSharpCode.Core.Presentation
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 @@ namespace ICSharpCode.Core.Presentation @@ -66,7 +101,7 @@ namespace ICSharpCode.Core.Presentation
public ICollection<UIElement> OwnerInstances {
get {
if(_ownerInstanceName != null) {
return CommandManager.GetNamedUIElementCollection(_ownerInstanceName);
return SDCommandManager.GetNamedUIElementCollection(_ownerInstanceName);
}
return null;
@ -109,7 +144,7 @@ namespace ICSharpCode.Core.Presentation @@ -109,7 +144,7 @@ namespace ICSharpCode.Core.Presentation
public ICollection<Type> OwnerTypes {
get {
if(_ownerTypeName != null) {
return CommandManager.GetNamedUITypeCollection(_ownerTypeName);
return SDCommandManager.GetNamedUITypeCollection(_ownerTypeName);
}
return null;
@ -203,15 +238,27 @@ namespace ICSharpCode.Core.Presentation @@ -203,15 +238,27 @@ namespace ICSharpCode.Core.Presentation
/// </summary>
public RoutedUICommand RoutedCommand {
get {
return CommandManager.GetRoutedUICommand(RoutedCommandName);
return SDCommandManager.GetRoutedUICommand(RoutedCommandName);
}
}
InputBindingCategoryCollection _categories;
/// <summary>
/// List of categories associated with input binding
/// </summary>
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 @@ namespace ICSharpCode.Core.Presentation @@ -263,7 +310,7 @@ namespace ICSharpCode.Core.Presentation
template.OwnerTypeName = OwnerTypeName;
template.RoutedCommandName = RoutedCommandName;
CommandManager.InvokeInputBindingUpdateHandlers(template);
SDCommandManager.InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet | BindingInfoMatchType.SuperSet, template);
}
/// <summary>
@ -282,6 +329,26 @@ namespace ICSharpCode.Core.Presentation @@ -282,6 +329,26 @@ namespace ICSharpCode.Core.Presentation
}
}
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 @@ namespace ICSharpCode.Core.Presentation @@ -298,14 +365,21 @@ namespace ICSharpCode.Core.Presentation
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 @@ namespace ICSharpCode.Core.Presentation @@ -325,7 +399,10 @@ namespace ICSharpCode.Core.Presentation
ownerInstance.InputBindings.AddRange(ActiveInputBindings);
CommandManager.OrderInstanceInputBindingsByChords(ownerInstance);
// Sorting input bindings. This may be slow
if(ownerInstance.InputBindings != null) {
ownerInstance.InputBindings.SortByChords();
}
}
}
};

9
src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs

@ -136,7 +136,14 @@ namespace ICSharpCode.Core.Presentation @@ -136,7 +136,14 @@ namespace ICSharpCode.Core.Presentation
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);
};

115
src/Main/ICSharpCode.Core.Presentation/Test/BindingInfoTemplateTests.cs

@ -0,0 +1,115 @@ @@ -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));
}
}
}

133
src/Main/ICSharpCode.Core.Presentation/Test/CommandManagerTests.cs

@ -0,0 +1,133 @@ @@ -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<string>();
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"));
}
}
}

2
src/Main/ICSharpCode.Core.Presentation/Test/ICSharpCode.Core.Presentation.Tests.csproj

@ -57,6 +57,8 @@ @@ -57,6 +57,8 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="BindingInfoTemplateTests.cs" />
<Compile Include="CommandManagerTests.cs" />
<Compile Include="InputGestureTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UserDefinedGestureProfileTests.cs" />

Loading…
Cancel
Save