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. 91
      src/Main/ICSharpCode.Core.Presentation/CommandsService/Collections/BindingGroupCollection.cs
  6. 38
      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. 16
      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 @@ @@ -1,115 +1,113 @@

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

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

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

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

@ -21,7 +21,7 @@ namespace ICSharpCode.Core.Presentation @@ -21,7 +21,7 @@ namespace ICSharpCode.Core.Presentation
public class BindingGroup
{
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();
/// <summary>
@ -114,7 +114,7 @@ namespace ICSharpCode.Core.Presentation @@ -114,7 +114,7 @@ namespace ICSharpCode.Core.Presentation
/// <summary>
/// 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>
/// <param name="instances">Collection of examined types</param>
/// <returns>Generated instances</returns>

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

@ -19,6 +19,7 @@ namespace ICSharpCode.Core.Presentation @@ -19,6 +19,7 @@ namespace ICSharpCode.Core.Presentation
private string _ownerInstanceName;
private string _ownerTypeName;
private string routedCommandName;
private AddIn _addIn;
/// <summary>
/// Get or sets binding groups
@ -66,22 +67,25 @@ namespace ICSharpCode.Core.Presentation @@ -66,22 +67,25 @@ namespace ICSharpCode.Core.Presentation
}
}
/// <summary>
/// Stores name of named instance to which this binding belongs. When this binding is registered a
/// <see cref="InputBinding" /> is assigned to owner instance
/// Gets name of named owner instance as registered using <see cref="ICSharpCode.Core.Presentation.CommandManager.RegisterNamedUIElement" />
///
/// If this attribute is used <see cref="OwnerTypeName" /> can not be set
///
/// If this attribute is used <see cref="OwnerInstance" />, <see cref="OwnerType" /> and
/// <see cref="OwnerTypeName" /> can not be set
/// This attribute can't be set while <see cref="InputBindingInfo" /> or <see cref="CommandBindingInfo" />
/// is registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary>
public virtual string OwnerInstanceName {
get {
return _ownerInstanceName;
}
set {
if(_ownerInstanceName != null || _ownerTypeName != null) {
throw new ArgumentException("This binding already has an owner");
if(_ownerTypeName != null) {
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;
@ -89,11 +93,7 @@ namespace ICSharpCode.Core.Presentation @@ -89,11 +93,7 @@ namespace ICSharpCode.Core.Presentation
}
/// <summary>
/// Stores owner instance to which this binding belongs. When this binding is registered a
/// <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
/// Gets collection of instances registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" /> by name found in <see cref="OwnerInstanceName" /> property
/// </summary>
public ICollection<UIElement> OwnerInstances {
get {
@ -106,11 +106,12 @@ namespace ICSharpCode.Core.Presentation @@ -106,11 +106,12 @@ namespace ICSharpCode.Core.Presentation
}
/// <summary>
/// Stores name of owner type. Full name with assembly should be used. When this binding is
/// registered <see cref="InputBinding" /> is assigned to all instances of provided class
/// Gets name of named owner type as registered using <see cref="ICSharpCode.Core.Presentation.CommandManager.RegisterNamedUIType" />
///
/// If this attribute is used <see cref="OwnerInstanceName" /> can not be set
///
/// If this attribute is used <see cref="OwnerInstance" />, <see cref="OwnerInstanceName" /> and
/// <see cref="OwnerType" /> can not be set
/// This attribute can't be set while <see cref="InputBindingInfo" /> or <see cref="CommandBindingInfo" />
/// is registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary>
public virtual string OwnerTypeName
{
@ -118,8 +119,12 @@ namespace ICSharpCode.Core.Presentation @@ -118,8 +119,12 @@ namespace ICSharpCode.Core.Presentation
return _ownerTypeName;
}
set {
if(_ownerInstanceName != null || _ownerTypeName != null) {
throw new ArgumentException("This binding already has an owner");
if(_ownerTypeName != null) {
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;
@ -127,11 +132,7 @@ namespace ICSharpCode.Core.Presentation @@ -127,11 +132,7 @@ namespace ICSharpCode.Core.Presentation
}
/// <summary>
/// Stores owner type. When this binding is registered <see cref="InputBinding" />
/// 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
/// Gets collection of types registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" /> by name found in <see cref="OwnerInstanceName" /> property
/// </summary>
public ICollection<Type> OwnerTypes {
get {
@ -144,30 +145,27 @@ namespace ICSharpCode.Core.Presentation @@ -144,30 +145,27 @@ namespace ICSharpCode.Core.Presentation
}
/// <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
/// </summary>
/// <seealso cref="RoutedCommand"></seealso>
public string RoutedCommandText {
get; set;
}
/// <summary>
/// Name of the routed command which will be invoked when this binding is triggered
/// This attribute can't be set while <see cref="InputBindingInfo" /> or <see cref="CommandBindingInfo" />
/// is registered in <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary>
public virtual string RoutedCommandName {
get {
return routedCommandName;
}
set {
if(IsRegistered) {
throw new ArgumentException("Can not change routed command while binding info is registered");
}
routedCommandName = value;
}
}
/// <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>
public RoutedUICommand RoutedCommand {
get {
@ -175,19 +173,38 @@ namespace ICSharpCode.Core.Presentation @@ -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
{
get; set;
get; internal set;
}
/// <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>
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;
@ -209,8 +226,10 @@ namespace ICSharpCode.Core.Presentation @@ -209,8 +226,10 @@ namespace ICSharpCode.Core.Presentation
}
/// <summary>
/// Updates owner bindings
/// Handles <see cref="ICSharpCode.Core.Presentation.CommandManager.BindingsChanged" /> event
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="args">Event data</param>
public void BindingsChangedHandler(object sender, NotifyBindingsChangedEventArgs args)
{
if(!IsRegistered || RoutedCommand == null || (OwnerTypes == null && OwnerInstances == null)) {
@ -240,16 +259,48 @@ namespace ICSharpCode.Core.Presentation @@ -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()
{
PopulateOwnerInstancesWithBindings(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();
/// <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);
/// <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);
}
}

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

@ -9,12 +9,15 @@ using ICSharpCode.Core; @@ -9,12 +9,15 @@ using ICSharpCode.Core;
namespace ICSharpCode.Core.Presentation
{
/// <summary>
/// Observable collection of <see cref="BindingGroup" />
/// </summary>
public class BindingGroupCollection : IObservableCollection<BindingGroup>
{
private ObservableCollection<BindingGroup> _bindingGroups = new ObservableCollection<BindingGroup>();
private event NotifyCollectionChangedEventHandler _bindingGroupsCollectionChanged;
/// <inheritdoc />
public event NotifyCollectionChangedEventHandler CollectionChanged
{
add {
@ -27,6 +30,9 @@ namespace ICSharpCode.Core.Presentation @@ -27,6 +30,9 @@ namespace ICSharpCode.Core.Presentation
}
}
/// <summary>
/// Gets <see cref="BindingGroupCollection" /> containing all nested binding groups
/// </summary>
public BindingGroupCollection FlatNesteGroups
{
get {
@ -42,7 +48,12 @@ namespace ICSharpCode.Core.Presentation @@ -42,7 +48,12 @@ namespace ICSharpCode.Core.Presentation
}
}
public bool IsAttachedTo(UIElement instance)
/// <summary>
/// Determines whether <see cref="UIElement" /> instance 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 IsInstanceRegistered(UIElement instance)
{
foreach(var bindingGroup in FlatNesteGroups) {
if(bindingGroup.IsInstanceRegistered(instance)) {
@ -53,11 +64,17 @@ namespace ICSharpCode.Core.Presentation @@ -53,11 +64,17 @@ namespace ICSharpCode.Core.Presentation
return false;
}
public bool IsAttachedToAny(ICollection<UIElement> instances)
/// <summary>
/// Determines whether any <see cref="UIElement" /> instance from provided collection
/// 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(IsAttachedTo(instance)) {
if(IsInstanceRegistered(instance)) {
return true;
}
}
@ -66,6 +83,12 @@ namespace ICSharpCode.Core.Presentation @@ -66,6 +83,12 @@ namespace ICSharpCode.Core.Presentation
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>();
@ -78,6 +101,12 @@ namespace ICSharpCode.Core.Presentation @@ -78,6 +101,12 @@ namespace ICSharpCode.Core.Presentation
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)
{
var attachedInstances = new HashSet<UIElement>();
@ -90,18 +119,26 @@ namespace ICSharpCode.Core.Presentation @@ -90,18 +119,26 @@ namespace ICSharpCode.Core.Presentation
return attachedInstances;
}
/// <summary>
/// Number of <see cref="BindingGroup" /> instances in this collection
/// </summary>
public int Count {
get {
return _bindingGroups.Count;
}
}
/// <inheritdoc />
public bool IsReadOnly {
get {
return false;
}
}
/// <summary>
/// Add <see cref="BindingGroup" /> to this collection
/// </summary>
/// <param name="bindingGroup"></param>
public void Add(BindingGroup bindingGroup)
{
if(bindingGroup == null) {
@ -113,6 +150,9 @@ namespace ICSharpCode.Core.Presentation @@ -113,6 +150,9 @@ namespace ICSharpCode.Core.Presentation
}
}
/// <summary>
/// Remove all instances of <see cref="BindingGroup" /> from this collection
/// </summary>
public void Clear()
{
var itemsBackup = _bindingGroups;
@ -131,48 +171,55 @@ namespace ICSharpCode.Core.Presentation @@ -131,48 +171,55 @@ namespace ICSharpCode.Core.Presentation
}
}
public bool ContainsNestedAny(BindingGroupCollection bindingGroups)
{
return FlatNesteGroups.ContainsAnyFromCollection(bindingGroups);
}
public bool ContainsNested(BindingGroup bindingGroup)
/// <summary>
/// Add many instances of <see cref="BindingGroup" /> to this collection
/// </summary>
/// <param name="bindingGroups"></param>
public void AddRange(IEnumerable<BindingGroup> bindingGroups)
{
return FlatNesteGroups.Contains(bindingGroup);
foreach(var bindingGroup in bindingGroups) {
Add(bindingGroup);
}
public bool ContainsAny(BindingGroupCollection bindingGroups)
{
return FlatNesteGroups.ContainsAnyFromCollection(bindingGroups);
}
/// <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)
{
return _bindingGroups.Contains(bindingGroup);
}
public void AddRange(IEnumerable<BindingGroup> bindingGroups)
{
foreach(var bindingGroup in bindingGroups) {
Add(bindingGroup);
}
}
/// <summary>
/// Copy this collection to array
/// </summary>
/// <param name="array">Array of <see cref="BindingGroup" /> instances</param>
/// <param name="arrayIndex">Copy start index</param>
public void CopyTo(BindingGroup[] array, int 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)
{
return _bindingGroups.Remove(bindingGroup);
}
/// <inheritdoc />
public IEnumerator<BindingGroup> GetEnumerator()
{
return _bindingGroups.GetEnumerator();
}
/// <inheritdoc />
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return _bindingGroups.GetEnumerator();

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

@ -9,7 +9,7 @@ using System.Reflection; @@ -9,7 +9,7 @@ using System.Reflection;
namespace ICSharpCode.Core.Presentation
{
/// <summary>
/// Description of AtomicBindingInfoTemplateDictionary.
/// Holds objects of type T which can be searched by <see cref="BindingInfoTemplate" />
/// </summary>
public class BindingInfoTemplateDictionary<T>
{
@ -18,6 +18,11 @@ namespace ICSharpCode.Core.Presentation @@ -18,6 +18,11 @@ namespace ICSharpCode.Core.Presentation
static PropertyInfo OwnerTypeNameProperty;
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()
{
var t = typeof(BindingInfoTemplate);
@ -27,8 +32,11 @@ namespace ICSharpCode.Core.Presentation @@ -27,8 +32,11 @@ namespace ICSharpCode.Core.Presentation
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)
{
foreach(var wildCardTemplate in GetWildCardTemplates(template)) {
@ -40,6 +48,13 @@ namespace ICSharpCode.Core.Presentation @@ -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)
{
var bucket = FindBucket(template);
@ -52,7 +67,7 @@ namespace ICSharpCode.Core.Presentation @@ -52,7 +67,7 @@ namespace ICSharpCode.Core.Presentation
return null;
}
public HashSet<T> FindBucket(BindingInfoTemplate template)
private HashSet<T> FindBucket(BindingInfoTemplate template)
{
HashSet<T> bucket;
dictionary.TryGetValue(template, out bucket);
@ -63,6 +78,10 @@ namespace ICSharpCode.Core.Presentation @@ -63,6 +78,10 @@ namespace ICSharpCode.Core.Presentation
return bucket;
}
/// <summary>
/// Remove item from template
/// </summary>
/// <param name="item"></param>
public void Remove(T item)
{
foreach(var pair in dictionary) {
@ -70,14 +89,9 @@ namespace ICSharpCode.Core.Presentation @@ -70,14 +89,9 @@ namespace ICSharpCode.Core.Presentation
}
}
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()
{
dictionary.Clear();

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

@ -6,18 +6,22 @@ using System.Collections.ObjectModel; @@ -6,18 +6,22 @@ using System.Collections.ObjectModel;
namespace ICSharpCode.Core.Presentation
{
/// <summary>
/// Description of InputBindingCategoryCollection.
/// Observable collection containing instances of <see cref="InputBindingCategory" />
/// </summary>
public class InputBindingCategoryCollection : IObservableCollection<InputBindingCategory>
{
private ObservableCollection<InputBindingCategory> categories = new ObservableCollection<InputBindingCategory>();
/// <summary>
/// Gets number of elements in this <see cref="InputBindingCategoryCollection" />
/// </summary>
public int Count {
get {
return categories.Count;
}
}
/// <inheritdoc />
public bool IsReadOnly {
get {
return false;
@ -26,6 +30,7 @@ namespace ICSharpCode.Core.Presentation @@ -26,6 +30,7 @@ namespace ICSharpCode.Core.Presentation
private event NotifyCollectionChangedEventHandler categoriesCollectionChanged;
/// <inheritdoc />
public event NotifyCollectionChangedEventHandler CollectionChanged
{
add {
@ -38,6 +43,10 @@ namespace ICSharpCode.Core.Presentation @@ -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)
{
if(category == null) {
@ -49,6 +58,9 @@ namespace ICSharpCode.Core.Presentation @@ -49,6 +58,9 @@ namespace ICSharpCode.Core.Presentation
}
}
/// <summary>
/// Removes all categories from this collection
/// </summary>
public void Clear()
{
var categoriesBackup = categories;
@ -67,11 +79,20 @@ namespace ICSharpCode.Core.Presentation @@ -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)
{
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)
{
foreach(var category in categories) {
@ -79,21 +100,29 @@ namespace ICSharpCode.Core.Presentation @@ -79,21 +100,29 @@ namespace ICSharpCode.Core.Presentation
}
}
/// <inheritdoc />
public void CopyTo(InputBindingCategory[] array, int 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)
{
return categories.Remove(category);
}
/// <inheritdoc />
public IEnumerator<InputBindingCategory> GetEnumerator()
{
return categories.GetEnumerator();
}
/// <inheritdoc />
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return categories.GetEnumerator();

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

@ -1,14 +1,11 @@ @@ -1,14 +1,11 @@
/*
* Created by SharpDevelop.
* User: Sergej Andrejev
* Date: 7/24/2009
* Time: 6:56 PM
*/
using System;
using System.Collections.Generic;
namespace ICSharpCode.Core.Presentation
{
/// <summary>
/// Handles many-to-many relationship between instances of T1 and T2 type
/// </summary>
public class RelationshipMap<T1, T2>
{
private static Dictionary<T1, HashSet<T2>> forwardMap;
@ -17,12 +14,20 @@ namespace ICSharpCode.Core.Presentation @@ -17,12 +14,20 @@ namespace ICSharpCode.Core.Presentation
private IEqualityComparer<T1> t1Comparer;
private IEqualityComparer<T2> t2Comparer;
/// <summary>
/// Creates new instance of <see cref="RelationshipMap" />
/// </summary>
public RelationshipMap()
{
forwardMap = new Dictionary<T1, HashSet<T2>>();
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)
{
this.t1Comparer = t1Comparer;
@ -32,6 +37,12 @@ namespace ICSharpCode.Core.Presentation @@ -32,6 +37,12 @@ namespace ICSharpCode.Core.Presentation
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)
{
if(!forwardMap.ContainsKey(item1)){
@ -49,6 +60,11 @@ namespace ICSharpCode.Core.Presentation @@ -49,6 +60,11 @@ namespace ICSharpCode.Core.Presentation
//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) {
HashSet<T2> mappedValues;
forwardMap.TryGetValue(item, out mappedValues);
@ -56,6 +72,11 @@ namespace ICSharpCode.Core.Presentation @@ -56,6 +72,11 @@ namespace ICSharpCode.Core.Presentation
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) {
HashSet<T1> mappedValues;
backwardMap.TryGetValue(item, out mappedValues);
@ -63,6 +84,12 @@ namespace ICSharpCode.Core.Presentation @@ -63,6 +84,12 @@ namespace ICSharpCode.Core.Presentation
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)
{
var forwardBucket = MapForward(item1);
@ -74,6 +101,9 @@ namespace ICSharpCode.Core.Presentation @@ -74,6 +101,9 @@ namespace ICSharpCode.Core.Presentation
return forwardRemoveResult || backwardRemoveResult;
}
/// <summary>
/// Remove all associations from collection
/// </summary>
public void Clear()
{
forwardMap.Clear();

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

@ -51,7 +51,7 @@ namespace ICSharpCode.Core.Presentation @@ -51,7 +51,7 @@ namespace ICSharpCode.Core.Presentation
internal static Dictionary<string, System.Windows.Input.ICommand> commands = new Dictionary<string, System.Windows.Input.ICommand>();
// 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>();
// Registered input binding categories
@ -62,14 +62,13 @@ namespace ICSharpCode.Core.Presentation @@ -62,14 +62,13 @@ namespace ICSharpCode.Core.Presentation
// Load gesture profile first
var path = PropertyService.Get("ICSharpCode.Core.Presentation.UserDefinedGesturesManager.UserGestureProfilesDirectory");
if(path != null && File.Exists(path)) {
var profile = new UserGestureProfile();
profile.Path = path;
var profile = new UserGestureProfile(path);
profile.Load();
UserGestureManager.CurrentProfile = profile;
UserGestureProfileManager.CurrentProfile = profile;
}
UserGestureManager.CurrentProfileChanged += UserDefinedGesturesManager_CurrentProfileChanged;
UserGestureProfileManager.CurrentProfileChanged += UserDefinedGesturesManager_CurrentProfileChanged;
}
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; @@ -11,10 +11,16 @@ using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation
{
/// <summary>
/// Description of CommandsService.
/// Utility class to help manage commands and bindings
/// </summary>
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)
{
var menuRoots = AddInTree.BuildItems<MenuLocationDescriptor>(menuRootsLocationPath, caller);
@ -23,6 +29,13 @@ namespace ICSharpCode.Core.Presentation @@ -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)
{
var menuItemNode = AddInTree.GetTreeNode(menuPath);
@ -101,6 +114,10 @@ namespace ICSharpCode.Core.Presentation @@ -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) {
var typeMembers = type.GetMembers(BindingFlags.Static | BindingFlags.Public | BindingFlags.GetField | BindingFlags.GetProperty);
foreach(var member in typeMembers) {
@ -120,6 +137,9 @@ namespace ICSharpCode.Core.Presentation @@ -120,6 +137,9 @@ namespace ICSharpCode.Core.Presentation
}
}
/// <summary>
/// Register default .Net routed commands
/// </summary>
public static void RegisterBuiltInRoutedUICommands() {
RegisterRoutedCommands(typeof(ApplicationCommands));
RegisterRoutedCommands(typeof(ComponentCommands));
@ -128,6 +148,11 @@ namespace ICSharpCode.Core.Presentation @@ -128,6 +148,11 @@ namespace ICSharpCode.Core.Presentation
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) {
var descriptors = AddInTree.BuildItems<InputBindingCategoryDescriptor>(path, caller, false);
@ -149,6 +174,11 @@ namespace ICSharpCode.Core.Presentation @@ -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)
{
var descriptors = AddInTree.BuildItems<RoutedUICommandDescriptor>(path, caller, false);
@ -157,6 +187,11 @@ namespace ICSharpCode.Core.Presentation @@ -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)
{
var descriptors = AddInTree.BuildItems<CommandBindingDescriptor>(path, caller, false);
@ -218,11 +253,10 @@ namespace ICSharpCode.Core.Presentation @@ -218,11 +253,10 @@ namespace ICSharpCode.Core.Presentation
}
/// <summary>
/// Register all input bindings from collection of <see cref="InputBindingDescriptor" />s
/// found through given path
/// Register input binding infos described by codons with provided path
/// </summary>
/// <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)
{
var descriptors = AddInTree.BuildItems<InputBindingDescriptor>(path, caller, false);

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

@ -3,12 +3,12 @@ using System; @@ -3,12 +3,12 @@ using System;
namespace ICSharpCode.Core.Presentation
{
/// <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>
public delegate void NotifyUserGestureProfileChangedEventHandler(object sender, NotifyUserGestureProfileChangedEventArgs args);
/// <summary>
/// Provides data for <see cref="ICSharpCode.Core.Presentation.UserGestureManager.CurrentProfileChanged" /> event
/// Provides data for <see cref="ICSharpCode.Core.Presentation.UserGestureProfileManager.CurrentProfileChanged" /> event
/// </summary>
public class NotifyUserGestureProfileChangedEventArgs : EventArgs
{

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

@ -34,6 +34,16 @@ namespace ICSharpCode.Core.Presentation @@ -34,6 +34,16 @@ namespace ICSharpCode.Core.Presentation
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>
/// Gets or sets default gestures associated with bindings generated by
/// this <see cref="InputBindingInfo" />
@ -54,7 +64,7 @@ namespace ICSharpCode.Core.Presentation @@ -54,7 +64,7 @@ namespace ICSharpCode.Core.Presentation
var oldGestures = _defaultGestures;
_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(
BindingInfoTemplate.CreateFromIBindingInfo(this),
oldGestures != null ? oldGestures.InputGesturesCollection : new InputGestureCollection(),
@ -67,7 +77,7 @@ namespace ICSharpCode.Core.Presentation @@ -67,7 +77,7 @@ namespace ICSharpCode.Core.Presentation
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 oldGestures = new InputGestureCollection();
oldGestures.AddRange(newGestures);
@ -97,12 +107,12 @@ namespace ICSharpCode.Core.Presentation @@ -97,12 +107,12 @@ namespace ICSharpCode.Core.Presentation
/// </summary>
public InputGestureCollection ActiveGestures {
get {
if(UserGestureManager.CurrentProfile == null
|| UserGestureManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)] == null) {
if(UserGestureProfileManager.CurrentProfile == null
|| UserGestureProfileManager.CurrentProfile[BindingInfoTemplate.CreateFromIBindingInfo(this)] == null) {
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; @@ -8,15 +8,21 @@ using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation
{
/// <summary>
/// Description of UserGesturesProfile.
/// Stores user defined gestures for different actions
/// </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 string _path;
/// <summary>
/// Gets path to the file on disk where this profile is stored
/// </summary>
public string Path
{
get; set;
get {
return _path;
}
}
public bool ReadOnly
@ -34,23 +40,33 @@ namespace ICSharpCode.Core.Presentation @@ -34,23 +40,33 @@ namespace ICSharpCode.Core.Presentation
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;
Text = text;
ReadOnly = readOnly;
}
/// <summary>
/// Load user defined gesturs from specified file
/// Load user defined gestures from file described in <see cref="UserGestureProfile.Path" />
/// </summary>
/// <param name="sourcePath">Path to the file containing user defined gestures</param>
public void Load()
{
var xmlDocument = new XmlDocument();
@ -80,9 +96,8 @@ namespace ICSharpCode.Core.Presentation @@ -80,9 +96,8 @@ namespace ICSharpCode.Core.Presentation
}
/// <summary>
/// Save user defined gestures to specified file
/// Save user defined gestures to file described in <see cref="UserGestureProfile.Path" />
/// </summary>
/// <param name="destinationPath">Path to the file containing user defined gestures</param>
public void Save()
{
var xmlDocument = new XmlDocument();
@ -134,6 +149,9 @@ namespace ICSharpCode.Core.Presentation @@ -134,6 +149,9 @@ namespace ICSharpCode.Core.Presentation
xmlDocument.Save(Path);
}
/// <summary>
/// Clear all defined gestures
/// </summary>
public void Clear()
{
var descriptions = new List<GesturesModificationDescription>();
@ -155,17 +173,16 @@ namespace ICSharpCode.Core.Presentation @@ -155,17 +173,16 @@ namespace ICSharpCode.Core.Presentation
SDCommandManager.InvokeGesturesChanged(this, args);
}
/// <summary>
/// Assigns <see cref="InputGestureCollection" /> to <see cref="BindingInfoTemplate" />
/// representing <see cref="InputBindingInfo" />
/// </summary>
public InputGestureCollection this[BindingInfoTemplate identifier]
{
get { return GetInputBindingGesture(identifier); }
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)
{
InputGestureCollection gestures;
@ -174,11 +191,6 @@ namespace ICSharpCode.Core.Presentation @@ -174,11 +191,6 @@ namespace ICSharpCode.Core.Presentation
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)
{
var oldGestures = GetInputBindingGesture(identifier);
@ -199,34 +211,28 @@ namespace ICSharpCode.Core.Presentation @@ -199,34 +211,28 @@ namespace ICSharpCode.Core.Presentation
InvokeGesturesChanged(this, args);
}
/// <inheritdoc />
public IEnumerator<KeyValuePair<BindingInfoTemplate, InputGestureCollection>> GetEnumerator()
{
return userDefinedGestures.GetEnumerator();
}
/// <inheritdoc />
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return userDefinedGestures.GetEnumerator();
}
/// <summary>
/// Occurs when any gestures defined in this profile are changed, removed or added
/// </summary>
public event NotifyGesturesChangedEventHandler GesturesChanged;
public void InvokeGesturesChanged(object sender, NotifyGesturesChangedEventArgs args)
private void InvokeGesturesChanged(object sender, NotifyGesturesChangedEventArgs args)
{
if(GesturesChanged != null) {
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; @@ -8,13 +8,14 @@ using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
namespace ICSharpCode.Core.Presentation
{
/// <summary>
/// Manages user defined gestures
/// Manages active <see cref="UserGestureProfile" />
/// </summary>
public static class UserGestureManager
public static class UserGestureProfileManager
{
private static UserGestureProfile _currentProfile;
private static string _userGestureProfilesDirectory;
static UserGestureManager()
static UserGestureProfileManager()
{
if(PropertyService.ConfigDirectory != null) {
_userGestureProfilesDirectory = Path.Combine(PropertyService.ConfigDirectory, "UserGestureProfiles");
@ -25,7 +26,7 @@ namespace ICSharpCode.Core.Presentation @@ -25,7 +26,7 @@ namespace ICSharpCode.Core.Presentation
}
/// <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>
public static string UserGestureProfilesDirectory
{
@ -34,8 +35,11 @@ namespace ICSharpCode.Core.Presentation @@ -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
{
get {
@ -53,20 +57,28 @@ namespace ICSharpCode.Core.Presentation @@ -53,20 +57,28 @@ namespace ICSharpCode.Core.Presentation
}
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 void InvokeCurrentProfileChanged(object sender, NotifyUserGestureProfileChangedEventArgs args)
private static void InvokeCurrentProfileChanged(object sender, NotifyUserGestureProfileChangedEventArgs args)
{
if(CurrentProfileChanged != null) {
CurrentProfileChanged.Invoke(sender, args);
}
}
/// <summary>
/// Reset <see cref="UserGestureProfileManager" />
///
/// Intended to use for unit tests only
/// </summary>
public static void Reset()
{
CurrentProfile = null;

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

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

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

@ -3,8 +3,17 @@ using System.Collections.Generic; @@ -3,8 +3,17 @@ using System.Collections.Generic;
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)
{
object value1 = null;
@ -27,6 +36,11 @@ namespace ICSharpCode.Core.Presentation @@ -27,6 +36,11 @@ namespace ICSharpCode.Core.Presentation
return value1 == value2;
}
/// <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;

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 @@ @@ -82,11 +82,11 @@
<Compile Include="CommandsService\Events\NotifyUserGestureProfileChangedEvent.cs" />
<Compile Include="CommandsService\InputBindingCategory.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\Utils\IObservableCollection.cs" />
<Compile Include="CommandsService\Utils\WeakReferenceEqualirtyComparer.cs" />
<Compile Include="CommandsService\WpfCommandWrapper.cs" />
<Compile Include="CommandsService\Utils\WpfCommandWrapper.cs" />
<Compile Include="ConditionalSeparator.cs" />
<Compile Include="DropDownButton.cs" />
<Compile Include="GetBitmapExtension.cs" />

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

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

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

@ -28,7 +28,7 @@ namespace ICSharpCode.Core.Presentation.Tests @@ -28,7 +28,7 @@ namespace ICSharpCode.Core.Presentation.Tests
[Test]
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 container = new WeakReference(uiElement);
map.Add("test", container);

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

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

Loading…
Cancel
Save