Browse Source

More unit tests and fixes

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/shortcuts@4516 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts^2
Sergej Andrejev 16 years ago
parent
commit
bed0b40148
  1. 394
      SharpDevelop.Tests.sln
  2. 86
      src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Data/MapTable.cs
  3. 781
      src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs
  4. 1
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretNavigationCommandHandler.cs
  5. 1
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/EditingCommandHandler.cs
  6. 44
      src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs
  7. 68
      src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandManager.cs
  8. 25
      src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingCategory.cs
  9. 14
      src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingCategoryCollection.cs
  10. 39
      src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs
  11. 399
      src/Main/ICSharpCode.Core.Presentation/Test/CommandManagerTests.cs
  12. 1
      src/Main/ICSharpCode.Core.Presentation/Test/ICSharpCode.Core.Presentation.Tests.csproj
  13. 80
      src/Main/ICSharpCode.Core.Presentation/Test/InputBindingCategoryTests.cs

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.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}") = "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}"
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.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.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}"
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.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.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.SharpDevelop.Sda", "src\Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
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", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
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}"
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}") = "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.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.AvalonEdit.Tests", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit.Tests\ICSharpCode.AvalonEdit.Tests.csproj", "{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}"
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
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NRefactory", "NRefactory", "{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
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}") = "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}") = "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}") = "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}") = "AvalonDock", "src\Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
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}"
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.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}") = "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}"
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
@ -118,110 +118,132 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278 @@ -118,110 +118,132 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
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}") = "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
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
ProjectSection(SolutionItems) = postProject
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}") = "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}") = "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}") = "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}") = "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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
ProjectSection(SolutionItems) = postProject
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("{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}") = "Python.Build.Tasks", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
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}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
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}"
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}") = "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}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}"
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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
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}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
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}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
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}") = "XamlBinding.Tests", "src\AddIns\BackendBindings\XamlBinding\XamlBinding.Tests\XamlBinding.Tests.csproj", "{F390DA70-1FE1-4715-81A0-389AB010C130}"
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}") = "WixBinding.Tests", "src\AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}"
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}") = "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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{BFA3BF26-33BD-4A65-B84D-C7F30D131668}"
ProjectSection(SolutionItems) = postProject
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("{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.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
@ -230,39 +252,37 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9 @@ -230,39 +252,37 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
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}"
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}") = "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}") = "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}") = "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}") = "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}") = "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}") = "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
@ -272,170 +292,150 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", " @@ -272,170 +292,150 @@ 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}") = "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
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}") = "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}") = "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}") = "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}") = "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}") = "SearchAndReplace.Tests", "src\AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShortcutsManagement", "src\AddIns\Misc\ShortcutsManagement\ShortcutsManagement\ShortcutsManagement.csproj", "{745869FF-80E9-4589-A366-E775D2103843}"
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}") = "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
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}") = "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}") = "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}
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}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}"
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("{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.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}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
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}") = "WorkflowDesigner", "src\AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
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}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
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}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
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("{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}"
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}") = "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}
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
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}") = "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("{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}"
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}") = "ComponentInspector.Core", "src\AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "src\AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
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}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
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.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}") = "UnitTesting", "src\AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
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", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
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}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
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}") = "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
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -768,95 +768,95 @@ Global @@ -768,95 +768,95 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{FFA7988E-7348-4669-9E9D-27E629C873A2} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{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}
{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}
{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}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{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}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{870115DD-960A-4406-A6B9-600BCDC36A03} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{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}
{B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{388E7B64-0393-4EB4-A3E3-5C474F141853} = {E0646C25-36F2-4524-969F-FA621353AB94}
{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}
{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}
{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}
{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}
{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}
{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}
{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}
{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}
{C9DE556D-325C-4544-B29F-16A9EB7C9830} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
EndGlobalSection
EndGlobal

86
src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Data/MapTable.cs

@ -3,42 +3,52 @@ using System.Collections.Generic; @@ -3,42 +3,52 @@ using System.Collections.Generic;
namespace ICSharpCode.ShortcutsManagement.Data
{
public class MapTable<T1, T2> : IEnumerable<KeyValuePair<T1, T2>>
{
private readonly Dictionary<T1, T2> forwardMaping = new Dictionary<T1, T2>();
private readonly Dictionary<T2, T1> backwardMaping = new Dictionary<T2, T1>();
public void Add(T1 mappingObject, T2 mappedObject)
{
forwardMaping.Add(mappingObject, mappedObject);
backwardMaping.Add(mappedObject, mappingObject);
}
public T2 MapForward(T1 mappingObject)
{
return forwardMaping[mappingObject];
}
public T1 MapBackward(T2 mappingObject)
{
return backwardMaping[mappingObject];
}
public void Clear()
{
forwardMaping.Clear();
backwardMaping.Clear();
}
public IEnumerator<KeyValuePair<T1, T2>> GetEnumerator()
{
return forwardMaping.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return forwardMaping.GetEnumerator();
}
}
public class MapTable<T1, T2> : IEnumerable<KeyValuePair<T1, T2>>
{
private readonly Dictionary<T1, T2> forwardMaping = new Dictionary<T1, T2>();
private readonly Dictionary<T2, T1> backwardMaping = new Dictionary<T2, T1>();
public void Add(T1 mappingObject, T2 mappedObject)
{
forwardMaping.Add(mappingObject, mappedObject);
backwardMaping.Add(mappedObject, mappingObject);
}
public void TryMapForward(T1 mappingObject, out T2 mappedObject)
{
forwardMaping.TryGetValue(mappingObject, out mappedObject);
}
public void TryMapBackward(T2 mappingObject, out T1 mappedObject)
{
backwardMaping.TryGetValue(mappingObject, out mappedObject);
}
public T2 MapForward(T1 mappingObject)
{
return forwardMaping[mappingObject];
}
public T1 MapBackward(T2 mappingObject)
{
return backwardMaping[mappingObject];
}
public void Clear()
{
forwardMaping.Clear();
backwardMaping.Clear();
}
public IEnumerator<KeyValuePair<T1, T2>> GetEnumerator()
{
return forwardMaping.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return forwardMaping.GetEnumerator();
}
}
}

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

@ -13,418 +13,383 @@ using ICSharpCode.SharpDevelop; @@ -13,418 +13,383 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.ShortcutsManagement.Data;
using Microsoft.Win32;
using ShortcutManagement=ICSharpCode.ShortcutsManagement.Data;
using CommandManager = ICSharpCode.Core.Presentation.CommandManager;
using SDCommandManager = ICSharpCode.Core.Presentation.CommandManager;
using MessageBox=System.Windows.MessageBox;
using Shortcut=ICSharpCode.ShortcutsManagement.Data.Shortcut;
using UserControl=System.Windows.Controls.UserControl;
namespace ICSharpCode.ShortcutsManagement.Dialogs
{
/// <summary>
/// Interaction logic for ShortcutsManagementOptionsPanel.xaml
/// </summary>
public partial class ShortcutsManagementOptionsPanel : UserControl, IOptionPanel
{
/// <summary>
/// Identifies <see cref="SelectedProfile"/> dependency property
/// </summary>
public static readonly DependencyProperty SelectedProfileProperty = DependencyProperty.Register(
"SelectedProfile",
typeof(UserGesturesProfile),
typeof(ShortcutsManagementOptionsPanel),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Specifies text box border thickness
/// </summary>
public UserGesturesProfile SelectedProfile
{
get
{
return (UserGesturesProfile)GetValue(SelectedProfileProperty);
}
set
{
SetValue(SelectedProfileProperty, value);
}
}
/// <summary>
/// Stores shortcut entry to input binding convertion map
/// </summary>
private readonly MapTable<Shortcut, InputBindingInfo> shortcutsMap = new MapTable<Shortcut, InputBindingInfo>();
private List<IShortcutTreeEntry> rootEntries;
private readonly List<UserGesturesProfile> profiles = new List<UserGesturesProfile>();
private readonly List<UserGesturesProfile> removedProfiles = new List<UserGesturesProfile>();
public ShortcutsManagementOptionsPanel()
{
ResourceService.RegisterStrings("ICSharpCode.ShortcutsManagement.Resources.StringResources", GetType().Assembly);
InitializeComponent();
}
public void LoadOptions()
{
shortcutsManagementOptionsPanel.searchTextBox.Focus();
if (Directory.Exists(UserDefinedGesturesManager.UserGestureProfilesDirectory))
{
var dirInfo = new DirectoryInfo(UserDefinedGesturesManager.UserGestureProfilesDirectory);
var xmlFiles = dirInfo.GetFiles("*.xml");
foreach (var fileInfo in xmlFiles)
{
var profile = new UserGesturesProfile();
profile.Path = Path.Combine(UserDefinedGesturesManager.UserGestureProfilesDirectory, fileInfo.Name);
profile.Load();
profiles.Add(profile);
if (UserDefinedGesturesManager.CurrentProfile != null && profile.Name == UserDefinedGesturesManager.CurrentProfile.Name)
{
SelectedProfile = profile;
}
}
}
BindProfiles();
BindShortcuts();
}
private void BindProfiles()
{
var profilesTextBoxItemsSource = new ArrayList(profiles);
profilesTextBoxItemsSource.Add(new SeparatorData());
var deleteItem = new UserGestureProfileAction();
deleteItem.Name = "Delete";
deleteItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileDeleteAction}");
profilesTextBoxItemsSource.Add(deleteItem);
var loadItem = new UserGestureProfileAction();
loadItem.Name = "Load";
loadItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileLoadAction}");
profilesTextBoxItemsSource.Add(loadItem);
var createItem = new UserGestureProfileAction();
createItem.Name = "Create";
createItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileCreateAction}");
profilesTextBoxItemsSource.Add(createItem);
var renameItem = new UserGestureProfileAction();
renameItem.Name = "Rename";
renameItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileRenameAction}");
profilesTextBoxItemsSource.Add(renameItem);
var resetItem = new UserGestureProfileAction();
resetItem.Name = "Reset";
resetItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileResetAction}");
profilesTextBoxItemsSource.Add(resetItem);
profilesTextBox.DataContext = profilesTextBoxItemsSource;
if (SelectedProfile != null)
{
if(profilesTextBox.SelectedItem != SelectedProfile) {
profilesTextBox.Text = SelectedProfile.Text;
profilesTextBox.SelectedItem = SelectedProfile;
}
}
else
{
profilesTextBox.SelectedIndex = -1;
profilesTextBox.Text = "";
}
}
private void BindShortcuts()
{
shortcutsMap.Clear();
// Root shortcut tree entries
rootEntries = new List<IShortcutTreeEntry>();
// Stores SD input binding category to category section convertion map
var categoriesMap = new MapTable<InputBindingCategory, ShortcutCategory>();
var unspecifiedCategory = new ShortcutCategory(StringParser.Parse("${res:ShortcutsManagement.UnspecifiedCategoryName}"));
rootEntries.Add(unspecifiedCategory);
CommandManager.InputBindingCategories.Sort((c1, c2) => c1.Path.CompareTo(c2.Path));
var parentCategories = new LinkedList<ShortcutCategory>();
var previousDepth = 0;
foreach(var bindingCategory in CommandManager.InputBindingCategories)
{
var categoryName = Regex.Replace(StringParser.Parse(bindingCategory.Text), @"&([^\s])", @"$1");
var shortcutCategory = new ShortcutCategory(categoryName);
categoriesMap.Add(bindingCategory, shortcutCategory);
AddCategory:
var currentDepth = bindingCategory.Path.Split('/').Length - 1;
if (currentDepth > previousDepth)
{
previousDepth++;
if (previousDepth > 1)
{
parentCategories.Last.Value.SubCategories.Add(shortcutCategory);
}
else
{
rootEntries.Add(shortcutCategory);
}
parentCategories.AddLast(shortcutCategory);
}
else
{
while (previousDepth >= currentDepth)
{
parentCategories.RemoveLast();
previousDepth--;
}
goto AddCategory;
}
}
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
// but this value can be overriden through InputBindingInfo.RoutedCommandText value
var shortcutText = inputBindingInfo.RoutedCommand.Text;
if (!string.IsNullOrEmpty(inputBindingInfo.RoutedCommandText))
{
shortcutText = inputBindingInfo.RoutedCommandText;
}
shortcutText = StringParser.Parse(shortcutText);
// Some commands have "&" sign to mark alternative key used to call this command from menu
// Strip this sign from shortcut entry text
shortcutText = Regex.Replace(shortcutText, @"&([^\s])", @"$1");
var shortcutGestures = inputBindingInfo.DefaultGestures.GetInputGestureCollection();
if(SelectedProfile != null && SelectedProfile[inputBindingInfo.Identifier] != null) {
shortcutGestures = new InputGestureCollection(SelectedProfile[inputBindingInfo.Identifier]);
}
var shortcut = new Shortcut(shortcutText, shortcutGestures);
shortcutsMap.Add(shortcut, inputBindingInfo);
// Assign shortcut to all categories it is registered in
if (inputBindingInfo.Categories != null && inputBindingInfo.Categories.Count > 0)
{
foreach (var bindingCategory in inputBindingInfo.Categories)
{
var shortcutCategory = categoriesMap.MapForward(bindingCategory);
shortcutCategory.Shortcuts.Add(shortcut);
}
}
else
{
rootEntries.Add(shortcut);
}
}
rootEntries.Sort();
foreach (var entry in rootEntries)
{
entry.SortSubEntries();
}
new ShortcutsFinder(rootEntries).Filter("");
shortcutsManagementOptionsPanel.DataContext = rootEntries;
}
public bool SaveOptions()
{
foreach (var profile in removedProfiles)
{
if(File.Exists(profile.Path))
{
File.Delete(profile.Path);
}
}
UserDefinedGesturesManager.CurrentProfile = SelectedProfile;
profiles.ForEach(p => p.Save());
return true;
}
public object Owner {
get; set;
}
public object Control {
get { return this; }
}
private void profilesTextBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems == null || e.AddedItems.Count == 0)
{
return;
}
var userGestureProfileAction = e.AddedItems[0] as UserGestureProfileAction;
if (userGestureProfileAction != null)
{
if (userGestureProfileAction.Name == "Delete" && SelectedProfile != null)
{
var result = MessageBox.Show(
StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ConfirmDeleteProfileMessage}"),
StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ConfirmDeleteProfileMessageWindowName}"),
MessageBoxButton.YesNo);
if(MessageBoxResult.Yes == result)
{
profiles.Remove(SelectedProfile);
removedProfiles.Add(SelectedProfile);
SelectedProfile = null;
}
}
if (userGestureProfileAction.Name == "Rename" && SelectedProfile != null)
{
var promptWindow = new CreateNewProfilePrompt();
promptWindow.BaseProfilesVisibility = Visibility.Collapsed;
promptWindow.Text = SelectedProfile.Text;
promptWindow.ShowDialog();
SelectedProfile.Text = promptWindow.Text;
}
if(userGestureProfileAction.Name == "Load")
{
var openDialog = new OpenFileDialog();
openDialog.Filter = "Xml files (*.xml)|*.xml";
openDialog.FilterIndex = 1;
openDialog.RestoreDirectory = false;
if(true == openDialog.ShowDialog()) {
var loadedProfile = new UserGesturesProfile();
loadedProfile.Path = openDialog.FileName;
loadedProfile.Load();
loadedProfile.Path = Path.Combine(
UserDefinedGesturesManager.UserGestureProfilesDirectory,
Guid.NewGuid().ToString());
profiles.Add(loadedProfile);
SelectedProfile = loadedProfile;
}
}
if (userGestureProfileAction.Name == "Reset")
{
SelectedProfile = null;
}
if(userGestureProfileAction.Name == "Create")
{
var promptWindow = new CreateNewProfilePrompt();
promptWindow.AvailableBaseProfiles = profiles;
promptWindow.ShowDialog();
if (promptWindow.DialogResult == true)
{
UserGesturesProfile newProfile;
if (promptWindow.BaseProfile != null)
{
newProfile = (UserGesturesProfile) promptWindow.BaseProfile.Clone();
newProfile.Name = Guid.NewGuid().ToString();
newProfile.Text = promptWindow.Text;
newProfile.ReadOnly = false;
}
else
{
newProfile = new UserGesturesProfile(Guid.NewGuid().ToString(), promptWindow.Text, false);
}
newProfile.Path = Path.Combine(UserDefinedGesturesManager.UserGestureProfilesDirectory,
newProfile.Name + ".xml");
profiles.Add(newProfile);
SelectedProfile = newProfile;
}
}
}
var userGestureProfile = e.AddedItems[0] as UserGesturesProfile;
if (userGestureProfile != null && userGestureProfile != SelectedProfile)
{
SelectedProfile = userGestureProfile;
}
BindProfiles();
BindShortcuts();
}
private void shortcutsManagementOptionsPanel_ShortcutModified(object sender, EventArgs e)
{
var selectedShortcut = (Shortcut)shortcutsManagementOptionsPanel.shortcutsTreeView.SelectedItem;
if(SelectedProfile == null)
{
MessageBox.Show(StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.NoProfileSelectedMessage}"));
return;
}
if(SelectedProfile.ReadOnly)
{
MessageBox.Show(StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.SelectedProfileIsReadOnlyMessage}"));
return;
}
Shortcut shortcutCopy = null;
ICollection<IShortcutTreeEntry> rootEntriesCopy = new ObservableCollection<IShortcutTreeEntry>();
// Make a deep copy of all add-ins, categories and shortcuts
foreach (var entry in rootEntries)
{
var clonedRootEntry = (IShortcutTreeEntry)entry.Clone();
rootEntriesCopy.Add(clonedRootEntry);
// Find copy of modified shortcut in copied add-ins collection
if (shortcutCopy == null)
{
shortcutCopy = clonedRootEntry.FindShortcut(selectedShortcut.Id);
}
}
var shortcutManagementWindow = new ShortcutManagementWindow(shortcutCopy, rootEntriesCopy);
shortcutManagementWindow.ShowDialog();
if (SelectedProfile != null && shortcutManagementWindow.DialogResult.HasValue && shortcutManagementWindow.DialogResult.Value)
{
// Move modifications from shortcut copies to original shortcut objects
foreach (var relatedShortcutCopy in shortcutManagementWindow.ModifiedShortcuts)
{
foreach (var rootEntry in rootEntries)
{
var originalRelatedShortcut = rootEntry.FindShortcut(relatedShortcutCopy.Id);
if (originalRelatedShortcut != null)
{
originalRelatedShortcut.Gestures.Clear();
originalRelatedShortcut.Gestures.AddRange(relatedShortcutCopy.Gestures);
var id = shortcutsMap.MapForward(originalRelatedShortcut).Identifier;
SelectedProfile[id] = new InputGestureCollection(relatedShortcutCopy.Gestures);
}
}
}
}
}
}
/// <summary>
/// Interaction logic for ShortcutsManagementOptionsPanel.xaml
/// </summary>
public partial class ShortcutsManagementOptionsPanel : UserControl, IOptionPanel
{
/// <summary>
/// Identifies <see cref="SelectedProfile"/> dependency property
/// </summary>
public static readonly DependencyProperty SelectedProfileProperty = DependencyProperty.Register(
"SelectedProfile",
typeof(UserGesturesProfile),
typeof(ShortcutsManagementOptionsPanel),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Specifies text box border thickness
/// </summary>
public UserGesturesProfile SelectedProfile
{
get {
return (UserGesturesProfile)GetValue(SelectedProfileProperty);
}
set {
SetValue(SelectedProfileProperty, value);
}
}
/// <summary>
/// Stores shortcut entry to input binding convertion map
/// </summary>
private readonly MapTable<Shortcut, InputBindingInfo> shortcutsMap = new MapTable<Shortcut, InputBindingInfo>();
private List<IShortcutTreeEntry> rootEntries;
private readonly List<UserGesturesProfile> profiles = new List<UserGesturesProfile>();
private readonly List<UserGesturesProfile> removedProfiles = new List<UserGesturesProfile>();
public ShortcutsManagementOptionsPanel()
{
ResourceService.RegisterStrings("ICSharpCode.ShortcutsManagement.Resources.StringResources", GetType().Assembly);
InitializeComponent();
}
public void LoadOptions()
{
shortcutsManagementOptionsPanel.searchTextBox.Focus();
if (Directory.Exists(UserDefinedGesturesManager.UserGestureProfilesDirectory)) {
var dirInfo = new DirectoryInfo(UserDefinedGesturesManager.UserGestureProfilesDirectory);
var xmlFiles = dirInfo.GetFiles("*.xml");
foreach (var fileInfo in xmlFiles) {
var profile = new UserGesturesProfile();
profile.Path = Path.Combine(UserDefinedGesturesManager.UserGestureProfilesDirectory, fileInfo.Name);
profile.Load();
profiles.Add(profile);
if (UserDefinedGesturesManager.CurrentProfile != null && profile.Name == UserDefinedGesturesManager.CurrentProfile.Name) {
SelectedProfile = profile;
}
}
}
BindProfiles();
BindShortcuts();
}
private void BindProfiles()
{
var profilesTextBoxItemsSource = new ArrayList(profiles);
profilesTextBoxItemsSource.Add(new SeparatorData());
var deleteItem = new UserGestureProfileAction();
deleteItem.Name = "Delete";
deleteItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileDeleteAction}");
profilesTextBoxItemsSource.Add(deleteItem);
var loadItem = new UserGestureProfileAction();
loadItem.Name = "Load";
loadItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileLoadAction}");
profilesTextBoxItemsSource.Add(loadItem);
var createItem = new UserGestureProfileAction();
createItem.Name = "Create";
createItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileCreateAction}");
profilesTextBoxItemsSource.Add(createItem);
var renameItem = new UserGestureProfileAction();
renameItem.Name = "Rename";
renameItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileRenameAction}");
profilesTextBoxItemsSource.Add(renameItem);
var resetItem = new UserGestureProfileAction();
resetItem.Name = "Reset";
resetItem.Text = StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileResetAction}");
profilesTextBoxItemsSource.Add(resetItem);
profilesTextBox.DataContext = profilesTextBoxItemsSource;
if (SelectedProfile != null) {
if(profilesTextBox.SelectedItem != SelectedProfile) {
profilesTextBox.Text = SelectedProfile.Text;
profilesTextBox.SelectedItem = SelectedProfile;
}
} else {
profilesTextBox.SelectedIndex = -1;
profilesTextBox.Text = "";
}
}
private void BindShortcuts()
{
shortcutsMap.Clear();
// Root shortcut tree entries
rootEntries = new List<IShortcutTreeEntry>();
// Stores SD input binding category to category section convertion map
var categoriesMap = new MapTable<InputBindingCategory, ShortcutCategory>();
var unspecifiedCategory = new ShortcutCategory(StringParser.Parse("${res:ShortcutsManagement.UnspecifiedCategoryName}"));
rootEntries.Add(unspecifiedCategory);
SDCommandManager.InputBindingCategories.Sort((c1, c2) => c1.Path.CompareTo(c2.Path));
var parentCategories = new LinkedList<ShortcutCategory>();
var previousDepth = 0;
foreach(var bindingCategory in SDCommandManager.InputBindingCategories) {
var categoryName = Regex.Replace(StringParser.Parse(bindingCategory.Text), @"&([^\s])", @"$1");
var shortcutCategory = new ShortcutCategory(categoryName);
categoriesMap.Add(bindingCategory, shortcutCategory);
AddCategory:
var currentDepth = bindingCategory.Path.Split('/').Length - 1;
if (currentDepth > previousDepth)
{
previousDepth++;
if (previousDepth > 1) {
parentCategories.Last.Value.SubCategories.Add(shortcutCategory);
} else {
rootEntries.Add(shortcutCategory);
}
parentCategories.AddLast(shortcutCategory);
} else {
while (previousDepth >= currentDepth) {
parentCategories.RemoveLast();
previousDepth--;
}
goto AddCategory;
}
}
var inputBindingInfos = SDCommandManager.FindInputBindingInfos(BindingInfoMatchType.SuperSet, new BindingInfoTemplate());
foreach (var inputBindingInfo in inputBindingInfos) {
// Get shortcut entry text. Normaly shortcut entry text is equal to routed command text
// but this value can be overriden through InputBindingInfo.RoutedCommandText value
var shortcutText = inputBindingInfo.RoutedCommand.Text;
if (!string.IsNullOrEmpty(inputBindingInfo.RoutedCommandText)) {
shortcutText = inputBindingInfo.RoutedCommandText;
}
shortcutText = StringParser.Parse(shortcutText);
// Some commands have "&" sign to mark alternative key used to call this command from menu
// Strip this sign from shortcut entry text
shortcutText = Regex.Replace(shortcutText, @"&([^\s])", @"$1");
var shortcutGestures = inputBindingInfo.DefaultGestures.GetInputGestureCollection();
if(SelectedProfile != null && SelectedProfile[inputBindingInfo.Identifier] != null) {
shortcutGestures = new InputGestureCollection(SelectedProfile[inputBindingInfo.Identifier]);
}
var shortcut = new Shortcut(shortcutText, shortcutGestures);
shortcutsMap.Add(shortcut, inputBindingInfo);
// Assign shortcut to all categories it is registered in
var isAnyCategoriesResolved = true;
if (inputBindingInfo.Categories != null && inputBindingInfo.Categories.Count > 0) {
foreach (var bindingCategory in inputBindingInfo.Categories) {
ShortcutCategory shortcutCategory;
categoriesMap.TryMapForward(bindingCategory, out shortcutCategory);
if(shortcutCategory != null) {
shortcutCategory.Shortcuts.Add(shortcut);
isAnyCategoriesResolved = true;
}
}
}
if(!isAnyCategoriesResolved) {
rootEntries.Add(shortcut);
}
}
rootEntries.Sort();
foreach (var entry in rootEntries) {
entry.SortSubEntries();
}
new ShortcutsFinder(rootEntries).Filter("");
shortcutsManagementOptionsPanel.DataContext = rootEntries;
}
public bool SaveOptions()
{
foreach (var profile in removedProfiles) {
if(File.Exists(profile.Path)) {
File.Delete(profile.Path);
}
}
UserDefinedGesturesManager.CurrentProfile = SelectedProfile;
profiles.ForEach(p => p.Save());
return true;
}
public object Owner
{
get; set;
}
public object Control
{
get { return this; }
}
private void profilesTextBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems == null || e.AddedItems.Count == 0) {
return;
}
var userGestureProfileAction = e.AddedItems[0] as UserGestureProfileAction;
if (userGestureProfileAction != null) {
if (userGestureProfileAction.Name == "Delete" && SelectedProfile != null) {
var result = MessageBox.Show(
StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ConfirmDeleteProfileMessage}"),
StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.ConfirmDeleteProfileMessageWindowName}"),
MessageBoxButton.YesNo);
if(MessageBoxResult.Yes == result) {
profiles.Remove(SelectedProfile);
removedProfiles.Add(SelectedProfile);
SelectedProfile = null;
}
}
if (userGestureProfileAction.Name == "Rename" && SelectedProfile != null) {
var promptWindow = new CreateNewProfilePrompt();
promptWindow.BaseProfilesVisibility = Visibility.Collapsed;
promptWindow.Text = SelectedProfile.Text;
promptWindow.ShowDialog();
SelectedProfile.Text = promptWindow.Text;
}
if(userGestureProfileAction.Name == "Load") {
var openDialog = new OpenFileDialog();
openDialog.Filter = "Xml files (*.xml)|*.xml";
openDialog.FilterIndex = 1;
openDialog.RestoreDirectory = false;
if(true == openDialog.ShowDialog()) {
var loadedProfile = new UserGesturesProfile();
loadedProfile.Path = openDialog.FileName;
loadedProfile.Load();
loadedProfile.Path = Path.Combine(
UserDefinedGesturesManager.UserGestureProfilesDirectory,
Guid.NewGuid().ToString());
profiles.Add(loadedProfile);
SelectedProfile = loadedProfile;
}
}
if (userGestureProfileAction.Name == "Reset") {
SelectedProfile = null;
}
if(userGestureProfileAction.Name == "Create") {
var promptWindow = new CreateNewProfilePrompt();
promptWindow.AvailableBaseProfiles = profiles;
promptWindow.ShowDialog();
if (promptWindow.DialogResult == true) {
UserGesturesProfile newProfile;
if (promptWindow.BaseProfile != null) {
newProfile = (UserGesturesProfile) promptWindow.BaseProfile.Clone();
newProfile.Name = Guid.NewGuid().ToString();
newProfile.Text = promptWindow.Text;
newProfile.ReadOnly = false;
} else {
newProfile = new UserGesturesProfile(Guid.NewGuid().ToString(), promptWindow.Text, false);
}
newProfile.Path = Path.Combine(UserDefinedGesturesManager.UserGestureProfilesDirectory,
newProfile.Name + ".xml");
profiles.Add(newProfile);
SelectedProfile = newProfile;
}
}
}
var userGestureProfile = e.AddedItems[0] as UserGesturesProfile;
if (userGestureProfile != null && userGestureProfile != SelectedProfile) {
SelectedProfile = userGestureProfile;
}
BindProfiles();
BindShortcuts();
}
private void shortcutsManagementOptionsPanel_ShortcutModified(object sender, EventArgs e)
{
var selectedShortcut = (Shortcut)shortcutsManagementOptionsPanel.shortcutsTreeView.SelectedItem;
if(SelectedProfile == null)
{
MessageBox.Show(StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.NoProfileSelectedMessage}"));
return;
}
if(SelectedProfile.ReadOnly)
{
MessageBox.Show(StringParser.Parse("${res:ShortcutsManagement.ShortcutsManagementOptionsPanel.SelectedProfileIsReadOnlyMessage}"));
return;
}
Shortcut shortcutCopy = null;
ICollection<IShortcutTreeEntry> rootEntriesCopy = new ObservableCollection<IShortcutTreeEntry>();
// Make a deep copy of all add-ins, categories and shortcuts
foreach (var entry in rootEntries) {
var clonedRootEntry = (IShortcutTreeEntry)entry.Clone();
rootEntriesCopy.Add(clonedRootEntry);
// Find copy of modified shortcut in copied add-ins collection
if (shortcutCopy == null) {
shortcutCopy = clonedRootEntry.FindShortcut(selectedShortcut.Id);
}
}
var shortcutManagementWindow = new ShortcutManagementWindow(shortcutCopy, rootEntriesCopy);
shortcutManagementWindow.ShowDialog();
if (SelectedProfile != null && shortcutManagementWindow.DialogResult.HasValue && shortcutManagementWindow.DialogResult.Value) {
// Move modifications from shortcut copies to original shortcut objects
foreach (var relatedShortcutCopy in shortcutManagementWindow.ModifiedShortcuts) {
foreach (var rootEntry in rootEntries) {
var originalRelatedShortcut = rootEntry.FindShortcut(relatedShortcutCopy.Id);
if (originalRelatedShortcut != null) {
originalRelatedShortcut.Gestures.Clear();
originalRelatedShortcut.Gestures.AddRange(relatedShortcutCopy.Gestures);
var id = shortcutsMap.MapForward(originalRelatedShortcut).Identifier;
SelectedProfile[id] = new InputGestureCollection(relatedShortcutCopy.Gestures);
}
}
}
}
}
}
}

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

@ -77,6 +77,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -77,6 +77,7 @@ namespace ICSharpCode.AvalonEdit.Editing
{
ClassWideBindingGroup = new BindingGroup();
classWideInputBindingCategory = new InputBindingCategory("/CaretNavigation", "Caret navigation commands");
SDCommandManager.RegisterInputBindingCategory(classWideInputBindingCategory);
AddBinding("EditingCommands.MoveLeftByCharacter", "Left", null, OnMoveCaret(CaretMovementType.CharLeft));
AddBinding("EditingCommands.SelectLeftByCharacter", "Shift+Left", null, OnMoveCaretExtendSelection(CaretMovementType.CharLeft));

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

@ -86,6 +86,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -86,6 +86,7 @@ namespace ICSharpCode.AvalonEdit.Editing
{
ClassWideBindingGroup = new BindingGroup();
classWideInputBindingCategory = new InputBindingCategory("/EditingCommands", "Editing commands");
SDCommandManager.RegisterInputBindingCategory(classWideInputBindingCategory);
AddCommandBinding("ApplicationCommands.Delete", CanDelete, OnDelete(ApplicationCommands.NotACommand));
AddBinding("EditingCommands.Delete", "Delete", null, OnDelete(EditingCommands.SelectRightByCharacter));

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

@ -23,7 +23,44 @@ namespace ICSharpCode.Core.Presentation @@ -23,7 +23,44 @@ namespace ICSharpCode.Core.Presentation
ActiveCommandBindings = new CommandBindingCollection();
Groups = new BindingGroupCollection();
Groups.CollectionChanged += Groups_CollectionChanged;
}
private BindingGroupCollection _groups;
public BindingGroupCollection Groups
{
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,
newItemsList,
oldItemsList,
0);
Groups_CollectionChanged(this, args);
}
}
}
private void Groups_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) {
@ -40,11 +77,6 @@ namespace ICSharpCode.Core.Presentation @@ -40,11 +77,6 @@ namespace ICSharpCode.Core.Presentation
}
}
public BindingGroupCollection Groups
{
get; private set;
}
private string routedCommandName;
/// <summary>

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

@ -132,7 +132,7 @@ namespace ICSharpCode.Core.Presentation @@ -132,7 +132,7 @@ namespace ICSharpCode.Core.Presentation
/// <param name="type">Type</param>
public static void RegisterNamedUIType(string typeName, Type type)
{
if(type.IsSubclassOf(typeof(UIElement))) {
if(!(type == typeof(UIElement) || type.IsSubclassOf(typeof(UIElement)))) {
throw new ArgumentException("Type is not subclass of UIElement");
}
@ -326,6 +326,20 @@ namespace ICSharpCode.Core.Presentation @@ -326,6 +326,20 @@ namespace ICSharpCode.Core.Presentation
} else {
inputBidnings.Add(inputBindingInfo);
inputBindingInfo.IsRegistered = true;
RegisterInputBindingsUpdateHandler(similarBindingTemplate, inputBindingInfo.DefaultInputBindingHandler);
}
if(similarBindingTemplate.OwnerInstanceName != null) {
similarBindingTemplate.OwnerInstances = GetNamedUIElementCollection(similarBindingTemplate.OwnerInstanceName);
}
if(similarBindingTemplate.OwnerTypeName != null) {
similarBindingTemplate.OwnerTypes = GetNamedUITypeCollection(similarBindingTemplate.OwnerTypeName);
}
if(similarBindingTemplate.RoutedCommandName != null) {
similarBindingTemplate.RoutedCommand = GetRoutedUICommand(similarBindingTemplate.RoutedCommandName);
}
InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet, similarBindingTemplate);
@ -427,8 +441,21 @@ namespace ICSharpCode.Core.Presentation @@ -427,8 +441,21 @@ namespace ICSharpCode.Core.Presentation
commandBindings.Add(commandBindingInfo);
commandBindingInfo.IsRegistered = true;
RegisterInputBindingsUpdateHandler(registeredBindingTemplate, commandBindingInfo.DefaultCommandBindingHandler);
InvokeInputBindingUpdateHandlers(BindingInfoMatchType.SubSet, registeredBindingTemplate);
RegisterCommandBindingsUpdateHandler(registeredBindingTemplate, commandBindingInfo.DefaultCommandBindingHandler);
if(registeredBindingTemplate.OwnerInstanceName != null) {
registeredBindingTemplate.OwnerInstances = GetNamedUIElementCollection(registeredBindingTemplate.OwnerInstanceName);
}
if(registeredBindingTemplate.OwnerTypeName != null) {
registeredBindingTemplate.OwnerTypes = GetNamedUITypeCollection(registeredBindingTemplate.OwnerTypeName);
}
if(registeredBindingTemplate.RoutedCommandName != null) {
registeredBindingTemplate.RoutedCommand = GetRoutedUICommand(registeredBindingTemplate.RoutedCommandName);
}
InvokeCommandBindingUpdateHandlers(BindingInfoMatchType.SubSet, registeredBindingTemplate);
}
/// <summary>
@ -468,6 +495,10 @@ namespace ICSharpCode.Core.Presentation @@ -468,6 +495,10 @@ namespace ICSharpCode.Core.Presentation
public static void UnegisterCommandBindingsUpdateHandler(BindingsUpdatedHandler handler, BindingInfoMatchType matchType, params IBindingInfo[] templates)
{
if(handler == null) {
throw new ArgumentNullException("handler");
}
UnregisterBindingsUpdateHandler(commandBindingUpdatedHandlers, handler, matchType, templates);
}
@ -484,6 +515,10 @@ namespace ICSharpCode.Core.Presentation @@ -484,6 +515,10 @@ namespace ICSharpCode.Core.Presentation
public static void UnregisterInputBindingsUpdateHandler(BindingsUpdatedHandler handler, BindingInfoMatchType matchType, params IBindingInfo[] templates)
{
if(handler == null) {
throw new ArgumentNullException("handler");
}
UnregisterBindingsUpdateHandler(inputBindingUpdatedHandlers, handler, matchType, templates);
}
@ -494,6 +529,8 @@ namespace ICSharpCode.Core.Presentation @@ -494,6 +529,8 @@ namespace ICSharpCode.Core.Presentation
if(template.IsTemplateFor(updateHandlerPair.Key, matchType)) {
if(handler != null) {
updateHandlerPair.Value.Remove(handler);
} else {
updateHandlerDictionary.Remove(updateHandlerPair.Key);
}
}
}
@ -673,6 +710,31 @@ namespace ICSharpCode.Core.Presentation @@ -673,6 +710,31 @@ namespace ICSharpCode.Core.Presentation
InputBindingCategories.Add(category);
}
/// <summary>
/// Use for unit tests only
/// </summary>
public static void Reset()
{
DefaultContextName = null;
commandBindings.Clear();
inputBidnings.Clear();
routedCommands.Clear();
commands.Clear();
inputBindingUpdatedHandlers.Clear();
commandBindingUpdatedHandlers.Clear();
namedUIInstances.Clear();
namedUITypes.Clear();
reverseNamedUIInstances.Clear();
reverseNamedUITypes.Clear();
InputBindingCategories.Clear();
}
}
public static class TypeExtensions

25
src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingCategory.cs

@ -16,10 +16,6 @@ namespace ICSharpCode.Core.Presentation @@ -16,10 +16,6 @@ namespace ICSharpCode.Core.Presentation
/// <param name="parentCategory">Parent category (null - root level category)</param>
public InputBindingCategory(string path, string text)
{
if(path == "/ContextMenus/Tabs")
{
}
Path = path;
Text = text;
}
@ -32,27 +28,6 @@ namespace ICSharpCode.Core.Presentation @@ -32,27 +28,6 @@ namespace ICSharpCode.Core.Presentation
get; set;
}
/// <summary>
/// Reference to parent category
/// </summary>
public List<InputBindingCategory> Children
{
get
{
return CommandManager.GetInputBindingCategoryChildren(Path).ToList();
}
}
/// <summary>
/// Category path is used to specify hierarchical category position
///
/// Format:
/// /category/subcategory
/// </summary>
public string Path {
get; set;
}
public override string ToString() {
return Path;
}

14
src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingCategoryCollection.cs

@ -8,6 +8,8 @@ @@ -8,6 +8,8 @@
*/
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Collections.ObjectModel;
namespace ICSharpCode.Core.Presentation
{
@ -16,7 +18,7 @@ namespace ICSharpCode.Core.Presentation @@ -16,7 +18,7 @@ namespace ICSharpCode.Core.Presentation
/// </summary>
public class InputBindingCategoryCollection : ICollection<InputBindingCategory>
{
private List<InputBindingCategory> categories = new List<InputBindingCategory>();
private ObservableCollection<InputBindingCategory> categories = new ObservableCollection<InputBindingCategory>();
public InputBindingCategoryCollection()
{
@ -34,6 +36,16 @@ namespace ICSharpCode.Core.Presentation @@ -34,6 +36,16 @@ namespace ICSharpCode.Core.Presentation
}
}
public event NotifyCollectionChangedEventHandler CollectionChanged
{
add {
categories.CollectionChanged += value;
}
remove {
categories.CollectionChanged -= value;
}
}
public void Add(InputBindingCategory category)
{
if(category == null) {

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

@ -56,8 +56,8 @@ namespace ICSharpCode.Core.Presentation @@ -56,8 +56,8 @@ namespace ICSharpCode.Core.Presentation
var args = new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Replace,
oldItemsList,
newItemsList,
oldItemsList,
0);
Groups_CollectionChanged(this, args);
@ -247,8 +247,8 @@ namespace ICSharpCode.Core.Presentation @@ -247,8 +247,8 @@ namespace ICSharpCode.Core.Presentation
/// <summary>
/// List of categories associated with input binding
/// </summary>
public InputBindingCategoryCollection Categories {
public InputBindingCategoryCollection Categories
{
get {
return _categories;
}
@ -257,7 +257,29 @@ namespace ICSharpCode.Core.Presentation @@ -257,7 +257,29 @@ namespace ICSharpCode.Core.Presentation
throw new ArgumentException("Categories collection can not be null");
}
var oldValue = _categories;
_categories = value;
_categories.CollectionChanged += Categories_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,
newItemsList,
oldItemsList,
0);
Categories_CollectionChanged(this, args);
}
}
}
@ -288,6 +310,17 @@ namespace ICSharpCode.Core.Presentation @@ -288,6 +310,17 @@ namespace ICSharpCode.Core.Presentation
}
}
private void Categories_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if(e.NewItems != null) {
foreach(InputBindingCategory addedCategory in e.NewItems) {
if(!SDCommandManager.InputBindingCategories.Contains(addedCategory)) {
throw new ArgumentException("InputBindingCategory is not registered in CommandManager");
}
}
}
}
private void Groups_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if(e.OldItems != null) {

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

@ -4,7 +4,9 @@ using System; @@ -4,7 +4,9 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation.Tests
{
@ -15,6 +17,12 @@ namespace ICSharpCode.Core.Presentation.Tests @@ -15,6 +17,12 @@ namespace ICSharpCode.Core.Presentation.Tests
BindingGroup bindingGroup;
BindingGroup bindingGroup2;
[TestFixtureSetUp]
public void TestFixtureSetUp()
{
PropertyService.InitializeServiceForUnitTests();
}
[SetUp]
public void SetuUp()
{
@ -22,53 +30,109 @@ namespace ICSharpCode.Core.Presentation.Tests @@ -22,53 +30,109 @@ namespace ICSharpCode.Core.Presentation.Tests
bindingGroup = new BindingGroup();
bindingGroup2 = new BindingGroup();
CommandManager.RegisterNamedUIType("Global", typeof(UIElement));
CommandManager.RegisterNamedUIElement("NamedInstanceScope", namedInstanceScope);
SDCommandManager.RegisterNamedUIType("Global", typeof(UIElement));
SDCommandManager.RegisterNamedUIElement("NamedInstanceScope", namedInstanceScope);
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerTypeName = "Global",
RoutedCommandName = "TestCommands.DoSomething" });
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerTypeName = "Global",
RoutedCommandName = "TestCommands.DoSomething" });
// Register binding with same values
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerTypeName = "Global",
RoutedCommandName = "TestCommands.DoSomething" });
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerTypeName = "Global",
RoutedCommandName = "TestCommands.DoSomething" });
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerTypeName = "Global",
RoutedCommandName = "TestCommands.DoSomethingOther" });
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerTypeName = "Global",
RoutedCommandName = "TestCommands.DoSomethingOther" });
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerTypeName = "Local",
RoutedCommandName = "TestCommands.DoSomething" });
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerTypeName = "Local",
RoutedCommandName = "TestCommands.DoSomething" });
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerTypeName = "UnrelatedScope",
RoutedCommandName = "TestCommands.DoSomethingCompletelyOther" });
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerTypeName = "UnrelatedScope",
RoutedCommandName = "TestCommands.DoSomethingCompletelyOther" });
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerTypeName = "NamedScope",
RoutedCommandName = "TestCommands.DoSomethingCompletelyElse" });
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerTypeName = "NamedScope",
RoutedCommandName = "TestCommands.DoSomethingCompletelyElse" });
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerInstanceName = "NamedInstanceScope",
RoutedCommandName = "TestCommands.DoSomething" });
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerInstanceName = "NamedInstanceScope",
RoutedCommandName = "TestCommands.DoSomething" });
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerInstanceName = "OtherNamedInstanceScope",
RoutedCommandName = "TestCommands.DoSomething" });
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerInstanceName = "OtherNamedInstanceScope",
RoutedCommandName = "TestCommands.DoSomething" });
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerInstanceName = "OtherNamedInstanceScope",
RoutedCommandName = "TestCommands.DoSomethingElse" ,
Groups = new BindingGroupCollection { bindingGroup2 }});
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerInstanceName = "OtherNamedInstanceScope",
RoutedCommandName = "TestCommands.DoSomethingElse" ,
Groups = new BindingGroupCollection { bindingGroup2 }});
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerTypeName = "UnrelatedInstanceScope",
RoutedCommandName = "TestCommands.DoSomethingCompletelyOther" ,
Groups = new BindingGroupCollection { bindingGroup }});
CommandManager.RegisterInputBinding(new InputBindingInfo {
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerTypeName = "UnrelatedInstanceScope",
RoutedCommandName = "TestCommands.DoSomethingCompletelyOther" ,
Groups = new BindingGroupCollection { bindingGroup }});
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
OwnerTypeName = "UnrelatedInstanceScope2",
RoutedCommandName = "TestCommands.DoSomethingCompletelyOther",
Groups = new BindingGroupCollection { bindingGroup }});
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
OwnerTypeName = "UnrelatedInstanceScope2",
RoutedCommandName = "TestCommands.DoSomethingCompletelyOther",
Groups = new BindingGroupCollection { bindingGroup }});
@ -81,53 +145,326 @@ namespace ICSharpCode.Core.Presentation.Tests @@ -81,53 +145,326 @@ namespace ICSharpCode.Core.Presentation.Tests
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);
SDCommandManager.Reset();
}
[Test]
public void FindCommandBindingInfosTests()
{
var doSomethingBindingInfos = SDCommandManager.FindCommandBindingInfos(
BindingInfoMatchType.SuperSet,
new BindingInfoTemplate { RoutedCommandName = "TestCommands.DoSomething" });
Assert.AreEqual(5, doSomethingBindingInfos.Count());
var namedInstanceBindingInfos = SDCommandManager.FindCommandBindingInfos(
BindingInfoMatchType.SuperSet,
new BindingInfoTemplate { OwnerInstances = new[] { namedInstanceScope }, RoutedCommandName = "TestCommands.DoSomething" });
Assert.AreEqual(1, namedInstanceBindingInfos.Count());
var groupBindingInfos = SDCommandManager.FindCommandBindingInfos(
BindingInfoMatchType.SuperSet,
new BindingInfoTemplate { Groups = new BindingGroupCollection { bindingGroup }});
Assert.AreEqual(2, groupBindingInfos.Count());
}
[Test]
public void FindInputBindingInfosTests()
{
var doSomethingBindingInfos = CommandManager.FindInputBindingInfos(
var doSomethingBindingInfos = SDCommandManager.FindInputBindingInfos(
BindingInfoMatchType.SuperSet,
new BindingInfoTemplate { RoutedCommandName = "TestCommands.DoSomething" });
Assert.AreEqual(4, doSomethingBindingInfos.Count());
var namedInstanceBindingInfos = CommandManager.FindInputBindingInfos(
var namedInstanceBindingInfos = SDCommandManager.FindInputBindingInfos(
BindingInfoMatchType.SuperSet,
new BindingInfoTemplate { OwnerInstances = new[] { namedInstanceScope }, RoutedCommandName = "TestCommands.DoSomething" });
Assert.AreEqual(1, namedInstanceBindingInfos.Count());
var groupBindingInfos = CommandManager.FindInputBindingInfos(
var groupBindingInfos = SDCommandManager.FindInputBindingInfos(
BindingInfoMatchType.SuperSet,
new BindingInfoTemplate { Groups = new BindingGroupCollection { bindingGroup }});
Assert.AreEqual(2, groupBindingInfos.Count());
}
[Test]
public void InvokeBindingsOnRoutedCommandRegistration()
public void InvokeInputBindingsOnRoutedCommandRegistration()
{
var testResults = new HashSet<string>();
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest" }, () => testResults.Add("test1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerTypeName = "TestOwner" }, () => testResults.Add("test2"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommand = ApplicationCommands.Copy }, () => testResults.Add("ApplicationCommands.Copy1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "ApplicationCommands.Copy" }, () => testResults.Add("ApplicationCommands.Copy2"));
SDCommandManager.RegisterRoutedUICommand("InvokeTest", "text");
Assert.IsTrue(testResults.Contains("test1"));
Assert.IsTrue(testResults.Contains("test2"));
Assert.IsFalse(testResults.Contains("ApplicationCommands.Copy1"));
SDCommandManager.RegisterRoutedUICommand(ApplicationCommands.Copy);
Assert.IsTrue(testResults.Contains("ApplicationCommands.Copy1"));
Assert.IsTrue(testResults.Contains("ApplicationCommands.Copy2"));
}
[Test]
public void InvokeCommandBindingsOnRoutedCommandRegistration()
{
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"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest" }, () => testResults.Add("test1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerTypeName = "TestOwner" }, () => testResults.Add("test2"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommand = ApplicationCommands.Copy }, () => testResults.Add("ApplicationCommands.Copy1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "ApplicationCommands.Copy" }, () => testResults.Add("ApplicationCommands.Copy2"));
CommandManager.RegisterRoutedUICommand("InvokeTest", "text");
SDCommandManager.RegisterRoutedUICommand("InvokeTest", "text");
Assert.IsTrue(testResults.Contains("test1"));
Assert.IsTrue(testResults.Contains("test2"));
Assert.IsFalse(testResults.Contains("ApplicationCommands.Copy1"));
CommandManager.RegisterRoutedUICommand(ApplicationCommands.Copy);
SDCommandManager.RegisterRoutedUICommand(ApplicationCommands.Copy);
Assert.IsTrue(testResults.Contains("ApplicationCommands.Copy1"));
Assert.IsTrue(testResults.Contains("ApplicationCommands.Copy2"));
}
[Test]
public void InvokeInputBindingsOnOwnerTypeRegistration()
{
var testResults = new HashSet<string>();
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerTypeName = "TestOwnerType" }, () => testResults.Add("TestOwnerType1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "RoutedCommand", OwnerTypeName = "TestOwnerType" }, () => testResults.Add("TestOwnerType2"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerTypes = new[] { typeof(UIElement) }}, () => testResults.Add("UIElement1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerTypeName = "UIElement" }, () => testResults.Add("UIElement2"));
SDCommandManager.RegisterNamedUIType("TestOwnerType", typeof(UserControl));
Assert.IsTrue(testResults.Contains("TestOwnerType1"));
Assert.IsTrue(testResults.Contains("TestOwnerType2"));
Assert.IsFalse(testResults.Contains("UIElement1"));
Assert.IsFalse(testResults.Contains("UIElement2"));
SDCommandManager.RegisterNamedUIType("UIElement", typeof(UIElement));
Assert.IsTrue(testResults.Contains("UIElement1"));
Assert.IsTrue(testResults.Contains("UIElement2"));
}
[Test]
public void InvokeCommandBindingsOnOwnerTypeRegistration()
{
var testResults = new HashSet<string>();
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerTypeName = "TestOwnerType" }, () => testResults.Add("TestOwnerType1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "RoutedCommand", OwnerTypeName = "TestOwnerType" }, () => testResults.Add("TestOwnerType2"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerTypes = new[] { typeof(UIElement) }}, () => testResults.Add("UIElement1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerTypeName = "UIElement" }, () => testResults.Add("UIElement2"));
SDCommandManager.RegisterNamedUIType("TestOwnerType", typeof(UserControl));
Assert.IsTrue(testResults.Contains("TestOwnerType1"));
Assert.IsTrue(testResults.Contains("TestOwnerType2"));
Assert.IsFalse(testResults.Contains("UIElement1"));
Assert.IsFalse(testResults.Contains("UIElement2"));
SDCommandManager.RegisterNamedUIType("UIElement", typeof(UIElement));
Assert.IsTrue(testResults.Contains("UIElement1"));
Assert.IsTrue(testResults.Contains("UIElement2"));
}
[Test]
public void InvokeInputBindingsOnOwnerInstanceRegistration()
{
var testResults = new HashSet<string>();
var uiElement = new UIElement();
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstanceName = "TestOwnerInstance" }, () => testResults.Add("TestOwnerInstance1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "RoutedCommand", OwnerInstanceName = "TestOwnerInstance" }, () => testResults.Add("TestOwnerInstance2"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstances = new[] { uiElement }}, () => testResults.Add("UIElement1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstances = new[] { new UIElement() }}, () => testResults.Add("UIElement2"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstanceName = "UIElement" }, () => testResults.Add("UIElement3"));
SDCommandManager.RegisterNamedUIElement("TestOwnerInstance", new UIElement());
Assert.IsTrue(testResults.Contains("TestOwnerInstance1"));
Assert.IsTrue(testResults.Contains("TestOwnerInstance2"));
Assert.IsFalse(testResults.Contains("UIElement1"));
Assert.IsFalse(testResults.Contains("UIElement2"));
Assert.IsFalse(testResults.Contains("UIElement3"));
SDCommandManager.RegisterNamedUIElement("UIElement", uiElement);
Assert.IsTrue(testResults.Contains("UIElement1"));
Assert.IsFalse(testResults.Contains("UIElement2"));
Assert.IsTrue(testResults.Contains("UIElement3"));
}
[Test]
public void InvokeCommandBindingsOnOwnerInstanceRegistration()
{
var testResults = new HashSet<string>();
var uiElement = new UIElement();
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstanceName = "TestOwnerInstance" }, () => testResults.Add("TestOwnerInstance1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "RoutedCommand", OwnerInstanceName = "TestOwnerInstance" }, () => testResults.Add("TestOwnerInstance2"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstances = new[] { uiElement }}, () => testResults.Add("UIElement1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstances = new[] { new UIElement() }}, () => testResults.Add("UIElement2"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstanceName = "UIElement" }, () => testResults.Add("UIElement3"));
SDCommandManager.RegisterNamedUIElement("TestOwnerInstance", new UIElement());
Assert.IsTrue(testResults.Contains("TestOwnerInstance1"));
Assert.IsTrue(testResults.Contains("TestOwnerInstance2"));
Assert.IsFalse(testResults.Contains("UIElement1"));
Assert.IsFalse(testResults.Contains("UIElement2"));
Assert.IsFalse(testResults.Contains("UIElement3"));
SDCommandManager.RegisterNamedUIElement("UIElement", uiElement);
Assert.IsTrue(testResults.Contains("UIElement1"));
Assert.IsFalse(testResults.Contains("UIElement2"));
Assert.IsTrue(testResults.Contains("UIElement3"));
}
[Test]
public void InvokeBindingsUpdateHandlersOnInputBindingInfoRegistration()
{
var testResults = new HashSet<string>();
// Update handles is interested about changes in routed command
SDCommandManager.RegisterRoutedUICommand("RoutedCommandName", "RoutedCommandText");
var routedCommand = SDCommandManager.GetRoutedUICommand("RoutedCommandName");
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeSomethingUnrelatedTest" }, () => testResults.Add("commandTest0"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "RoutedCommandName" }, () => testResults.Add("commandTest1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "RoutedCommandName", OwnerTypeName = "TestOwner" }, () => testResults.Add("commandTest2"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommand = routedCommand}, () => testResults.Add("commandTest3"));
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
RoutedCommandName = "RoutedCommandName",
OwnerTypeName = "SomeOwner"});
Assert.IsFalse(testResults.Contains("commandTest0"));
Assert.IsTrue(testResults.Contains("commandTest1"));
Assert.IsTrue(testResults.Contains("commandTest2"));
Assert.IsTrue(testResults.Contains("commandTest3"));
// Update handles is interested about changes in owner type
var testType = typeof(UserControl);
SDCommandManager.RegisterNamedUIType("TestOwner", testType);
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeSomethingUnrelatedTest" }, () => testResults.Add("typeTest0"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest" }, () => testResults.Add("typeTest1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerTypeName = "TestOwner" }, () => testResults.Add("typeTest2"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerTypes = new[] { testType }}, () => testResults.Add("typeTest3"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerTypes = new[] { testType }}, () => testResults.Add("typeTest4"));
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
RoutedCommandName = "InvokeTest",
OwnerTypeName = "TestOwner"});
Assert.IsFalse(testResults.Contains("typeTest0"));
Assert.IsTrue(testResults.Contains("typeTest1"));
Assert.IsTrue(testResults.Contains("typeTest2"));
Assert.IsTrue(testResults.Contains("typeTest3"));
Assert.IsTrue(testResults.Contains("typeTest4"));
// Update handles is interested about changes in owner instance
var testInstance = new UIElement();
SDCommandManager.RegisterNamedUIElement("TestOwnerInstance", testInstance);
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeSomethingUnrelatedTest" }, () => testResults.Add("instanceTest0"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest" }, () => testResults.Add("instanceTest1"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerInstanceName = "TestOwnerInstance" }, () => testResults.Add("instanceTest2"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerInstances = new[] { testInstance }}, () => testResults.Add("instanceTest3"));
SDCommandManager.RegisterInputBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstances = new[] { testInstance }}, () => testResults.Add("instanceTest4"));
SDCommandManager.RegisterInputBinding(new InputBindingInfo {
RoutedCommandName = "InvokeTest",
OwnerInstanceName = "TestOwnerInstance"});
Assert.IsFalse(testResults.Contains("instanceTest0"));
Assert.IsTrue(testResults.Contains("instanceTest1"));
Assert.IsTrue(testResults.Contains("instanceTest2"));
Assert.IsTrue(testResults.Contains("instanceTest3"));
Assert.IsTrue(testResults.Contains("instanceTest4"));
}
[Test]
public void InvokeBindingsUpdateHandlersOnCommandBindingInfoRegistration()
{
var testResults = new HashSet<string>();
// Update handles is interested about changes in routed command
SDCommandManager.RegisterRoutedUICommand("RoutedCommandName", "RoutedCommandText");
var routedCommand = SDCommandManager.GetRoutedUICommand("RoutedCommandName");
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeSomethingUnrelatedTest" }, () => testResults.Add("commandTest0"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "RoutedCommandName" }, () => testResults.Add("commandTest1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "RoutedCommandName", OwnerTypeName = "TestOwner" }, () => testResults.Add("commandTest2"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommand = routedCommand}, () => testResults.Add("commandTest3"));
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
RoutedCommandName = "RoutedCommandName",
OwnerTypeName = "SomeOwner"});
Assert.IsFalse(testResults.Contains("commandTest0"));
Assert.IsTrue(testResults.Contains("commandTest1"));
Assert.IsTrue(testResults.Contains("commandTest2"));
Assert.IsTrue(testResults.Contains("commandTest3"));
// Update handles is interested about changes in owner type
var testType = typeof(UserControl);
SDCommandManager.RegisterNamedUIType("TestOwner", testType);
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeSomethingUnrelatedTest" }, () => testResults.Add("typeTest0"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest" }, () => testResults.Add("typeTest1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerTypeName = "TestOwner" }, () => testResults.Add("typeTest2"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerTypes = new[] { testType }}, () => testResults.Add("typeTest3"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerTypes = new[] { testType }}, () => testResults.Add("typeTest4"));
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
RoutedCommandName = "InvokeTest",
OwnerTypeName = "TestOwner"});
Assert.IsFalse(testResults.Contains("typeTest0"));
Assert.IsTrue(testResults.Contains("typeTest1"));
Assert.IsTrue(testResults.Contains("typeTest2"));
Assert.IsTrue(testResults.Contains("typeTest3"));
Assert.IsTrue(testResults.Contains("typeTest4"));
// Update handles is interested about changes in owner instance
var testInstance = new UIElement();
SDCommandManager.RegisterNamedUIElement("TestOwnerInstance", testInstance);
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeSomethingUnrelatedTest" }, () => testResults.Add("instanceTest0"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest" }, () => testResults.Add("instanceTest1"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerInstanceName = "TestOwnerInstance" }, () => testResults.Add("instanceTest2"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { RoutedCommandName = "InvokeTest", OwnerInstances = new[] { testInstance }}, () => testResults.Add("instanceTest3"));
SDCommandManager.RegisterCommandBindingsUpdateHandler(new BindingInfoTemplate { OwnerInstances = new[] { testInstance }}, () => testResults.Add("instanceTest4"));
SDCommandManager.RegisterCommandBinding(new CommandBindingInfo {
RoutedCommandName = "InvokeTest",
OwnerInstanceName = "TestOwnerInstance"});
Assert.IsFalse(testResults.Contains("instanceTest0"));
Assert.IsTrue(testResults.Contains("instanceTest1"));
Assert.IsTrue(testResults.Contains("instanceTest2"));
Assert.IsTrue(testResults.Contains("instanceTest3"));
Assert.IsTrue(testResults.Contains("instanceTest4"));
}
}
}

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

@ -59,6 +59,7 @@ @@ -59,6 +59,7 @@
<ItemGroup>
<Compile Include="BindingInfoTemplateTests.cs" />
<Compile Include="CommandManagerTests.cs" />
<Compile Include="InputBindingCategoryTests.cs" />
<Compile Include="InputGestureTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UserDefinedGestureProfileTests.cs" />

80
src/Main/ICSharpCode.Core.Presentation/Test/InputBindingCategoryTests.cs

@ -0,0 +1,80 @@ @@ -0,0 +1,80 @@
using ICSharpCode.Core.Presentation;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation.Tests
{
[TestFixture]
public class InputBindingCategoryTests
{
[SetUp]
public void SetuUp()
{
}
[TearDown]
public void TearDown()
{
SDCommandManager.Reset();
}
[Test]
public void AddUnregisteredInputBindingCategoryTests()
{
var bindingInfo = new InputBindingInfo();
var category = new InputBindingCategory("/test", "Test");
bindingInfo.Categories = new InputBindingCategoryCollection();
Assert.Throws<ArgumentException>(delegate { bindingInfo.Categories.Add(category); });
SDCommandManager.RegisterInputBindingCategory(category);
bindingInfo.Categories = new InputBindingCategoryCollection();
Assert.DoesNotThrow(delegate { bindingInfo.Categories.Add(category); });
}
[Test]
public void AddManyUnregisteredInputBindingCategoriesTests()
{
var bindingInfo = new InputBindingInfo();
var category1 = new InputBindingCategory("/test", "Test");
var category2 = new InputBindingCategory("/test2", "Test");
var categoryCollection = new InputBindingCategoryCollection { category1, category2 };
bindingInfo.Categories = new InputBindingCategoryCollection();
Assert.Throws<ArgumentException>(delegate { bindingInfo.Categories.AddRange(categoryCollection); });
bindingInfo.Categories = new InputBindingCategoryCollection();
SDCommandManager.RegisterInputBindingCategory(category1);
Assert.Throws<ArgumentException>(delegate { bindingInfo.Categories.AddRange(categoryCollection); });
bindingInfo.Categories = new InputBindingCategoryCollection();
SDCommandManager.RegisterInputBindingCategory(category2);
Assert.DoesNotThrow(delegate { bindingInfo.Categories.AddRange(categoryCollection); });
}
[Test]
public void AssignInputBindingCategoryCollectionWithUnregistredCategoryTests()
{
var bindingInfo = new InputBindingInfo();
var category = new InputBindingCategory("/test", "Test");
var categoryCollection = new InputBindingCategoryCollection { category };
bindingInfo.Categories = new InputBindingCategoryCollection();
Assert.Throws<ArgumentException>(delegate { bindingInfo.Categories = categoryCollection; });
bindingInfo.Categories = new InputBindingCategoryCollection();
SDCommandManager.RegisterInputBindingCategory(category);
Assert.DoesNotThrow(delegate { bindingInfo.Categories = categoryCollection; });
}
}
}
Loading…
Cancel
Save