Browse Source

Completed XML code documentation and refactoring

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/shortcuts@4613 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts^2
Sergej Andrejev 16 years ago
parent
commit
71770cf80f
  1. 398
      SharpDevelop.Tests.sln
  2. 39
      src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs
  3. 4
      src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingGroup.cs
  4. 133
      src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingInfoBase.cs
  5. 211
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/BindingGroupCollection.cs
  6. 42
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/BindingInfoTemplateDictionary.cs
  7. 31
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/InputBindingCategoryCollection.cs
  8. 42
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/RelationshipMap.cs
  9. 9
      src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandManager.cs
  10. 42
      src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsService.cs
  11. 4
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Events/NotifyUserGestureProfileChangedEvent.cs
  12. 20
      src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs
  13. 72
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Profile/UserGestureProfile.cs
  14. 28
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Profile/UserGestureProfileManager.cs
  15. 3
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Utils/IObservableCollection.cs
  16. 18
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Utils/WeakReferenceEqualirtyComparer.cs
  17. 0
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Utils/WpfCommandWrapper.cs
  18. 4
      src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj
  19. 10
      src/Main/ICSharpCode.Core.Presentation/Test/CommandManagerTests.cs
  20. 2
      src/Main/ICSharpCode.Core.Presentation/Test/RelationshipMapTests.cs
  21. 8
      src/Main/ICSharpCode.Core.Presentation/Test/UserDefinedGestureProfileTests.cs

398
SharpDevelop.Tests.sln

@ -1,115 +1,113 @@
 
Microsoft Visual Studio Solution File, Format Version 11.00 Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 10 # Visual Studio 10
# SharpDevelop 4.0.0.4395 # SharpDevelop 4.0.0.4599
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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}" 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}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "src\Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "src\Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "src\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom.Tests", "src\Main\ICSharpCode.SharpDevelop.Dom\Tests\ICSharpCode.SharpDevelop.Dom.Tests\ICSharpCode.SharpDevelop.Dom.Tests.csproj", "{7DB80259-24D4-46C3-A024-53FF1987733D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "src\Tools\Tools.build", "{3DF4060F-5EE0-41CF-8096-F27355FD5511}" 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 EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NRefactory", "NRefactory", "{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "src\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "src\Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "src\Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NRefactory", "NRefactory", "{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit.Tests", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit.Tests\ICSharpCode.AvalonEdit.Tests.csproj", "{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src\Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
@ -118,132 +116,110 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "src\AddIns\Misc\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding.Tests", "src\AddIns\BackendBindings\VBNetBinding\Test\VBNetBinding.Tests.csproj", "{50A89267-A28B-4DF3-8E62-912E005143B8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(SolutionItems) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "src\AddIns\BackendBindings\Boo\BooBinding\Test\BooBinding.Tests.csproj", "{6FA16499-896F-4C02-BB43-1AF5C6C7C713}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "src\AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "src\AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "src\AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "src\AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}" 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(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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}" 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(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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "src\AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6E59AF58-F635-459A-9A35-C9AC41C00339}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "src\AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding.Tests", "src\AddIns\BackendBindings\XamlBinding\XamlBinding.Tests\XamlBinding.Tests.csproj", "{F390DA70-1FE1-4715-81A0-389AB010C130}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "src\AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
@ -252,37 +228,39 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace.Tests", "src\AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShortcutsManagement", "src\AddIns\Misc\ShortcutsManagement\ShortcutsManagement\ShortcutsManagement.csproj", "{745869FF-80E9-4589-A366-E775D2103843}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
@ -292,150 +270,172 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShortcutsManagement", "src\AddIns\Misc\ShortcutsManagement\ShortcutsManagement\ShortcutsManagement.csproj", "{745869FF-80E9-4589-A366-E775D2103843}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{BFA3BF26-33BD-4A65-B84D-C7F30D131668}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
ProjectSection(SolutionItems) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "src\AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding.Tests", "src\AddIns\BackendBindings\XamlBinding\XamlBinding.Tests\XamlBinding.Tests.csproj", "{F390DA70-1FE1-4715-81A0-389AB010C130}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "src\AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "src\AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6E59AF58-F635-459A-9A35-C9AC41C00339}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
ProjectSection(SolutionItems) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "src\AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "src\AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject 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 ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding.Tests", "src\AddIns\BackendBindings\VBNetBinding\Test\VBNetBinding.Tests.csproj", "{50A89267-A28B-4DF3-8E62-912E005143B8}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "src\AddIns\Misc\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "src\Tools\Tools.build", "{3DF4060F-5EE0-41CF-8096-F27355FD5511}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -768,95 +768,95 @@ Global
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution GlobalSection(NestedProjects) = preSolution
{7DB80259-24D4-46C3-A024-53FF1987733D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{4980B743-B32F-4aba-AABD-45E2CAD3568D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{FFA7988E-7348-4669-9E9D-27E629C873A2} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01} {FFA7988E-7348-4669-9E9D-27E629C873A2} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {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} {DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{870115DD-960A-4406-A6B9-600BCDC36A03} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} {E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D} {B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF} = {39327899-ED91-4F7F-988C-4FE4E17C014D} {870115DD-960A-4406-A6B9-600BCDC36A03} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{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} {F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {F355E45F-F54F-4B42-8916-9A633A392789} {D599885D-E161-4CCE-A66E-7A40C8C4F4CC} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {F355E45F-F54F-4B42-8916-9A633A392789} {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {F355E45F-F54F-4B42-8916-9A633A392789} {F3662720-9EA2-4591-BBC6-97361DCE50A9} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {F355E45F-F54F-4B42-8916-9A633A392789} {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{CE498514-D12D-4B6E-AE0E-FEC29BD43748} = {F355E45F-F54F-4B42-8916-9A633A392789} {E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {F355E45F-F54F-4B42-8916-9A633A392789}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{BFA3BF26-33BD-4A65-B84D-C7F30D131668} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{DCA2703D-250A-463E-A68A-07ED105AE6BD} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{533F4684-DBA6-4518-B005-C84F22A2DD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{745869FF-80E9-4589-A366-E775D2103843} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{8AA421C8-D7AF-4957-9F43-5135328ACB24} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{A569DCC1-C608-45FD-B770-4F79335EF154} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{50A89267-A28B-4DF3-8E62-912E005143B8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{97B3B514-AB0E-4FE1-89DE-8A945F5112AE} = {E0646C25-36F2-4524-969F-FA621353AB94}
{CA76F702-5B4E-4918-B8D8-7FF8382434FF} = {E0646C25-36F2-4524-969F-FA621353AB94}
{6E59AF58-F635-459A-9A35-C9AC41C00339} = {E0646C25-36F2-4524-969F-FA621353AB94}
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {E0646C25-36F2-4524-969F-FA621353AB94}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{F390DA70-1FE1-4715-81A0-389AB010C130} = {E0646C25-36F2-4524-969F-FA621353AB94}
{388E7B64-0393-4EB4-A3E3-5C474F141853} = {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} {F390DA70-1FE1-4715-81A0-389AB010C130} = {E0646C25-36F2-4524-969F-FA621353AB94}
{833904AB-3CD4-4071-9B48-5770E44685AA} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF} {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF} {BF38FB72-B380-4196-AF8C-95749D726C61} = {E0646C25-36F2-4524-969F-FA621353AB94}
{8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF} {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE} {E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE} {6E59AF58-F635-459A-9A35-C9AC41C00339} = {E0646C25-36F2-4524-969F-FA621353AB94}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE} {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} {C9DE556D-325C-4544-B29F-16A9EB7C9830} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{833904AB-3CD4-4071-9B48-5770E44685AA} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{23B517C9-1ECC-4419-A13F-0B7136D085CB} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{A569DCC1-C608-45FD-B770-4F79335EF154} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{8AA421C8-D7AF-4957-9F43-5135328ACB24} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{745869FF-80E9-4589-A366-E775D2103843} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{533F4684-DBA6-4518-B005-C84F22A2DD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{DCA2703D-250A-463E-A68A-07ED105AE6BD} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{BFA3BF26-33BD-4A65-B84D-C7F30D131668} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {F355E45F-F54F-4B42-8916-9A633A392789}
{CE498514-D12D-4B6E-AE0E-FEC29BD43748} = {F355E45F-F54F-4B42-8916-9A633A392789}
{08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {F355E45F-F54F-4B42-8916-9A633A392789}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {F355E45F-F54F-4B42-8916-9A633A392789}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {F355E45F-F54F-4B42-8916-9A633A392789}
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {F355E45F-F54F-4B42-8916-9A633A392789}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

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

@ -69,17 +69,17 @@ namespace ICSharpCode.ShortcutsManagement.Dialogs
{ {
shortcutsManagementOptionsPanel.searchTextBox.Focus(); shortcutsManagementOptionsPanel.searchTextBox.Focus();
if (Directory.Exists(UserGestureManager.UserGestureProfilesDirectory)) { if (Directory.Exists(UserGestureProfileManager.UserGestureProfilesDirectory)) {
var dirInfo = new DirectoryInfo(UserGestureManager.UserGestureProfilesDirectory); var dirInfo = new DirectoryInfo(UserGestureProfileManager.UserGestureProfilesDirectory);
var xmlFiles = dirInfo.GetFiles("*.xml"); var xmlFiles = dirInfo.GetFiles("*.xml");
foreach (var fileInfo in xmlFiles) { foreach (var fileInfo in xmlFiles) {
var profile = new UserGestureProfile(); var path = Path.Combine(UserGestureProfileManager.UserGestureProfilesDirectory, fileInfo.Name);
profile.Path = Path.Combine(UserGestureManager.UserGestureProfilesDirectory, fileInfo.Name); var profile = new UserGestureProfile(path);
profile.Load(); profile.Load();
profiles.Add(profile); profiles.Add(profile);
if (UserGestureManager.CurrentProfile != null && profile.Name == UserGestureManager.CurrentProfile.Name) { if (UserGestureProfileManager.CurrentProfile != null && profile.Name == UserGestureProfileManager.CurrentProfile.Name) {
SelectedProfile = profile; SelectedProfile = profile;
} }
} }
@ -237,7 +237,7 @@ namespace ICSharpCode.ShortcutsManagement.Dialogs
} }
} }
UserGestureManager.CurrentProfile = SelectedProfile; UserGestureProfileManager.CurrentProfile = SelectedProfile;
profiles.ForEach(p => p.Save()); profiles.ForEach(p => p.Save());
@ -290,14 +290,11 @@ namespace ICSharpCode.ShortcutsManagement.Dialogs
openDialog.FilterIndex = 1; openDialog.FilterIndex = 1;
openDialog.RestoreDirectory = false; openDialog.RestoreDirectory = false;
if(true == openDialog.ShowDialog()) { if(true == openDialog.ShowDialog()) {
var loadedProfile = new UserGestureProfile(); var loadedProfilePath = Path.Combine(UserGestureProfileManager.UserGestureProfilesDirectory, Guid.NewGuid().ToString());
loadedProfile.Path = openDialog.FileName; File.Copy(openDialog.FileName, loadedProfilePath);
var loadedProfile = new UserGestureProfile(loadedProfilePath);
loadedProfile.Load(); loadedProfile.Load();
loadedProfile.Path = Path.Combine(
UserGestureManager.UserGestureProfilesDirectory,
Guid.NewGuid().ToString());
profiles.Add(loadedProfile); profiles.Add(loadedProfile);
SelectedProfile = loadedProfile; SelectedProfile = loadedProfile;
} }
@ -315,17 +312,19 @@ namespace ICSharpCode.ShortcutsManagement.Dialogs
if (promptWindow.DialogResult == true) { if (promptWindow.DialogResult == true) {
UserGestureProfile newProfile; UserGestureProfile newProfile;
var newProfileName = Guid.NewGuid().ToString();
newProfile = new UserGestureProfile(
Path.Combine(UserGestureProfileManager.UserGestureProfilesDirectory, newProfileName + ".xml"),
newProfileName,
promptWindow.Text,
false);
if (promptWindow.BaseProfile != null) { if (promptWindow.BaseProfile != null) {
newProfile = (UserGestureProfile) promptWindow.BaseProfile.Clone(); foreach(var pair in promptWindow.BaseProfile) {
newProfile.Name = Guid.NewGuid().ToString(); newProfile[pair.Key] = pair.Value;
newProfile.Text = promptWindow.Text; }
newProfile.ReadOnly = false;
} else {
newProfile = new UserGestureProfile(Guid.NewGuid().ToString(), promptWindow.Text, false);
} }
newProfile.Path = Path.Combine(UserGestureManager.UserGestureProfilesDirectory,
newProfile.Name + ".xml");
profiles.Add(newProfile); profiles.Add(newProfile);
SelectedProfile = newProfile; SelectedProfile = newProfile;

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

@ -21,7 +21,7 @@ namespace ICSharpCode.Core.Presentation
public class BindingGroup public class BindingGroup
{ {
private string _name; private string _name;
private HashSet<WeakReference> _attachedInstances = new HashSet<WeakReference>(new WeakReferenceEqualirtyComparer()); private HashSet<WeakReference> _attachedInstances = new HashSet<WeakReference>(new WeakReferenceTargetEqualirtyComparer());
private BindingGroupCollection _nestedGroups = new BindingGroupCollection(); private BindingGroupCollection _nestedGroups = new BindingGroupCollection();
/// <summary> /// <summary>
@ -114,7 +114,7 @@ namespace ICSharpCode.Core.Presentation
/// <summary> /// <summary>
/// From provided <see cref="ICollection{Type}" /> generate <see cref="ICollection{UIElement}" /> containing /// From provided <see cref="ICollection{Type}" /> generate <see cref="ICollection{UIElement}" /> containing
/// instances of any of the provided types and registered in this or any nested group /// instances created from one of the provided types and registered in this or any nested group
/// </summary> /// </summary>
/// <param name="instances">Collection of examined types</param> /// <param name="instances">Collection of examined types</param>
/// <returns>Generated instances</returns> /// <returns>Generated instances</returns>

133
src/Main/ICSharpCode.Core.Presentation/CommandsService/BindingInfoBase.cs

@ -19,6 +19,7 @@ namespace ICSharpCode.Core.Presentation
private string _ownerInstanceName; private string _ownerInstanceName;
private string _ownerTypeName; private string _ownerTypeName;
private string routedCommandName; private string routedCommandName;
private AddIn _addIn;
/// <summary> /// <summary>
/// Get or sets binding groups /// Get or sets binding groups
@ -66,22 +67,25 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary> /// <summary>
/// Stores name of named instance to which this binding belongs. When this binding is registered a /// Gets name of named owner instance as registered using <see cref="ICSharpCode.Core.Presentation.CommandManager.RegisterNamedUIElement" />
/// <see cref="InputBinding" /> is assigned to owner instance ///
/// If this attribute is used <see cref="OwnerTypeName" /> can not be set
/// ///
/// If this attribute is used <see cref="OwnerInstance" />, <see cref="OwnerType" /> and /// This attribute can't be set while <see cref="InputBindingInfo" /> or <see cref="CommandBindingInfo" />
/// <see cref="OwnerTypeName" /> can not be set /// is registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary> /// </summary>
public virtual string OwnerInstanceName { public virtual string OwnerInstanceName {
get { get {
return _ownerInstanceName; return _ownerInstanceName;
} }
set { set {
if(_ownerInstanceName != null || _ownerTypeName != null) { if(_ownerTypeName != null) {
throw new ArgumentException("This binding already has an owner"); throw new ArgumentException("This binding info already has an owner");
}
if(IsRegistered) {
throw new ArgumentException("Can not change owner while binding info is registered");
} }
_ownerInstanceName = value; _ownerInstanceName = value;
@ -89,11 +93,7 @@ namespace ICSharpCode.Core.Presentation
} }
/// <summary> /// <summary>
/// Stores owner instance to which this binding belongs. When this binding is registered a /// Gets collection of instances registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" /> by name found in <see cref="OwnerInstanceName" /> property
/// <see cref="InputBinding" /> is assigned to owner instance
///
/// If this attribute is used <see cref="OwnerInstanceName" />, <see cref="OwnerType" /> and
/// <see cref="OwnerTypeName" /> can not be set
/// </summary> /// </summary>
public ICollection<UIElement> OwnerInstances { public ICollection<UIElement> OwnerInstances {
get { get {
@ -106,11 +106,12 @@ namespace ICSharpCode.Core.Presentation
} }
/// <summary> /// <summary>
/// Stores name of owner type. Full name with assembly should be used. When this binding is /// Gets name of named owner type as registered using <see cref="ICSharpCode.Core.Presentation.CommandManager.RegisterNamedUIType" />
/// registered <see cref="InputBinding" /> is assigned to all instances of provided class ///
/// If this attribute is used <see cref="OwnerInstanceName" /> can not be set
/// ///
/// If this attribute is used <see cref="OwnerInstance" />, <see cref="OwnerInstanceName" /> and /// This attribute can't be set while <see cref="InputBindingInfo" /> or <see cref="CommandBindingInfo" />
/// <see cref="OwnerType" /> can not be set /// is registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary> /// </summary>
public virtual string OwnerTypeName public virtual string OwnerTypeName
{ {
@ -118,8 +119,12 @@ namespace ICSharpCode.Core.Presentation
return _ownerTypeName; return _ownerTypeName;
} }
set { set {
if(_ownerInstanceName != null || _ownerTypeName != null) { if(_ownerTypeName != null) {
throw new ArgumentException("This binding already has an owner"); throw new ArgumentException("This binding info already has an owner");
}
if(IsRegistered) {
throw new ArgumentException("Can not change owner while binding info is registered");
} }
_ownerTypeName = value; _ownerTypeName = value;
@ -127,11 +132,7 @@ namespace ICSharpCode.Core.Presentation
} }
/// <summary> /// <summary>
/// Stores owner type. When this binding is registered <see cref="InputBinding" /> /// Gets collection of types registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" /> by name found in <see cref="OwnerInstanceName" /> property
/// is assigned to all instances of provided class
///
/// If this attribute is used <see cref="OwnerInstance" />, <see cref="OwnerInstanceName" /> and
/// <see cref="OwnerTypeName" /> can not be set
/// </summary> /// </summary>
public ICollection<Type> OwnerTypes { public ICollection<Type> OwnerTypes {
get { get {
@ -144,30 +145,27 @@ namespace ICSharpCode.Core.Presentation
} }
/// <summary> /// <summary>
/// Routed command text /// Gets name of <see cref="RoutedUICommand" /> associated with binding info as registered using
/// <see cref="ICSharpCode.Core.Presentation.CommandManager.RegisterRoutedUICommand" />
/// ///
/// Override routed command text when displaying to user /// This attribute can't be set while <see cref="InputBindingInfo" /> or <see cref="CommandBindingInfo" />
/// </summary> /// is registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// <seealso cref="RoutedCommand"></seealso>
public string RoutedCommandText {
get; set;
}
/// <summary>
/// Name of the routed command which will be invoked when this binding is triggered
/// </summary> /// </summary>
public virtual string RoutedCommandName { public virtual string RoutedCommandName {
get { get {
return routedCommandName; return routedCommandName;
} }
set { set {
if(IsRegistered) {
throw new ArgumentException("Can not change routed command while binding info is registered");
}
routedCommandName = value; routedCommandName = value;
} }
} }
/// <summary> /// <summary>
/// Routed command instance which will be invoked when this binding is triggered /// Gets <see cref="RoutedUICommand" /> instance registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" /> by name found in <see cref="RoutedCommandName" /> property
/// </summary> /// </summary>
public RoutedUICommand RoutedCommand { public RoutedUICommand RoutedCommand {
get { get {
@ -175,19 +173,38 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Gets whether <see cref="CommandBindingInfo" /> or <see cref="InputBindingInfo" /> is registered in
/// <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary>
public bool IsRegistered public bool IsRegistered
{ {
get; set; get; internal set;
} }
/// <summary> /// <summary>
/// Add-in to which registered this input binding /// Gets or sets add-in which created this <see cref="CommandBindingInfo" /> or <see cref="InputBindingInfo" />
///
/// In case of <see cref="CommandBindingInfo" /> this reference is used to create an instance of
/// associated command when doing lazy loading
///
/// This attribute can't be set while <see cref="InputBindingInfo" /> or <see cref="CommandBindingInfo" />
/// is registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary> /// </summary>
public AddIn AddIn { public AddIn AddIn {
get; set; get {
return _addIn;
}
set {
if(IsRegistered) {
throw new ArgumentException("Can not change add-in while binding info is registered");
}
_addIn = value;
}
} }
public void SetCollectionChanged<T>(IObservableCollection<T> oldObservableCollection, IObservableCollection<T> newObservableCollection, NotifyCollectionChangedEventHandler handler) protected void SetCollectionChanged<T>(IObservableCollection<T> oldObservableCollection, IObservableCollection<T> newObservableCollection, NotifyCollectionChangedEventHandler handler)
{ {
newObservableCollection.CollectionChanged += handler; newObservableCollection.CollectionChanged += handler;
@ -209,8 +226,10 @@ namespace ICSharpCode.Core.Presentation
} }
/// <summary> /// <summary>
/// Updates owner bindings /// Handles <see cref="ICSharpCode.Core.Presentation.CommandManager.BindingsChanged" /> event
/// </summary> /// </summary>
/// <param name="sender">Sender object</param>
/// <param name="args">Event data</param>
public void BindingsChangedHandler(object sender, NotifyBindingsChangedEventArgs args) public void BindingsChangedHandler(object sender, NotifyBindingsChangedEventArgs args)
{ {
if(!IsRegistered || RoutedCommand == null || (OwnerTypes == null && OwnerInstances == null)) { if(!IsRegistered || RoutedCommand == null || (OwnerTypes == null && OwnerInstances == null)) {
@ -240,16 +259,48 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Remove bindings currently assigned to <see cref="UIElement" /> or <see cref="Type" />
/// collection described in this binding info
/// </summary>
public void RemoveActiveBindings() public void RemoveActiveBindings()
{ {
PopulateOwnerInstancesWithBindings(null); PopulateOwnerInstancesWithBindings(null);
PopulateOwnerTypesWithBindings(null); PopulateOwnerTypesWithBindings(null);
} }
/// <summary>
/// Represents instance of <see cref="BindingInfoBase" /> as string
/// </summary>
/// <returns></returns>
public override string ToString()
{
return string.Format(
"[{0}={1}, RoutedCommandName={2}, Hash={3}",
OwnerInstanceName != null ? "OwnerInstanceName" : "OwnerTypeName",
OwnerInstanceName != null ? OwnerInstanceName : OwnerTypeName,
RoutedCommandName,
GetHashCode());
}
/// <summary>
/// Generate up to date <see cref="InputBindings" /> collection in case of <see cref="InputBindingInfo" />
/// or <see cref="CommandBindings" /> collection in case of <see cref="CommandBindingInfo" />
/// </summary>
protected abstract void GenerateBindings(); protected abstract void GenerateBindings();
/// <summary>
/// Fills <see cref="UIElement.CommandBindings" /> or <see cref="UIElement.InputBindings" /> collections
/// with generated <see cref="CommandBinding" /> or <see cref="InputBinding" /> collections
/// </summary>
/// <param name="newInstances">Collection of <see cref="UIElement" /></param>
protected abstract void PopulateOwnerInstancesWithBindings(ICollection<UIElement> newInstances); protected abstract void PopulateOwnerInstancesWithBindings(ICollection<UIElement> newInstances);
/// <summary>
/// Using <see cref="System.Windows.Input.CommandManager.RegisterClassCommandBinding" /> or <see cref="System.Windows.Input.CommandManager.RegisterClassCommandBinding" /> methods
/// registers generated <see cref="CommandBinding" /> or <see cref="InputBinding" /> collections to collection of provided types
/// </summary>
/// <param name="newInstances">Collection of <see cref="Type" /></param>
protected abstract void PopulateOwnerTypesWithBindings(ICollection<Type> newtTypes); protected abstract void PopulateOwnerTypesWithBindings(ICollection<Type> newtTypes);
} }
} }

211
src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/BindingGroupCollection.cs

@ -9,65 +9,88 @@ using ICSharpCode.Core;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
public class BindingGroupCollection : IObservableCollection<BindingGroup> /// <summary>
{ /// Observable collection of <see cref="BindingGroup" />
private ObservableCollection<BindingGroup> _bindingGroups = new ObservableCollection<BindingGroup>(); /// </summary>
public class BindingGroupCollection : IObservableCollection<BindingGroup>
private event NotifyCollectionChangedEventHandler _bindingGroupsCollectionChanged; {
private ObservableCollection<BindingGroup> _bindingGroups = new ObservableCollection<BindingGroup>();
public event NotifyCollectionChangedEventHandler CollectionChanged private event NotifyCollectionChangedEventHandler _bindingGroupsCollectionChanged;
{
add { /// <inheritdoc />
_bindingGroupsCollectionChanged += value; public event NotifyCollectionChangedEventHandler CollectionChanged
_bindingGroups.CollectionChanged += value; {
} add {
remove { _bindingGroupsCollectionChanged += value;
_bindingGroupsCollectionChanged -= value; _bindingGroups.CollectionChanged += value;
_bindingGroups.CollectionChanged -= value; }
} remove {
} _bindingGroupsCollectionChanged -= value;
_bindingGroups.CollectionChanged -= value;
public BindingGroupCollection FlatNesteGroups }
{ }
get {
var flatGroups = new HashSet<BindingGroup>(); /// <summary>
foreach(var bindingGroup in this) { /// Gets <see cref="BindingGroupCollection" /> containing all nested binding groups
bindingGroup.FlattenNestedGroups(bindingGroup, flatGroups); /// </summary>
} public BindingGroupCollection FlatNesteGroups
{
var flatBindingGroupCollection = new BindingGroupCollection(); get {
flatBindingGroupCollection.AddRange(flatGroups); var flatGroups = new HashSet<BindingGroup>();
foreach(var bindingGroup in this) {
return flatBindingGroupCollection; bindingGroup.FlattenNestedGroups(bindingGroup, flatGroups);
} }
}
var flatBindingGroupCollection = new BindingGroupCollection();
public bool IsAttachedTo(UIElement instance) flatBindingGroupCollection.AddRange(flatGroups);
{
foreach(var bindingGroup in FlatNesteGroups) { return flatBindingGroupCollection;
if(bindingGroup.IsInstanceRegistered(instance)) { }
return true; }
}
} /// <summary>
/// Determines whether <see cref="UIElement" /> instance is handled by any group in this collection
return false; /// </summary>
} /// <param name="instance">Examined instance</param>
/// <returns><code>true</code> if registered; otherwise <code>false</code></returns>
public bool IsAttachedToAny(ICollection<UIElement> instances) public bool IsInstanceRegistered(UIElement instance)
{ {
if(instances != null && instances.Count > 0) { foreach(var bindingGroup in FlatNesteGroups) {
foreach(var instance in instances) { if(bindingGroup.IsInstanceRegistered(instance)) {
if(IsAttachedTo(instance)) { return true;
return true; }
} }
}
} return false;
}
return false;
} /// <summary>
/// Determines whether any <see cref="UIElement" /> instance from provided collection
public ICollection<UIElement> GetAttachedInstances(ICollection<Type> types) /// is handled by any group in this collection
{ /// </summary>
/// <param name="instance">Examined instance</param>
/// <returns><code>true</code> if registered; otherwise <code>false</code></returns>
public bool IsAnyInstanceRegistered(ICollection<UIElement> instances)
{
if(instances != null && instances.Count > 0) {
foreach(var instance in instances) {
if(IsInstanceRegistered(instance)) {
return true;
}
}
}
return false;
}
/// <summary>
/// From provided <see cref="ICollection{Type}" /> generate <see cref="ICollection{UIElement}" /> containing
/// instances created from one of the provided types and registered in any group included in this <see cref="BindingGroupCollection" />
/// </summary>
/// <param name="instances">Collection of examined types</param>
/// <returns>Generated instances</returns>
public ICollection<UIElement> GetAttachedInstances(ICollection<Type> types)
{
var instances = new HashSet<UIElement>(); var instances = new HashSet<UIElement>();
foreach(var group in FlatNesteGroups) { foreach(var group in FlatNesteGroups) {
foreach(var instance in group.FilterAttachedInstances(types)) { foreach(var instance in group.FilterAttachedInstances(types)) {
@ -76,8 +99,14 @@ namespace ICSharpCode.Core.Presentation
} }
return instances; return instances;
} }
/// <summary>
/// From provided <see cref="ICollection{UIElement}" /> filter <see cref="ICollection{UIElement}" /> containing
/// only instances registered in any group included in this <see cref="BindingGroupCollection" />
/// </summary>
/// <param name="instances">Collection of examined instances</param>
/// <returns>Filtered instances</returns>
public ICollection<UIElement> GetAttachedInstances(ICollection<UIElement> instances) public ICollection<UIElement> GetAttachedInstances(ICollection<UIElement> instances)
{ {
var attachedInstances = new HashSet<UIElement>(); var attachedInstances = new HashSet<UIElement>();
@ -89,19 +118,27 @@ namespace ICSharpCode.Core.Presentation
return attachedInstances; return attachedInstances;
} }
/// <summary>
/// Number of <see cref="BindingGroup" /> instances in this collection
/// </summary>
public int Count { public int Count {
get { get {
return _bindingGroups.Count; return _bindingGroups.Count;
} }
} }
/// <inheritdoc />
public bool IsReadOnly { public bool IsReadOnly {
get { get {
return false; return false;
} }
} }
/// <summary>
/// Add <see cref="BindingGroup" /> to this collection
/// </summary>
/// <param name="bindingGroup"></param>
public void Add(BindingGroup bindingGroup) public void Add(BindingGroup bindingGroup)
{ {
if(bindingGroup == null) { if(bindingGroup == null) {
@ -113,6 +150,9 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Remove all instances of <see cref="BindingGroup" /> from this collection
/// </summary>
public void Clear() public void Clear()
{ {
var itemsBackup = _bindingGroups; var itemsBackup = _bindingGroups;
@ -131,51 +171,58 @@ namespace ICSharpCode.Core.Presentation
} }
} }
public bool ContainsNestedAny(BindingGroupCollection bindingGroups) /// <summary>
{ /// Add many instances of <see cref="BindingGroup" /> to this collection
return FlatNesteGroups.ContainsAnyFromCollection(bindingGroups); /// </summary>
} /// <param name="bindingGroups"></param>
public void AddRange(IEnumerable<BindingGroup> bindingGroups)
public bool ContainsNested(BindingGroup bindingGroup)
{
return FlatNesteGroups.Contains(bindingGroup);
}
public bool ContainsAny(BindingGroupCollection bindingGroups)
{ {
return FlatNesteGroups.ContainsAnyFromCollection(bindingGroups); foreach(var bindingGroup in bindingGroups) {
Add(bindingGroup);
}
} }
/// <summary>
/// Determines whether this <see cref="BindingGroupCollection" /> contains
/// provided instance of <see cref="BindingGroup" />
/// </summary>
/// <param name="bindingGroup">Instance of <see cref="BindingGroup" /></param>
/// <returns>Returns <code>true</code> if binding group is present in collection; otherwise returns <code>false</code></returns>
public bool Contains(BindingGroup bindingGroup) public bool Contains(BindingGroup bindingGroup)
{ {
return _bindingGroups.Contains(bindingGroup); return _bindingGroups.Contains(bindingGroup);
} }
public void AddRange(IEnumerable<BindingGroup> bindingGroups) /// <summary>
{ /// Copy this collection to array
foreach(var bindingGroup in bindingGroups) { /// </summary>
Add(bindingGroup); /// <param name="array">Array of <see cref="BindingGroup" /> instances</param>
} /// <param name="arrayIndex">Copy start index</param>
}
public void CopyTo(BindingGroup[] array, int arrayIndex) public void CopyTo(BindingGroup[] array, int arrayIndex)
{ {
_bindingGroups.CopyTo(array, arrayIndex); _bindingGroups.CopyTo(array, arrayIndex);
} }
/// <summary>
/// Remove instance of <see cref="BindingGroup" />
/// </summary>
/// <param name="bindingGroup">Added instance of <see cref="BindingGroup" /></param>
/// <returns><code>True</code> if item was added; otherwise <code>false</code></returns>
public bool Remove(BindingGroup bindingGroup) public bool Remove(BindingGroup bindingGroup)
{ {
return _bindingGroups.Remove(bindingGroup); return _bindingGroups.Remove(bindingGroup);
} }
/// <inheritdoc />
public IEnumerator<BindingGroup> GetEnumerator() public IEnumerator<BindingGroup> GetEnumerator()
{ {
return _bindingGroups.GetEnumerator(); return _bindingGroups.GetEnumerator();
} }
/// <inheritdoc />
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{ {
return _bindingGroups.GetEnumerator(); return _bindingGroups.GetEnumerator();
} }
} }
} }

42
src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/BindingInfoTemplateDictionary.cs

@ -8,9 +8,9 @@ using System.Reflection;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
/// <summary> /// <summary>
/// Description of AtomicBindingInfoTemplateDictionary. /// Holds objects of type T which can be searched by <see cref="BindingInfoTemplate" />
/// </summary> /// </summary>
public class BindingInfoTemplateDictionary<T> public class BindingInfoTemplateDictionary<T>
{ {
static List<PropertyInfo> properties; static List<PropertyInfo> properties;
@ -18,6 +18,11 @@ namespace ICSharpCode.Core.Presentation
static PropertyInfo OwnerTypeNameProperty; static PropertyInfo OwnerTypeNameProperty;
static PropertyInfo RoutedCommandNameProperty; static PropertyInfo RoutedCommandNameProperty;
private Dictionary<BindingInfoTemplate, HashSet<T>> dictionary = new Dictionary<BindingInfoTemplate, HashSet<T>>();
/// <summary>
/// Creates new instance of <see cref="BindingInfoTemplateDictionary{T}" />
/// </summary>
static BindingInfoTemplateDictionary() static BindingInfoTemplateDictionary()
{ {
var t = typeof(BindingInfoTemplate); var t = typeof(BindingInfoTemplate);
@ -27,8 +32,11 @@ namespace ICSharpCode.Core.Presentation
properties.Add(RoutedCommandNameProperty = t.GetProperty("RoutedCommandName")); properties.Add(RoutedCommandNameProperty = t.GetProperty("RoutedCommandName"));
} }
private Dictionary<BindingInfoTemplate, HashSet<T>> dictionary = new Dictionary<BindingInfoTemplate, HashSet<T>>(); /// <summary>
/// Add new item of type T to the dictionary
/// </summary>
/// <param name="template">Template which can be used to search for an item</param>
/// <param name="item">Added item</param>
public void Add(BindingInfoTemplate template, T item) public void Add(BindingInfoTemplate template, T item)
{ {
foreach(var wildCardTemplate in GetWildCardTemplates(template)) { foreach(var wildCardTemplate in GetWildCardTemplates(template)) {
@ -40,6 +48,13 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Find items using <see cref="BindingInfoTemplate" />
///
/// <code>null</code> values in the template will act as wildcards
/// </summary>
/// <param name="template">Template</param>
/// <returns>Collection of found items identified by provided <see cref="BindingInfoTemplate" /></returns>
public ICollection<T> FindItems(BindingInfoTemplate template) public ICollection<T> FindItems(BindingInfoTemplate template)
{ {
var bucket = FindBucket(template); var bucket = FindBucket(template);
@ -52,7 +67,7 @@ namespace ICSharpCode.Core.Presentation
return null; return null;
} }
public HashSet<T> FindBucket(BindingInfoTemplate template) private HashSet<T> FindBucket(BindingInfoTemplate template)
{ {
HashSet<T> bucket; HashSet<T> bucket;
dictionary.TryGetValue(template, out bucket); dictionary.TryGetValue(template, out bucket);
@ -63,21 +78,20 @@ namespace ICSharpCode.Core.Presentation
return bucket; return bucket;
} }
/// <summary>
/// Remove item from template
/// </summary>
/// <param name="item"></param>
public void Remove(T item) public void Remove(T item)
{ {
foreach(var pair in dictionary) { foreach(var pair in dictionary) {
pair.Value.Remove(item); pair.Value.Remove(item);
} }
} }
public void Remove(BindingInfoTemplate template, T item)
{
var bucket = FindBucket(template);
if(bucket != null) {
bucket.Remove(item);
}
}
/// <summary>
/// Remove all registered items from dictionary
/// </summary>
public void Clear() public void Clear()
{ {
dictionary.Clear(); dictionary.Clear();

31
src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/InputBindingCategoryCollection.cs

@ -6,18 +6,22 @@ using System.Collections.ObjectModel;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
/// <summary> /// <summary>
/// Description of InputBindingCategoryCollection. /// Observable collection containing instances of <see cref="InputBindingCategory" />
/// </summary> /// </summary>
public class InputBindingCategoryCollection : IObservableCollection<InputBindingCategory> public class InputBindingCategoryCollection : IObservableCollection<InputBindingCategory>
{ {
private ObservableCollection<InputBindingCategory> categories = new ObservableCollection<InputBindingCategory>(); private ObservableCollection<InputBindingCategory> categories = new ObservableCollection<InputBindingCategory>();
/// <summary>
/// Gets number of elements in this <see cref="InputBindingCategoryCollection" />
/// </summary>
public int Count { public int Count {
get { get {
return categories.Count; return categories.Count;
} }
} }
/// <inheritdoc />
public bool IsReadOnly { public bool IsReadOnly {
get { get {
return false; return false;
@ -26,6 +30,7 @@ namespace ICSharpCode.Core.Presentation
private event NotifyCollectionChangedEventHandler categoriesCollectionChanged; private event NotifyCollectionChangedEventHandler categoriesCollectionChanged;
/// <inheritdoc />
public event NotifyCollectionChangedEventHandler CollectionChanged public event NotifyCollectionChangedEventHandler CollectionChanged
{ {
add { add {
@ -38,6 +43,10 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Add <see cref="InputBindingCategory" /> to this <see cref="InputBindingCategoryCollection" />
/// </summary>
/// <param name="category"></param>
public void Add(InputBindingCategory category) public void Add(InputBindingCategory category)
{ {
if(category == null) { if(category == null) {
@ -49,6 +58,9 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Removes all categories from this collection
/// </summary>
public void Clear() public void Clear()
{ {
var categoriesBackup = categories; var categoriesBackup = categories;
@ -67,11 +79,20 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Determines whether this collection contains instance of <see cref="InputBindingCategory" />
/// </summary>
/// <param name="category">Category to be examined</param>
/// <returns>Returns <code>true</code> if collection contains provided category; otherwise <code>false</code></returns>
public bool Contains(InputBindingCategory category) public bool Contains(InputBindingCategory category)
{ {
return categories.Contains(category); return categories.Contains(category);
} }
/// <summary>
/// Add multiple categories to <see cref="InputBindingCategory" />
/// </summary>
/// <param name="categories">Categories to add</param>
public void AddRange(IEnumerable<InputBindingCategory> categories) public void AddRange(IEnumerable<InputBindingCategory> categories)
{ {
foreach(var category in categories) { foreach(var category in categories) {
@ -79,21 +100,29 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <inheritdoc />
public void CopyTo(InputBindingCategory[] array, int arrayIndex) public void CopyTo(InputBindingCategory[] array, int arrayIndex)
{ {
categories.CopyTo(array, arrayIndex); categories.CopyTo(array, arrayIndex);
} }
/// <summary>
/// Remove <see cref="InputBindingCategory" /> instance from collection
/// </summary>
/// <param name="category">Category to remove</param>
/// <returns>Returns <code>true</code> if item was removed; otherwise <code>false</code></returns>
public bool Remove(InputBindingCategory category) public bool Remove(InputBindingCategory category)
{ {
return categories.Remove(category); return categories.Remove(category);
} }
/// <inheritdoc />
public IEnumerator<InputBindingCategory> GetEnumerator() public IEnumerator<InputBindingCategory> GetEnumerator()
{ {
return categories.GetEnumerator(); return categories.GetEnumerator();
} }
/// <inheritdoc />
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{ {
return categories.GetEnumerator(); return categories.GetEnumerator();

42
src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/RelationshipMap.cs

@ -1,14 +1,11 @@
/*
* Created by SharpDevelop.
* User: Sergej Andrejev
* Date: 7/24/2009
* Time: 6:56 PM
*/
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
/// <summary>
/// Handles many-to-many relationship between instances of T1 and T2 type
/// </summary>
public class RelationshipMap<T1, T2> public class RelationshipMap<T1, T2>
{ {
private static Dictionary<T1, HashSet<T2>> forwardMap; private static Dictionary<T1, HashSet<T2>> forwardMap;
@ -17,12 +14,20 @@ namespace ICSharpCode.Core.Presentation
private IEqualityComparer<T1> t1Comparer; private IEqualityComparer<T1> t1Comparer;
private IEqualityComparer<T2> t2Comparer; private IEqualityComparer<T2> t2Comparer;
/// <summary>
/// Creates new instance of <see cref="RelationshipMap" />
/// </summary>
public RelationshipMap() public RelationshipMap()
{ {
forwardMap = new Dictionary<T1, HashSet<T2>>(); forwardMap = new Dictionary<T1, HashSet<T2>>();
backwardMap = new Dictionary<T2, HashSet<T1>>(); backwardMap = new Dictionary<T2, HashSet<T1>>();
} }
/// <summary>
/// Creates new instance of <see cref="RelationshipMap" />
/// </summary>
/// <param name="t1Comparer">T1 comparer</param>
/// <param name="t2Comparer">T2 comparer</param>
public RelationshipMap(IEqualityComparer<T1> t1Comparer, IEqualityComparer<T2> t2Comparer) public RelationshipMap(IEqualityComparer<T1> t1Comparer, IEqualityComparer<T2> t2Comparer)
{ {
this.t1Comparer = t1Comparer; this.t1Comparer = t1Comparer;
@ -32,6 +37,12 @@ namespace ICSharpCode.Core.Presentation
backwardMap = new Dictionary<T2, HashSet<T1>>(t2Comparer); backwardMap = new Dictionary<T2, HashSet<T1>>(t2Comparer);
} }
/// <summary>
/// Add new two-way association between item of type T1 and item of type T2
/// </summary>
/// <param name="item1">Item of type T1</param>
/// <param name="item2">Item of type T2</param>
/// <returns>Returns <code>true</code> in case relationship was successfully created; otherwise returns <code>false</code></returns>
public bool Add(T1 item1, T2 item2) public bool Add(T1 item1, T2 item2)
{ {
if(!forwardMap.ContainsKey(item1)){ if(!forwardMap.ContainsKey(item1)){
@ -49,6 +60,11 @@ namespace ICSharpCode.Core.Presentation
//return forwardRemoveResult; //return forwardRemoveResult;
} }
/// <summary>
/// Selects all items mapped to provided item
/// </summary>
/// <param name="item">Mapping item</param>
/// <returns>All items mapped to provided item</returns>
public ICollection<T2> MapForward(T1 item) { public ICollection<T2> MapForward(T1 item) {
HashSet<T2> mappedValues; HashSet<T2> mappedValues;
forwardMap.TryGetValue(item, out mappedValues); forwardMap.TryGetValue(item, out mappedValues);
@ -56,6 +72,11 @@ namespace ICSharpCode.Core.Presentation
return mappedValues ?? new HashSet<T2>(); return mappedValues ?? new HashSet<T2>();
} }
/// <summary>
/// Select all items mapped backward to provided item
/// </summary>
/// <param name="item">Mapping item</param>
/// <returns>All items mapped to provided item</returns>
public ICollection<T1> MapBackward(T2 item) { public ICollection<T1> MapBackward(T2 item) {
HashSet<T1> mappedValues; HashSet<T1> mappedValues;
backwardMap.TryGetValue(item, out mappedValues); backwardMap.TryGetValue(item, out mappedValues);
@ -63,6 +84,12 @@ namespace ICSharpCode.Core.Presentation
return mappedValues ?? new HashSet<T1>(); return mappedValues ?? new HashSet<T1>();
} }
/// <summary>
/// Removes association between item of type T1 and item of type T2
/// </summary>
/// <param name="item1">Item of type T1</param>
/// <param name="item2">Item of type T2</param>
/// <returns>Returns <code>true</code> if association was successfully removed; otherwise <code>false</code></returns>
public bool Remove(T1 item1, T2 item2) public bool Remove(T1 item1, T2 item2)
{ {
var forwardBucket = MapForward(item1); var forwardBucket = MapForward(item1);
@ -74,6 +101,9 @@ namespace ICSharpCode.Core.Presentation
return forwardRemoveResult || backwardRemoveResult; return forwardRemoveResult || backwardRemoveResult;
} }
/// <summary>
/// Remove all associations from collection
/// </summary>
public void Clear() public void Clear()
{ {
forwardMap.Clear(); forwardMap.Clear();

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

@ -51,7 +51,7 @@ namespace ICSharpCode.Core.Presentation
internal static Dictionary<string, System.Windows.Input.ICommand> commands = new Dictionary<string, System.Windows.Input.ICommand>(); internal static Dictionary<string, System.Windows.Input.ICommand> commands = new Dictionary<string, System.Windows.Input.ICommand>();
// Named UI instances and types // Named UI instances and types
private static RelationshipMap<string, WeakReference> namedUIInstances = new RelationshipMap<string, WeakReference>(null, new WeakReferenceEqualirtyComparer()); private static RelationshipMap<string, WeakReference> namedUIInstances = new RelationshipMap<string, WeakReference>(null, new WeakReferenceTargetEqualirtyComparer());
private static RelationshipMap<string, Type> namedUITypes = new RelationshipMap<string, Type>(); private static RelationshipMap<string, Type> namedUITypes = new RelationshipMap<string, Type>();
// Registered input binding categories // Registered input binding categories
@ -62,14 +62,13 @@ namespace ICSharpCode.Core.Presentation
// Load gesture profile first // Load gesture profile first
var path = PropertyService.Get("ICSharpCode.Core.Presentation.UserDefinedGesturesManager.UserGestureProfilesDirectory"); var path = PropertyService.Get("ICSharpCode.Core.Presentation.UserDefinedGesturesManager.UserGestureProfilesDirectory");
if(path != null && File.Exists(path)) { if(path != null && File.Exists(path)) {
var profile = new UserGestureProfile(); var profile = new UserGestureProfile(path);
profile.Path = path;
profile.Load(); profile.Load();
UserGestureManager.CurrentProfile = profile; UserGestureProfileManager.CurrentProfile = profile;
} }
UserGestureManager.CurrentProfileChanged += UserDefinedGesturesManager_CurrentProfileChanged; UserGestureProfileManager.CurrentProfileChanged += UserDefinedGesturesManager_CurrentProfileChanged;
} }
static void UserDefinedGesturesManager_CurrentProfileChanged(object sender, NotifyUserGestureProfileChangedEventArgs args) static void UserDefinedGesturesManager_CurrentProfileChanged(object sender, NotifyUserGestureProfileChangedEventArgs args)

42
src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsService.cs

@ -11,10 +11,16 @@ using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
/// <summary> /// <summary>
/// Description of CommandsService. /// Utility class to help manage commands and bindings
/// </summary> /// </summary>
public static class CommandsService public static class CommandsService
{ {
/// <summary>
/// Register <see cref="InputBindingInfo" /> and <see cref="CommandBindingInfo" />
/// for all MenuItem codons under provided path
/// </summary>
/// <param name="caller">Caller object</param>
/// <param name="menuRootsLocationPath">Path to codons</param>
public static void RegisterMenuBindings(object caller, string menuRootsLocationPath) public static void RegisterMenuBindings(object caller, string menuRootsLocationPath)
{ {
var menuRoots = AddInTree.BuildItems<MenuLocationDescriptor>(menuRootsLocationPath, caller); var menuRoots = AddInTree.BuildItems<MenuLocationDescriptor>(menuRootsLocationPath, caller);
@ -23,6 +29,13 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Register <see cref="InputBindingInfo" /> and <see cref="CommandBindingInfo" /> using data in MenuItem codon
/// and nested codons
/// </summary>
/// <param name="menuPath">Path to MenuItem codon</param>
/// <param name="caller">Caller object</param>
/// <param name="categoryPath"><see cref="InputBindingCategory" /> path</param>
public static void RegisterSingleMenuBindings(string menuPath, object caller, string categoryPath) public static void RegisterSingleMenuBindings(string menuPath, object caller, string categoryPath)
{ {
var menuItemNode = AddInTree.GetTreeNode(menuPath); var menuItemNode = AddInTree.GetTreeNode(menuPath);
@ -101,6 +114,10 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Register all <see cref="RoutedUICommand" /> static propertiess in provided class
/// </summary>
/// <param name="type">Class with static properties returning <see cref="RoutedUICommand" /></param>
public static void RegisterRoutedCommands(Type type) { public static void RegisterRoutedCommands(Type type) {
var typeMembers = type.GetMembers(BindingFlags.Static | BindingFlags.Public | BindingFlags.GetField | BindingFlags.GetProperty); var typeMembers = type.GetMembers(BindingFlags.Static | BindingFlags.Public | BindingFlags.GetField | BindingFlags.GetProperty);
foreach(var member in typeMembers) { foreach(var member in typeMembers) {
@ -120,6 +137,9 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Register default .Net routed commands
/// </summary>
public static void RegisterBuiltInRoutedUICommands() { public static void RegisterBuiltInRoutedUICommands() {
RegisterRoutedCommands(typeof(ApplicationCommands)); RegisterRoutedCommands(typeof(ApplicationCommands));
RegisterRoutedCommands(typeof(ComponentCommands)); RegisterRoutedCommands(typeof(ComponentCommands));
@ -128,6 +148,11 @@ namespace ICSharpCode.Core.Presentation
RegisterRoutedCommands(typeof(EditingCommands)); RegisterRoutedCommands(typeof(EditingCommands));
} }
/// <summary>
/// Register <see cref="InputBindingCategory">InputBindingCategories</see> described by codons with provided path
/// </summary>
/// <param name="caller">Caller object</param>
/// <param name="path">Path to codons</param>
public static void RegisterInputBindingCategories(object caller, string path) { public static void RegisterInputBindingCategories(object caller, string path) {
var descriptors = AddInTree.BuildItems<InputBindingCategoryDescriptor>(path, caller, false); var descriptors = AddInTree.BuildItems<InputBindingCategoryDescriptor>(path, caller, false);
@ -149,6 +174,11 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Register <see cref="RoutedUICommand" />s described by codons with provided path
/// </summary>
/// <param name="caller">Caller object</param>
/// <param name="path">Path to codons</param>
public static void RegisterRoutedUICommands(object caller, string path) public static void RegisterRoutedUICommands(object caller, string path)
{ {
var descriptors = AddInTree.BuildItems<RoutedUICommandDescriptor>(path, caller, false); var descriptors = AddInTree.BuildItems<RoutedUICommandDescriptor>(path, caller, false);
@ -157,6 +187,11 @@ namespace ICSharpCode.Core.Presentation
} }
} }
/// <summary>
/// Register command and input binding infos described by codons with provided path
/// </summary>
/// <param name="caller">Caller object</param>
/// <param name="path">Path to codons</param>
public static void RegisterCommandBindings(object caller, string path) public static void RegisterCommandBindings(object caller, string path)
{ {
var descriptors = AddInTree.BuildItems<CommandBindingDescriptor>(path, caller, false); var descriptors = AddInTree.BuildItems<CommandBindingDescriptor>(path, caller, false);
@ -218,11 +253,10 @@ namespace ICSharpCode.Core.Presentation
} }
/// <summary> /// <summary>
/// Register all input bindings from collection of <see cref="InputBindingDescriptor" />s /// Register input binding infos described by codons with provided path
/// found through given path
/// </summary> /// </summary>
/// <param name="caller">Caller object</param> /// <param name="caller">Caller object</param>
/// <param name="path">Path to collection of <see cref="InputBindingDescriptor" />s</param> /// <param name="path">Path to codons</param>
public static void RegisterInputBindings(object caller, string path) public static void RegisterInputBindings(object caller, string path)
{ {
var descriptors = AddInTree.BuildItems<InputBindingDescriptor>(path, caller, false); var descriptors = AddInTree.BuildItems<InputBindingDescriptor>(path, caller, false);

4
src/Main/ICSharpCode.Core.Presentation/CommandsService/Events/NotifyUserGestureProfileChangedEvent.cs

@ -3,12 +3,12 @@ using System;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
/// <summary> /// <summary>
/// Represent a method that will handle <see cref="ICSharpCode.Core.Presentation.UserGestureManager.CurrentProfileChanged" /> event /// Represent a method that will handle <see cref="ICSharpCode.Core.Presentation.UserGestureProfileManager.CurrentProfileChanged" /> event
/// </summary> /// </summary>
public delegate void NotifyUserGestureProfileChangedEventHandler(object sender, NotifyUserGestureProfileChangedEventArgs args); public delegate void NotifyUserGestureProfileChangedEventHandler(object sender, NotifyUserGestureProfileChangedEventArgs args);
/// <summary> /// <summary>
/// Provides data for <see cref="ICSharpCode.Core.Presentation.UserGestureManager.CurrentProfileChanged" /> event /// Provides data for <see cref="ICSharpCode.Core.Presentation.UserGestureProfileManager.CurrentProfileChanged" /> event
/// </summary> /// </summary>
public class NotifyUserGestureProfileChangedEventArgs : EventArgs public class NotifyUserGestureProfileChangedEventArgs : EventArgs
{ {

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

@ -34,6 +34,16 @@ namespace ICSharpCode.Core.Presentation
Groups = new BindingGroupCollection(); Groups = new BindingGroupCollection();
} }
/// <summary>
/// Gets or sets routed command text
///
/// This overriden text can be used to display to user different command names
/// depending on <see cref="InputBindingInfo" />
/// </summary>
public string RoutedCommandText {
get; set;
}
/// <summary> /// <summary>
/// Gets or sets default gestures associated with bindings generated by /// Gets or sets default gestures associated with bindings generated by
/// this <see cref="InputBindingInfo" /> /// this <see cref="InputBindingInfo" />
@ -54,7 +64,7 @@ namespace ICSharpCode.Core.Presentation
var oldGestures = _defaultGestures; var oldGestures = _defaultGestures;
_defaultGestures = value; _defaultGestures = value;
if(IsRegistered && (UserGestureManager.CurrentProfile == null || UserGestureManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)] == null)) { if(IsRegistered && (UserGestureProfileManager.CurrentProfile == null || UserGestureProfileManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)] == null)) {
var description = new GesturesModificationDescription( var description = new GesturesModificationDescription(
BindingInfoTemplate.CreateFromIBindingInfo(this), BindingInfoTemplate.CreateFromIBindingInfo(this),
oldGestures != null ? oldGestures.InputGesturesCollection : new InputGestureCollection(), oldGestures != null ? oldGestures.InputGesturesCollection : new InputGestureCollection(),
@ -67,7 +77,7 @@ namespace ICSharpCode.Core.Presentation
private void DefaultGestures_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) private void DefaultGestures_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{ {
if(IsRegistered && (UserGestureManager.CurrentProfile == null || UserGestureManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)] == null)) { if(IsRegistered && (UserGestureProfileManager.CurrentProfile == null || UserGestureProfileManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)] == null)) {
var newGestures = DefaultGestures.InputGesturesCollection; var newGestures = DefaultGestures.InputGesturesCollection;
var oldGestures = new InputGestureCollection(); var oldGestures = new InputGestureCollection();
oldGestures.AddRange(newGestures); oldGestures.AddRange(newGestures);
@ -97,12 +107,12 @@ namespace ICSharpCode.Core.Presentation
/// </summary> /// </summary>
public InputGestureCollection ActiveGestures { public InputGestureCollection ActiveGestures {
get { get {
if(UserGestureManager.CurrentProfile == null if(UserGestureProfileManager.CurrentProfile == null
|| UserGestureManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)] == null) { || UserGestureProfileManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)] == null) {
return DefaultGestures.InputGesturesCollection; return DefaultGestures.InputGesturesCollection;
} }
return UserGestureManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)]; return UserGestureProfileManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)];
} }
} }

72
src/Main/ICSharpCode.Core.Presentation/CommandsService/Profile/UserGestureProfile.cs

@ -8,15 +8,21 @@ using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
/// <summary> /// <summary>
/// Description of UserGesturesProfile. /// Stores user defined gestures for different actions
/// </summary> /// </summary>
public class UserGestureProfile : IEnumerable<KeyValuePair<BindingInfoTemplate, InputGestureCollection>>, ICloneable public class UserGestureProfile : IEnumerable<KeyValuePair<BindingInfoTemplate, InputGestureCollection>>
{ {
private Dictionary<BindingInfoTemplate, InputGestureCollection> userDefinedGestures = new Dictionary<BindingInfoTemplate, InputGestureCollection>(); private Dictionary<BindingInfoTemplate, InputGestureCollection> userDefinedGestures = new Dictionary<BindingInfoTemplate, InputGestureCollection>();
private string _path;
/// <summary>
/// Gets path to the file on disk where this profile is stored
/// </summary>
public string Path public string Path
{ {
get; set; get {
return _path;
}
} }
public bool ReadOnly public bool ReadOnly
@ -34,23 +40,33 @@ namespace ICSharpCode.Core.Presentation
get; set; get; set;
} }
public UserGestureProfile() /// <summary>
/// Creates new instance of <see cref="UserGestureProfile" />
/// </summary>
/// <param name="filePath">Path to a file where this profile will be stored</param>
public UserGestureProfile(string filePath)
{ {
_path = filePath;
} }
public UserGestureProfile(string name, string text, bool readOnly) /// <summary>
/// Creates new instance of <see cref="UserGestureProfile" />
/// </summary>
/// <param name="filePath">Path to a file where this profile will be stored</param>
/// <param name="name">Name of the profile</param>
/// <param name="text">Text presented to user when describing this profile</param>
/// <param name="readOnly">Determines whether profile is read-only</param>
public UserGestureProfile(string filePath, string name, string text, bool readOnly)
{ {
_path = filePath;
Name = name; Name = name;
Text = text; Text = text;
ReadOnly = readOnly; ReadOnly = readOnly;
} }
/// <summary> /// <summary>
/// Load user defined gesturs from specified file /// Load user defined gestures from file described in <see cref="UserGestureProfile.Path" />
/// </summary> /// </summary>
/// <param name="sourcePath">Path to the file containing user defined gestures</param>
public void Load() public void Load()
{ {
var xmlDocument = new XmlDocument(); var xmlDocument = new XmlDocument();
@ -80,9 +96,8 @@ namespace ICSharpCode.Core.Presentation
} }
/// <summary> /// <summary>
/// Save user defined gestures to specified file /// Save user defined gestures to file described in <see cref="UserGestureProfile.Path" />
/// </summary> /// </summary>
/// <param name="destinationPath">Path to the file containing user defined gestures</param>
public void Save() public void Save()
{ {
var xmlDocument = new XmlDocument(); var xmlDocument = new XmlDocument();
@ -134,6 +149,9 @@ namespace ICSharpCode.Core.Presentation
xmlDocument.Save(Path); xmlDocument.Save(Path);
} }
/// <summary>
/// Clear all defined gestures
/// </summary>
public void Clear() public void Clear()
{ {
var descriptions = new List<GesturesModificationDescription>(); var descriptions = new List<GesturesModificationDescription>();
@ -155,17 +173,16 @@ namespace ICSharpCode.Core.Presentation
SDCommandManager.InvokeGesturesChanged(this, args); SDCommandManager.InvokeGesturesChanged(this, args);
} }
/// <summary>
/// Assigns <see cref="InputGestureCollection" /> to <see cref="BindingInfoTemplate" />
/// representing <see cref="InputBindingInfo" />
/// </summary>
public InputGestureCollection this[BindingInfoTemplate identifier] public InputGestureCollection this[BindingInfoTemplate identifier]
{ {
get { return GetInputBindingGesture(identifier); } get { return GetInputBindingGesture(identifier); }
set { SetInputBindingGestures(identifier, value); } set { SetInputBindingGestures(identifier, value); }
} }
/// <summary>
/// Get user defined input binding gestures
/// </summary>
/// <param name="inputBindingInfoName">Input binding</param>
/// <returns>Gestures assigned to this input binding</returns>
private InputGestureCollection GetInputBindingGesture(BindingInfoTemplate identifier) private InputGestureCollection GetInputBindingGesture(BindingInfoTemplate identifier)
{ {
InputGestureCollection gestures; InputGestureCollection gestures;
@ -174,11 +191,6 @@ namespace ICSharpCode.Core.Presentation
return gestures; return gestures;
} }
/// <summary>
/// Set user defined input binding gestures
/// </summary>
/// <param name="inputBindingInfoName">Input binding name</param>
/// <param name="inputGestureCollection">Gesture assigned to this input binding</param>
private void SetInputBindingGestures(BindingInfoTemplate identifier, InputGestureCollection inputGestureCollection) private void SetInputBindingGestures(BindingInfoTemplate identifier, InputGestureCollection inputGestureCollection)
{ {
var oldGestures = GetInputBindingGesture(identifier); var oldGestures = GetInputBindingGesture(identifier);
@ -199,34 +211,28 @@ namespace ICSharpCode.Core.Presentation
InvokeGesturesChanged(this, args); InvokeGesturesChanged(this, args);
} }
/// <inheritdoc />
public IEnumerator<KeyValuePair<BindingInfoTemplate, InputGestureCollection>> GetEnumerator() public IEnumerator<KeyValuePair<BindingInfoTemplate, InputGestureCollection>> GetEnumerator()
{ {
return userDefinedGestures.GetEnumerator(); return userDefinedGestures.GetEnumerator();
} }
/// <inheritdoc />
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{ {
return userDefinedGestures.GetEnumerator(); return userDefinedGestures.GetEnumerator();
} }
/// <summary>
/// Occurs when any gestures defined in this profile are changed, removed or added
/// </summary>
public event NotifyGesturesChangedEventHandler GesturesChanged; public event NotifyGesturesChangedEventHandler GesturesChanged;
public void InvokeGesturesChanged(object sender, NotifyGesturesChangedEventArgs args) private void InvokeGesturesChanged(object sender, NotifyGesturesChangedEventArgs args)
{ {
if(GesturesChanged != null) { if(GesturesChanged != null) {
GesturesChanged.Invoke(sender, args); GesturesChanged.Invoke(sender, args);
} }
} }
public object Clone()
{
var profile = new UserGestureProfile(Name, Text, ReadOnly);
foreach(var definedGesture in userDefinedGestures) {
profile.userDefinedGestures.Add(definedGesture.Key, new InputGestureCollection(definedGesture.Value));
}
return profile;
}
} }
} }

28
src/Main/ICSharpCode.Core.Presentation/CommandsService/Profile/UserGestureManager.cs → src/Main/ICSharpCode.Core.Presentation/CommandsService/Profile/UserGestureProfileManager.cs

@ -8,13 +8,14 @@ using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
/// <summary> /// <summary>
/// Manages user defined gestures /// Manages active <see cref="UserGestureProfile" />
/// </summary> /// </summary>
public static class UserGestureManager public static class UserGestureProfileManager
{ {
private static UserGestureProfile _currentProfile;
private static string _userGestureProfilesDirectory; private static string _userGestureProfilesDirectory;
static UserGestureManager() static UserGestureProfileManager()
{ {
if(PropertyService.ConfigDirectory != null) { if(PropertyService.ConfigDirectory != null) {
_userGestureProfilesDirectory = Path.Combine(PropertyService.ConfigDirectory, "UserGestureProfiles"); _userGestureProfilesDirectory = Path.Combine(PropertyService.ConfigDirectory, "UserGestureProfiles");
@ -25,7 +26,7 @@ namespace ICSharpCode.Core.Presentation
} }
/// <summary> /// <summary>
/// Path to file where current user defined gestures are set /// Gets path to directory where user gesture profiles are stored as XML files
/// </summary> /// </summary>
public static string UserGestureProfilesDirectory public static string UserGestureProfilesDirectory
{ {
@ -34,8 +35,11 @@ namespace ICSharpCode.Core.Presentation
} }
} }
private static UserGestureProfile _currentProfile; /// <summary>
/// Gets or sets current profile.
///
/// Current profile can change <see cref="InputBindingInfo.ActiveGestures" />
/// </summary>
public static UserGestureProfile CurrentProfile public static UserGestureProfile CurrentProfile
{ {
get { get {
@ -53,20 +57,28 @@ namespace ICSharpCode.Core.Presentation
} }
if(_currentProfile != oldProfile) { if(_currentProfile != oldProfile) {
InvokeCurrentProfileChanged(typeof(UserGestureManager), new NotifyUserGestureProfileChangedEventArgs(oldProfile, _currentProfile)); InvokeCurrentProfileChanged(typeof(UserGestureProfileManager), new NotifyUserGestureProfileChangedEventArgs(oldProfile, _currentProfile));
} }
} }
} }
/// <summary>
/// Occurs when <see cref="CurrentProfile" /> is changes
/// </summary>
public static event NotifyUserGestureProfileChangedEventHandler CurrentProfileChanged; public static event NotifyUserGestureProfileChangedEventHandler CurrentProfileChanged;
public static void InvokeCurrentProfileChanged(object sender, NotifyUserGestureProfileChangedEventArgs args) private static void InvokeCurrentProfileChanged(object sender, NotifyUserGestureProfileChangedEventArgs args)
{ {
if(CurrentProfileChanged != null) { if(CurrentProfileChanged != null) {
CurrentProfileChanged.Invoke(sender, args); CurrentProfileChanged.Invoke(sender, args);
} }
} }
/// <summary>
/// Reset <see cref="UserGestureProfileManager" />
///
/// Intended to use for unit tests only
/// </summary>
public static void Reset() public static void Reset()
{ {
CurrentProfile = null; CurrentProfile = null;

3
src/Main/ICSharpCode.Core.Presentation/CommandsService/Utils/IObservableCollection.cs

@ -5,6 +5,9 @@ using System.Collections.Specialized;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
/// <summary>
/// Interfaces describing observable collection
/// </summary>
public interface IObservableCollection<T> : ICollection<T>, INotifyCollectionChanged public interface IObservableCollection<T> : ICollection<T>, INotifyCollectionChanged
{ {
} }

18
src/Main/ICSharpCode.Core.Presentation/CommandsService/Utils/WeakReferenceEqualirtyComparer.cs

@ -3,8 +3,17 @@ using System.Collections.Generic;
namespace ICSharpCode.Core.Presentation namespace ICSharpCode.Core.Presentation
{ {
public class WeakReferenceEqualirtyComparer : IEqualityComparer<WeakReference> /// <summary>
/// Compares two instances wrapped inside <see cref="WeakReference" />
/// </summary>
public class WeakReferenceTargetEqualirtyComparer : IEqualityComparer<WeakReference>
{ {
/// <summary>
/// Determines whether two instances found in <see cref="WeakReference.Target" /> are equal
/// </summary>
/// <param name="container1">First <see cref="WeakReference" /> container</param>
/// <param name="container2">Second <see cref="WeakReference" /> container</param>
/// <returns>Returns <code>true</code> if instances in <see cref="WeakReference.Target" /> are equal; otherwise <code>false</code></returns>
bool IEqualityComparer<WeakReference>.Equals(WeakReference container1, WeakReference container2) bool IEqualityComparer<WeakReference>.Equals(WeakReference container1, WeakReference container2)
{ {
object value1 = null; object value1 = null;
@ -27,7 +36,12 @@ namespace ICSharpCode.Core.Presentation
return value1 == value2; return value1 == value2;
} }
int IEqualityComparer<WeakReference>.GetHashCode(WeakReference container) /// <summary>
/// Get hash code of instance found in <see cref="WeakReference.Target" />
/// </summary>
/// <param name="container"><see cref="WeakReference" /> container</param>
/// <returns>Returns hash code of the instace found in <see cref="WeakReference.Target" /></returns>
int IEqualityComparer<WeakReference>.GetHashCode(WeakReference container)
{ {
object target = null; object target = null;

0
src/Main/ICSharpCode.Core.Presentation/CommandsService/WpfCommandWrapper.cs → src/Main/ICSharpCode.Core.Presentation/CommandsService/Utils/WpfCommandWrapper.cs

4
src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj

@ -82,11 +82,11 @@
<Compile Include="CommandsService\Events\NotifyUserGestureProfileChangedEvent.cs" /> <Compile Include="CommandsService\Events\NotifyUserGestureProfileChangedEvent.cs" />
<Compile Include="CommandsService\InputBindingCategory.cs" /> <Compile Include="CommandsService\InputBindingCategory.cs" />
<Compile Include="CommandsService\InputBindingInfo.cs" /> <Compile Include="CommandsService\InputBindingInfo.cs" />
<Compile Include="CommandsService\Profile\UserGestureManager.cs" /> <Compile Include="CommandsService\Profile\UserGestureProfileManager.cs" />
<Compile Include="CommandsService\Profile\UserGestureProfile.cs" /> <Compile Include="CommandsService\Profile\UserGestureProfile.cs" />
<Compile Include="CommandsService\Utils\IObservableCollection.cs" /> <Compile Include="CommandsService\Utils\IObservableCollection.cs" />
<Compile Include="CommandsService\Utils\WeakReferenceEqualirtyComparer.cs" /> <Compile Include="CommandsService\Utils\WeakReferenceEqualirtyComparer.cs" />
<Compile Include="CommandsService\WpfCommandWrapper.cs" /> <Compile Include="CommandsService\Utils\WpfCommandWrapper.cs" />
<Compile Include="ConditionalSeparator.cs" /> <Compile Include="ConditionalSeparator.cs" />
<Compile Include="DropDownButton.cs" /> <Compile Include="DropDownButton.cs" />
<Compile Include="GetBitmapExtension.cs" /> <Compile Include="GetBitmapExtension.cs" />

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

@ -326,16 +326,16 @@ namespace ICSharpCode.Core.Presentation.Tests
} }
}; };
var profile = new UserGestureProfile(); var profile = new UserGestureProfile("");
profile[identifier] = newGestures; profile[identifier] = newGestures;
results.Clear(); results.Clear();
UserGestureManager.CurrentProfile = profile; UserGestureProfileManager.CurrentProfile = profile;
Assert.IsTrue(results.Contains("SetResult")); Assert.IsTrue(results.Contains("SetResult"));
Assert.IsFalse(results.Contains("ResetResult")); Assert.IsFalse(results.Contains("ResetResult"));
results.Clear(); results.Clear();
UserGestureManager.CurrentProfile = null; UserGestureProfileManager.CurrentProfile = null;
Assert.IsFalse(results.Contains("SetResult")); Assert.IsFalse(results.Contains("SetResult"));
Assert.IsTrue(results.Contains("ResetResult")); Assert.IsTrue(results.Contains("ResetResult"));
} }
@ -406,9 +406,9 @@ namespace ICSharpCode.Core.Presentation.Tests
Assert.IsTrue(results.Contains("GestureRemoved")); Assert.IsTrue(results.Contains("GestureRemoved"));
Assert.IsFalse(results.Contains("GestureAdded")); Assert.IsFalse(results.Contains("GestureAdded"));
var profile = new UserGestureProfile(); var profile = new UserGestureProfile("");
profile[BindingInfoTemplate.CreateFromIBindingInfo(bindingInfo)] = new InputGestureCollection(); profile[BindingInfoTemplate.CreateFromIBindingInfo(bindingInfo)] = new InputGestureCollection();
UserGestureManager.CurrentProfile = profile; UserGestureProfileManager.CurrentProfile = profile;
// User defined gestures are used // User defined gestures are used
results.Clear(); results.Clear();

2
src/Main/ICSharpCode.Core.Presentation/Test/RelationshipMapTests.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.Core.Presentation.Tests
[Test] [Test]
public void WeakEqualityComparerSupportTest() public void WeakEqualityComparerSupportTest()
{ {
var map = new RelationshipMap<string, WeakReference>(null, new WeakReferenceEqualirtyComparer()); var map = new RelationshipMap<string, WeakReference>(null, new WeakReferenceTargetEqualirtyComparer());
var uiElement = new UIElement(); var uiElement = new UIElement();
var container = new WeakReference(uiElement); var container = new WeakReference(uiElement);
map.Add("test", container); map.Add("test", container);

8
src/Main/ICSharpCode.Core.Presentation/Test/UserDefinedGestureProfileTests.cs

@ -23,8 +23,8 @@ namespace ICSharpCode.Core.Presentation.Tests
[SetUp] [SetUp]
public void SetuUp() public void SetuUp()
{ {
UserGestureManager.CurrentProfile = null; UserGestureProfileManager.CurrentProfile = null;
profile = new UserGestureProfile { Name = "TestProfile1" }; profile = new UserGestureProfile("") { Name = "TestProfile1" };
gesture = (KeyGesture)new KeyGestureConverter().ConvertFromInvariantString("Ctrl+A"); gesture = (KeyGesture)new KeyGestureConverter().ConvertFromInvariantString("Ctrl+A");
binding = new InputBindingInfo { OwnerTypeName="Binding", RoutedCommandName="Binding" }; binding = new InputBindingInfo { OwnerTypeName="Binding", RoutedCommandName="Binding" };
} }
@ -47,7 +47,7 @@ namespace ICSharpCode.Core.Presentation.Tests
var userDefinedGestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromInvariantString("Ctrl+B;Ctrl+C"); var userDefinedGestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromInvariantString("Ctrl+B;Ctrl+C");
profile[BindingInfoTemplate.CreateFromIBindingInfo(binding)] = userDefinedGestures; profile[BindingInfoTemplate.CreateFromIBindingInfo(binding)] = userDefinedGestures;
UserGestureManager.CurrentProfile = profile; UserGestureProfileManager.CurrentProfile = profile;
// Default gestures stay the same // Default gestures stay the same
Assert.AreEqual(1, binding.DefaultGestures.Count); Assert.AreEqual(1, binding.DefaultGestures.Count);
@ -67,7 +67,7 @@ namespace ICSharpCode.Core.Presentation.Tests
var userDefinedGestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromInvariantString("Ctrl+B;Ctrl+C"); var userDefinedGestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromInvariantString("Ctrl+B;Ctrl+C");
profile[BindingInfoTemplate.CreateFromIBindingInfo(binding)] = userDefinedGestures; profile[BindingInfoTemplate.CreateFromIBindingInfo(binding)] = userDefinedGestures;
UserGestureManager.CurrentProfile = profile; UserGestureProfileManager.CurrentProfile = profile;
// Default gestures are used because current profile doesn't contain modifications to this gesture // Default gestures are used because current profile doesn't contain modifications to this gesture
Assert.AreEqual(1, binding2.ActiveGestures.Count); Assert.AreEqual(1, binding2.ActiveGestures.Count);

Loading…
Cancel
Save